physfs 2.0.2
|
00001 00216 #ifndef _INCLUDE_PHYSFS_H_ 00217 #define _INCLUDE_PHYSFS_H_ 00218 00219 #ifdef __cplusplus 00220 extern "C" { 00221 #endif 00222 00223 #ifndef DOXYGEN_SHOULD_IGNORE_THIS 00224 #if (defined _MSC_VER) 00225 #define __EXPORT__ __declspec(dllexport) 00226 #elif (__GNUC__ >= 3) 00227 #define __EXPORT__ __attribute__((visibility("default"))) 00228 #else 00229 #define __EXPORT__ 00230 #endif 00231 #endif /* DOXYGEN_SHOULD_IGNORE_THIS */ 00232 00237 typedef unsigned char PHYSFS_uint8; 00238 00243 typedef signed char PHYSFS_sint8; 00244 00249 typedef unsigned short PHYSFS_uint16; 00250 00255 typedef signed short PHYSFS_sint16; 00256 00261 typedef unsigned int PHYSFS_uint32; 00262 00267 typedef signed int PHYSFS_sint32; 00268 00284 #if (defined PHYSFS_NO_64BIT_SUPPORT) /* oh well. */ 00285 typedef PHYSFS_uint32 PHYSFS_uint64; 00286 typedef PHYSFS_sint32 PHYSFS_sint64; 00287 #elif (defined _MSC_VER) 00288 typedef signed __int64 PHYSFS_sint64; 00289 typedef unsigned __int64 PHYSFS_uint64; 00290 #else 00291 typedef unsigned long long PHYSFS_uint64; 00292 typedef signed long long PHYSFS_sint64; 00293 #endif 00294 00295 00296 #ifndef DOXYGEN_SHOULD_IGNORE_THIS 00297 /* Make sure the types really have the right sizes */ 00298 #define PHYSFS_COMPILE_TIME_ASSERT(name, x) \ 00299 typedef int PHYSFS_dummy_ ## name[(x) * 2 - 1] 00300 00301 PHYSFS_COMPILE_TIME_ASSERT(uint8, sizeof(PHYSFS_uint8) == 1); 00302 PHYSFS_COMPILE_TIME_ASSERT(sint8, sizeof(PHYSFS_sint8) == 1); 00303 PHYSFS_COMPILE_TIME_ASSERT(uint16, sizeof(PHYSFS_uint16) == 2); 00304 PHYSFS_COMPILE_TIME_ASSERT(sint16, sizeof(PHYSFS_sint16) == 2); 00305 PHYSFS_COMPILE_TIME_ASSERT(uint32, sizeof(PHYSFS_uint32) == 4); 00306 PHYSFS_COMPILE_TIME_ASSERT(sint32, sizeof(PHYSFS_sint32) == 4); 00307 00308 #ifndef PHYSFS_NO_64BIT_SUPPORT 00309 PHYSFS_COMPILE_TIME_ASSERT(uint64, sizeof(PHYSFS_uint64) == 8); 00310 PHYSFS_COMPILE_TIME_ASSERT(sint64, sizeof(PHYSFS_sint64) == 8); 00311 #endif 00312 00313 #undef PHYSFS_COMPILE_TIME_ASSERT 00314 00315 #endif /* DOXYGEN_SHOULD_IGNORE_THIS */ 00316 00317 00341 typedef struct PHYSFS_File 00342 { 00343 void *opaque; 00344 } PHYSFS_File; 00345 00346 00358 #define PHYSFS_file PHYSFS_File 00359 00360 00376 typedef struct PHYSFS_ArchiveInfo 00377 { 00378 const char *extension; 00379 const char *description; 00380 const char *author; 00381 const char *url; 00382 } PHYSFS_ArchiveInfo; 00383 00384 00398 typedef struct PHYSFS_Version 00399 { 00400 PHYSFS_uint8 major; 00401 PHYSFS_uint8 minor; 00402 PHYSFS_uint8 patch; 00403 } PHYSFS_Version; 00404 00405 #ifndef DOXYGEN_SHOULD_IGNORE_THIS 00406 #define PHYSFS_VER_MAJOR 2 00407 #define PHYSFS_VER_MINOR 0 00408 #define PHYSFS_VER_PATCH 2 00409 #endif /* DOXYGEN_SHOULD_IGNORE_THIS */ 00410 00411 00412 /* PhysicsFS state stuff ... */ 00413 00430 #define PHYSFS_VERSION(x) \ 00431 { \ 00432 (x)->major = PHYSFS_VER_MAJOR; \ 00433 (x)->minor = PHYSFS_VER_MINOR; \ 00434 (x)->patch = PHYSFS_VER_PATCH; \ 00435 } 00436 00437 00464 __EXPORT__ void PHYSFS_getLinkedVersion(PHYSFS_Version *ver); 00465 00466 00487 __EXPORT__ int PHYSFS_init(const char *argv0); 00488 00489 00516 __EXPORT__ int PHYSFS_deinit(void); 00517 00518 00547 __EXPORT__ const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void); 00548 00549 00563 __EXPORT__ void PHYSFS_freeList(void *listVar); 00564 00565 00584 __EXPORT__ const char *PHYSFS_getLastError(void); 00585 00586 00600 __EXPORT__ const char *PHYSFS_getDirSeparator(void); 00601 00602 00633 __EXPORT__ void PHYSFS_permitSymbolicLinks(int allow); 00634 00635 00636 /* !!! FIXME: const this? */ 00676 __EXPORT__ char **PHYSFS_getCdRomDirs(void); 00677 00678 00695 __EXPORT__ const char *PHYSFS_getBaseDir(void); 00696 00697 00718 __EXPORT__ const char *PHYSFS_getUserDir(void); 00719 00720 00732 __EXPORT__ const char *PHYSFS_getWriteDir(void); 00733 00734 00754 __EXPORT__ int PHYSFS_setWriteDir(const char *newDir); 00755 00756 00771 __EXPORT__ int PHYSFS_addToSearchPath(const char *newDir, int appendToPath); 00772 00773 00791 __EXPORT__ int PHYSFS_removeFromSearchPath(const char *oldDir); 00792 00793 00820 __EXPORT__ char **PHYSFS_getSearchPath(void); 00821 00822 00880 __EXPORT__ int PHYSFS_setSaneConfig(const char *organization, 00881 const char *appName, 00882 const char *archiveExt, 00883 int includeCdRoms, 00884 int archivesFirst); 00885 00886 00887 /* Directory management stuff ... */ 00888 00910 __EXPORT__ int PHYSFS_mkdir(const char *dirName); 00911 00912 00943 __EXPORT__ int PHYSFS_delete(const char *filename); 00944 00945 00971 __EXPORT__ const char *PHYSFS_getRealDir(const char *filename); 00972 00973 01012 __EXPORT__ char **PHYSFS_enumerateFiles(const char *dir); 01013 01014 01032 __EXPORT__ int PHYSFS_exists(const char *fname); 01033 01034 01052 __EXPORT__ int PHYSFS_isDirectory(const char *fname); 01053 01054 01072 __EXPORT__ int PHYSFS_isSymbolicLink(const char *fname); 01073 01074 01088 __EXPORT__ PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename); 01089 01090 01091 /* i/o stuff... */ 01092 01115 __EXPORT__ PHYSFS_File *PHYSFS_openWrite(const char *filename); 01116 01117 01141 __EXPORT__ PHYSFS_File *PHYSFS_openAppend(const char *filename); 01142 01143 01166 __EXPORT__ PHYSFS_File *PHYSFS_openRead(const char *filename); 01167 01168 01187 __EXPORT__ int PHYSFS_close(PHYSFS_File *handle); 01188 01189 01206 __EXPORT__ PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle, 01207 void *buffer, 01208 PHYSFS_uint32 objSize, 01209 PHYSFS_uint32 objCount); 01210 01224 __EXPORT__ PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle, 01225 const void *buffer, 01226 PHYSFS_uint32 objSize, 01227 PHYSFS_uint32 objCount); 01228 01229 01230 /* File position stuff... */ 01231 01244 __EXPORT__ int PHYSFS_eof(PHYSFS_File *handle); 01245 01246 01257 __EXPORT__ PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle); 01258 01259 01274 __EXPORT__ int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos); 01275 01276 01293 __EXPORT__ PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle); 01294 01295 01296 /* Buffering stuff... */ 01297 01338 __EXPORT__ int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize); 01339 01340 01357 __EXPORT__ int PHYSFS_flush(PHYSFS_File *handle); 01358 01359 01360 /* Byteorder stuff... */ 01361 01372 __EXPORT__ PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val); 01373 01374 01385 __EXPORT__ PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val); 01386 01397 __EXPORT__ PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val); 01398 01399 01410 __EXPORT__ PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val); 01411 01425 __EXPORT__ PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val); 01426 01427 01441 __EXPORT__ PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val); 01442 01443 01454 __EXPORT__ PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val); 01455 01456 01467 __EXPORT__ PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val); 01468 01479 __EXPORT__ PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val); 01480 01481 01492 __EXPORT__ PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val); 01493 01494 01508 __EXPORT__ PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val); 01509 01510 01524 __EXPORT__ PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val); 01525 01526 01540 __EXPORT__ int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val); 01541 01542 01557 __EXPORT__ int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val); 01558 01559 01573 __EXPORT__ int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val); 01574 01575 01590 __EXPORT__ int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val); 01591 01592 01606 __EXPORT__ int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val); 01607 01608 01623 __EXPORT__ int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val); 01624 01625 01639 __EXPORT__ int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val); 01640 01641 01656 __EXPORT__ int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val); 01657 01658 01675 __EXPORT__ int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val); 01676 01677 01694 __EXPORT__ int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val); 01695 01696 01713 __EXPORT__ int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val); 01714 01715 01732 __EXPORT__ int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val); 01733 01734 01747 __EXPORT__ int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val); 01748 01749 01762 __EXPORT__ int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val); 01763 01764 01777 __EXPORT__ int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val); 01778 01779 01792 __EXPORT__ int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val); 01793 01794 01807 __EXPORT__ int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val); 01808 01809 01822 __EXPORT__ int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val); 01823 01824 01837 __EXPORT__ int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val); 01838 01839 01852 __EXPORT__ int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val); 01853 01854 01870 __EXPORT__ int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val); 01871 01872 01888 __EXPORT__ int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val); 01889 01890 01906 __EXPORT__ int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val); 01907 01908 01924 __EXPORT__ int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val); 01925 01926 01927 /* Everything above this line is part of the PhysicsFS 1.0 API. */ 01928 01943 __EXPORT__ int PHYSFS_isInit(void); 01944 01945 01958 __EXPORT__ int PHYSFS_symbolicLinksPermitted(void); 01959 01960 01981 typedef struct PHYSFS_Allocator 01982 { 01983 int (*Init)(void); 01984 void (*Deinit)(void); 01985 void *(*Malloc)(PHYSFS_uint64); 01986 void *(*Realloc)(void *, PHYSFS_uint64); 01987 void (*Free)(void *); 01988 } PHYSFS_Allocator; 01989 01990 02018 __EXPORT__ int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator); 02019 02020 02061 __EXPORT__ int PHYSFS_mount(const char *newDir, const char *mountPoint, int appendToPath); 02062 02085 __EXPORT__ const char *PHYSFS_getMountPoint(const char *dir); 02086 02087 02112 typedef void (*PHYSFS_StringCallback)(void *data, const char *str); 02113 02114 02146 typedef void (*PHYSFS_EnumFilesCallback)(void *data, const char *origdir, 02147 const char *fname); 02148 02149 02181 __EXPORT__ void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d); 02182 02183 02217 __EXPORT__ void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d); 02218 02219 02258 __EXPORT__ void PHYSFS_enumerateFilesCallback(const char *dir, 02259 PHYSFS_EnumFilesCallback c, 02260 void *d); 02261 02281 __EXPORT__ void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst, 02282 PHYSFS_uint64 len); 02283 02303 __EXPORT__ void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst, 02304 PHYSFS_uint64 len); 02305 02329 __EXPORT__ void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst, 02330 PHYSFS_uint64 len); 02331 02355 __EXPORT__ void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst, 02356 PHYSFS_uint64 len); 02357 02382 __EXPORT__ void PHYSFS_utf8FromLatin1(const char *src, char *dst, 02383 PHYSFS_uint64 len); 02384 02385 /* Everything above this line is part of the PhysicsFS 2.0 API. */ 02386 02387 02388 #ifdef __cplusplus 02389 } 02390 #endif 02391 02392 #endif /* !defined _INCLUDE_PHYSFS_H_ */ 02393 02394 /* end of physfs.h ... */ 02395