diff options
Diffstat (limited to 'SrcShared/EmFileRef.h')
-rw-r--r-- | SrcShared/EmFileRef.h | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/SrcShared/EmFileRef.h b/SrcShared/EmFileRef.h new file mode 100644 index 0000000..9499018 --- /dev/null +++ b/SrcShared/EmFileRef.h @@ -0,0 +1,137 @@ +/* -*- mode: C++; tab-width: 4 -*- */ +/* ===================================================================== *\ + Copyright (c) 2000-2001 Palm, Inc. or its subsidiaries. + All rights reserved. + + This file is part of the Palm OS Emulator. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +\* ===================================================================== */ + +#ifndef EmFileRef_h +#define EmFileRef_h + +#include "EmDirRef.h" // EmDirRef +#include <vector> + +enum EmFileCreator +{ + kFileCreatorNone, + kFileCreatorEmulator, + kFileCreatorInstaller, + kFileCreatorTeachText, + kFileCreatorCodeWarrior, + kFileCreatorCodeWarriorProfiler, + + kFileCreatorLast +}; +typedef vector<EmFileCreator> EmFileCreatorList; + +enum EmFileType +{ + kFileTypeNone, + kFileTypeApplication, + kFileTypeROM, + kFileTypeSession, + kFileTypeEvents, + kFileTypePreference, + kFileTypePalmApp, + kFileTypePalmDB, + kFileTypePalmQA, + kFileTypeText, + kFileTypePicture, + kFileTypeSkin, + kFileTypeProfile, + kFileTypePalmAll, + kFileTypeAll, + + kFileTypeLast +}; + +enum EmFileAttr +{ + kFileAttrReadOnly=1, + kFileAttrHidden=2, + kFileAttrSystem=4, + + kFileAttrLast +}; + +typedef vector<EmFileType> EmFileTypeList; + +class EmFileRef +{ + public: + EmFileRef (void); + EmFileRef (const EmFileRef&); + EmFileRef (const char*); + EmFileRef (const string&); + EmFileRef (const EmDirRef&, const char*); + EmFileRef (const EmDirRef&, const string&); +#if PLATFORM_MAC + EmFileRef (const unsigned char*); + EmFileRef (const FSSpec&); + EmFileRef (AliasHandle); +#endif + ~EmFileRef (void); + + EmFileRef& operator= (const EmFileRef&); + + Bool IsSpecified (void) const; + Bool Exists (void) const; + void Delete (void) const; + + Bool IsType (EmFileType) const; + void SetCreatorAndType(EmFileCreator creator, + EmFileType fileType) const; + int GetAttr (int * attr) const; + int SetAttr (int attr) const; + + string GetName (void) const; + EmDirRef GetParent (void) const; + string GetFullPath (void) const; + + bool operator== (const EmFileRef&) const; + bool operator!= (const EmFileRef&) const; + bool operator< (const EmFileRef&) const; + bool operator> (const EmFileRef&) const; + + bool FromPrefString (const string&); + string ToPrefString (void) const; + + static void SetEmulatorRef (const EmFileRef&); + static EmFileRef GetEmulatorRef (void); + +#if PLATFORM_MAC + public: + // Needed in order to convert an EmFileRef into something + // that PowerPlant or Mac OS can deal with. + + FSSpec GetFSSpec (void) const; + AliasHandle GetAlias (void) const; + + private: + void UpdateAlias (void); + void UpdateSpec (void); + + Bool IsType (OSType type, const char* suffix) const; + + AliasHandle fFileAlias; + FSSpec fFileSpec; +#endif + +#if PLATFORM_WINDOWS || PLATFORM_UNIX + private: + void MaybePrependCurrentDirectory (void); + void MaybeResolveLink (void); + void MaybeNormalize (void); + + private: + string fFilePath; +#endif +}; + +#endif /* EmFileRef_h */ |