Coin  4.0.3
Coin3D core library
Loading...
Searching...
No Matches
SoInput Class Reference

The SoInput class is an abstraction of file import functionality. More...

#include <Inventor/SoInput.h>

Public Member Functions

 SoInput (SoInput *dictIn)
 
 SoInput (void)
 
virtual ~SoInput (void)
 
void addProto (SoProto *proto)
 
virtual void addReference (const SbName &name, SoBase *base, SbBool addToGlobalDict=TRUE)
 
void addRoute (const SbName &fromnode, const SbName &fromfield, const SbName &tonode, const SbName &tofield)
 
SbBool checkISReference (SoFieldContainer *container, const SbName &fieldname, SbBool &readok)
 
virtual void closeFile (void)
 
virtual SbBool eof (void) const
 
SoProtofindProto (const SbName &name)
 
virtual SoBasefindReference (const SbName &name) const
 
virtual SbBool get (char &c)
 
virtual SbBool getASCIIBuffer (char &c)
 
virtual SbBool getASCIIFile (char &c)
 
virtual FILEgetCurFile (void) const
 
virtual const char * getCurFileName (void) const
 
SoProtogetCurrentProto (void) const
 
virtual SbString getHeader (void)
 
virtual float getIVVersion (void)
 
virtual void getLocationString (SbString &string) const
 
virtual size_t getNumBytesRead (void) const
 
virtual SbBool isBinary (void)
 
SbBool isFileVRML1 (void)
 
SbBool isFileVRML2 (void)
 
virtual SbBool isValidBuffer (void)
 
virtual SbBool isValidFile (void)
 
virtual SbBool openFile (const char *fileName, SbBool okIfNotFound=FALSE)
 
void popProto (void)
 
virtual SbBool pushFile (const char *fileName)
 
void pushProto (SoProto *proto)
 
virtual void putBack (const char *str)
 
virtual void putBack (const char c)
 
virtual SbBool read (char &c)
 
virtual SbBool read (char &c, SbBool skip)
 
virtual SbBool read (double &d)
 
virtual SbBool read (float &f)
 
virtual SbBool read (int &i)
 
virtual SbBool read (SbName &n, SbBool validIdent=FALSE)
 
virtual SbBool read (SbString &s)
 
virtual SbBool read (short &s)
 
virtual SbBool read (unsigned int &i)
 
virtual SbBool read (unsigned short &s)
 
virtual SbBool readBinaryArray (double *d, int length)
 
virtual SbBool readBinaryArray (float *f, int length)
 
virtual SbBool readBinaryArray (int32_t *l, int length)
 
virtual SbBool readBinaryArray (unsigned char *c, int length)
 
virtual SbBool readByte (int8_t &b)
 
virtual SbBool readByte (uint8_t &b)
 
virtual SbBool readHex (uint32_t &l)
 
virtual void removeReference (const SbName &name)
 
virtual void resetFilePointer (FILE *fptr)
 
virtual void setBuffer (const void *bufpointer, size_t bufsize)
 
virtual void setFilePointer (FILE *newFP)
 
void setStringArray (const char *strings[])
 

Static Public Member Functions

static void addDirectoryFirst (const char *dirName)
 
static void addDirectoryLast (const char *dirName)
 
static void addEnvDirectoriesFirst (const char *envVarName, const char *separator=":\t ")
 
static void addEnvDirectoriesLast (const char *envVarName, const char *separator=":\t ")
 
static void clearDirectories (void)
 
static SbString getBasename (const char *const filename)
 
static SbString getBasename (const SbString &s)
 
static const SbStringListgetDirectories (void)
 
static SbString getPathname (const char *const filename)
 
static SbString getPathname (const SbString &s)
 
static void init (void)
 
static void removeDirectory (const char *dirName)
 
static SbString searchForFile (const SbString &basename, const SbStringList &directories, const SbStringList &subdirectories)
 

Protected Member Functions

SbBool checkHeader (SbBool bValidateBufferHeader=FALSE)
 
void convertDouble (char *from, double *d)
 
void convertDoubleArray (char *from, double *to, int len)
 
void convertFloat (char *from, float *f)
 
void convertFloatArray (char *from, float *to, int len)
 
void convertInt32 (char *from, int32_t *l)
 
void convertInt32Array (char *from, int32_t *to, int len)
 
void convertShort (char *from, short *s)
 
void convertShortArray (char *from, short *to, int len)
 
FILEfindFile (const char *fileName, SbString &fullName)
 
size_t freeBytesInBuf (void) const
 
SbBool fromBuffer (void) const
 
void initFile (FILE *newFP, const char *fileName, SbString *fullName, SbBool openedHere, SbDict *refDict=NULL)
 
SbBool isFileURL (const char *url)
 
SbBool IsURL (const char *c_strng)
 
SbBool makeRoomInBuf (size_t nBytes)
 
virtual SbBool popFile (void)
 
int readChar (char *str, char charToRead)
 
int readDigits (char *str)
 
int readHexDigits (char *str)
 
SbBool readInteger (int32_t &l)
 
SbBool readReal (double &d)
 
SbBool readUnsignedInteger (uint32_t &l)
 
SbBool readUnsignedIntegerString (char *str)
 
void setIVVersion (float version)
 
SbBool skipWhiteSpace (void)
 
char * URLToFile (char *out_buf, const char *in_buf)
 

Static Protected Member Functions

static void setDirectories (SbStringList *dirs)
 

Detailed Description

The SoInput class is an abstraction of file import functionality.

This class takes care of most of the chores of doing data import in Coin. It puts a layer of abstraction over the read operations to make it transparent for the rest of the Coin code whether or not we're reading from a file, from a memory buffer or from stdin.

SoInput also takes care of checking file validity, as well as handling information about features in the various file formats which are supported.

Example usage:

int
main(void)
{
if (in.openFile("fab_model.iv")) {
if (root) {
// Do stuff with the imported scene graph here
// ...
return 0;
}
}
return 1;
}
The SbList class is a template container class for lists.
Definition SbList.h:70
static SoSeparator * readAll(SoInput *input)
Definition SoDB.cpp:682
static void init(void)
Definition SoDB.cpp:200
The SoInput class is an abstraction of file import functionality.
Definition SoInput.h:61
The SoSeparator class is a state-preserving group node.
Definition SoSeparator.h:44

Important note: there are several public and protected methods which make it possible to pass in or get returned FILE* structures in this class. Do not use these methods when the Coin library has been compiled as an Microsoft Windows DLL, as passing FILE* instances back or forth to DLLs is dangerous and will most likely cause a crash. This is an intrinsic limitation for Microsoft Windows DLLs.

This class supports one environment variable called COIN_SOINPUT_SEARCH_GLOBAL_DICT. When set to "1", the global dictionary is searched after the current file dictionary when resolving USE keywords. This makes it possible to reference nodes in other files. The reason for introducing this feature is that the SoFile node rereads the file whenever the name field changes. The first time the file is read, it is possible to reference nodes in the parent file, using the USE keyword. But, when the file is reread this is no longer possible, since the reading now starts at the SoFile node, with an empty dictionary.

See also
SoOutput, SoDB

Constructor & Destructor Documentation

◆ SoInput() [1/2]

SoInput::SoInput ( void )

Constructor. If no file pointer is set, input will be read from stdin.

◆ SoInput() [2/2]

SoInput::SoInput ( SoInput * dictIn)

A constructor which copies the reference mappings from dictIn upon initialization.

◆ ~SoInput()

SoInput::~SoInput ( void )
virtual

Destructor. Runs SoInput::closeFile() to close any open files.

Member Function Documentation

◆ addDirectoryFirst()

void SoInput::addDirectoryFirst ( const char * dirName)
static

Add a directory to the search list. The added directory will be searched before any of the other directories in the list.

See also
addDirectoryLast(), addEnvDirectoriesFirst(), addEnvDirectoriesLast()
removeDirectory(), clearDirectories()

◆ addDirectoryLast()

void SoInput::addDirectoryLast ( const char * dirName)
static

Add a directory to the search list. The added directory will be searched after any of the other directories in the list.

See also
addDirectoryFirst(), addEnvDirectoriesFirst(), addEnvDirectoriesLast()
removeDirectory(), clearDirectories()

◆ addEnvDirectoriesFirst()

void SoInput::addEnvDirectoriesFirst ( const char * envVarName,
const char * separator = ":\t " )
static

Add in front of the list all directories in the environment variable envVarName. The separator string should contain all characters to be interpreted as separators in the environment variable string list. The default separators are ':', tab and space.

See also
addDirectoryFirst(), addDirectoryLast()
addEnvDirectoriesLast()
removeDirectory(), clearDirectories()

◆ addEnvDirectoriesLast()

void SoInput::addEnvDirectoriesLast ( const char * envVarName,
const char * separator = ":\t " )
static

Add at the end of the list all directories in the environment variable envVarName. The separator string should contain all characters to be interpreted as separators in the environment variable string list. The default separators are ':', tab and space.

See also
addDirectoryFirst(), addDirectoryLast()
addEnvDirectoriesFirst()
removeDirectory(), clearDirectories()

◆ addProto()

void SoInput::addProto ( SoProto * proto)

Adds a PROTO proto which should be active in the current scope.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ addReference()

void SoInput::addReference ( const SbName & name,
SoBase * base,
SbBool addToGlobalDict = TRUE )
virtual

Adds a name<->SoBase mapping to our dictionary.

See also
findReference(), removeReference()

◆ addRoute()

void SoInput::addRoute ( const SbName & fromnode,
const SbName & fromfield,
const SbName & tonode,
const SbName & tofield )

Adds a ROUTE from fromnode's fromfield, to tonode's tofield. This makes it possible to define ROUTEs in files before the fromnode or tonode is parsed.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ checkHeader()

SbBool SoInput::checkHeader ( SbBool bValidateBufferHeader = FALSE)
protected

Returns TRUE if the current stream has had its header parsed. If it hasn't, this method will attempt to read the header and returns TRUE if it could be done.

If bValidateBufferHeader is TRUE, the returned flag will also be FALSE if the file stream header was not of a supported file format type.

◆ checkISReference()

SbBool SoInput::checkISReference ( SoFieldContainer * container,
const SbName & fieldname,
SbBool & readok )

Checks if the next bytes in in is the IS keyword. Returns TRUE if the IS keyword was found, readok will be set to FALSE if some error occurred while searching for the IS keyword.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ clearDirectories()

void SoInput::clearDirectories ( void )
static

◆ closeFile()

void SoInput::closeFile ( void )
virtual

Removes all files from the internal stack. Any files opened by openFile() or pushFile() will also be closed, but not the files coming from setFilePointer() – which are the responsibility of the caller.

You usually don't need to call this method explicitly, as it will automatically be triggered by the SoInput destructor to close any open files when the SoInput instance goes out of scope.

See also
setFilePointer(), openFile(), pushFile()

◆ convertDouble()

void SoInput::convertDouble ( char * from,
double * d )
protected

Convert the bytes at from (which must be a double-precision floating point number in network format) to a double-precision floating point number in native format which is put at the d pointer.

◆ convertDoubleArray()

void SoInput::convertDoubleArray ( char * from,
double * to,
int len )
protected

Convert a block of double-precision floating point numbers in network format to native format.

See also
convertDouble()

◆ convertFloat()

void SoInput::convertFloat ( char * from,
float * f )
protected

Convert the bytes at from (which must be a single-precision floating point number in network format) to a single-precision floating point number in native format which is put at the f pointer.

◆ convertFloatArray()

void SoInput::convertFloatArray ( char * from,
float * to,
int len )
protected

Convert a block of single-precision floating point numbers in network format to native format.

See also
convertFloat()

◆ convertInt32()

void SoInput::convertInt32 ( char * from,
int32_t * l )
protected

Convert the bytes at from (which must be a 32-bit integer in network format (i.e. most significant byte first)) to a 32-bit integer in native format which is put at the l pointer.

◆ convertInt32Array()

void SoInput::convertInt32Array ( char * from,
int32_t * to,
int len )
protected

Convert a block of 32-bit integer numbers in network format to native format.

See also
convertInt32()

◆ convertShort()

void SoInput::convertShort ( char * from,
short * s )
protected

Convert the bytes at from (which must be a short integer in network format (i.e. most significant byte first)) to a short integer in native format which is put at the s pointer.

◆ convertShortArray()

void SoInput::convertShortArray ( char * from,
short * to,
int len )
protected

Convert a block of short numbers in network format to native format.

See also
convertShort()

◆ eof()

SbBool SoInput::eof ( void ) const
virtual

Returns TRUE if we are at the end of the current stream, otherwise FALSE.

◆ findFile()

FILE * SoInput::findFile ( const char * basename,
SbString & fullname )
protected

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Return the currently active stream.

Scan through the include directories in order and try to find a file with the given name in any one of them. If file is found, put the full name with complete path from current directory of process into fullname, open the file and return the file pointer.

If the file could either not be found or not opened for reading, return NULL.

Important note: do not use this method when the Coin library has been compiled as an Microsoft Windows DLL, as passing FILE* instances back or forth to DLLs is dangerous and will most likely cause a crash. This is an intrinsic limitation for Microsoft Windows DLLs.

◆ findProto()

SoProto * SoInput::findProto ( const SbName & name)

Searches for PROTO named name. This function will only return PROTOs that have been read by the current SoInput instance.

Since
Coin 2.3

◆ findReference()

SoBase * SoInput::findReference ( const SbName & name) const
virtual

Finds a SoBase derived object which has been mapped to name earlier during the import process.

The Coin library will by default only search through the previously loaded nodes from the same file. By setting the environment variable COIN_SOINPUT_SEARCH_GLOBAL_DICT to "1", you can force the import process to search for USE-references through all nodes that have been loaded or otherwise instantiated.

See also
addReference(), removeReference()

◆ freeBytesInBuf()

size_t SoInput::freeBytesInBuf ( void ) const
protected

This function has been obsoleted in Coin.

◆ fromBuffer()

SbBool SoInput::fromBuffer ( void ) const
protected

Returns TRUE if the current input stream is fetching data from a memory buffer, or FALSE if the input is from a file.

◆ get()

SbBool SoInput::get ( char & c)
virtual

Get next character in current stream. Returns FALSE on end of file.

See also
read()

◆ getASCIIBuffer()

SbBool SoInput::getASCIIBuffer ( char & c)
virtual

Returns next character in current stream. Don't use this method – SoInput is supposed to hide whether or not you are reading from file or memory. It is only included for compatibility reasons.

◆ getASCIIFile()

SbBool SoInput::getASCIIFile ( char & c)
virtual

Returns next character in current stream. Don't use this method – SoInput is supposed to hide whether or not you are reading from file or memory. It is only included for compatibility reasons.

◆ getBasename() [1/2]

SbString SoInput::getBasename ( const char *const filename)
static

Finds and returns the part of the given filename which is the base name (i.e. the filename without the leading directory path).

◆ getBasename() [2/2]

SbString SoInput::getBasename ( const SbString & s)
static

Finds and returns the part of the given filename which is the base name (i.e. the filename without the leading directory path).

◆ getCurFile()

FILE * SoInput::getCurFile ( void ) const
virtual

Returns file pointer of the file on top of the input stack. If the "file" is actually a memory buffer, returns NULL.

Important note: do not use this method when the Coin library has been compiled as an Microsoft Windows DLL, as passing FILE* instances back or forth to DLLs is dangerous and will most likely cause a crash. This is an intrinsic limitation for Microsoft Windows DLLs.

See also
getCurFileName()

◆ getCurFileName()

const char * SoInput::getCurFileName ( void ) const
virtual

Returns the name of the file on top of the input stack. NULL will be returned if the top level "file" is a memory buffer.

See also
getCurFile()

◆ getCurrentProto()

SoProto * SoInput::getCurrentProto ( void ) const

Returns the PROTO at the top of the PROTO stack.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

See also
pushProto()
Since
Coin 2.0

◆ getDirectories()

const SbStringList & SoInput::getDirectories ( void )
static

Returns the list of directories which will be searched upon loading Coin and VRML format files. Directory searches will be done whenever any external references appears in a file, for instance for texture images.

◆ getHeader()

SbString SoInput::getHeader ( void )
virtual

Returns header of current file.

◆ getIVVersion()

float SoInput::getIVVersion ( void )
virtual

Returns the library version needed to read a file with the given header. If the header of the current file is not valid, this method returns 0.0f.

◆ getLocationString()

void SoInput::getLocationString ( SbString & str) const
virtual

Places the current line number location and file name in a string which is to be used in the output upon read errors.

◆ getNumBytesRead()

size_t SoInput::getNumBytesRead ( void ) const
virtual

Returns number of bytes read so far from the current file or memory buffer. You can only use this method while you're reading the file. When the reading has finished, the current file is popped off the file stack, and a more or less random number is returned. You should use the stat() system call to find the size of a file (or fseek() and ftell()).

◆ getPathname() [1/2]

SbString SoInput::getPathname ( const char *const filename)
static

Finds and returns the part of the given filename which is the directory path name.

◆ getPathname() [2/2]

SbString SoInput::getPathname ( const SbString & s)
static

Finds and returns the part of the given filename which is the directory path name.

◆ init()

void SoInput::init ( void )
static

Initialize static variables in class. Called from SoDB::init().

◆ initFile()

void SoInput::initFile ( FILE * newFP,
const char * fileName,
SbString * fullName,
SbBool openedHere,
SbDict * refDict = NULL )
protected

This function has been obsoleted in Coin.

◆ isBinary()

SbBool SoInput::isBinary ( void )
virtual

Returns TRUE if the current file is in binary format.

◆ isFileURL()

SbBool SoInput::isFileURL ( const char * url)
protected

This function is part of the TGS Inventor API, but is not implemented in Coin.

◆ isFileVRML1()

SbBool SoInput::isFileVRML1 ( void )

Returns TRUE if current file is a VRML V1.0 file.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

◆ isFileVRML2()

SbBool SoInput::isFileVRML2 ( void )

Returns TRUE if current file is a VRML 2 / VRML97 file.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

◆ IsURL()

SbBool SoInput::IsURL ( const char * c_strng)
protected

This function is part of the TGS Inventor API, but is not implemented in Coin.

◆ isValidBuffer()

SbBool SoInput::isValidBuffer ( void )
virtual

Returns TRUE if the current text buffer represents a valid iv-file which can be read by the Coin library.

When reading files through e.g. SoDB::readAll(), this is automatically checked for you, so application code should usually not need to use this method.

◆ isValidFile()

SbBool SoInput::isValidFile ( void )
virtual

Checks to see if the current file is a valid file which can be read by the Coin library.

When reading files through e.g. SoDB::readAll(), this is automatically checked for you, so application code should usually not need to use this method.

◆ makeRoomInBuf()

SbBool SoInput::makeRoomInBuf ( size_t nBytes)
protected

This function has been obsoleted in Coin.

◆ openFile()

SbBool SoInput::openFile ( const char * fileName,
SbBool okIfNotFound = FALSE )
virtual

Open the given file, and make it the only one in the file stack. If okIfNotFound is FALSE, show a warning message if the file could not be opened.

Returns TRUE if file could be opened for reading, FALSE otherwise.

Note: even if your attempt at opening a file is unsuccessful, the SoInput instance will not default to reading from stdin after a call has been made to this method.

See also
setFilePointer(), pushFile(), closeFile()

◆ popFile()

SbBool SoInput::popFile ( void )
protectedvirtual

Pop the topmost file off the stack. Returns FALSE if there was no file on the stack to pop. A file is only popped when there is more than one file on the stack.

See also
pushFile(), openFile(), closeFile()

◆ popProto()

void SoInput::popProto ( void )

Pops a PROTO off the PROTO stack.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

See also
pushProto()
Since
Coin 2.0

◆ pushFile()

SbBool SoInput::pushFile ( const char * filename)
virtual

Push a new file on top of the stack. Further read operations will take place with the new file until it reaches end-of-file, upon when the file will be popped of the stack and we'll continue with the next file in the stack.

Returns TRUE if the file could be opened for reading, FALSE otherwise.

See also
openFile()

◆ pushProto()

void SoInput::pushProto ( SoProto * proto)

Pushed a PROTO proto onto the PROTO stack. The PROTO stack is used during VRML2 file parsing.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

See also
popProto()
Since
Coin 2.0

◆ putBack() [1/2]

void SoInput::putBack ( const char * str)
virtual

Insert string str in stream at the current position.

◆ putBack() [2/2]

void SoInput::putBack ( const char c)
virtual

Insert character c in stream at the current position.

◆ read() [1/10]

SbBool SoInput::read ( char & c)
virtual

Skips whitespace and reads next character in input stream. Returns FALSE if encountering end of file.

◆ read() [2/10]

SbBool SoInput::read ( char & c,
SbBool skip )
virtual

Reads next character in input stream, returns FALSE if encountering end of file. If skip is TRUE, skips whitespace before reading a character.

◆ read() [3/10]

SbBool SoInput::read ( double & d)
virtual

Read double value from current file or buffer position and place it in d. Returns FALSE if we hit end of file prematurely.

◆ read() [4/10]

SbBool SoInput::read ( float & f)
virtual

Read float value from current file or buffer position and place it in f. Returns FALSE if we hit end of file prematurely.

◆ read() [5/10]

SbBool SoInput::read ( int & i)
virtual

Read integer from current file or buffer position and place it in i. Returns FALSE if we hit end of file prematurely.

◆ read() [6/10]

SbBool SoInput::read ( SbName & n,
SbBool validIdent = FALSE )
virtual

Read a name from the current stream and place it in n.

This method should not be used specifically to read all instances of SbName. The semantics of the interface is such that it is designed to handle identifier tokens from the Inventor / VRML file formats. I.e. cases where node names, node types and field names are to be read. If your goal is to read the value of a SbName field that is not any of the above, and at least when the string might be quoted, then you should most likely use SoInput::read(SbString &) instead.

If validIdent is TRUE the name needs to be a valid identifier (no reserved characters etc), while validIdent equal to FALSE means we'll just read characters for the next word until we hit whitespace or one of the "{"/"}" delimiters.

Returns FALSE on encountering end of file before a full name has been read – if validIdent is also FALSE. If validIdent is passed as TRUE, the return value will be FALSE if no valid name was found, but not necessarily on end of file.

◆ read() [7/10]

SbBool SoInput::read ( SbString & s)
virtual

Skips whitespace and extracts string. A string can be placed within quotes, in which case we will return all characters between the quotes (including spaces, tabs, newlines, etc). A quote character (i.e. "'') can also be part of the string, but must then be preceded by a\'' character.

A string not contained in quotes is terminated by the first following whitespace character.

Returns FALSE upon encountering end of file (EOF) before the string is fully parsed, or any other error. Note: This function does not return FALSE when encountering all EOFs. When multiple files are on the stack and a string is being parsed (the parser has found one or more valid characters) and EOF is encountered, the parsing stops and the read string along with TRUE is returned. The next time the read method is called, the stack is popped and a read string from the next file is returned - not always returning FALSE between the files (though it might on certain circumstances). The solution to this is to test for end of file after each successive read operation.

◆ read() [8/10]

SbBool SoInput::read ( short & s)
virtual

Read short integer from current file or buffer position and place it in s. Returns FALSE if we hit end of file prematurely.

◆ read() [9/10]

SbBool SoInput::read ( unsigned int & i)
virtual

Read unsigned integer from current file or buffer position and place it in i. Returns FALSE if we hit end of file prematurely.

◆ read() [10/10]

SbBool SoInput::read ( unsigned short & s)
virtual

Read unsigned short integer from current file or buffer position and place it in s. Returns FALSE if we hit end of file prematurely.

◆ readBinaryArray() [1/4]

SbBool SoInput::readBinaryArray ( double * d,
int length )
virtual

Reads length double floats from the current stream into d. Returns FALSE if end of file is encountered before the given number of binary double float values could be read.

◆ readBinaryArray() [2/4]

SbBool SoInput::readBinaryArray ( float * f,
int length )
virtual

Reads length floats from the current stream into f. Returns FALSE if end of file is encountered before the given number of binary float values could be read.

◆ readBinaryArray() [3/4]

SbBool SoInput::readBinaryArray ( int32_t * l,
int length )
virtual

Reads length 32-bit integers from the current stream into l. Returns FALSE if end of file is encountered before the given number of integers could be read.

◆ readBinaryArray() [4/4]

SbBool SoInput::readBinaryArray ( unsigned char * c,
int length )
virtual

Reads length characters from the current stream into c. Returns FALSE if end of file is encountered before the given number of bytes could be read.

◆ readByte() [1/2]

SbBool SoInput::readByte ( int8_t & b)
virtual

Read signed byte integer from current file or buffer position and place it in b. Returns FALSE if we hit end of file prematurely.

◆ readByte() [2/2]

SbBool SoInput::readByte ( uint8_t & b)
virtual

Read unsigned byte integer from current file or buffer position and place it in b. Returns FALSE if we hit end of file prematurely.

◆ readChar()

int SoInput::readChar ( char * s,
char charToRead )
protected

Reads the next character in stream and compares it to charToRead. Returns 1 on success, 0 on failure. Failure may come from either end of file, or from the next character in the stream being different than charToRead.

◆ readDigits()

int SoInput::readDigits ( char * str)
protected

Read decimal base digits from the current input stream into str and returns the number of characters read.

◆ readHex()

SbBool SoInput::readHex ( uint32_t & l)
virtual

Reads an unsigned integer in hexadecimal format from the current stream. Note that no error checking is done to see if it actually is a hex format value.

A number in hexadecimal format must have the "0x" prefix.

Returns FALSE if end of file is encountered.

◆ readHexDigits()

int SoInput::readHexDigits ( char * str)
protected

Read hexadecimal base digits from the current input stream into str and returns the number of characters read.

◆ readInteger()

SbBool SoInput::readInteger ( int32_t & l)
protected

Reads 32-bit signed integer value from the current stream. Returns FALSE if we hit end of file prematurely.

◆ readReal()

SbBool SoInput::readReal ( double & d)
protected

Reads a double-precision floating point value from the current stream. Returns FALSE if we hit end of file prematurely or if no valid string representing a value could be read.

◆ readUnsignedInteger()

SbBool SoInput::readUnsignedInteger ( uint32_t & l)
protected

Reads 32-bit unsigned integer value from the current stream. Returns FALSE if we hit end of file prematurely.

◆ readUnsignedIntegerString()

SbBool SoInput::readUnsignedIntegerString ( char * str)
protected

Reads a set of bytes from the stream making up an unsigned integer and puts them at str.

Returns FALSE if no string representing an unsigned integer could be read.

◆ removeDirectory()

void SoInput::removeDirectory ( const char * dirName)
static

Remove the given directory from the directory search list.

The search list is scanned from last to first for the directory name, so directories can easily be "stacked" by pushing with addDirectoryLast() and then removed with this method.

See also
addDirectoryFirst(), addDirectoryLast()
addEnvDirectoriesFirst(), addEnvDirectoriesLast()
clearDirectories()

◆ removeReference()

void SoInput::removeReference ( const SbName & name)
virtual

Removes a name<->SoBase mapping from our dictionary.

See also
findReference(), addReference()

◆ resetFilePointer()

void SoInput::resetFilePointer ( FILE * fptr)
virtual

This function has been obsoleted in Coin.

◆ searchForFile()

SbString SoInput::searchForFile ( const SbString & basename,
const SbStringList & directories,
const SbStringList & subdirectories )
static

Given a basename for a file and an array of directories to search, returns the full name of the file found.

In addition to looking at the root of each directory in directories, all subdirectories are also searched for each item in directories.

If no file matching basename could be found in any of the directories, returns an empty string.

This method is a Coin extension, not part of the original Inventor API.

◆ setBuffer()

void SoInput::setBuffer ( const void * bufpointer,
size_t bufsize )
virtual

Sets up the input stream for reading from a memory buffer. Closes all open files in the file stack first.

In the original SGI Inventor API this method was designed as "char * bufpointer", Coin followed this until Coin 3, but changed the signature to const from Coin 4.0.

◆ setDirectories()

void SoInput::setDirectories ( SbStringList * dirs)
staticprotected

Set up the directory search path directly with the list of directories in dirs. Note that "." should be part of the directory list if you want to handle files specified by a relative path.

◆ setFilePointer()

void SoInput::setFilePointer ( FILE * newFP)
virtual

Uses the given file pointer as the input file. The input stack of files will be emptied first. Closing a file passed in by its file pointer is the library user's responsibility.

Important note: do not use this method when the Coin library has been compiled as a Microsoft Windows DLL, as passing FILE* instances back or forth to DLLs is dangerous and will most likely cause a crash. This is an intrinsic limitation for Microsoft Windows DLLs.

Note that it is not allowed to pass a FILE* to a gzip-compressed file under Mac OS X.

See also
openFile(), closeFile()

◆ setIVVersion()

void SoInput::setIVVersion ( float version)
protected

Changes the file format version number for the stream at the top of the stack.

◆ setStringArray()

void SoInput::setStringArray ( const char * strings[])

Sets up the input stream for reading from the strings pointed to by a NULL-terminated array of string pointers. It is intended for reading memory-inlined scene graphs.

The rationale for this function is that there is a compiler portability problem with compiling large, static string buffers. Some compilers have fixed max-lengths on this feature, just over 1KB, which obviously becomes a problem real fast. This method lets you specify the buffer as an array of smaller string buffers, typically one string for each line in the Inventor file.

static const char * inlinescenegraph[] = {
"#Inventor V2.1 ascii\n",
"\n",
"Separator {\n",
" Cube {\n",
" }\n",
"}\n",
};
if ( !in.setStringArray(inlinescenegraph) ) return NULL;
return SoDB::readAll(&in);
}
The SoNode class is the base class for nodes used in scene graphs.
Definition SoNode.h:56
See also
setBuffer()

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.1

◆ skipWhiteSpace()

SbBool SoInput::skipWhiteSpace ( void )
protected

Move file pointer past whitespace in the current file or buffer. Returns FALSE if end of file is encountered.

◆ URLToFile()

char * SoInput::URLToFile ( char * out_buf,
const char * in_buf )
protected

This function is part of the TGS Inventor API, but is not implemented in Coin.


The documentation for this class was generated from the following files: