00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SkOSFile_DEFINED
00019 #define SkOSFile_DEFINED
00020
00021 #include "SkString.h"
00022
00023 #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_UNIX)
00024 #include <dirent.h>
00025 #endif
00026
00027 struct SkFILE;
00028
00029 enum SkFILE_Flags {
00030 kRead_SkFILE_Flag = 0x01,
00031 kWrite_SkFILE_Flag = 0x02
00032 };
00033
00034 SkFILE* sk_fopen(const char path[], SkFILE_Flags);
00035 void sk_fclose(SkFILE*);
00036
00037 size_t sk_fgetsize(SkFILE*);
00040 bool sk_frewind(SkFILE*);
00041
00042 size_t sk_fread(void* buffer, size_t byteCount, SkFILE*);
00043 size_t sk_fwrite(const void* buffer, size_t byteCount, SkFILE*);
00044 void sk_fflush(SkFILE*);
00045
00046 int sk_fseek( SkFILE*, size_t, int );
00047 size_t sk_ftell( SkFILE* );
00048
00049 class SkOSFile {
00050 public:
00051 class Iter {
00052 public:
00053 Iter();
00054 Iter(const char path[], const char suffix[] = NULL);
00055 ~Iter();
00056
00057 void reset(const char path[], const char suffix[] = NULL);
00058 bool next(SkString* name, bool getDir = false);
00059
00060 private:
00061 #ifdef SK_BUILD_FOR_WIN
00062 HANDLE fHandle;
00063 uint16_t* fPath16;
00064 #elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_UNIX)
00065 DIR* fDIR;
00066 SkString fPath, fSuffix;
00067 #endif
00068 };
00069 };
00070
00071 class SkUTF16_Str {
00072 public:
00073 SkUTF16_Str(const char src[]);
00074 ~SkUTF16_Str()
00075 {
00076 sk_free(fStr);
00077 }
00078 const uint16_t* get() const { return fStr; }
00079
00080 private:
00081 uint16_t* fStr;
00082 };
00083
00084 #endif
00085