#ifndef COIN_SOFIELDCONTAINER_H #define COIN_SOFIELDCONTAINER_H /**************************************************************************\ * * This file is part of the Coin 3D visualization library. * Copyright (C) 1998-2007 by Systems in Motion. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * ("GPL") version 2 as published by the Free Software Foundation. * See the file LICENSE.GPL at the root directory of this source * distribution for additional information about the GNU GPL. * * For using Coin with software that can not be combined with the GNU * GPL, and for taking advantage of the additional benefits of our * support services, please contact Systems in Motion about acquiring * a Coin Professional Edition License. * * See http://www.coin3d.org/ for more information. * * Systems in Motion, Postboks 1283, Pirsenteret, 7462 Trondheim, NORWAY. * http://www.sim.no/ sales@sim.no coin-support@coin3d.org * \**************************************************************************/ #include class SbString; class SoFieldData; class SoFieldList; class SoOutput; class COIN_DLL_API SoFieldContainer : public SoBase { typedef SoBase inherited; public: static void initClass(void); static SoType getClassTypeId(void); void setToDefaults(void); SbBool hasDefaultValues(void) const; SbBool fieldsAreEqual(const SoFieldContainer * container) const; void copyFieldValues(const SoFieldContainer * container, SbBool copyconnections = FALSE); SbBool set(const char * const fielddata); void get(SbString & fielddata); virtual int getFields(SoFieldList & l) const; virtual int getAllFields(SoFieldList & l) const; virtual SoField * getField(const SbName & name) const; virtual SoField * getEventIn(const SbName & name) const; virtual SoField * getEventOut(const SbName & name) const; SbBool getFieldName(const SoField * const field, SbName & name) const; SbBool enableNotify(const SbBool flag); SbBool isNotifyEnabled(void) const; SbBool set(const char * fielddata, SoInput * in); void get(SbString & fielddata, SoOutput * out); virtual void notify(SoNotList * l); virtual SbBool validateNewFieldValue(SoField * field, void * newval); virtual void addWriteReference(SoOutput * out, SbBool isfromfield = FALSE); virtual void writeInstance(SoOutput * out); SbBool getIsBuiltIn(void) const; virtual const SoFieldData * getFieldData(void) const; virtual void copyContents(const SoFieldContainer * from, SbBool copyconnections); virtual SoFieldContainer * copyThroughConnection(void) const; static void initCopyDict(void); static void addCopy(const SoFieldContainer * orig, const SoFieldContainer * copy); static SoFieldContainer * checkCopy(const SoFieldContainer * orig); static SoFieldContainer * findCopy(const SoFieldContainer * orig, const SbBool copyconnections); static void copyDone(void); void setUserData(void * userdata) const; void * getUserData(void) const; protected: SoFieldContainer(void); ~SoFieldContainer(); virtual SbBool readInstance(SoInput * in, unsigned short flags); SbBool isBuiltIn; private: static SoType classTypeId; SbBool donotify; }; #endif // !COIN_SOFIELDCONTAINER_H