Open Inventor Reference
SoFieldContainer Class Reference

Abstract base class for objects that contain fields. More...

#include <Inventor/fields/SoFieldContainer.h>

Inheritance diagram for SoFieldContainer:
SoBase SoEngine SoNode SoBoolOperation SoCalculator SoComposeMatrix SoComposeRotation SoComposeRotationFromTo SoComposeVec2f SoComposeVec3f SoComposeVec4f SoComputeBoundingBox SoConcatenate SoCounter SoDecomposeMatrix SoDecomposeRotation SoDecomposeVec2f SoDecomposeVec3f SoDecomposeVec4f SoElapsedTime SoFieldConverter SoGate SoInterpolate SoOnOff SoOneShot SoSelectOne SoTimeCounter SoTransformVec3f SoTriggerAny SoUnknownEngine SoBaseColor SoBaseKit SoCallback SoCamera SoClipPlane SoComplexity SoCoordinate3 SoCoordinate4 SoDrawStyle SoEnvironment SoEventCallback SoFile SoFont SoGroup SoInfo SoLabel SoLight SoLightModel SoMaterial SoMaterialBinding SoNodeKitListPart SoNormal SoNormalBinding SoPackedColor SoPickStyle SoPolygonOffset SoProfile SoProfileCoordinate2 SoProfileCoordinate3 SoShape SoShapeHints SoTexture2 SoTexture2Transform SoTextureCoordinate2 SoTextureCoordinateBinding SoTextureCoordinateFunction SoTransformation SoVertexProperty SoWWWInline

Public Member Functions

void setToDefaults ()
 Sets all fields in this object to their default values. More...
 
bool hasDefaultValues () const
 Returns TRUE if all of the object's fields have their default values. More...
 
bool fieldsAreEqual (const SoFieldContainer *fc) const
 Returns TRUE if this object's fields are exactly equal to fc's fields. More...
 
void copyFieldValues (const SoFieldContainer *fc, bool copyConnections=FALSE)
 Copies the contents of fc's fields into this object's fields. More...
 
bool set (const char *fieldDataString)
 Sets one or more fields in this object to the values specified in the given string, which should be a string in the Inventor file format. More...
 
void get (SbString &fieldDataString)
 Returns the values of the fields of this object in the Inventor ASCII file format in the given string. More...
 
virtual int getFields (SoFieldList &list) const
 Appends pointers to all of this object's fields to resultList, and returns the number of fields appended. More...
 
virtual SoFieldgetField (const SbName &fieldName) const
 Returns a pointer to the field with the given name. More...
 
bool getFieldName (const SoField *field, SbName &fieldName) const
 Returns the name of the given field in the fieldName argument. More...
 
bool enableNotify (bool flag)
 Notification at this Field Container is enabled (if flag == TRUE) or disabled (if flag == FALSE). More...
 
bool isNotifyEnabled () const
 Notification is the process of telling interested objects that this object has changed. More...
 
bool set (const char *fieldDataString, SoInput *dictIn)
 Sets one or more fields in this object to the values specified in the given string, which should be a string in the Inventor file format. More...
 
void get (SbString &fieldDataString, SoOutput *dictOut)
 Returns the values of the fields of this object in the Inventor ASCII file format in the given string. More...
 
virtual void notify (SoNotList *)
 Propagates modification notification through an instance. More...
 
virtual void addWriteReference (SoOutput *out, bool isFromField=FALSE)
 Adds a reference to the instance when writing. More...
 
virtual void writeInstance (SoOutput *out)
 Writes instance to SoOutput. (Used only for last stage of writing) More...
 
bool getIsBuiltIn () const
 Returns whether or not instance is considered 'built-in' to the library. More...
 
virtual const SoFieldDatagetFieldData () const
 Returns an SoFieldData structure for the node. More...
 
virtual void copyContents (const SoFieldContainer *fromFC, bool copyConnections)
 Copies the contents of the given node into this instance. More...
 
virtual SoFieldContainercopyThroughConnection () const
 During a copy operation, this copies an instance that is encountered through a field connection. More...
 
void addManagedSensor (SoSensor *sensor)
 Adds a sensor which is managed by the field container. More...
 
- Public Member Functions inherited from SoBase
void ref () const
 Adds and removes a reference to an instance. More...
 
void unref () const
 
void unrefNoDelete () const
 
void touch ()
 Marks an instance as modified, simulating a change to it. More...
 
virtual SoType getTypeId () const =0
 Returns the type identifier for a specific instance. More...
 
bool isOfType (SoType type) const
 Returns TRUE if this object is of the type specified in type or is derived from that type. More...
 
virtual SbName getName () const
 Returns the name of an instance. More...
 
virtual void setName (const SbName &name)
 Sets the name of an instance. More...
 
virtual void startNotify ()
 Initiates notification from an instance. More...
 
void addAuditor (void *auditor, SoNotRec::Type type)
 Adds/removes an auditor to/from list. More...
 
void removeAuditor (void *auditor, SoNotRec::Type type)
 
const SoAuditorListgetAuditors ()
 Returns auditor list– used by SoField and SoEngineOutput to trace forward connections. More...
 
int getRefCount () const
 Returns current reference count. More...
 
bool shouldWrite ()
 Returns TRUE if the instance should be written, based on the write-reference info already accumulated. More...
 

Static Public Member Functions

static SoType getClassTypeId ()
 Returns the type of this class. More...
 
static void initClass ()
 Setup type information. More...
 
static void initCopyDict ()
 During a copy operation, copies of nodes and engines are stored in a dictionary, keyed by the original node or engine pointer, so that copies can be re-used. More...
 
static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)
 Adds an instance to the dictionary. More...
 
static SoFieldContainercheckCopy (const SoFieldContainer *orig)
 If a copy of the given instance is in the dictionary, this returns it. More...
 
static SoFieldContainerfindCopy (const SoFieldContainer *orig, bool copyConnections)
 If a copy of the given instance is not in the dictionary, this returns NULL. More...
 
static void copyDone ()
 Cleans up the dictionary when done. More...
 
- Static Public Member Functions inherited from SoBase
static SoType getClassTypeId ()
 Returns type identifier for this class. More...
 
static void initClass ()
 Setup type information. More...
 
static void incrementCurrentWriteCounter ()
 Increments the current write counter at the start of a write operation. More...
 
static void decrementCurrentWriteCounter ()
 Decrements the current write counter after a write operation, in some rare cases. More...
 
static void addName (SoBase *, const char *)
 Internal methods used to maintain the global name dictionary. More...
 
static void removeName (SoBase *, const char *)
 
static SoBasegetNamedBase (const SbName &, SoType)
 Helper routines used to get stuff out of nameDict. More...
 
static int getNamedBases (const SbName &, SoBaseList &, SoType)
 
static bool read (SoInput *in, SoBase *&base, SoType expectedType)
 Reads one instance of some subclass of SoBase. More...
 
static void setInstancePrefix (const SbString &c)
 This defaults to "+" and is used when naming nodes that are DEF's and USE'd. More...
 

Protected Member Functions

 SoFieldContainer ()
 
 ~SoFieldContainer ()
 
virtual bool readInstance (SoInput *in, unsigned short flags)
 Reads stuff into instance. Returns FALSE on error. More...
 
- Protected Member Functions inherited from SoBase
 SoBase ()
 Constructor is protected - this is an abstract class. More...
 
virtual ~SoBase ()
 Virtual destructor so that subclasses are deleted properly. More...
 
virtual void destroy ()
 Actually deletes an instance. More...
 
bool hasMultipleWriteRefs () const
 Returns TRUE if the instance has multiple write references. More...
 
bool writeHeader (SoOutput *out, bool isGroup, bool isEngine) const
 Writes a header (name, open brace) or footer (close brace) to file defined by SoOutput. More...
 
void writeFooter (SoOutput *out) const
 
virtual const char * getFileFormatName () const
 Unknown nodes and engines write a different name for themselves than their typeId; this virtual method lets them do that (by default the typeId name is returned) More...
 

Protected Attributes

bool isBuiltIn
 Is the subclass a built-in Inventor subclass or an extender subclass? This is used to determine whether to read/write field type information. More...
 

Additional Inherited Members

- Static Public Attributes inherited from SoBase
static bool traceRefs
 Turns on/off reference count tracing (for debugging) More...
 
- Protected Types inherited from SoBase
enum  BaseFlags { IS_ENGINE = 1 , IS_GROUP = 2 }
 This set of enums is used when reading and writing the base. More...
 
- Static Protected Member Functions inherited from SoBase
static uint32_t getCurrentWriteCounter ()
 Returns current write counter. More...
 

Detailed Description

SoFieldContainer is the abstract base class for engines and nodes. It contains methods for finding out what fields an object has, controlling notification, and for dealing with all of the fields of an object at once.

The fields of an engine are its inputs. Note that even though an engine's output corresponds to a specific type of field, an engine output is not a field.

See Also
SoSField, SoMField, SoNode, SoDB

Definition at line 92 of file SoFieldContainer.h.

Constructor & Destructor Documentation

◆ SoFieldContainer()

SoFieldContainer::SoFieldContainer ( )
protected

◆ ~SoFieldContainer()

SoFieldContainer::~SoFieldContainer ( )
protected

Member Function Documentation

◆ addCopy()

static void SoFieldContainer::addCopy ( const SoFieldContainer orig,
const SoFieldContainer copy 
)
static

◆ addManagedSensor()

void SoFieldContainer::addManagedSensor ( SoSensor sensor)

It will be deleted when the container is deleted.

◆ addWriteReference()

virtual void SoFieldContainer::addWriteReference ( SoOutput out,
bool  isFromField = FALSE 
)
virtual

isFromField indicates whether the reference is from a field-to-field connection.

Reimplemented from SoBase.

Reimplemented in SoBaseKit.

◆ checkCopy()

static SoFieldContainer* SoFieldContainer::checkCopy ( const SoFieldContainer orig)
static

Otherwise, it returns NULL. The copy is not changed in any way.

◆ copyContents()

virtual void SoFieldContainer::copyContents ( const SoFieldContainer fromFC,
bool  copyConnections 
)
virtual

◆ copyDone()

static void SoFieldContainer::copyDone ( )
static

◆ copyFieldValues()

void SoFieldContainer::copyFieldValues ( const SoFieldContainer fc,
bool  copyConnections = FALSE 
)

fc must be the same type as this object. If copyConnections is TRUE, then if any of fc's fields are connected then this object's fields will also be connected to the same source.

◆ copyThroughConnection()

virtual SoFieldContainer* SoFieldContainer::copyThroughConnection ( ) const
virtual

The default implementation just returns the original pointer - no copy is done. Subclasses such as nodes and engines handle this differently.

Reimplemented in SoNode, SoSelectOne, SoGate, SoEngine, and SoConcatenate.

◆ enableNotify()

bool SoFieldContainer::enableNotify ( bool  flag)
inline

The returned boolean value indicates whether notification was enabled immediately prior to applying this method.

Definition at line 163 of file SoFieldContainer.h.

◆ fieldsAreEqual()

bool SoFieldContainer::fieldsAreEqual ( const SoFieldContainer fc) const

If fc is not exactly same type as this object, FALSE is returned.

◆ findCopy()

static SoFieldContainer* SoFieldContainer::findCopy ( const SoFieldContainer orig,
bool  copyConnections 
)
static

Otherwise, this copies the contents of the original into the copy (if not already done) and returns a pointer to the copy.

◆ get() [1/2]

void SoFieldContainer::get ( SbString fieldDataString)
inline

Fields whose isDefault() bit is set will not be part of the string. You can use the field->get() method to get a field's value as a string even if has its default value.

Definition at line 140 of file SoFieldContainer.h.

◆ get() [2/2]

void SoFieldContainer::get ( SbString fieldDataString,
SoOutput dictOut 
)

Fields whose isDefault() bit is set will not be part of the string. You can use the field->get() method to get a field's value as a string even if has its default value.

◆ getClassTypeId()

static SoType SoFieldContainer::getClassTypeId ( )
inlinestatic

Definition at line 97 of file SoFieldContainer.h.

◆ getField()

virtual SoField* SoFieldContainer::getField ( const SbName fieldName) const
virtual

If no such field exists, NULL is returned.

◆ getFieldData()

virtual const SoFieldData* SoFieldContainer::getFieldData ( ) const
virtual

Objects with no fields should return NULL, which is what the default method does.

◆ getFieldName()

bool SoFieldContainer::getFieldName ( const SoField field,
SbName fieldName 
) const

Returns FALSE if field is not a member of this object.

◆ getFields()

virtual int SoFieldContainer::getFields ( SoFieldList list) const
virtual

The types of the fields can be determined using field->isOfType() and field->getTypeId(), and their names can be determined by passing the field pointers to the getFieldName() method (see below).

◆ getIsBuiltIn()

bool SoFieldContainer::getIsBuiltIn ( ) const
inline

Used during writing.

Definition at line 227 of file SoFieldContainer.h.

◆ hasDefaultValues()

bool SoFieldContainer::hasDefaultValues ( ) const

This will return TRUE even if a field's isDefault() method returns FALSE em for example, if a field's default value is 0.0 and you setValue(0.0) that field, the default flag will be set to FALSE (because it would be too slow to compare the field against its default value every time setValue is called). However, hasDefaultValues() would return TRUE in this case.

◆ initClass()

static void SoFieldContainer::initClass ( )
static

◆ initCopyDict()

static void SoFieldContainer::initCopyDict ( )
static

These methods operate on that dictionary. Initializes a new copy dictionary

◆ isNotifyEnabled()

bool SoFieldContainer::isNotifyEnabled ( ) const
inline

Notification is needed to make engines and sensors function, is used to keep SoPaths up to date when the scene graph's topology changes, and is also used to invalidate rendering or bounding box caches.

Notification is normally enabled, but can be disabled on a node by node (or engine by engine) basis. If you are making extensive changes to a large part of the scene graph then disabling notification can increase performance, at the expense of increased responsibility for making sure that any interested engines, sensors or paths are kept up to date.

For example, if you will be making a lot of changes to a small part of your scene graph and you know that there are no engines or sensors attached to nodes in that part of the scene graph, you might disable notification on the nodes you are changing, modify them, re-enable notification, and then touch() one of the nodes to cause a redraw.

However, you should profile your application and make sure that notification is taking a significant amount of time before going to the trouble of manually controlling notification.

Definition at line 190 of file SoFieldContainer.h.

◆ notify()

virtual void SoFieldContainer::notify ( SoNotList )
virtual

Reimplemented from SoBase.

Reimplemented in SoVertexShape, SoSeparator, SoNode, SoIndexedShape, SoEngine, and SoBlinker.

◆ readInstance()

virtual bool SoFieldContainer::readInstance ( SoInput in,
unsigned short  flags 
)
protectedvirtual

◆ set() [1/2]

bool SoFieldContainer::set ( const char *  fieldDataString)
inline

TRUE is returned if the string was valid Inventor file format. For example, you could set the fields of an SoCube by doing:

SoCube *cube = ....
cube->set("width 1.0 height 2.0 depth 3.2");
Cube shape node.
Definition: SoCube.h:119
bool set(const char *fieldDataString)
Sets one or more fields in this object to the values specified in the given string,...

Definition at line 131 of file SoFieldContainer.h.

◆ set() [2/2]

bool SoFieldContainer::set ( const char *  fieldDataString,
SoInput dictIn 
)

TRUE is returned if the string was valid Inventor file format. For example, you could set the fields of an SoCube by doing:

SoCube *cube = ....
cube->set("width 1.0 height 2.0 depth 3.2");

◆ setToDefaults()

void SoFieldContainer::setToDefaults ( )

◆ writeInstance()

virtual void SoFieldContainer::writeInstance ( SoOutput out)
virtual

Member Data Documentation

◆ isBuiltIn

bool SoFieldContainer::isBuiltIn
protected

Definition at line 285 of file SoFieldContainer.h.


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