53#include <Inventor/misc/SoBasic.h>
54#include <Inventor/SbDict.h>
55#include <Inventor/SbPList.h>
56#include <Inventor/SbString.h>
57#include <Inventor/SoDB.h>
58#include <Inventor/threads/SbThreadMutex.h>
59#include <Inventor/threads/SbThreadSpinlock.h>
61#include <Inventor/STL/fstream>
62#include <Inventor/STL/iostream>
63#include <Inventor/STL/list>
64#include <Inventor/STL/vector>
65#include <Inventor/STL/map>
68#pragma warning( push )
69#pragma warning( disable: 4251 )
83#ifndef HIDDEN_FROM_DOC
133 int streamedBuffersNumber;
135 int streamedBuffersSize;
151 SoDBHeaderCB *postReadCB;
410#define DIRECTORIES_SEPARATOR ":;"
433 const char *dirSep = DIRECTORIES_SEPARATOR);
449 const SbString& dirSep = DIRECTORIES_SEPARATOR);
467 const char *dirSep = DIRECTORIES_SEPARATOR);
483 const SbString& dirSep = DIRECTORIES_SEPARATOR);
688 virtual SbBool isBinary();
694 virtual SbBool isZCompressed();
698 virtual SbBool get(
char &c);
702 virtual SbBool getASCIIBuffer(
char &c);
706 virtual SbBool getASCIIFile(
char &c);
711 virtual SbBool read(
char &c);
712 virtual SbBool readByte(
char &c);
713 virtual SbBool readByte(
unsigned char &c);
717 virtual SbBool read(
bool &i);
718 virtual SbBool read(int32_t &i);
719 virtual SbBool read(int64_t &i);
720 virtual SbBool read(uint32_t &i);
721 virtual SbBool read(uint64_t &i);
722 virtual SbBool read(
short &s);
723 virtual SbBool read(
unsigned short &s);
724 virtual SbBool read(
float &f);
725 virtual SbBool read(
double &d);
726 virtual SbBool readBinaryArray(
unsigned char *c,
int length);
727 virtual SbBool readBinaryArray(int32_t *l,
int length);
728 virtual SbBool readBinaryArray(int64_t *l,
int length);
729 virtual SbBool readBinaryArray(
float *f,
int length);
730 virtual SbBool readBinaryArray(
short *s,
int length);
731 virtual SbBool readBinaryArray(
double *d,
int length);
734 virtual SbBool eof()
const;
749 void setFileVRML2(
SbBool flag);
752 int getVRMLVersion() {
return vrmlFile; }
759 void setVRMLVersion(
int flag) { vrmlFile = flag; }
763 SbString getFileNameFromHandle( HANDLE hFile )
const;
765 virtual SbBool openFromHandle( UINT hFile,
SbBool okIfNotFound = FALSE,
SbBool aSync = FALSE );
772 static void finish();
779 virtual void getLocationString(
SbString &
string)
const;
782 virtual void putBack(
char c);
783 virtual void putBack(
const char *
string);
788 virtual void addReference(
const SbName &name,
SoBase *base,
789 SbBool addToGlobalDict = TRUE);
793 virtual void removeReference(
const SbName &name);
796 virtual SoBase * findReference(
const SbName &name)
const;
798 virtual void resetFilePointer(FILE *fptr) { curFile->fp = fptr;}
800 virtual SbBool readLargeBinaryArray(
unsigned char *c,
size_t length);
802 SoInputImpl* m_soInputImpl;
817 int32_t isReadingBinArrayAsMemObj()
const;
821 void updateNumReadBytes(
int value);
824 void setIVVersion(
float version) { curFile->ivVersion = version; }
825 bool isHeaderOk() {
return curFile->headerOk; }
827 void seekCurBuf(
size_t size ) { curFile->curBuf += size; updateNumReadBytes(
static_cast<int>(size) ); }
851 static bool addInMemoryTextFile(
const SbString& filename,
const SbString& fileContent);
859 static bool removeInMemoryTextFile(
const SbString& filename);
865 static bool isInMemoryTextFile(
const SbString& filename);
876 int fileSeek(
long offset,
int whence );
879 bool isReadByPlugin();
890 struct SoInputFile *curFile;
909 std::vector<char> putBackCharBuffer;
915 void initFile(FILE *newFP,
const SbString& fileName,
917 SbDict *refDict = NULL);
921 SbDict* refDict = NULL );
924 FILE *findFromHandle(
int nHandle)
const;
926 void initFromHandle(FILE *newFP,
927 int nHandle,
SbBool openedHere,
928 SbDict *refDict = NULL);
933 SbBool checkInventorHeader(
SbBool bValidateBufferHeader=FALSE);
940 SbBool fromBuffer()
const {
return (curFile->buffer != NULL); }
950 size_t freeBytesInBuf()
const
951 {
return (curFile->bufSize - (curFile->curBuf -
static_cast<char *
>(curFile->buffer) )); }
955 SbBool readInteger(int32_t &l);
956 SbBool readUnsignedInteger(uint32_t &l);
957 SbBool readInteger(int64_t &l);
958 SbBool readUnsignedInteger(uint64_t &l);
959 SbBool readReal(
double &d);
963 virtual SbBool readHex(uint32_t &l);
967 SbBool readUnsignedIntegerString(
char *str);
971 int readDigits(
char *
string);
972 int readHexDigits(
char *
string);
975 int readChar(
char *
string,
char charToRead);
978 SbBool makeRoomInBuf(
size_t nBytes);
981 void convertShort(
char *from,
short *s);
982 void convertInt32(
char *from, int32_t *l);
983 void convertInt64(
char *from, int64_t *l);
984 void convertFloat(
char *from,
float *f);
985 void convertDouble(
char *from,
double *d);
986 void convertShortArray(
char *from,
short *to,
size_t len);
987 void convertInt32Array(
char *from, int32_t *to,
size_t len);
988 void convertInt64Array(
char *from, int64_t *to,
size_t len);
989 void convertFloatArray(
char *from,
float *to,
size_t len);
990 void convertDoubleArray(
char *from,
double *to,
size_t len);
992 SbString bufferToString(
const char* buffer );
999 size_t fileRead(
void* ptr,
size_t size,
size_t count );
1006 static SbBool checkFileCompression( FILE* file, int64_t& fileSize,
SbBool& isCompressed );
1007 static SbBool checkFileCompression(
unsigned char byte1,
unsigned char byte2 );
1010 void convertShortArray(
char *from,
short *to,
int len);
1011 void convertInt32Array(
char *from, int32_t *to,
int len);
1012 void convertFloatArray(
char *from,
float *to,
int len);
1013 void convertDoubleArray(
char *from,
double *to,
int len);
1029 static void* streamingStackCB(
void* data );
1034 void swapStreamBuffer();
1036 char* getType(
char* from,
size_t sizeOfType,
size_t freeBytes );
1037 char* getLongType(
char* from,
size_t sizeOfType,
size_t freeBytes );
1039 static std::list<SoStreamBuffer*>* m_streamBufStack;
1049 int64_t m_numReadBytes;
1052 int m_percent, m_progress, m_prevProgressVal, m_prevPercentVal;
1054 std::string m_progressBar;
1057 typedef std::map<SbString, SbString> InMemoryTextFileMap;
1058 static InMemoryTextFileMap s_InMemoryTextFileMap;
1060 static SbBool s_InMemoryTextFileEnabled;
1063 SbBool uncompressZData(
const void *src,
size_t srcLen,
void*& dst,
size_t& dstLen);
1064 int inflateZData(
const void *src,
size_t srcLen,
void *dst,
size_t dstLen);
1069#pragma warning( pop )
Character string stored in a hash table.
List of generic (void *) pointers.
Class for smart character strings.
Maintains a list of pointers to SbString instances.
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable thread ...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable mutex c...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable signal ...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable spinloc...
Base class for all nodes, paths, and engines.
Scene graph database class.
Abstract base class for all database nodes.
Path that points to a list of hierarchical nodes.