6#if !defined(AFX_FILEINFO_H__12CD9483_C809_11D3_A382_9415BA0D2432__INCLUDED_)
7#define AFX_FILEINFO_H__12CD9483_C809_11D3_A382_9415BA0D2432__INCLUDED_
13#include "xfileoperation.h"
16BEGIN_MOOTOOLS_NAMESPACE
20typedef enum IoPluginMode
27typedef bool (*InitIOPluginFunc)(IoPluginMode mode,
void *data);
29#define UNKNOWN_CLASS 0
30#define TGA_FILE MAKE_CUSTOM_ID('T', 'G', 'A', ' ')
31#define Z_FILE MAKE_CUSTOM_ID('Z', 'F', 'I', 'L')
32#define BMP_FILE MAKE_CUSTOM_ID('B', 'M', 'P', ' ')
33#define JPEG_FILE MAKE_CUSTOM_ID('J', 'P', 'E', 'G')
34#define GIF_FILE MAKE_CUSTOM_ID('G', 'I', 'F', ' ')
35#define PNG_FILE MAKE_CUSTOM_ID('P', 'N', 'G', ' ')
36#define TIFF_FILE MAKE_CUSTOM_ID('T', 'I', 'F', 'F')
37#define ZPIC_FILE MAKE_CUSTOM_ID('Z', 'P', 'I', 'C')
38#define PIC_FILE MAKE_CUSTOM_ID('P', 'I', 'C', ' ')
39#define RLA_FILE MAKE_CUSTOM_ID('R', 'L', 'A', ' ')
40#define IFF_FILE MAKE_CUSTOM_ID('I', 'F', 'F', ' ')
42#define GIF_FILE MAKE_CUSTOM_ID('G', 'I', 'F', ' ')
43#define ICON_FILE MAKE_CUSTOM_ID('I', 'C', 'O', 'N')
44#define CURSOR_FILE MAKE_CUSTOM_ID('C', 'U', 'R', 'S')
45#define HDR_FILE MAKE_CUSTOM_ID('H', 'D', 'R', ' ')
46#define FOLDER_CLASS MAKE_CUSTOM_ID('F', 'L', 'D', 'R')
48#define AMAPI_3D_FILE MAKE_CUSTOM_ID('A', 'M', 'A', 'P')
49#define CINEMA4D_3D_FILE MAKE_CUSTOM_ID('C', 'N', '4', 'D')
50#define COLLADA_3D_FILE MAKE_CUSTOM_ID('D', 'A', 'E', ' ')
51#define DIRECTX_3D_FILE MAKE_CUSTOM_ID('D', 'R', 'T', 'X')
52#define DXF_3D_FILE MAKE_CUSTOM_ID('D', 'X', 'F', '4')
53#define DXF_FBX_3D_FILE MAKE_CUSTOM_ID('D', 'X', 'F', 'B')
54#define INTERNALFORMAT_3D_FILE MAKE_CUSTOM_ID('3', 'D', 'I', 'F')
55#define KMZ_3D_FILE MAKE_CUSTOM_ID('K', 'M', 'Z', 'I')
56#define LIGHTWAVE_3D_FILE MAKE_CUSTOM_ID('L', 'I', 'G', 'T')
57#define LIGHTWAVE_3D_SCENE_FILE MAKE_CUSTOM_ID('L', 'I', 'G', 'S')
58#define LXO_3D_FILE MAKE_CUSTOM_ID('L', 'X', 'O', 'I')
59#define MAYAASCII_3D_FILE MAKE_CUSTOM_ID('M', 'Y', 'A', 'S')
60#define MAYA_3D_FILE MAKE_CUSTOM_ID('M', 'A', 'Y', 'A')
61#define SKETCHUP_3D_FILE MAKE_CUSTOM_ID('S', 'K', 'E', 'T')
62#define JT_3D_FILE MAKE_CUSTOM_ID('J', 'T', 'K', 'F')
63#define KERNELIO_3D_FILE MAKE_CUSTOM_ID('C', 'T', 'K', 'I')
64#define STL_3D_FILE MAKE_CUSTOM_ID('S', 'T', 'L', ' ')
65#define STUDIO_MAX_3D_FILE MAKE_CUSTOM_ID('3', 'M', 'A', 'X')
66#define STUDIO_3D_FILE MAKE_CUSTOM_ID('3', 'D', 'S', 'T')
67#define TRUESPACE_3D_FILE MAKE_CUSTOM_ID('T', 'R', 'U', 'E')
68#define VRML_3D_FILE MAKE_CUSTOM_ID('V', 'R', 'M', 'L')
69#define VRML97_3D_FILE MAKE_CUSTOM_ID('V', 'R', '9', '7')
70#define PLY_3D_FILE MAKE_CUSTOM_ID('P', 'L', 'Y', 'Y')
71#define WAVEFRONT_3D_FILE MAKE_CUSTOM_ID('W', 'A', 'V', 'F')
72#define XSI_3D_FILE MAKE_CUSTOM_ID('X', 'S', 'I', ' ')
73#define FBX_3D_FILE MAKE_CUSTOM_ID('F', 'B', 'X', ' ')
74#define ALEMBIC_3D_FILE MAKE_CUSTOM_ID('A', 'B', 'C', 'F')
75#define MR_3D_FILE MAKE_CUSTOM_ID('P', 'C', 'M', 'R')
76#define GLTF_3D_FILE MAKE_CUSTOM_ID('G', 'L', 'T', 'F')
77#define BLENDER_3D_FILE MAKE_CUSTOM_ID('B', 'L', 'E', 'N')
79#define WAV_AUDIO_FILE MAKE_CUSTOM_ID('A', 'I', 'W', 'V')
80#define WINMEDIA_AUDIO_FILE MAKE_CUSTOM_ID('A', 'I', 'W', 'M')
81#define MAC_AUDIO_FILE MAKE_CUSTOM_ID('A', 'I', 'M', 'C')
82#define UNIX_AUDIO_FILE MAKE_CUSTOM_ID('A', 'I', 'U', 'X')
83#define MPEG_AUDIO_FILE MAKE_CUSTOM_ID('A', 'I', 'M', 'G')
84#define MIDI_FILE MAKE_CUSTOM_ID('M', 'I', 'D', 'I')
85#define FLASH_FILE MAKE_CUSTOM_ID('F', 'L', 'A', 'S')
86#define HTMLS_FILE MAKE_CUSTOM_ID('I', 'H', 'T', 'M')
87#define RAWS_FILE MAKE_CUSTOM_ID('R', 'A', 'W', 'S')
88#define MOV_FILE MAKE_CUSTOM_ID('M', 'O', 'V', ' ')
89#define ZIP_FILE MAKE_CUSTOM_ID('Z', 'I', 'P', ' ')
90#define RAR_FILE MAKE_CUSTOM_ID('R', 'A', 'R', ' ')
91#define TAR_FILE MAKE_CUSTOM_ID('T', 'A', 'R', ' ')
92#define ZIP7_FILE MAKE_CUSTOM_ID('Z', 'I', 'P', '7')
93#define GZ_FILE MAKE_CUSTOM_ID('G', 'Z', ' ', ' ')
94#define STEGANO_FILE MAKE_CUSTOM_ID('S', 'T', 'E', 'G')
95#define PPM_FILE MAKE_CUSTOM_ID('P', 'P', 'M', ' ')
96#define AVI_FILE MAKE_CUSTOM_ID('A', 'V', 'I', ' ')
97#define MPEG4_FILE MAKE_CUSTOM_ID('M', 'P', 'G', '4')
98#define FLV_FILE MAKE_CUSTOM_ID('F', 'L', 'V', ' ')
99#define WMV_FILE MAKE_CUSTOM_ID('W', 'M', 'V', ' ')
100#define ALL_FILE_CLASS MAKE_CUSTOM_ID('A', 'L', 'L', 'F')
102#define PLUGIN_PARSER MAKE_CUSTOM_ID('P', 'L', 'G', 'P')
103#define MOOTOOLS_PARSER MAKE_CUSTOM_ID('M', 'O', 'O', 'T')
104#define CALLBACK_PARSER MAKE_CUSTOM_ID('C', 'A', 'L', 'K')
105#define MAGICK_PARSER MAKE_CUSTOM_ID('M', 'A', 'G', 'I')
106#define UNKNOWN_PARSER MAKE_CUSTOM_ID('U', 'N', 'K', 'N')
116#define UNKNOWN_PROPERTIES 0x00
117#define IMPORT_FILE 0x01
118#define EXPORT_FILE 0x02
119#define PRIVATE_IMPORT_FILE 0x04
120#define PRIVATE_EXPORT_FILE 0x08
121#define COMMON_EXTENSION_FILE 0x10
122#define LOAD_HAS_DIALOG 0x20
123#define LOAD_NEED_DIALOG 0x40
124#define SAVE_HAS_DIALOG 0x80
125#define SAVE_NEED_DIALOG 0x100
126#define FORCE_DISPLAY_FILE 0x200
127#define ONE_SHOT_FORMAT 0x400
128#define MAIN_FORMAT_PARSER 0x800
130#define KIND_OF_FILE 0xFFFFF000
131#define UNKNOWN_KIND_OF_FILE 0x00
132#define BITMAP_FILE 0x00001000
133#define ANIMATED_BITMAP_FILE 0x00002000
134#define OBJECT_FILE 0x00004000
135#define SOUND_FILE 0x00008000
136#define VIDEO_FILE 0x00010000
137#define WWW_FILE 0x00020000
138#define COMPRESSED_FILE 0x00040000
139#define GENERAL_FILE 0x00080000
140#define FOLDER_FILE 0x00100000
141#define LAST_KIND_OF FOLDER_FILE
143#define ALL_KIND_OF_FILES (KIND_OF_FILE)
144#define MULTIMEDIA_FILES (BITMAP_FILE|ANIMATED_BITMAP_FILE|OBJECT_FILE|SOUND_FILE|VIDEO_FILE)
159 unsigned int fileclass;
162 mutable bool defaultClassSelected;
169 bool IsDefaultParserChoice()
const {
return defaultClassSelected; }
172 void operator=(
const CXString& filename);
173 unsigned int GetClass()
const;
174 void SetClass(
unsigned int newclass);
175 const CXString& GetFileName()
const;
205 fileclass = UNKNOWN_CLASS;
206 properties = UNKNOWN_PROPERTIES;
207 loader = UNKNOWN_PARSER;
208 saver = UNKNOWN_PARSER;
214 unsigned int GetClass()
const {
return fileclass; }
215 unsigned int GetProperties()
const {
return (properties); }
216 unsigned int GetKindOf()
const {
return (properties & KIND_OF_FILE); }
217 unsigned int GetLoader()
const {
return loader; }
218 unsigned int GetSaver()
const {
return saver; }
221typedef enum DirCompare
223 DIFFERENT_DIRECTORY = 0,
225 DIR1_IN_DIR2_DIRECTORY,
226 DIR2_IN_DIR1_DIRECTORY,
229typedef enum FileValidateNameMode
231 FILEVALIDATE_DEFAULT = 0,
232 FILEVALIDATE_FILENAME = 0x01,
233 FILEVALIDATE_DIRECTORY = 0x02,
234 FILEVALIDATE_PATH = FILEVALIDATE_FILENAME|FILEVALIDATE_DIRECTORY,
235 FILEVALIDATE_CAN_BE_RELATIVE = 0x04,
236 FILEVALIDATE_ALLOW_EMPTY_NAME = 0x08,
237 FILEVALIDATE_FILENAME_ONLY = 0x10,
238 FILEVALIDATE_QUIET = 0x20,
239} FileValidateNameMode;
241typedef enum FileCheckAccessFlag
243 FILE_CHECK_READ = 0x01,
244 FILE_CHECK_WRITE = 0x02,
245 FILE_CHECK_SHARED_READ = 0x04,
246 FILE_CHECK_SHARED_WRITE = 0x08,
247 FILE_CHECK_CREATE = 0x10,
248 FILE_CHECK_SHARED_CREATE = FILE_CHECK_CREATE|FILE_CHECK_SHARED_READ|FILE_CHECK_SHARED_WRITE,
249} FileCheckAccessFlag;
255 FILENAME_UNKNOWN = 0,
257 FILENAME_IS_A_DIRECTORY,
258 FILENAME_IS_A_NETWORK_FILE,
264void fileUnregisterFiles();
266#define IOTIMEOUT_ALWAYS_USE (0x80000000)
267#define IOTIMEOUT_DEFAULT 750
268#define IOTIMEOUT_OCCURED ((unsigned int)-1)
270DLL_TOOLSFUNCTION
void fileRegisterFile(
CFileExt& fileinfo);
271DLL_TOOLSFUNCTION
void fileUnregisterFile(
unsigned int fileClass,
unsigned int flags);
272DLL_TOOLSFUNCTION
CFileExt *fileGetRegisteredFiles(
unsigned int& size,
unsigned int filter = 0);
273DLL_TOOLSFUNCTION
void fileFreeRegisteredFiles(
CFileExt *
files,
unsigned int size);
280DLL_TOOLSFUNCTION
CXString fileGetCurrentDirectory();
283DLL_TOOLSFUNCTION
bool fileDirectoryExists(
const CXString& filename,
unsigned int* timeOut =
NULL);
285DLL_TOOLSFUNCTION
bool fileCheckAccess(
const CXString& filename,
unsigned int flags);
286DLL_TOOLSFUNCTION
bool fileGetCreationDate(
const CXString& filename,
CXTime& time);
287DLL_TOOLSFUNCTION
bool fileSetCreationDate(
const CXString& filename,
const CXTime& time);
288DLL_TOOLSFUNCTION
bool fileGetLastWriteDate(
const CXString& filename,
CXTime& time);
289DLL_TOOLSFUNCTION
bool fileSetLastWriteDate(
const CXString& filename,
const CXTime& time);
292DLL_TOOLSFUNCTION
void fileRemoveDuplicatedSlash(
CXString& path);
293DLL_TOOLSFUNCTION
void fileSlashTerminate(
CXString& dir);
294DLL_TOOLSFUNCTION
bool fileIsSlashTerminated(
const CXString& path);
299DLL_TOOLSFUNCTION
bool fileIsValidFileName(
const CXString& filename,
unsigned int checkMode);
311DLL_TOOLSFUNCTION
bool fileIsUNCPath(
const CXString& filename);
316DLL_TOOLSFUNCTION
CXString fileStripPathAndExtension(
const CXString& filename);
322DLL_TOOLSFUNCTION
bool fileGetExtensionInfo(
unsigned int type,
CFileExt& fileinfo);
324DLL_TOOLSFUNCTION
CXString fileGetMainExtension(
unsigned int fileclass);
327DLL_TOOLSFUNCTION
bool fileGetFileExt(
const CXString& extension,
CFileExt& info);
328DLL_TOOLSFUNCTION
unsigned int fileFindParser(
const CXString& filename,
unsigned int properties);
329DLL_TOOLSFUNCTION
unsigned int fileGetProperties(
const CXString& filename);
330DLL_TOOLSFUNCTION
unsigned int fileGetClass(
const CXString& filename);
331DLL_TOOLSFUNCTION
unsigned int fileGetKindOf(
const CXString& filename);
332DLL_TOOLSFUNCTION
unsigned int fileGetProperties(
unsigned int fileclass);
333DLL_TOOLSFUNCTION
unsigned int fileGetKindOf(
unsigned int fileclass);
334DLL_TOOLSFUNCTION
unsigned int fileGetLoader(
const CXString& filename);
335DLL_TOOLSFUNCTION
unsigned int fileGetSaver(
const CXString& filename);
338DLL_TOOLSFUNCTION
bool fileDelete(
const CXString& filename);
343DLL_TOOLSFUNCTION
int fileGetFileCount(
const CXString& dir,
bool recurse);
346#ifndef MOOTOOLS_NO_UI
351#if !defined(MOOTOOLS_CRUNCHERSDK) && !defined(MRSDK_USE)
388 unsigned int fileclass;
389 unsigned int properties;
390 InitIOPluginFunc iocallback;
393 typedef enum _FileInfoFlags
395 FILEINFO_NONE = 0x00,
396 FILEINFO_IS_DIRECTORY = 0x01,
397 FILEINFO_IS_UNC_FILE = 0x02,
398 FILEINFO_IS_SHORTCUT = 0x04,
399 FILEINFO_IS_URL = 0x08,
402 FILEINFO_DIRECTORY_CHECKED = 0x1000,
403 FILEINFO_UNC_FILE_CHECKED = 0x2000,
404 FILEINFO_SHORTCUT_CHECKED = 0x4000,
405 FILEINFO_IGNORE_CURRENT_DIRECTORY = 0x8000,
406 FILEINFO_TRY_OTHER_PARSER = 0x10000,
409 FILEINFO_MULTI_PARSER_EXT = 0x100000,
412 unsigned int currentParser;
414 int reverseDot, reverseSlash, reverseQuestionMark;
421 void ExtractExtension();
440 bool CanTryAnotherParser()
const;
441 void TryNextParser();
449#if !defined(MOOTOOLS_CRUNCHERSDK) && !defined(MRSDK_USE)
463 bool IsSameFile(
const CXString& filename)
const;
471END_MOOTOOLS_NAMESPACE
CCustomData class is a handly class for storing any kind of data.
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 conv...
DLL_TOOLSFUNCTION CXString fileCreateUniqueName(const CXString &filename, bool parenthesisFormat=true, int namesize=-1)
the name is truncated if namesize > 0
DLL_TOOLSFUNCTION CXString fileCutName(const CXString &filename, int maxNameSize=-1)
name couldn't be lower than 8 characters (without extension).
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....
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 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.
FILENAME_TYPE
Definition FileInfo.h:254
DLL_TOOLSFUNCTION bool filePopCurrentDirectory()
pop the latest push current directory
DLL_TOOLSFUNCTION bool fileConvertSlash(CXString &dir)
Make slash OS compatible.
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 ...
DLL_TOOLSFUNCTION bool filePushCurrentDirectory(const CXString &newpath, unsigned int *timeOut=NULL)
return true if directory change is a success. Whatever the results, filePopCurrentDirectory must alwa...
void fileRegisterFiles()
Automatically call to make all recognized by being registered and recognized.
DLL_TOOLSFUNCTION bool fileExists(const CXString &filename, unsigned int *timeOut=NULL)
Accessing file can take time. specify timeOut if critical (ie access through network)....
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 w...
DLL_TOOLSFUNCTION void fileRemoveInvalidChar(CXString &path, char spaceReplace=' ')
Remove any invalid character for a filename <>:"/|?* and eventually replaces space without something ...
DLL_TOOLSFUNCTION bool fileGetParentDirectory(CXString &path)
Retrieve the parent directory of the provided directory (C:\tmp1\tmp2\ return C:\tmp1)....
CXTString< TCHAR > CXString
CXString depend on the target OS. Could be CXStringW (Windows) or CXStringA (Linux / Macos)
Definition XString.h:118
The class defines an x, y, z 3D point which can use int, float or double.
Definition 3DPoint.h:27
CFileExt is the class that allows to add a custom file parser for supporting a new file format....
Definition FileInfo.h:182
unsigned int fileclass
A tag created with MAKE_CUSTOM_ID.
Definition FileInfo.h:186
InitIOPluginFunc iocallback
The function which allows to create parser.
Definition FileInfo.h:194
unsigned int properties
Definition FileInfo.h:187
unsigned int saver
Inform about the file saver: MOOTOOLS_PARSER, PLUGIN_PARSER, CALLBACK_PARSER or something else (ie....
Definition FileInfo.h:193
unsigned int loader
Definition FileInfo.h:192
A convenient class to get some information giving a specific file name through a CFileNameSpec object...
Definition FileInfo.h:375
unsigned int GetSaver() const
Return saver of file.
bool IsFile() const
Is the filename a file?
unsigned int GetLoader() const
Return loader of file.
static int GetDigit(const CXString &filename)
Return the digit value of the file, the name without digit, and the digit string.
void Init(const CFileNameSpec &filepec, FILENAME_TYPE type=FILENAME_UNKNOWN)
Retrieve info about a file giving a CFileNameSpec. If known type can be provided to resolve some name...
unsigned int GetClass() const
Return type file class.
bool IsUNCPath()
Is the file on network?
bool IsDirectory() const
Is the filename a directory?
bool IsURL() const
Is the filename an URL? Note: An URL can also be a directory or a file.
CXString GetName() const
Return filename (without path)
unsigned int GetProperties() const
Return type of file.
CXString GetRoot() const
Return root.
CXString GetQuery(bool includeQuestionMark=true) const
Return query if path is an url. includeQuestionMark keeps the ? unless no query is specified.
unsigned int GetKindOf() const
Return kind of file.
CXString GetPathWithoutRoot() const
Return path without root.
CXString GetPath() const
Return path.
CXString GetCompleteName() const
Return filename (path included)
CXString GetNameWithoutExt() const
Return filename (without path and extension)
CXString GetParentDirectory() const
Return the parent directory path.
InitIOPluginFunc GetInitIoCallback()
Return the parser initializer function if parser is added at runtime. It can be located in a plugin (...
unsigned int GetParserNbr() const
Return the parser number for the extension.
CXString GetExtension() const
Return extension.
int GetDigitInfo(CXString &dstname, CXString &digitstring, bool addWildcard=false, bool endDigitOnly=false) const
Return the digit value of the file, the name without digit, and the digit string. If several digit ex...
CXString GetTopDirectory() const
Return the directory name which contain the file.
A given extension may match several formats. In case of conflict CFileNameSpec is a way to indicate t...
Definition FileInfo.h:156
CXStringArray implement an array of CXString.
Definition XStringArray.h:25