diff -r 000000000000 -r 638b9c697799 apicompatanamdw/compatanalysercmd/headeranalyser/src/BBCFileUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/apicompatanamdw/compatanalysercmd/headeranalyser/src/BBCFileUtils.h Tue Jan 12 14:52:39 2010 +0530 @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2006-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: +* +*/ + + +#ifndef __BBC_FILE_UTILS_H__ +#define __BBC_FILE_UTILS_H__ +#include "CmdGlobals.h" +#ifdef __WIN__ +#pragma warning(disable:4786) +#endif +#include +#include +#include +#include + +using namespace std; + +/** +* Class includes file handling methods +*/ +class BBCFileUtils +{ +public: + /** + * Contructor + * @param basedir + */ + BBCFileUtils(string basedir); + + /** + * Destructor + */ + ~BBCFileUtils(); + +public: + /** + * Gets all the filenames matching the given wildcard in a directory + * @param wildcard Search pattern for the files. + * @param aRelPath Search location. + * @return List of the filenames (pairs). + */ + list > getFilesInDir(string wildcard, string aRelPath); + + /** + * Gets all the filenames matching a file set in a directory + * @param fileset List of filenames to be searched. + * @param aRelPath Search location. + * @param aFoundfiles list of files found + * @return List of the filenames (pairs). + */ + list > getFilesInDir(list >& fileset, string aRelPath, list >& aFoundfiles); + + /** + * Calculates a quick but relatively unique fingerprint for a string. + * Used in tempfile name generation. Collisions may occur, but it's + * not highly probable. + * @param str filename + version + * @return hash value + */ + static unsigned int quickHash(string str); + + /** + * Extract Filenames + * Converts a ';' (semicolon) separated filename list to a string list. + * + * @param aFilenameList list of file names to search for + * @return list pair of files + */ + static list > extractFilenames(string aFilenameList); + + /** + * Gets subdirectories in a directory + * @param aRelPath Relative path to the directory from where the subdirectories are searched. + * @param aExcludes Subdirectories to be excluded from the results + * @return List of subdirectories found. + */ + list > getDirsInDir(string aRelPath, list >& aExcludes); + + /** + * Trims the given filename string (changes ';' to ' ' [whitespace]) + * and prefixes each filename entry with the base directory name + * (if required) + * @param aFilenameList String containing the filenames separated with ';'. + * @return String containing the trimmed filenames + */ + string trimFilenames(string aFilenameList); + + /** + * Checks if the given filename is valid. + * @param aFilename Name of the file to be checked. + * @return true, if the given string is a valid filename + */ + static bool isValidFilename(const string& aFilename); + + /** + * Check if the given path is a valid directory. + * @param aPath Path to be checked + * @return true, if the given string is a valid directory path + */ + static bool isValidDirectory(const string& aPath); + + /** + * Set temporary directory + * @param aTempDir Temp directory name + */ + void setTemp(const string& aTempDir); + + /** + * Get full path name + * @param aPath Path to be parsed + * @return Full path name + * @exception throws an exception if the path cannot be solved. + */ + static string getFullPath(const string& aPath); + + /** + * Strips off the file extension + * @param aFileName Whole name of the file + * @return Filename without the extension + */ + static string StripFilenameExtension(string aFileName); + + /** + * Strips off the path + * @param aAbsFilename Filename containing the path + * @return Path from the given filename + */ + static string StripPath(const string& aAbsFilename); + + // -- Support for multiple header directories -- Return type changed to list + static list > MergeDirs(const string& rootDir, const string& subDir); + + static bool FileExists(const string& fileName); + + /** + * Function to read the compilation error output from a file and append to a string. + * @param filename Filename containing the error output + * @return string having error output + */ + static string getCompilationError(string filename); + + static string& TrimRight(string& s); + static string& TrimLeft(string& s); + static string& TrimAll(string& s); + +private: +#ifdef __UNIX__ + /** + * Finds and return absolute path of the given relative path + * @param aRelPath path to check + * @param aAbsPath returnned absolute path + * @return true if absolute path is found + */ + static bool absolutePath(const string& aRelPath, string& aAbsPath); +#endif + +private: + //! count of files + int iFileCount; + //! Vector of base/current files + vector iFiles; + //! the whole path + wildcard given + string iWildcard; + //! base directory + string iBaseDir; + //! temporary directory + string iTempDir; + //! Dump file (not used) + string iDumpfile; + + static map fileExistsCache; +}; + +#endif