29 data_is_owned_(false),
39 if (!data_is_owned_) {
41 data_is_owned_ =
true;
54 if (!data_is_owned_) {
56 data_is_owned_ =
true;
61 memcpy(&(*data_)[0], data, size);
67 long current_pos = ftell(fp);
68 if (current_pos < 0) {
73 if (fseek(fp, 0, SEEK_END))
75 end_offset = ftell(fp);
76 if (fseek(fp, current_pos, SEEK_SET))
79 int size = end_offset - current_pos;
82 if (!data_is_owned_) {
84 data_is_owned_ =
true;
87 return static_cast<int>(fread(&(*data_)[0], 1, size, fp)) == size;
93 while (size + 1 < buffer_size && offset_ < data_->size()) {
94 buffer[size++] = (*data_)[offset_++];
95 if ((*data_)[offset_ - 1] ==
'\n')
break;
97 if (size < buffer_size) buffer[size] =
'\0';
98 return size > 0 ? buffer : NULL;
102 int num_read =
FRead(buffer, size, count);
104 char* char_buffer =
static_cast<char*
>(buffer);
105 for (
int i = 0; i < num_read; ++i, char_buffer += size) {
114 int required_size = size *
count;
115 if (required_size <= 0)
return 0;
116 if (data_->
size() - offset_ < required_size)
117 required_size = data_->
size() - offset_;
118 if (required_size > 0 && buffer != NULL)
119 memcpy(buffer, &(*data_)[offset_], required_size);
120 offset_ += required_size;
121 return required_size / size;
132 if (data_is_owned_)
delete data_;
134 data_is_owned_ =
false;
135 }
else if (!data_is_owned_) {
137 data_is_owned_ =
true;
154 int total = size *
count;
155 if (total <= 0)
return 0;
156 const char* buf =
static_cast<const char*
>(buffer);
159 for (
int i = 0; i < total; ++i)
bool CloseWrite(const STRING &filename, FileWriter writer)
char * FGets(char *buffer, int buffer_size)
bool(* FileReader)(const STRING &filename, GenericVector< char > *data)
int FRead(void *buffer, int size, int count)
void OpenWrite(GenericVector< char > *data)
bool LoadDataFromFile(const char *filename, GenericVector< char > *data)
void ReverseN(void *ptr, int num_bytes)
bool(* FileWriter)(const GenericVector< char > &data, const STRING &filename)
void resize_no_init(int size)
int FReadEndian(void *buffer, int size, int count)
bool Open(const STRING &filename, FileReader reader)
bool SaveDataToFile(const GenericVector< char > &data, const STRING &filename)
int FWrite(const void *buffer, int size, int count)