From ea76b6988ccafaa6a4d4ed90f2489d0e49e1f180 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Sat, 5 Sep 2015 09:32:30 -0400 Subject: Imported Upstream version 0.40.24 --- g_src/files.h | 368 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100755 g_src/files.h (limited to 'g_src/files.h') diff --git a/g_src/files.h b/g_src/files.h new file mode 100755 index 0000000..2f11c72 --- /dev/null +++ b/g_src/files.h @@ -0,0 +1,368 @@ +//Copyright (c) 2006, Tarn Adams +//All rights reserved. See game.cpp or license.txt for more information. +#ifndef FILES_H +#define FILES_H + +#define FILE_IN_BUFF 1000000 +#define FILE_OUT_BUFF 2000000 + +#include +using std::string; + +#include +#include "endian.h" +#include "svector.h" + +class file_compressorst +{ + public: + bool compressed; + std::fstream f; + + + char open_file(const string &filename,char existing_only); + void close_file(); + char write_file(string &str); + char read_file(string &str); + + char load_posnull_pointer(); + char save_posnull_pointer(void *ptr); + + void write_file_fixedlength(char *var) + { + short len=strlen(var); + write_file(len); + if(len>0)write_file(var,len*sizeof(char)); + } + void read_file_fixedlength(char *var) + { + short len; + read_file(len);//DO NOT NEED TO ALLOCATE SPACE + if(len>0)read_file(var,len*sizeof(char)); + var[len]='\x0'; + } + char write_file(long var) + { + var=byteswap(var); + return write_file(&var,sizeof(long)); + } + char read_file(long &var) + { + char ret = read_file(&var,sizeof(long)); + var = byteswap(var); + return ret; + } + char write_file(int var) + { + var=byteswap(var); + return write_file(&var,sizeof(int)); + } + char read_file(int &var) + { + char ret = read_file(&var,sizeof(int)); + var = byteswap(var); + return ret; + } + char write_file(short var) + { + var=byteswap(var); + return write_file(&var,sizeof(short)); + } + char read_file(short &var) + { + char ret = read_file(&var,sizeof(short)); + var = byteswap(var); + return ret; + } + char write_file(char var) + { + return write_file(&var,sizeof(char)); + } + char read_file(char &var) + { + return read_file(&var,sizeof(char)); + } + char write_file(bool var) + { + char temp; + if(var)temp=1; + else temp=0; + return write_file(&temp,sizeof(char)); + } + char read_file(bool &var) + { + char temp; + if(!read_file(&temp,sizeof(char)))return 0; + var=(temp!=0); + return 1; + } + char write_file(unsigned long var) + { + var=byteswap(var); + return write_file(&var,sizeof(unsigned long)); + } + char read_file(unsigned long &var) + { + char ret = read_file(&var,sizeof(unsigned long)); + var = byteswap(var); + return ret; + } + char write_file(unsigned int var) + { + var=byteswap(var); + return write_file(&var,sizeof(unsigned int)); + } + char read_file(unsigned int &var) + { + char ret = read_file(&var,sizeof(unsigned int)); + var = byteswap(var); + return ret; + } + char write_file(unsigned short var) + { + var=byteswap(var); + return write_file(&var,sizeof(unsigned short)); + } + char read_file(unsigned short &var) + { + char ret = read_file(&var,sizeof(unsigned short)); + var = byteswap(var); + return ret; + } + char write_file(unsigned char var) + { + return write_file(&var,sizeof(unsigned char)); + } + char read_file(unsigned char &var) + { + return read_file(&var,sizeof(unsigned char)); + } + void write_file(svector &vect) + { + long s=vect.size(); + write_file(s); + bool bl;//JUST FOR PARITY WITH read BELOW + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + bool bl;//NO IDEA WHY IT CAN'T JUST TAKE vect[i] + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s=vect.size(); + write_file(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b &vect) + { + long s; + read_file(s); + vect.resize(s); + auto i_b=vect.begin(),i_e=vect.end(); + for(;i_b