gfxconversion/mifconv/inc/mifconv_util.h
changeset 0 f453ebb75370
child 2 1f6339ced17d
--- /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 <sstream>
+
+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:
+     * <code>
+     * int i = 0;
+     * MifConvString iAsString(MifConvUtil::ToString(i));
+     * </code>
+     *
+     * @return String built from the given object.
+     * @param s Reference to the object to be converted to string.
+     */
+    template <typename T>
+    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 <code>destFileName</code> 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, <code>MifConvException</code> 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