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 inT64 current_pos = ftell(fp);
71 end_offset = ftell(fp);
72 if (fseek(fp, current_pos,
SEEK_SET))
75 int size = end_offset - current_pos;
78 if (!data_is_owned_) {
80 data_is_owned_ =
true;
83 return static_cast<int>(fread(&(*data_)[0], 1, size, fp)) == size;
89 while (size + 1 < buffer_size && offset_ < data_->
size()) {
90 buffer[size++] = (*data_)[offset_++];
91 if ((*data_)[offset_ - 1] ==
'\n')
break;
93 if (size < buffer_size) buffer[
size] =
'\0';
94 return size > 0 ? buffer : NULL;
98 int num_read =
FRead(buffer, size, count);
100 char* char_buffer =
static_cast<char*
>(buffer);
101 for (
int i = 0; i < num_read; ++i, char_buffer +=
size) {
110 int required_size = size *
count;
111 if (required_size <= 0)
return 0;
112 if (data_->
size() - offset_ < required_size)
113 required_size = data_->
size() - offset_;
114 if (required_size > 0 && buffer != NULL)
115 memcpy(buffer, &(*data_)[offset_], required_size);
116 offset_ += required_size;
117 return required_size /
size;
128 if (data_is_owned_)
delete data_;
130 data_is_owned_ =
false;
131 }
else if (!data_is_owned_) {
133 data_is_owned_ =
true;
150 int total = size *
count;
151 if (total <= 0)
return 0;
152 const char*
buf =
static_cast<const char*
>(buffer);
155 for (
int i = 0; i < total; ++i)
bool SaveDataToFile(const GenericVector< char > &data, const STRING &filename)
bool(* FileReader)(const STRING &filename, GenericVector< char > *data)
bool CloseWrite(const STRING &filename, FileWriter writer)
void resize_no_init(int size)
int FReadEndian(void *buffer, int size, int count)
void OpenWrite(GenericVector< char > *data)
bool LoadDataFromFile(const char *filename, GenericVector< char > *data)
int FWrite(const void *buffer, int size, int count)
bool(* FileWriter)(const GenericVector< char > &data, const STRING &filename)
bool Open(const STRING &filename, FileReader reader)
char * FGets(char *buffer, int buffer_size)
void ReverseN(void *ptr, int num_bytes)
int FRead(void *buffer, int size, int count)