--- a/imgtools/imglib/filesystem/include/directory.h Wed Jun 16 16:51:40 2010 +0300
+++ b/imgtools/imglib/filesystem/include/directory.h Wed Jun 23 16:56:47 2010 +0800
@@ -1,158 +1,189 @@
-/*
-* 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 the License "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:
-* Directory operations for FileSystem component
-* @internalComponent
-* @released
-*
-*/
-
-
-#ifndef DIRECTORY_H
-#define DIRECTORY_H
-
-#include "utils.h"
-
-/* If the macro _FILESYSTEM_DLL is defined, then the macro FILESYSTEM_API is used to
- * export the functions. Hence while building the DLL this macro should be used.
- * Else if the macro _USE_FILESYSTEM_DLL is defined, then the macro FILESYSTEM_API is
- * used to import the functions. Hence while linking this macro should be used.
- * If none of the above macros defined, then the macro FILESYSTEM_API is defined empty
- * and it is used for creating static library.
- * The purpose of using multiple macros is to deliver both the static and dynamic
- * libraries from the same set of source files.
- */
-#ifdef _FILESYSTEM_DLL
- #define FILESYSTEM_API __declspec(dllexport)
-#elif _USE_FILESYSTEM_DLL
- #define FILESYSTEM_API __declspec(dllimport)
-#else
- #define FILESYSTEM_API
-#endif
-
-#include <list>
-#include <stack>
-#include <time.h>
-
-class CDirectory;
-class CLongEntry;
-
-typedef std::list<CDirectory*> EntryList;
-
-//Directory, file and volume Attributes
-enum KAttributes
-{
- EAttrReadOnly = 0x01,
- EAttrHidden = 0x02,
- EAttrSystem = 0x04,
- EAttrVolumeId = 0x08,
- EAttrDirectory = 0x10,
- EAttrArchive = 0x20,
- EAttrLongName = EAttrReadOnly | EAttrHidden | EAttrSystem | EAttrVolumeId,
- EAttrLongNameMask = EAttrReadOnly | EAttrHidden | EAttrSystem | EAttrVolumeId \
- | EAttrDirectory | EAttrArchive,
- ELastLongEntry = 0x40
-};
-
-//Time format, should be written as a integer in FAT image
-typedef struct
-{
- unsigned short int Seconds:5;
- unsigned short int Minute:6;
- unsigned short int Hour:5;
-}FatTime;
-
-//Date format, should be written as a integer in FAT image
-typedef struct
-{
- unsigned short int Day:5;
- unsigned short int Month:4;
- unsigned short int Year:7;
-}FatDate;
-
-//This union convention used to convert bit fields into integer
-union TDateInteger
-{
- FatDate iCurrentDate;
- unsigned short int iImageDate;
-};
-
-//This union convention used to convert bit fields into integer
-union TTimeInteger
-{
- FatTime iCurrentTime;
- unsigned short int iImageTime;
-};
-
-/* This class describes the attributes of a single directory/file/volume entry.
- *
- * @internalComponent
- * @released
- */
-class CDirectory
-{
-
-public:
- FILESYSTEM_API CDirectory(char* aEntryName);
- FILESYSTEM_API ~CDirectory();
- FILESYSTEM_API EntryList* GetEntryList();
- FILESYSTEM_API void InsertIntoEntryList(CDirectory* aEntry);
- FILESYSTEM_API void SetFilePath(char* aFilePath);
- FILESYSTEM_API String GetFilePath() const;
- FILESYSTEM_API void SetEntryName(String aEntryName);
- FILESYSTEM_API String GetEntryName() const;
- FILESYSTEM_API void SetEntryAttribute(char aAttribute);
- FILESYSTEM_API char GetEntryAttribute() const;
- char GetNtReservedByte() const;
- char GetCreationTimeMsecs() const;
- unsigned short int GetCreatedTime() const;
- unsigned short int GetCreationDate() const;
- unsigned short int GetLastAccessDate() const;
- unsigned short int GetClusterNumberHi() const;
- void SetClusterNumberHi(unsigned short int aHiClusterNumber);
- unsigned short int GetClusterNumberLow() const;
- void SetClusterNumberLow(unsigned short int aLowClusterNumber);
- unsigned short int GetLastWriteDate() const;
- unsigned short int GetLastWriteTime() const;
- FILESYSTEM_API void SetFileSize(unsigned int aFileSize);
- FILESYSTEM_API unsigned int GetFileSize() const;
- bool IsFile() const ;
-
-private:
- void InitializeTime();
-
-private:
- String iEntryName; //Directory or file name
- char iAttribute; //To mention file or directory or Volume
- char iNtReserved; //Reserved for use by windows NT, this value always zero
- char iCreationTimeMsecs; /**Millisecond stamp at file creation time, Since this is not
- so important, always initialized to zero*/
- unsigned short int iCreatedTime; //Time file was created
- unsigned short int iCreationDate; //Date file was created
- unsigned short int iLastAccessDate; //Date file was last accessed
- unsigned short int iClusterNumberHi;//High word of this entry's first cluster number
- unsigned short int iClusterNumberLow;//Low word of this entry's first cluster number
- unsigned short int iLastWriteDate; //Date file was written
- unsigned short int iLastWriteTime; //Time file was written
- unsigned int iFileSize; //file size
- EntryList iDirectoryList; //List Template used to hold subdirectories
-
- String iFilePath; //Holds file path only if the entry is of type "file"
-
- struct tm* iDateAndTime;
- union TTimeInteger iTime;
- union TDateInteger iDate;
-};
-
-#endif //DIRECTORY_H
+/*
+* 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 the License "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:
+* Directory operations for FileSystem component
+* @internalComponent
+* @released
+*
+*/
+
+
+#ifndef DIRECTORY_H
+#define DIRECTORY_H
+
+#include "utils.h"
+
+/* If the macro _FILESYSTEM_DLL is defined, then the macro FILESYSTEM_API is used to
+ * export the functions. Hence while building the DLL this macro should be used.
+ * Else if the macro _USE_FILESYSTEM_DLL is defined, then the macro FILESYSTEM_API is
+ * used to import the functions. Hence while linking this macro should be used.
+ * If none of the above macros defined, then the macro FILESYSTEM_API is defined empty
+ * and it is used for creating static library.
+ * The purpose of using multiple macros is to deliver both the static and dynamic
+ * libraries from the same set of source files.
+ */
+#ifdef _FILESYSTEM_DLL
+ #define FILESYSTEM_API __declspec(dllexport)
+#elif _USE_FILESYSTEM_DLL
+ #define FILESYSTEM_API __declspec(dllimport)
+#else
+ #define FILESYSTEM_API
+#endif
+
+#include <list>
+#include <stack>
+#include <time.h>
+
+class CDirectory;
+class CLongEntry;
+
+typedef list<CDirectory*> EntryList;
+
+//Directory, file and volume Attributes
+enum KAttributes
+{
+ EAttrReadOnly = 0x01,
+ EAttrHidden = 0x02,
+ EAttrSystem = 0x04,
+ EAttrVolumeId = 0x08,
+ EAttrDirectory = 0x10,
+ EAttrArchive = 0x20,
+ EAttrLongName = EAttrReadOnly | EAttrHidden | EAttrSystem | EAttrVolumeId,
+ EAttrLongNameMask = EAttrReadOnly | EAttrHidden | EAttrSystem | EAttrVolumeId \
+ | EAttrDirectory | EAttrArchive,
+ ELastLongEntry = 0x40
+};
+
+//Time format, should be written as a integer in FAT image
+typedef struct
+{
+ unsigned short int Seconds:5;
+ unsigned short int Minute:6;
+ unsigned short int Hour:5;
+}FatTime;
+
+//Date format, should be written as a integer in FAT image
+typedef struct
+{
+ unsigned short int Day:5;
+ unsigned short int Month:4;
+ unsigned short int Year:7;
+}FatDate;
+
+//This union convention used to convert bit fields into integer
+union TDateInteger
+{
+ FatDate iCurrentDate;
+ unsigned short int iImageDate;
+};
+
+//This union convention used to convert bit fields into integer
+union TTimeInteger
+{
+ FatTime iCurrentTime;
+ unsigned short int iImageTime;
+};
+
+struct TShortDirEntry {
+ unsigned char DIR_Name [11];
+ unsigned char DIR_Attr ;
+ unsigned char DIR_NTRes ;
+ unsigned char DIR_CrtTimeTenth ;
+ unsigned char DIR_CrtTime[2] ;
+ unsigned char DIR_CrtDate[2] ;
+ unsigned char DIR_LstAccDate[2] ;
+ unsigned char DIR_FstClusHI[2] ;
+ unsigned char DIR_WrtTime[2] ;
+ unsigned char DIR_WrtDate[2];
+ unsigned char DIR_FstClusLO[2];
+ unsigned char DIR_FileSize[4] ;
+};
+
+struct TLongDirEntry {
+ unsigned char LDIR_Ord ;
+ unsigned char LDIR_Name1[10] ;
+ unsigned char LDIR_Attr ;
+ unsigned char LDIR_Type ;
+ unsigned char LDIR_Chksum ;
+ unsigned char LDIR_Name2[12] ;
+ unsigned char LDIR_FstClusLO[2] ;
+ unsigned char LDIR_Name3[4] ;
+};
+/* This class describes the attributes of a single directory/file/volume entry.
+ *
+ * @internalComponent
+ * @released
+ */
+class CDirectory
+{
+
+public:
+ FILESYSTEM_API CDirectory(const char* aEntryName,CDirectory* aParent);
+ FILESYSTEM_API ~CDirectory();
+ FILESYSTEM_API EntryList* GetEntryList();
+ FILESYSTEM_API void InsertIntoEntryList(CDirectory* aEntry);
+ FILESYSTEM_API void SetFilePath(char* aFilePath);
+ FILESYSTEM_API string GetFilePath() const;
+ FILESYSTEM_API void SetEntryName(string aEntryName);
+ FILESYSTEM_API string GetEntryName() const;
+ FILESYSTEM_API void SetEntryAttribute(char aAttribute);
+ FILESYSTEM_API char GetEntryAttribute() const;
+ char GetNtReservedByte() const;
+ char GetCreationTimeMsecs() const;
+ unsigned short int GetCreatedTime() const;
+ unsigned short int GetCreationDate() const;
+ unsigned short int GetLastAccessDate() const;
+ unsigned short int GetClusterNumberHi() const;
+ void SetClusterNumberHi(unsigned short int aHiClusterNumber);
+ unsigned short int GetClusterNumberLow() const;
+ void SetClusterNumberLow(unsigned short int aLowClusterNumber);
+ unsigned short int GetLastWriteDate() const;
+ unsigned short int GetLastWriteTime() const;
+ FILESYSTEM_API void SetFileSize(unsigned int aFileSize);
+ FILESYSTEM_API unsigned int GetFileSize() const;
+ bool IsFile() const ;
+ FILESYSTEM_API CDirectory* GetParent()const {
+ return iParent ;
+ }
+ FILESYSTEM_API bool GetShortEntry(TShortDirEntry& rEntry) ;
+ FILESYSTEM_API bool GetLongEntries(list<TLongDirEntry>& rEntries) ;
+private:
+ void InitializeTime();
+ void MakeUniqueShortName(unsigned char* rShortName,size_t aWavPos) const ;
+private:
+ string iEntryName; //Directory or file name
+ unsigned char iShortName[12] ;
+ char iAttribute; //To mention file or directory or Volume
+ char iNtReserved; //Reserved for use by windows NT, this value always zero
+ char iCreationTimeMsecs; /**Millisecond stamp at file creation time, Since this is not
+ so important, always initialized to zero*/
+ unsigned short int iCreatedTime; //Time file was created
+ unsigned short int iCreationDate; //Date file was created
+ unsigned short int iLastAccessDate; //Date file was last accessed
+ unsigned short int iClusterNumberHi;//High word of this entry's first cluster number
+ unsigned short int iClusterNumberLow;//Low word of this entry's first cluster number
+ unsigned short int iLastWriteDate; //Date file was written
+ unsigned short int iLastWriteTime; //Time file was written
+ unsigned int iFileSize; //file size
+ EntryList iDirectoryList; //List Template used to hold subdirectories
+
+ string iFilePath; //Holds file path only if the entry is of type "file"
+
+ struct tm* iDateAndTime;
+ union TTimeInteger iTime;
+ union TDateInteger iDate;
+ CDirectory* iParent ;
+};
+
+#endif //DIRECTORY_H