diff -r 000000000000 -r f453ebb75370 gfxconversion/mifconv/inc/mifconv_util.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfxconversion/mifconv/inc/mifconv_util.h Tue Feb 02 01:11:11 2010 +0200 @@ -0,0 +1,246 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Mifconv utilities. +* +*/ + + +#ifndef __MIFCONVUTIL_H__ +#define __MIFCONVUTIL_H__ + +#include "mifconv.h" +#include "mifconv_sourcefile.h" +#include + +class MifConvUtil +{ +public: + + /** + * Returns file extension of the given filename + * @return String representing the file extension + * @param fileName String representing the file name. + */ + static MifConvString FileExtension( const MifConvString& fileName ); + + /** + * Returns file name without the extension + * @return String representing the file name without the extension + * @param fileName String representing the file name. + */ + static MifConvString FilenameWithoutExtension( const MifConvString& fileName ); + + /** + * Returns file name without the path + * @return String representing the file name without the path + * @param fileName String representing the file name. + */ + static MifConvString FilenameWithoutPath( const MifConvString& fileName ); + + /** + * Tells whether the file with the given filename exists. + * @return true if the given file exists, false otherwise. + * @param fileName File name + */ + static bool FileExists( const MifConvString& fileName ); + + /** + * Returns file size + * @return File size + * @param fileName File name + */ + static size_t FileSize( const MifConvString& fileName ); + + /** + * Reads file contents and returns pointer to data buffer. Returns also + * the data size in bytes. + * @return std::pair object containing the pointer to the allocated data buffer and the + * data size in byte. The caller must take the ownership of the returned data pointer. + * @param fileName Filename + */ + static MifConvFileData FileContents( const MifConvString& fileName ); + + /** + * Converts the given object to string. Can be used for example to converting integers to string: + * + * int i = 0; + * MifConvString iAsString(MifConvUtil::ToString(i)); + * + * + * @return String built from the given object. + * @param s Reference to the object to be converted to string. + */ + template + static MifConvString ToString(const T& s) + { + std::stringstream ss; + ss << s; + return MifConvString(ss.str()); + } + + /** + * Replaces given characters to other one from the given string. + * @param str String from which the characters will be replaced. + * @param replaceFrom This character will be replaced by other one. + * @param replaceTo Characters will be replaced by this. + */ + static void ReplaceChar( MifConvString& str, char replaceFrom, char replaceTo); + + /** + * Tells whether the given character is a whitespace character or not. + * @param c Charater to be investigated. + * @return true if the given character is whitespace character, false otherwise. + */ + static bool IsWhiteSpace(char c); + + /** + * Splits the given path to drive and directory path parts. + * @param sourcePath Directory path to be splitted. + * @param drive Drive part of the given path, if any. + * @param path Directory path of the given path, if any. + */ + static void SplitPath( const MifConvString& sourcePath, MifConvString& drive, MifConvString& path); + + /** + * Compares two string. Ignores the case of the letters. + * @return zero if the strings are equal + * @param lhs Left hand side string + * @param rhs Right hand side string + */ + static int CompareIgnoreCase( const MifConvString& lhs, const MifConvString& rhs ); + + /** + * Replaces all the charactes by lower case characters. + * @return String with lower case letters. + * @param str Input string + */ + static MifConvString& ToLower( MifConvString& str ); + + /** + * Splits the given string using the given separator. + * @param str Input string + * @param separator The input string is splitted using this sub-string as a separator + * @param components List of the sub-strings splitted from the original input string + */ + static void SplitString( const MifConvString& str, const MifConvString& separator, MifConvStringList& components ); + + /** + * Ensures that the given path exists. Tries to create it if it does not exist. + * @param destFileName Filename that is to be checked. + * @param ignoreLast If true, last part of the destFileName is stripped of + * Directory separator used as a separator. + */ + static void EnsurePathExists( const MifConvString& destFileName, bool ignoreLast = false ); + + /** + * Removes duplicated directory separators from the given string. + * @param str String from which the duplicated directory separators are to be searched and removed. + */ + static void RemoveDuplicateDirSeparators( MifConvString& str ); + + /** + * Creates a directory with given path + * @return True if the directory was successfully created, false otherwise. + * @param path Directory path + */ + static bool CreateDirectory( const MifConvString& path ); + + /** + * Trims the filename so that first letter is capitalized and others are lower case. + * @return Trimmed string + * @param filename Filename to be trimmed. + */ + static MifConvString UnadornedFilename( const MifConvString& filename ); + + /** + * Finds the correct mask file for the bitmap file and sets it to the given object. + * @param srcFile Source file object. + */ + static void FindAndSetBitmapMaskFile( MifConvSourceFile& srcFile ); + + /** + * Returns a unique temporary file name. + * @return Temporary file name string. + */ + static MifConvString TemporaryFilename(); + + /** + * Copies a file + * @return True if the copying was successful, false otherwise. + * @param from File which is to be copied from + * @param to Destination file. + */ + static bool CopyFile(const MifConvString& from, const MifConvString& to); + + /** + * Returns current working directory path. + * @return Current working directory path. + */ + static MifConvString CurrentPath(); + + /** + * Changes the working directory + * @param dirName Working directory name + */ + static void ChangeDirectory( const MifConvString& dirName ); + + /** + * Removes a directory + * @return Zero if the removal was successful, non-zero otherwise. + * @param dirName Directory name + */ + static int RemoveDirectory( const MifConvString& dirName ); + + /** + * Removes a file + * @param fileName Filename + * @param maxTries Maximum number of file deletion times in case of failure. + * @param noException If true, no exception is thrown in case of failure. Warning is + * printed in debug log. If false, MifConvException is thrown in case of failure. + */ + static void RemoveFile( const MifConvString& fileName, int maxTries = 1, bool noException = false ); + + /** + * Returns MifConv debug filename specified in MIFCONV_DEBUG_FILE + * @return Debug file name + */ + static MifConvString DebugFile(); + + /** + * Logs string to debug file + * @param debugStr Debug string to be logged. + */ + static void DebugLog(const MifConvString& debugStr); + + /** + * Returns default temp directory for intermediate and temporary files + * @return Temporary directory name + */ + static const MifConvString& DefaultTempDirectory(); + +private: + enum MifConvDebugMode + { + DebugMode_Unknown, + DebugMode_NoDebug, + DebugMode_Debug + }; + + static MifConvDebugMode iDebugMode; + static MifConvString iDebugFile; + static MifConvString iTempDirectory; +}; + + +#endif