13 #if defined(__linux) || defined(__CYGWIN__) || defined(__APPLE_CC__)
14 #include <netinet/in.h>
19 #include <sys/socket.h>
41 lXDR::lXDR(
const char *filename,
bool open_for_write) : _fileName(0), _fp(0)
59 FILE *fp = fopen(filename, open_for_write ?
"wb" :
"rb");
61 FILE *fp = fopen(filename, open_for_write ?
"w" :
"r");
76 int n = strlen(filename);
100 for (i = 0; i < 4; i++) {
101 unsigned char c = dd.b[i];
102 dd.b[i] = dd.b[7 - i];
122 *l = ((int32_t)ntohl(buf));
147 *((int32_t *) f) = ntohl(*((int32_t *) f));
176 long rl = (length + 3) & 0xFFFFFFFC;
177 char *s =
new char[rl + 1];
178 if (fread(s, 1, rl,
_fp) != (
unsigned long) rl) {
191 long *s =
new long[length];
200 int32_t *buf =
new int32_t[length];
201 if (fread(buf, 4, length,
_fp) != (
unsigned long) length) {
207 for (
long i = 0; i < length; i++){
209 s[i] = ((int32_t)ntohl(buf[i]));
223 double *s =
new double[length];
224 if (fread(s, 8, length,
_fp) != (
unsigned long) length) {
237 long *st =
new long[length];
239 if (fread(st, 4, length,
_fp) != (
unsigned long) length) {
244 double *s =
new double[length];
247 for (
long i = 0; i < length; i++) {
248 long l = ntohl(st[i]);
252 memcpy( &f, &l,
sizeof(
float) ) ;
278 double dd =
htond(*d);
303 long l = ((length + 3) & 0xFFFFFFFC) - length;
311 long *s = (
long *) data;
313 s =
new long[length];
314 for (
long i = 0; i < length; i++) s[i] = htonl(data[i]);
317 long l = fwrite(s, 4, length,
_fp);
326 double *s = (
double *) data;
328 s =
new double[length];
329 for (
long i = 0; i < length; i++) s[i] =
htond(data[i]);
331 long l = fwrite(s, 8, length,
_fp);
344 if (pos == -1)
return(ftell(
_fp));
345 if (fseek(
_fp, pos, SEEK_SET)) {
long filePosition(long pos=-1)
void setFileName(const char *filename, bool open_for_write=false)
double ntohd(double d) const
long writeDoubleArray(const double *data, long length)
lXDR(const char *filename=0, bool open_for_write=false)
long writeLong(long data)
long * readLongArray(long &length)
double * readDoubleArray(long &length)
long writeDouble(double data)
double htond(double d) const
long writeString(const char *data)
double * readFloatArray(long &length)
long writeLongArray(const long *data, long length)
const char * readString(long &length)