16namespace layer1_foundations {
17namespace orbiter_kernel_system {
58 char *initial_data,
int verbose_level)
60 int f_v = (verbose_level >= 1);
64 cout <<
"memory_object::init" << endl;
66 alloc(length, verbose_level - 1);
67 for (i = 0; i < length; i++) {
68 data[i] = initial_data[i];
73 cout <<
"memory_object::init done" << endl;
80 int f_v = (verbose_level >= 1);
83 cout <<
"memory_object::alloc "
84 "length=" << length << endl;
90 cout <<
"memory_object::alloc "
91 "out of memory" << endl;
99 cout <<
"memory_object::alloc done" << endl;
104 char *d,
int verbose_level)
106 int f_v = (verbose_level >= 1);
107 long int i, old_length, new_length, new_alloc_length;
110 cout <<
"memory_object::append" << endl;
111 cout <<
"used_length=" << endl;
115 new_length = old_length + length;
118 cout <<
"memory_object::append before realloc" << endl;
121 realloc(new_alloc_length, verbose_level);
123 cout <<
"memory_object::append after realloc" << endl;
126 for (i = 0; i < length; i++) {
127 data[old_length + i] = d[i];
131 cout <<
"memory_object::append done" << endl;
137 int f_v = (verbose_level >= 1);
139 long int old_cur_pointer;
144 cout <<
"memory_object::realloc "
146 " new_length=" << new_length << endl;
151 if (new_length < old_length) {
152 cout <<
"memory_object::realloc error: "
153 "new_length < old_length" << endl;
156 if (new_length < 2 * old_length) {
157 new_length = 2 * old_length;
164 cout <<
"memory_object::realloc "
166 " adjusted new_length=" << new_length << endl;
169 alloc(new_length, verbose_level - 1);
171 i <
MINIMUM(old_length, new_length);
173 data[i] = old_data[i];
175 for (i = old_length; i < new_length; i++) {
183 cout <<
"memory_object::realloc done "
187 cout <<
"memory_object::realloc done" << endl;
198 long int l1, cur_p, l;
205 cout <<
"memory_object::read_char "
206 "error: l1 < 0" << endl;
209 cout <<
"l1=" << l1 << endl;
222 for (i = 0; i < l; i++) {
270 append(
sizeof(
double), (
char *) &f, 0);
276 long int l1, j, cur_p, l;
282 if (l1 < (
int)
sizeof(
double)) {
283 cout <<
"memory_object::read_int "
284 "error: l1 < sizeof(double)" << endl;
289 for (j = 0; j < (int)
sizeof(
double); j++) {
301 append(
sizeof(
long int), (
char *) &i, 0);
307 long int l1, j, cur_p, l;
313 if (l1 <
sizeof(
long int)) {
314 cout <<
"memory_object::read_int "
315 "error: l1 < sizeof(long int)" << endl;
320 for (j = 0; j <
sizeof(
long int); j++) {
336 append(
sizeof(
int), (
char *) &i1, 0);
343 long int l1, j, cur_p, l;
348 cout <<
"memory_object::read_int" << endl;
353 if (l1 <
sizeof(
int)) {
354 cout <<
"memory_object::read_int "
355 "error: l1 < sizeof(int)" << endl;
360 for (j = 0; j <
sizeof(int); j++) {
366 cout <<
"memory_object::read_int before swap: i1 = " << i1 << endl;
370 cout <<
"memory_object::read_int after swap: i1 = " << i1 << endl;
374 cout <<
"memory_object::read_int "
375 "done read " << i1 << endl;
384 int f_v = (verbose_level >= 1);
389 cout <<
"memory_object::read_file" << endl;
396 fp = fopen(fname,
"r");
397 if ((
int) fread(
data,
398 1 , fsize , fp) != fsize) {
399 cout <<
"memory_object::read_file "
400 "error in fread" << endl;
405 ifstream fp(fname, ios::binary);
406 fp.read(
data, fsize);
412 cout <<
"memory_object::read_file read file "
413 << fname <<
" of size " << fsize << endl;
419 int f_v = (verbose_level >= 1);
423 cout <<
"memory_object::write_file" << endl;
430 fp = fopen(fname,
"wb");
432 fwrite(
data, 1 , size , fp);
437 ofstream fp(fname, ios::binary);
442 cout <<
"memory_object::write_file error "
443 "file_size(fname) != used_length" << endl;
447 cout <<
"memory_object::write_file written file "
473 int pos = 0, pos2 = 0, pos2h = 0, i;
479 if ((posf % 100000) == 0) {
480 cout << posf << endl;
483 for (i = 0; i < 8; i++) {
486 if (pc[pos] == code_char)
505 int pos = 0, pos2 = 0, i = 8;
509 if (pos2 >= l2 && i >= 8)
516 if (cc & (
uchar) 128U) {
537void memory_object::compress(
int verbose_level)
540 int f_v = (verbose_level >= 1);
546 cout <<
"memory_object::compress compressing " << l <<
" chars";
549 l2 = l - l_c + ((l + 7) >> 3);
551 code((
uchar *) char_pointer, l, (
uchar *) mem2.char_pointer, (
uchar) 0);
554 cout <<
"memory_object::compress "
555 "warning: l2 = " << l2 <<
" != l3 = " << l3 << endl;
559 char_pointer = mem2.char_pointer;
565 cout <<
"memory_object::compress "
566 "compressed from " << l <<
" to " << l2 <<
" chars." << endl;
570void memory_object::decompress(
int verbose_level)
572 int f_v = (verbose_level >= 1);
578 cout <<
"memory_object::decompress "
579 "decompressing from " << l2 <<
" chars";
581 l = decode((
uchar *) char_pointer, l2, NULL, (
uchar) 0);
583 decode((
uchar *) char_pointer, l2, (
uchar *) mem2.char_pointer, (
uchar) 0);
585 char_pointer = mem2.char_pointer;
592 cout <<
"memory_object::decompress "
593 "decompressing from " << l2 <<
" to ";
594 cout << l <<
" chars." << endl;
a collection of functions related to file io
long int file_size(std::string &fname)
void read_double(double *f)
void alloc(long int length, int verbose_level)
void write_file(const char *fname, int verbose_level)
void init(long int length, char *initial_data, int verbose_level)
void read_lint(long int *i)
void write_double(double f)
void write_string(const char *p)
int multiplicity_of_character(char c)
void read_string(char *&p)
void read_file(const char *fname, int verbose_level)
void append(long int length, char *d, int verbose_level)
void realloc(long int &new_length, int verbose_level)
void write_lint(long int i)
interface to system functions
void block_swap_chars(char *ptr, int size, int no)
the orbiter library for the classification of combinatorial objects