00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _ATX_FILE_H_
00011 #define _ATX_FILE_H_
00012
00013
00014
00015
00016 #include "AtxTypes.h"
00017 #include "AtxStreams.h"
00018 #include "AtxDataBuffer.h"
00019
00020
00021
00022
00023 #define ATX_FILE_OPEN_MODE_READ 0x01
00024 #define ATX_FILE_OPEN_MODE_WRITE 0x02
00025 #define ATX_FILE_OPEN_MODE_CREATE 0x04
00026 #define ATX_FILE_OPEN_MODE_TRUNCATE 0x08
00027 #define ATX_FILE_OPEN_MODE_APPEND 0x10
00028 #define ATX_FILE_OPEN_MODE_UNBUFFERED 0x20
00029
00030 #define ATX_ERROR_NO_SUCH_FILE (ATX_ERROR_BASE_FILE - 0)
00031 #define ATX_ERROR_FILE_NOT_OPEN (ATX_ERROR_BASE_FILE - 1)
00032 #define ATX_ERROR_FILE_BUSY (ATX_ERROR_BASE_FILE - 2)
00033 #define ATX_ERROR_FILE_ALREADY_OPEN (ATX_ERROR_BASE_FILE - 3)
00034 #define ATX_ERROR_FILE_NOT_READABLE (ATX_ERROR_BASE_FILE - 4)
00035 #define ATX_ERROR_FILE_NOT_WRITABLE (ATX_ERROR_BASE_FILE - 5)
00036
00037 #define ATX_FILE_STANDARD_INPUT "@STDIN"
00038 #define ATX_FILE_STANDARD_OUTPUT "@STDOUT"
00039 #define ATX_FILE_STANDARD_ERROR "@STDERR"
00040
00041
00042
00043
00044 ATX_DECLARE_INTERFACE(ATX_File)
00045 ATX_BEGIN_INTERFACE_DEFINITION(ATX_File)
00046 ATX_Result (*Open)(ATX_File* self, ATX_Flags mode);
00047 ATX_Result (*Close)(ATX_File* self);
00048 ATX_Result (*GetSize)(ATX_File* self, ATX_Size* size);
00049 ATX_Result (*GetInputStream)(ATX_File* self, ATX_InputStream** stream);
00050 ATX_Result (*GetOutputStream)(ATX_File* self, ATX_OutputStream** stream);
00051 ATX_END_INTERFACE_DEFINITION
00052
00053
00054
00055
00056 #if defined(__cplusplus)
00057 extern "C" {
00058 #endif
00059
00060 ATX_Result ATX_File_Open(ATX_File* self, ATX_Flags mode);
00061 ATX_Result ATX_File_Close(ATX_File* self);
00062 ATX_Result ATX_File_GetSize(ATX_File* self, ATX_Size* size);
00063 ATX_Result ATX_File_GetInputStream(ATX_File* self, ATX_InputStream** stream);
00064 ATX_Result ATX_File_GetOutputStream(ATX_File* self, ATX_OutputStream** stream);
00065
00066 #if defined(__cplusplus)
00067 }
00068 #endif
00069
00070
00071
00072
00073 #ifdef __cplusplus
00074 extern "C" {
00075 #endif
00076
00077 extern ATX_Result ATX_File_Create(ATX_CString name, ATX_File** file);
00078 extern ATX_Result ATX_File_Load(ATX_File* file, ATX_DataBuffer** buffer);
00079 extern ATX_Result ATX_File_Save(ATX_File* file, ATX_DataBuffer* buffer);
00080
00081
00082 extern ATX_Result ATX_LoadFile(ATX_CString filename, ATX_DataBuffer** buffer);
00083 extern ATX_Result ATX_SaveFile(ATX_CString filename, ATX_DataBuffer* buffer);
00084
00085 #ifdef __cplusplus
00086 }
00087 #endif
00088
00089
00090 #endif
00091
00092