My Project
ParaScriptingIO.h
1 //-----------------------------------------------------------------------------
2 // Copyright (C) 2004 - 2006 ParaEngine Dev Studio, All Rights Reserved.
3 // Date: 2005.11
4 // Description: API for IO
5 //-----------------------------------------------------------------------------
6 #pragma once
7 #include "ParaScriptingCommon.h"
8 #include "FileSystemWatcher.h"
9 #include "ZipWriter.h"
10 
11 namespace ParaScripting
12 {
13  using namespace std;
14  using namespace ParaEngine;
15  using namespace luabind;
16 
21  {
22  public:
24 #if defined(PARAENGINE_MOBILE)
26 #else
28 #endif
29 
31  void AddDirectory(const char* filename);
33  void RemoveDirectory(const char* filename);
34 
47  void AddCallback(const char* sCallbackScript);
48  public:
49 #if defined(PARAENGINE_MOBILE)
50  ParaFileSystemWatcher* m_watcher;
51 #else
52  CFileSystemWatcher* m_watcher;
53 #endif
54 
55  };
56 
62  {
63  public:
65  int m_nFromByte;
66  int m_nByteCount;
67  // for the get line or get file API
68  std::string m_sTempBuffer;
69  ParaFileObject():m_pFile(), m_nFromByte(0), m_nByteCount(-1){};
70  ParaFileObject(boost::shared_ptr<CParaFile> pFile):m_pFile(pFile), m_nFromByte(0), m_nByteCount(-1){};
71  ~ParaFileObject();
72  public:
74  bool IsValid();
76  void close();
77 
84  int SetSegment(int nFromByte, int nByteCount);
85 
91  const char* GetBase64StringEx(int * pnStrLength=0);
92  const char* GetBase64String();
93 
97  void seek(int offset);
98  void seekRelative(int offset);
100  int getpos();
101 
112  void SetFilePointer(int lDistanceToMove,int dwMoveMethod);
113 
120  bool SetEndOfFile();
121 
122  void writeline(const char* str);
128  const char* readline();
129 
131  const char* GetText();
132 
137  const std::string& GetText2(int fromPos, int nCount);
138 
142  const std::string& ReadString(int nCount);
143 
145  void WriteString(const char* str);
147  void WriteString2(const char* buffer, int nSize);
148 
150  void write(const char* buffer, int nSize);
151 
158  int WriteBytes(int nSize, const object& input);
159 
167  object ReadBytes(int nSize, const object& output);
168 
170  void WriteFloat(float value);
171  float ReadFloat();
172 
174  void WriteWord(int value);
175  int ReadWord();
176 
177  void WriteDouble(double value);
178  double ReadDouble();
179 
181  void WriteInt(int value);
182  int ReadInt();
183 
185  void WriteShort(int value);
186  int ReadShort();
187 
189  void WriteUInt(unsigned int value);
190  unsigned int ReadUInt();
191 
193  int GetFileSize();
194  };
195 
200  class PE_CORE_DECL ParaSearchResult
201  {
202  public:
203  CSearchResult * m_pResult;
204 
205  ParaSearchResult():m_pResult(NULL){};
206  ParaSearchResult(CSearchResult * pResult):m_pResult(pResult){};
207 
211  bool IsValid();
212 
214  void Release();
215 
217  string GetRootPath();
218 
220  int GetNumOfResult();
221 
223  bool AddResult(const char* sItem);
224 
226  string GetItem(int nIndex);
227 
234  object GetItemData(int nIndex, const object& output);
235  };
236 
250  {
251  public:
252  ParaZipWriter();
253  ParaZipWriter(CZipWriter* writer);
254  public:
255  ref_ptr<CZipWriter> m_writer;
256 
257  public:
258 
260  bool IsValid();
261 
266  DWORD ZipAdd(const char* dstzn, const char* fn);
267 
272  DWORD ZipAddData(const char* dstzn, const std::string& buff);
273 
278  DWORD ZipAddFolder(const char* dstzn);
279 
287  DWORD AddDirectory(const char* dstzn, const char* filepattern, int nSubLevel=0);
288 
293  DWORD close();
294  };
295 
301  class PE_CORE_DECL ParaIO
302  {
303  public:
304  ParaIO(void);
305  ~ParaIO(void);
306  public:
307 
314  static const char* DecodePath(const char* input);
315 
320  static const char* EncodePath(const char* input);
321 
325  static const char* EncodePath2(const char* input, const char* varNames);
326 
332  static bool AddPathVariable(const char * sVarName, const char * sVarValue);
333 
339  static bool AddSearchPath(const char* sFile);
340  static bool AddSearchPath2(const char* sFile, int nPriority);
341 
345  static bool RemoveSearchPath(const char* sFile);
346 
348  static const std::string& GetWritablePath();
349 
353  static bool ClearAllSearchPath();
354 
359  static unsigned long CRC32(const char* filename);
360 
371  static void UpdateMirrorFiles(const char* dirName, bool bOverwrite);
372 
373 
377  static ParaZipWriter CreateZip(const char *fn, const char *password);
378 
384  static int DeleteFile(const char* sFilePattern);
385 
392  static bool MoveFile(const char* src, const char* dest);
393 
402  static bool CopyFile(const char* src, const char* dest, bool bOverride);
403 
413  static ParaFileObject OpenAssetFile(const char* filename);
414  static ParaFileObject OpenAssetFile2(const char* filename, bool bDownloadIfNotUpToDate);
415 
417  static bool DoesAssetFileExist(const char* filename);
418 
421  static bool DoesAssetFileExist2(const char* filename, bool bSearchZipFile);
422 
428  static int SyncAssetFile_Async(const char* filename, const char* sCallBackScript);
429 
439  static int CheckAssetFile(const char* filename);
440 
441  /* load a replace file mapping. it is just file to file pairs. If the file is requested on the left during GetFile(filename), file on the right is returned instead.
442  * This function is very useful to temporarily change the 3D and 2D theme of the entire game world, in which only a text file needs to be updated.
443  * The following API are also aware of replace file: DoesFileExist(), OpenFile(), OpenAssetFile(), etc.
444  * @param filename: the file map file.
445  * @param bReplaceExistingOnes: whether we will overwrite any previous calls to this function.
446  */
447  static void LoadReplaceFile(const char* filename, bool bReplaceExistingOnes);
448 
459  static ParaFileObject open(const char * filename, const char *mode);
460 
469  static ParaFileObject openimage(const char * filename, const char *mode);
470  /* like openimage, but can get exinfo*/
471  /*
472  local exinfo = {};
473  local file = ParaIO.openimage("test.jpg", "", exinfo);
474  if (file) then
475  print(exinfo.FocalLength);
476  end
477  */
478  static ParaFileObject openimage2(const char * filename, const char* mode, const object& oExInfo);
479 
483  static bool CreateDirectory(const char* filename);
484 
489  static bool CreateNewFile(const char * filename);
493  static bool OpenFileWrite(const char * filename);
497  static bool OpenFile(const char * filename);
498 
502  static void CloseFile();
506  static void WriteString(const char* str);
511  static void write(const char* buffer, int nSize);
512 
520  static const char* readline();
521 
525  static const char* readline2(const char* prompt);
526 
534  static bool DoesFileExist(const char* filename, bool bSearchZipFiles);
536  static bool DoesFileExist_(const char* filename);
537 
543  static bool BackupFile(const char* filename);
544 
563  static ParaSearchResult SearchFiles(const char* sRootPath, const char* sFilePattern, const char* sZipArchive, int nSubLevel, int nMaxFilesNum, int nFrom);
564  static ParaSearchResult SearchFiles_c(const char* sRootPath, const char* sFilePattern, const char* sZipArchive, int nSubLevel);
565 
596  static string GetCurDirectory(DWORD dwDirectoryType);
599  static const char* GetCurDirectory_(DWORD dwDirectoryType);
600 
609  static string GetParentDirectoryFromPath(const char* sfilename, int nParentCounts);
612  static const char* GetParentDirectoryFromPath_(const char* sfilename, int nParentCounts);
613 
619  static string AutoFindParaEngineRootPath(const char* sFile);
622  static const char* AutoFindParaEngineRootPath_(const char* sFile);
629  static string ChangeFileExtension(const char* sFile, const string & sExt);
632  static const char* ChangeFileExtension_(const char* sFile, const string & sExt);
633 
635  static string GetFileExtension(const char* sFile);
638  static const char* GetFileExtension_(const char* sFile);
639 
649  static string GetRelativePath(const char* sAbsolutePath, const char* sRootPath);
652  static const char* GetRelativePath_(const char* sAbsolutePath, const char* sRootPath);
653 
662  static string GetAbsolutePath(const char* sRelativePath, const char* sRootPath);
665  static const char* GetAbsolutePath_(const char* sRelativePath, const char* sRootPath);
666 
670  static string GetFileName(const char* sFilePath);
673  static const char* GetFileName_(const char* sFilePath);
674 
679  static int GetFileSize(const char* sFilePath);
680 
685  static bool GetFileInfo(const char* sFilePath, const object& inout);
686 
691  static string ToCanonicalFilePath(const char* sfilename, bool bBackSlash);
694  static const char* ToCanonicalFilePath__(const char* sfilename, bool bBackSlash);
695 
696 
701  static void SetDiskFilePriority(int nPriority);
702 
707  static int GetDiskFilePriority();
708 
711  static ParaFileSystemWatcher GetFileSystemWatcher(const char* filename);
712 
716  static void DeleteFileSystemWatcher(const char* name);
717  };
718 
724  class ParaXML
725  {
726  private:
727  static void LuaXML_ParseNode(lua_State *L, void* pNode);
728  public:
746  static int LuaXML_ParseString (lua_State *L);
747  static int LuaXML_ParseFile (lua_State *L);
748 
755  static void SetCondenseWhiteSpace( bool condense );
756 
758  static bool IsWhiteSpaceCondensed();
759  };
760 }
different physics engine has different winding order.
Definition: EventBinding.h:32
ParaIO class: IO functions ported to the scripting system.
Definition: ParaScriptingIO.h:301
Definition: class.hpp:124
it represents a search result.
Definition: ParaScriptingIO.h:200
Definition: minilua.c:461
creating zip files
Definition: ZipWriter.h:27
The ref_ptr class template stores a pointer to a dynamically allocated (AssetEntity|CRefCounted|BaseA...
Definition: PERefPtr.h:13
ParaXML class.
Definition: ParaScriptingIO.h:724
Definition: PEtypes.h:507
Definition: enum_maker.hpp:46
monitoring file changes.
Definition: FileSystemWatcher.h:17
file object.
Definition: ParaScriptingIO.h:61
ParaZipWriter class: creating zip files.
Definition: ParaScriptingIO.h:249
for luabind, The main drawback of this approach is that the compilation time will increase for the fi...
Definition: luaSQLite.cpp:1971
it represents the search result.
Definition: FileSearchResult.h:24
file system watcher to monitor file changes in one or several directories .NET also provides a class ...
Definition: ParaScriptingIO.h:20