SoProtoInstance.h
#ifndef COIN_SOPROTOINSTANCE_H
#define COIN_SOPROTOINSTANCE_H
/**************************************************************************\
* Copyright (c) Kongsberg Oil & Gas Technologies AS
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\**************************************************************************/
// NB: This is work-in-progress, and the API might change from day to
// day. Do not use this class unless you are prepared for this.
// pederb, 2002-05-28
#include <Inventor/nodes/SoNode.h>
#include <Inventor/nodes/SoSubNode.h>
class SoProto;
class SoSensor;
class COIN_DLL_API SoProtoInstance : public SoNode {
typedef SoNode inherited;
// The following definitions are used instead of SO_NODE_HEADER() to
// let SoProtoInstance have dynamic handling of SoFieldData objects.
PRIVATE_NODE_TYPESYSTEM_HEADER();
protected:
virtual const SoFieldData * getFieldData(void) const;
private:
SoFieldData * classfielddata;
public:
static void initClass(void);
SoProtoInstance(SoProto * proto,
const SoFieldData * deffielddata);
static SoProtoInstance * findProtoInstance(const SoNode * rootnode);
void setRootNode(SoNode * root);
SoNode * getRootNode(void);
SoProto * getProtoDefinition(void) const;
SbName getProtoName(void) const;
virtual void write(SoWriteAction * action);
protected:
virtual ~SoProtoInstance();
virtual SbBool readInstance(SoInput * in, unsigned short flags);
virtual const char * getFileFormatName(void) const;
private:
static void sensorCB(void * data, SoSensor * sensor);
static void cleanupClass(void);
void copyFieldData(const SoFieldData * src);
class SoProtoInstanceP * pimpl;
};
#endif // !COIN_SOPROTOINSTANCE_H
SbName
The SbName class stores strings by reference.
Definition SbName.h:40
SoBase::getFileFormatName
virtual const char * getFileFormatName(void) const
Definition SoBase.cpp:1364
SoFieldContainer::getFieldData
virtual const SoFieldData * getFieldData(void) const
Definition SoFieldContainer.cpp:756
SoFieldContainer::cleanupClass
static void cleanupClass(void)
Definition SoFieldContainer.cpp:273
SoFieldData
The SoFieldData class is a container for a prototype set of fields.
Definition SoFieldData.h:48
SoInput
The SoInput class is an abstraction of file import functionality.
Definition SoInput.h:61
SoNode::SoNode
SoNode(void)
Definition SoNode.cpp:417
SoNode::readInstance
virtual SbBool readInstance(SoInput *in, unsigned short flags)
Definition SoNode.cpp:1542
SoNode::write
virtual void write(SoWriteAction *action)
Definition SoNode.cpp:1290
SoNode::initClass
static void initClass(void)
Sets up initialization for data common to all instances of this class, like submitting necessary info...
Definition SoNode.cpp:573
SoProtoInstance::getProtoDefinition
SoProto * getProtoDefinition(void) const
Definition SoProtoInstance.cpp:166
SoProtoInstance::getRootNode
SoNode * getRootNode(void)
Definition SoProtoInstance.cpp:210
SoProtoInstance::SoProtoInstance
SoProtoInstance(SoProto *proto, const SoFieldData *deffielddata)
Definition SoProtoInstance.cpp:129
SoProtoInstance::getProtoName
SbName getProtoName(void) const
Definition SoProtoInstance.cpp:175
SoProtoInstance::setRootNode
void setRootNode(SoNode *root)
Definition SoProtoInstance.cpp:193
SoProtoInstance::findProtoInstance
static SoProtoInstance * findProtoInstance(const SoNode *rootnode)
Definition SoProtoInstance.cpp:244
SoProto
The SoProto class handles PROTO definitions.
Definition SoProto.h:50
SoSensor
The SoSensor class is the abstract base class for all sensors.
Definition SoSensor.h:43
SoWriteAction
The SoWriteAction class writes a scene graph to file.
Definition SoWriteAction.h:42