Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

SoFieldData Class Reference

The SoFieldData class is a container for a prototype set of fields. More...

#include <Inventor/fields/SoFieldData.h>

List of all members.

Public Methods

 SoFieldData (void)
 SoFieldData (const SoFieldData &fd)
 SoFieldData (const SoFieldData *fd)
 SoFieldData (int numfields)
 ~SoFieldData ()
void addField (SoFieldContainer *base, const char *name, const SoField *field)
void overlay (SoFieldContainer *to, const SoFieldContainer *from, SbBool copyconnections) const
int getNumFields (void) const
const SbNamegetFieldName (int index) const
SoFieldgetField (const SoFieldContainer *object, int index) const
int getIndex (const SoFieldContainer *fc, const SoField *field) const
void addEnumValue (const char *enumname, const char *valuename, int value)
void getEnumData (const char *enumname, int &num, const int *&values, const SbName *&names)
SbBool read (SoInput *in, SoFieldContainer *object, SbBool erroronunknownfield, SbBool &notbuiltin) const
SbBool read (SoInput *in, SoFieldContainer *object, const SbName &fieldname, SbBool &foundname) const
void write (SoOutput *out, const SoFieldContainer *object) const
void copy (const SoFieldData *src)
SbBool isSame (const SoFieldContainer *c1, const SoFieldContainer *c2) const
SbBool readFieldDescriptions (SoInput *in, SoFieldContainer *object, int numdescriptionsexpected) const
void writeFieldDescriptions (SoOutput *out, const SoFieldContainer *object) const


Detailed Description

The SoFieldData class is a container for a prototype set of fields.

This class is instantiated once for each class of objects which use fields, and which needs to be able to import and export them.

Each field of a class is stored with the name it has been given within its "owner" class and a pointer offset to the dynamic instance of the field itself.

Enumeration sets are stored with (name, value) pairs, to make it possible to address, read and save enum type fields by name.

It is unlikely that application programmers should need to use any of the methods of this class directly.

See also:
SoField, SoFieldContainer


Constructor & Destructor Documentation

SoFieldData::SoFieldData void
 

Default constructor.

SoFieldData::SoFieldData const SoFieldData & fd
 

Copy constructor.

SoFieldData::SoFieldData const SoFieldData * fd
 

Copy constructor taking a pointer value as an argument. Handles NULL pointers by behaving like the default constructor.

SoFieldData::SoFieldData int numfields
 

Constructor. Takes an indication on the number of fields which should be stored, to make sure the memory handling is efficient.

SoFieldData::~SoFieldData
 

Destructor.


Member Function Documentation

void SoFieldData::addField SoFieldContainer * base,
const char * name,
const SoField * field
 

Add a new field to our internal list.

The name will be stored along with an pointer offset between base and field, which will be valid for all instances of the class type of base.

void SoFieldData::overlay SoFieldContainer * to,
const SoFieldContainer * from,
SbBool copyconnections
const
 

Copy fields from container from to container to. If copyconnections is TRUE, we'll also copy the connections field from has made.

If you think the method signature is a bit strange, you're correct. This should really have been a static method (the owner this instance of the method isn't used at all, due to how the internal representation of field template list are stored), but for unknown reasons this is a dynamic method in Open Inventor. So also in Coin, to keep compatibility.

int SoFieldData::getNumFields void const
 

Returns number of fields contained within this instance.

const SbName & SoFieldData::getFieldName int index const
 

Returns the name of the field at index.

SoField * SoFieldData::getField const SoFieldContainer * object,
int index
const
 

Returns a pointer to the field at index within the object instance.

int SoFieldData::getIndex const SoFieldContainer * fc,
const SoField * field
const
 

Returns the internal index value of field in fc. If field is not part of fc, returns -1.

void SoFieldData::addEnumValue const char * enumname,
const char * valuename,
int value
 

Either adds a new enum set (with an initial member), or adds a new value member to an existing enum set.

void SoFieldData::getEnumData const char * enumname,
int & num,
const int *& values,
const SbName *& names
 

Returns the names and values of enumeration entry with the enumname. The number of (name, value) pairs available in the enumeration is returned in num.

SbBool SoFieldData::read SoInput * in,
SoFieldContainer * object,
SbBool erroronunknownfield,
SbBool & notbuiltin
const
 

Read field data from the in stream for fields belonging to object. Returns TRUE if everything went ok, or FALSE if any error conditions occurs.

erroronunknownfield decides whether or not FALSE should be returned if a name identifier not recognized as a fieldname of object is encountered. Note that erroronunknownfield should be FALSE if object is a container with child objects, otherwise the code will fail upon the first child name specification.

If notbuiltin is TRUE on return, object is an unknown node or engine type. Unknown nodes are recognized by the fields keyword first in their file format definition, and unknown engines by the inputs keyword.

SbBool SoFieldData::read SoInput * in,
SoFieldContainer * object,
const SbName & fieldname,
SbBool & foundname
const
 

Find field fieldname in object, and if it is available, set foundname to TRUE and try to read the field specification from in. If foundname is set to TRUE, the return value says whether or not the field specification could be read without any problems.

If fieldname is not part of object, returns FALSE with foundname also set to FALSE.

void SoFieldData::write SoOutput * out,
const SoFieldContainer * object
const
 

Write to out field names and field values for the fields of object.

void SoFieldData::copy const SoFieldData * src
 

Copy contents of src into this instance.

If there was any data set up in this instance before the method was called, the old data is removed first.

Note that this only copies the field set template specification from src, not any actual fields.

SbBool SoFieldData::isSame const SoFieldContainer * c1,
const SoFieldContainer * c2
const
 

Compares c1 and c2 to see if they have the same field data set and if the fields of c1 have the same values as the fields of c2.

Field connections are not considered (i.e. we will return TRUE if the values of the fields of c1 are equal to the fields of c2, even if they differ in how they have made connections to other fields).

If you think the method signature is a bit strange, you're correct. This should really have been a static method (the owner this instance of the method isn't used at all, due to how the internal representation of field template list are stored), but for unknown reasons this is a dynamic method in Open Inventor. So also in Coin, to keep compatibility.

SbBool SoFieldData::readFieldDescriptions SoInput * in,
SoFieldContainer * object,
int numdescriptionsexpected
const
 

Reads a set of field specifications from in for an unknown nodeclass type, in the form "[ FIELDCLASS FIELDNAME, FIELDCLASS FIELDNAME, ... ]".

numdescriptionsexpected is used for binary format import to know how many descriptions should be parsed.

void SoFieldData::writeFieldDescriptions SoOutput * out,
const SoFieldContainer * object
const
 

Write a set of field specifications to out for an unknown nodeclass type, in the form "[ FIELDCLASS FIELDNAME, FIELDCLASS FIELDNAME, ... ]".


The documentation for this class was generated from the following files:
Generated at Tue Mar 5 03:31:24 2002 for Coin by doxygen1.2.9 written by Dimitri van Heesch, © 1997-2001