Polygon Crucher SDK - Documentation
Documentation
Loading...
Searching...
No Matches
FileInfo.h File Reference

Contains many convenient functions for handling files, paths and give a way to add some custom format support. More...

Detailed Description

Contains many convenient functions for handling files, paths and give a way to add some custom format support.

#include "xfileoperation.h"
#include "CustomData.h"

Go to the source code of this file.

Classes

class  CFileNameSpec
 A given extension may match several formats. In case of conflict CFileNameSpec is a way to indicate that a given file name matches a specified file class.
CFileNameSpec(filename) simply construct a filename without specifying which is its class.
In that case, the SDK will choose the appropriate parser based an the extension.
If loading fails, a try will be done using the next available parser, and so on. More...
 
class  CFileExt
 CFileExt is the class that allows to add a custom file parser for supporting a new file format. You have to give a specific class identifier, provide the format extensions, the read/write capabilities of the parser... More...
 
class  CFileInfo
 A convenient class to get some information giving a specific file name through a CFileNameSpec object. More...
 

Macros

#define UNKNOWN_CLASS   0
 
#define TGA_FILE   MAKE_CUSTOM_ID('T', 'G', 'A', ' ')
 
#define Z_FILE   MAKE_CUSTOM_ID('Z', 'F', 'I', 'L')
 
#define BMP_FILE   MAKE_CUSTOM_ID('B', 'M', 'P', ' ')
 
#define JPEG_FILE   MAKE_CUSTOM_ID('J', 'P', 'E', 'G')
 
#define GIF_FILE   MAKE_CUSTOM_ID('G', 'I', 'F', ' ')
 
#define PNG_FILE   MAKE_CUSTOM_ID('P', 'N', 'G', ' ')
 
#define TIFF_FILE   MAKE_CUSTOM_ID('T', 'I', 'F', 'F')
 
#define ZPIC_FILE   MAKE_CUSTOM_ID('Z', 'P', 'I', 'C')
 
#define PIC_FILE   MAKE_CUSTOM_ID('P', 'I', 'C', ' ')
 
#define RLA_FILE   MAKE_CUSTOM_ID('R', 'L', 'A', ' ')
 
#define IFF_FILE   MAKE_CUSTOM_ID('I', 'F', 'F', ' ')
 
#define GIF_FILE   MAKE_CUSTOM_ID('G', 'I', 'F', ' ')
 
#define ICON_FILE   MAKE_CUSTOM_ID('I', 'C', 'O', 'N')
 
#define CURSOR_FILE   MAKE_CUSTOM_ID('C', 'U', 'R', 'S')
 
#define HDR_FILE   MAKE_CUSTOM_ID('H', 'D', 'R', ' ')
 
#define FOLDER_CLASS   MAKE_CUSTOM_ID('F', 'L', 'D', 'R')
 
#define AMAPI_3D_FILE   MAKE_CUSTOM_ID('A', 'M', 'A', 'P')
 
#define CINEMA4D_3D_FILE   MAKE_CUSTOM_ID('C', 'N', '4', 'D')
 
#define COLLADA_3D_FILE   MAKE_CUSTOM_ID('D', 'A', 'E', ' ')
 
#define DIRECTX_3D_FILE   MAKE_CUSTOM_ID('D', 'R', 'T', 'X')
 
#define DXF_3D_FILE   MAKE_CUSTOM_ID('D', 'X', 'F', '4')
 
#define DXF_FBX_3D_FILE   MAKE_CUSTOM_ID('D', 'X', 'F', 'B')
 
#define INTERNALFORMAT_3D_FILE   MAKE_CUSTOM_ID('3', 'D', 'I', 'F')
 
#define KMZ_3D_FILE   MAKE_CUSTOM_ID('K', 'M', 'Z', 'I')
 
#define LIGHTWAVE_3D_FILE   MAKE_CUSTOM_ID('L', 'I', 'G', 'T')
 
#define LIGHTWAVE_3D_SCENE_FILE   MAKE_CUSTOM_ID('L', 'I', 'G', 'S')
 
#define LXO_3D_FILE   MAKE_CUSTOM_ID('L', 'X', 'O', 'I')
 
#define MAYAASCII_3D_FILE   MAKE_CUSTOM_ID('M', 'Y', 'A', 'S')
 
#define MAYA_3D_FILE   MAKE_CUSTOM_ID('M', 'A', 'Y', 'A')
 
#define SKETCHUP_3D_FILE   MAKE_CUSTOM_ID('S', 'K', 'E', 'T')
 
#define JT_3D_FILE   MAKE_CUSTOM_ID('J', 'T', 'K', 'F')
 
#define KERNELIO_3D_FILE   MAKE_CUSTOM_ID('C', 'T', 'K', 'I')
 
#define STL_3D_FILE   MAKE_CUSTOM_ID('S', 'T', 'L', ' ')
 
#define STUDIO_MAX_3D_FILE   MAKE_CUSTOM_ID('3', 'M', 'A', 'X')
 
#define STUDIO_3D_FILE   MAKE_CUSTOM_ID('3', 'D', 'S', 'T')
 
#define TRUESPACE_3D_FILE   MAKE_CUSTOM_ID('T', 'R', 'U', 'E')
 
#define VRML_3D_FILE   MAKE_CUSTOM_ID('V', 'R', 'M', 'L')
 
#define VRML97_3D_FILE   MAKE_CUSTOM_ID('V', 'R', '9', '7')
 
#define PLY_3D_FILE   MAKE_CUSTOM_ID('P', 'L', 'Y', 'Y')
 
#define WAVEFRONT_3D_FILE   MAKE_CUSTOM_ID('W', 'A', 'V', 'F')
 
#define XSI_3D_FILE   MAKE_CUSTOM_ID('X', 'S', 'I', ' ')
 
#define FBX_3D_FILE   MAKE_CUSTOM_ID('F', 'B', 'X', ' ')
 
#define ALEMBIC_3D_FILE   MAKE_CUSTOM_ID('A', 'B', 'C', 'F')
 
#define MR_3D_FILE   MAKE_CUSTOM_ID('P', 'C', 'M', 'R')
 
#define GLTF_3D_FILE   MAKE_CUSTOM_ID('G', 'L', 'T', 'F')
 
#define BLENDER_3D_FILE   MAKE_CUSTOM_ID('B', 'L', 'E', 'N')
 
#define WAV_AUDIO_FILE   MAKE_CUSTOM_ID('A', 'I', 'W', 'V')
 
#define WINMEDIA_AUDIO_FILE   MAKE_CUSTOM_ID('A', 'I', 'W', 'M')
 
#define MAC_AUDIO_FILE   MAKE_CUSTOM_ID('A', 'I', 'M', 'C')
 
#define UNIX_AUDIO_FILE   MAKE_CUSTOM_ID('A', 'I', 'U', 'X')
 
#define MPEG_AUDIO_FILE   MAKE_CUSTOM_ID('A', 'I', 'M', 'G')
 
#define MIDI_FILE   MAKE_CUSTOM_ID('M', 'I', 'D', 'I')
 
#define FLASH_FILE   MAKE_CUSTOM_ID('F', 'L', 'A', 'S')
 
#define HTMLS_FILE   MAKE_CUSTOM_ID('I', 'H', 'T', 'M')
 
#define RAWS_FILE   MAKE_CUSTOM_ID('R', 'A', 'W', 'S')
 
#define MOV_FILE   MAKE_CUSTOM_ID('M', 'O', 'V', ' ')
 
#define ZIP_FILE   MAKE_CUSTOM_ID('Z', 'I', 'P', ' ')
 
#define RAR_FILE   MAKE_CUSTOM_ID('R', 'A', 'R', ' ')
 
#define TAR_FILE   MAKE_CUSTOM_ID('T', 'A', 'R', ' ')
 
#define ZIP7_FILE   MAKE_CUSTOM_ID('Z', 'I', 'P', '7')
 
#define GZ_FILE   MAKE_CUSTOM_ID('G', 'Z', ' ', ' ')
 
#define STEGANO_FILE   MAKE_CUSTOM_ID('S', 'T', 'E', 'G')
 
#define PPM_FILE   MAKE_CUSTOM_ID('P', 'P', 'M', ' ')
 
#define AVI_FILE   MAKE_CUSTOM_ID('A', 'V', 'I', ' ')
 
#define MPEG4_FILE   MAKE_CUSTOM_ID('M', 'P', 'G', '4')
 
#define FLV_FILE   MAKE_CUSTOM_ID('F', 'L', 'V', ' ')
 
#define WMV_FILE   MAKE_CUSTOM_ID('W', 'M', 'V', ' ')
 
#define ALL_FILE_CLASS   MAKE_CUSTOM_ID('A', 'L', 'L', 'F')
 
#define PLUGIN_PARSER   MAKE_CUSTOM_ID('P', 'L', 'G', 'P')
 
#define MOOTOOLS_PARSER   MAKE_CUSTOM_ID('M', 'O', 'O', 'T')
 
#define CALLBACK_PARSER   MAKE_CUSTOM_ID('C', 'A', 'L', 'K')
 
#define MAGICK_PARSER   MAKE_CUSTOM_ID('M', 'A', 'G', 'I')
 
#define UNKNOWN_PARSER   MAKE_CUSTOM_ID('U', 'N', 'K', 'N')
 
#define IOTIMEOUT_ALWAYS_USE   (0x80000000)
 
#define IOTIMEOUT_DEFAULT   750
 
#define IOTIMEOUT_OCCURED   ((unsigned int)-1)
 
File format properties and kind of file

Macros that define properties for a given extension

#define UNKNOWN_PROPERTIES   0x00
 
#define IMPORT_FILE   0x01
 
#define EXPORT_FILE   0x02
 
#define PRIVATE_IMPORT_FILE   0x04
 
#define PRIVATE_EXPORT_FILE   0x08
 
#define COMMON_EXTENSION_FILE   0x10
 
#define LOAD_HAS_DIALOG   0x20
 
#define LOAD_NEED_DIALOG   0x40
 
#define SAVE_HAS_DIALOG   0x80
 
#define SAVE_NEED_DIALOG   0x100
 
#define FORCE_DISPLAY_FILE   0x200
 
#define ONE_SHOT_FORMAT   0x400
 
#define MAIN_FORMAT_PARSER   0x800
 
#define KIND_OF_FILE   0xFFFFF000
 
#define UNKNOWN_KIND_OF_FILE   0x00
 
#define BITMAP_FILE   0x00001000
 
#define ANIMATED_BITMAP_FILE   0x00002000
 
#define OBJECT_FILE   0x00004000
 
#define SOUND_FILE   0x00008000
 
#define VIDEO_FILE   0x00010000
 
#define WWW_FILE   0x00020000
 
#define COMPRESSED_FILE   0x00040000
 
#define GENERAL_FILE   0x00080000
 
#define FOLDER_FILE   0x00100000
 
#define LAST_KIND_OF   FOLDER_FILE
 
#define ALL_KIND_OF_FILES   (KIND_OF_FILE)
 
#define MULTIMEDIA_FILES   (BITMAP_FILE|ANIMATED_BITMAP_FILE|OBJECT_FILE|SOUND_FILE|VIDEO_FILE)
 

Typedefs

typedef enum IoPluginMode IoPluginMode
 
typedef bool(* InitIOPluginFunc) (IoPluginMode mode, void *data)
 
typedef enum DirCompare DirCompare
 
typedef enum FileValidateNameMode FileValidateNameMode
 
typedef enum FileCheckAccessFlag FileCheckAccessFlag
 
typedef enum FILENAME_TYPE FILENAME_TYPE
 

Enumerations

enum  IoPluginMode { IO_INIT_PLUGIN , IO_GET_PARSER }
 
enum  DirCompare { DIFFERENT_DIRECTORY = 0 , SAME_DIRECTORY , DIR1_IN_DIR2_DIRECTORY , DIR2_IN_DIR1_DIRECTORY }
 
enum  FileValidateNameMode {
  FILEVALIDATE_DEFAULT = 0 , FILEVALIDATE_FILENAME = 0x01 , FILEVALIDATE_DIRECTORY = 0x02 , FILEVALIDATE_PATH = FILEVALIDATE_FILENAME|FILEVALIDATE_DIRECTORY ,
  FILEVALIDATE_CAN_BE_RELATIVE = 0x04 , FILEVALIDATE_ALLOW_EMPTY_NAME = 0x08 , FILEVALIDATE_FILENAME_ONLY = 0x10 , FILEVALIDATE_QUIET = 0x20
}
 
enum  FileCheckAccessFlag {
  FILE_CHECK_READ = 0x01 , FILE_CHECK_WRITE = 0x02 , FILE_CHECK_SHARED_READ = 0x04 , FILE_CHECK_SHARED_WRITE = 0x08 ,
  FILE_CHECK_CREATE = 0x10 , FILE_CHECK_SHARED_CREATE = FILE_CHECK_CREATE|FILE_CHECK_SHARED_READ|FILE_CHECK_SHARED_WRITE
}
 
enum  FILENAME_TYPE {
  FILENAME_UNKNOWN = 0 , FILENAME_IS_A_FILE , FILENAME_IS_A_DIRECTORY , FILENAME_IS_A_NETWORK_FILE ,
  FILENAME_IS_IN_ZIP , FILENAME_IS_AN_URL
}
 

Functions

void fileRegisterFiles ()
 Automatically call to make all recognized by being registered and recognized.
 
void fileUnregisterFiles ()
 
DLL_TOOLSFUNCTION void fileRegisterFile (CFileExt &fileinfo)
 
DLL_TOOLSFUNCTION void fileUnregisterFile (unsigned int fileClass, unsigned int flags)
 
DLL_TOOLSFUNCTION CFileExtfileGetRegisteredFiles (unsigned int &size, unsigned int filter=0)
 
DLL_TOOLSFUNCTION void fileFreeRegisteredFiles (CFileExt *files, unsigned int size)
 
DLL_TOOLSFUNCTION CXString fileCompactPath (const CXString &path, int charNbr=15)
 
DLL_TOOLSFUNCTION bool fileIsPathRelative (const CXString &mainpath)
 
DLL_TOOLSFUNCTION CXString fileMakeRelativePath (const CXString &mainpath, const CXString &relpath, bool noSlashAndDotAtBeginning=false, FILENAME_TYPE type=FILENAME_UNKNOWN)
 noSlashAndDotAtBeginning = false will return .\folder\filename.ext, noSlashAndDotAtBeginning = true will return folder\filename.ext
 
DLL_TOOLSFUNCTION CXString fileMakeAbsolutePath (const CXString &mainpath, const CXString &relpath, bool slashTerminate=false)
 if relpath is relative, it returns an absolute path using mainpath. If relpath is not relative or if creating absolute path fails, it return relpath. if slashTerminate set, a slash is added, which implies that the return result is used as a directory
 
DLL_TOOLSFUNCTION bool fileMakePathShortest (CXString &path)
 Converts C:\abc..\abc\file.txt to C:\abc\file.txt if possible or uneeded, path is not changed if conversion fails (C:/../file.txt)
 
DLL_TOOLSFUNCTION CXString fileGetCurrentDirectory ()
 
DLL_TOOLSFUNCTION bool filePushCurrentDirectory (const CXString &newpath, unsigned int *timeOut=NULL)
 return true if directory change is a success. Whatever the results, filePopCurrentDirectory must always be called.
 
DLL_TOOLSFUNCTION bool filePopCurrentDirectory ()
 pop the latest push current directory
 
DLL_TOOLSFUNCTION bool fileDirectoryExists (const CXString &filename, unsigned int *timeOut=NULL)
 
DLL_TOOLSFUNCTION bool fileExists (const CXString &filename, unsigned int *timeOut=NULL)
 Accessing file can take time. specify timeOut if critical (ie access through network). If timeout reach, the function return false.
 
DLL_TOOLSFUNCTION bool fileCheckAccess (const CXString &filename, unsigned int flags)
 
DLL_TOOLSFUNCTION bool fileGetCreationDate (const CXString &filename, CXTime &time)
 
DLL_TOOLSFUNCTION bool fileSetCreationDate (const CXString &filename, const CXTime &time)
 
DLL_TOOLSFUNCTION bool fileGetLastWriteDate (const CXString &filename, CXTime &time)
 
DLL_TOOLSFUNCTION bool fileSetLastWriteDate (const CXString &filename, const CXTime &time)
 
DLL_TOOLSFUNCTION fileuint fileGetSize (const CXString &filename)
 
DLL_TOOLSFUNCTION bool fileConvertSlash (CXString &dir)
 Make slash OS compatible.
 
DLL_TOOLSFUNCTION void fileRemoveDuplicatedSlash (CXString &path)
 
DLL_TOOLSFUNCTION void fileSlashTerminate (CXString &dir)
 
DLL_TOOLSFUNCTION bool fileIsSlashTerminated (const CXString &path)
 
DLL_TOOLSFUNCTION void fileRemoveSlashTermination (CXString &filenameWithoutExt)
 
DLL_TOOLSFUNCTION void fileRemoveInvalidChar (CXString &path, char spaceReplace=' ')
 Remove any invalid character for a filename <>:"/|?* and eventually replaces space without something else.
 
DLL_TOOLSFUNCTION bool fileGetCInfo (const CXString &filename, unsigned int &checksum1, unsigned int &checksum2, bool alert=FALSE)
 
DLL_TOOLSFUNCTION bool fileIsDirectory (const CXString &filename, bool checkIfExists=FALSE, unsigned int *timeOut=NULL)
 
DLL_TOOLSFUNCTION bool fileIsValidFileName (const CXString &filename, unsigned int checkMode)
 
DLL_TOOLSFUNCTION DirCompare fileCompareDirectory (CXString dir1, CXString dir2)
 
DLL_TOOLSFUNCTION bool fileIsSameFile (const CXString &file1, const CXString &file2)
 
DLL_TOOLSFUNCTION bool fileIsSameDir (const CXString &file1, const CXString &file2)
 
DLL_TOOLSFUNCTION bool filePathContainMatchingFile (const CXString &path, const CXString &pattern, xFileFindInfo *info=NULL, unsigned int *timeOut=NULL)
 Fast check if matchin file exist in path.
 
DLL_TOOLSFUNCTION bool fileMatchWilcards (const CXString &reffilename, const CHashTable< CXString > &hashMap)
 
DLL_TOOLSFUNCTION bool fileMatchWilcards (const CXString &filename, const CXString &pattern, bool caseSensitive)
 
DLL_TOOLSFUNCTION CXString fileCutName (const CXString &filename, int maxNameSize=-1)
 name couldn't be lower than 8 characters (without extension).
 
DLL_TOOLSFUNCTION CXString fileRemoveNameDigitEnding (const CXString &filename, int &value)
 Remove the final name digit if any. Return the digit value or -1 if no digit is present.
 
DLL_TOOLSFUNCTION CXString fileNextNumberedName (const CXString &filename, bool parenthesisFormat=true, int namesize=-1)
 Given a filename, it returns the next numbered filename without checking if the file exists or not. It example.jpg will return example1.jpg.
 
DLL_TOOLSFUNCTION CXString fileCreateUniqueName (const CXString &filename, bool parenthesisFormat=true, int namesize=-1)
 the name is truncated if namesize > 0
 
DLL_TOOLSFUNCTION CXString fileCreateTmpName (const CXString &filename, bool allowUnicode=true)
 
DLL_TOOLSFUNCTION bool fileIsUNCPath (const CXString &filename)
 
DLL_TOOLSFUNCTION CXString fileGetRoot (const CXString &filename)
 
DLL_TOOLSFUNCTION CXString fileGetTopDirectory (const CXString &filename, bool slashTerminate=false)
 
DLL_TOOLSFUNCTION CXString fileStripPath (const CXString &filename, bool removeExtension=false)
 
DLL_TOOLSFUNCTION CXString fileStripName (const CXString &filename)
 
DLL_TOOLSFUNCTION CXString fileStripPathAndExtension (const CXString &filename)
 
DLL_TOOLSFUNCTION CXString fileRemoveExtension (const CXString &filename)
 
DLL_TOOLSFUNCTION CXString fileGetExtension (const CXString &filename)
 
DLL_TOOLSFUNCTION bool fileGetParentDirectory (CXString &path)
 Retrieve the parent directory of the provided directory (C:\tmp1\tmp2\ return C:\tmp1). If the path target a file, returns the parent directory of the file directory (C:\tmp1\tmp2\file.txt return C:\tmp1\)
 
DLL_TOOLSFUNCTION CXString fileCleanExtensionList (const CXString &extlist, bool extByDefault=TRUE, CHashTable< CXString > *hashMap=NULL)
 
DLL_TOOLSFUNCTION int fileGetHashFromExtensionList (CXString &extlist, CHashTable< CXString > &hash, bool extByDefault=TRUE)
 
DLL_TOOLSFUNCTION bool fileGetExtensionInfo (unsigned int type, CFileExt &fileinfo)
 
DLL_TOOLSFUNCTION int fileGetExtensionArray (unsigned int fileclass, CXStringArray &array, bool addAsterisk=FALSE)
 
DLL_TOOLSFUNCTION CXString fileGetMainExtension (unsigned int fileclass)
 
DLL_TOOLSFUNCTION CXString fileGetMainExtension (const CXString &ext)
 
DLL_TOOLSFUNCTION int fileGetExtensionArrayByProperty (unsigned int fileproperty, CXStringArray &array, bool addAsterisk=FALSE, bool onlyMain=FALSE)
 
DLL_TOOLSFUNCTION bool fileGetFileExt (const CXString &extension, CFileExt &info)
 
DLL_TOOLSFUNCTION unsigned int fileFindParser (const CXString &filename, unsigned int properties)
 
DLL_TOOLSFUNCTION unsigned int fileGetProperties (const CXString &filename)
 
DLL_TOOLSFUNCTION unsigned int fileGetClass (const CXString &filename)
 
DLL_TOOLSFUNCTION unsigned int fileGetKindOf (const CXString &filename)
 
DLL_TOOLSFUNCTION unsigned int fileGetProperties (unsigned int fileclass)
 
DLL_TOOLSFUNCTION unsigned int fileGetKindOf (unsigned int fileclass)
 
DLL_TOOLSFUNCTION unsigned int fileGetLoader (const CXString &filename)
 
DLL_TOOLSFUNCTION unsigned int fileGetSaver (const CXString &filename)
 
DLL_TOOLSFUNCTION bool fileDelete (const CXString &filename)
 
DLL_TOOLSFUNCTION bool fileCopy (const CXString &srcfile, const CXString &newfile, bool dontOverwrite=true)
 
DLL_TOOLSFUNCTION bool fileRename (const CXString &srcfile, const CXString &dstfile)
 
DLL_TOOLSFUNCTION bool fileCreateDirectory (const CXString &dir, bool recurseCreate)
 
DLL_TOOLSFUNCTION bool fileRemoveDirectory (const CXString &dir, bool recurse, bool evenIfNotEmpty, CXStringArray *excludeExt=NULL)
 
DLL_TOOLSFUNCTION int fileGetFileCount (const CXString &dir, bool recurse)
 
DLL_TOOLSFUNCTION CXString fileCreateTmpFolder (const CXString &foldername, bool createFolder=true)
 

Enumeration Type Documentation

◆ FILENAME_TYPE

Allows to define what kind of file a filename is.