48 _bufferSize = bufferSize;
49 if( fileName ) strcpy( _fileName , fileName ) , tempFile = false , _fp = fopen( _fileName ,
"w+b" );
52 strcpy( _fileName ,
"PR_XXXXXX" );
55 _fp = fopen( _fileName ,
"w+b" );
57 _fp = fdopen( mkstemp( _fileName ) ,
"w+b" );
61 if( !_fp ) fprintf( stderr ,
"[ERROR] Failed to open file: %s\n" , _fileName ) , exit( 0 );
62 _buffer = (
char*) malloc( _bufferSize );
68 if( tempFile ) remove( _fileName );
72 if( _bufferIndex ) fwrite( _buffer , 1 , _bufferIndex , _fp );
76 _bufferSize = fread( _buffer , 1 , _bufferSize , _fp );
80 if( !
size )
return true;
81 char* _data = (
char*) data;
82 size_t sz = _bufferSize - _bufferIndex;
85 memcpy( _buffer+_bufferIndex , _data , sz );
86 fwrite( _buffer , 1 , _bufferSize , _fp );
94 memcpy( _buffer+_bufferIndex , _data ,
size );
101 if( !
size )
return true;
102 char *_data = (
char*) data;
103 size_t sz = _bufferSize - _bufferIndex;
106 if(
size && !_bufferSize )
return false;
107 memcpy( _data , _buffer+_bufferIndex , sz );
108 _bufferSize = fread( _buffer , 1 , _bufferSize , _fp );
112 if( !
size )
return true;
117 if( !_bufferSize )
return false;
118 memcpy( _data , _buffer+_bufferIndex ,
size );
119 _bufferIndex +=
size;
BufferedReadWriteFile(char *fileName=NULL, int bufferSize=(1<< 20))
bool read(void *data, size_t size)
~BufferedReadWriteFile(void)
bool write(const void *data, size_t size)
TriangulationTriangle(void)