55#include <Inventor/misc/SoBasic.h>
56#include <Inventor/misc/SoAuditorList.h>
57#include <Inventor/misc/SoRefCounter.h>
58#include <Inventor/SbString.h>
59#include <Inventor/SoTypedObject.h>
60#include <Inventor/threads/SbThreadSpinlock.h>
71#pragma warning(disable:4251)
119 virtual void touch() { startNotify(); }
179 virtual bool notifyDelete()
const;
183 virtual void destroy();
186 static uint32_t getCurrentWriteCounter();
189 SbBool hasMultipleWriteRefs()
const
190 {
return writeStuff.multWriteRef; }
195 virtual const char* getFileFormatName()
const;
209 virtual SbBool readInstance(
SoInput *in,
unsigned short flags) = 0;
214 static void initClass();
215 static void exitClass();
220 static bool setSynchronizationEnabled(
bool value)
222 bool old = s_synchronizationEnabled;
223 s_synchronizationEnabled = value;
227 static void resetWriteCounter();
230 static void incrementCurrentWriteCounter();
234 static void decrementCurrentWriteCounter();
239 virtual void startNotify();
246 virtual void notify(SoNotList *list);
249 void addAuditor(
void *auditor, SoNotRec::Type type);
250 void removeAuditor(
void *auditor, SoNotRec::Type type);
254 const SoAuditorList &getAuditors()
const {
return auditors; }
257 static void addName(
SoBase *,
const char *);
258 static void removeName(
SoBase *,
const char *);
265 virtual void setNetName(
const SbName &netName);
268 virtual SbName getNetName()
const;
271 virtual void generateNetName();
274 inline void setSynchronized(
const bool b );
277 inline bool isSynchronized()
const;
290 virtual bool isGroup() {
return false; }
302 virtual void addWriteReference(
SoOutput *out,
SbBool isFromField = FALSE);
311 static void setInstancePrefix(
const SbString &c);
317 unsigned int writeCounter : 26;
320 unsigned int hasName : 1;
321 unsigned int hasNetName : 1;
325 unsigned int multWriteRef : 1;
329 unsigned int writeRefFromField : 1;
333 unsigned int isSynchronized : 1;
337 unsigned int isSynchronizable : 1;
343 WriteStuff writeStuff;
347 static SoType classTypeId;
353 static uint32_t s_currentWriteCounter;
357 SoAuditorList auditors;
360 static bool s_synchronizationEnabled;
363 void writeDef(
SoOutput *,
int)
const;
364 void writeRef(
SoOutput *,
int)
const;
365 void writeAnnotation(
SoOutput *)
const;
366 void writeAnnotation1(
SoOutput *)
const;
375 static void flushInput(
SoInput *in);
381 static SbDict *nameObjDict;
385 static SbDict *objNameDict;
400 SoBaseInitializer(
SoBase*);
401 ~SoBaseInitializer();
402 static inline bool isActive()
404 s_activeMutex.
lock();
413 static bool m_active;
421 writeStuff.isSynchronizable = b;
427 return writeStuff.isSynchronizable && s_synchronizationEnabled;
431SoBase::setSynchronized(
const bool b )
433 writeStuff.isSynchronized = b;
437SoBase::isSynchronized()
const
439 return writeStuff.isSynchronized;
Character string stored in a hash table.
Class for smart character strings.
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable readers...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable spinloc...
void lock()
Request exclusive access for this spinlock.
void unlock()
Release exclusive access.
Base class for all nodes, paths, and engines.
virtual void touch()
Marks an instance as modified, simulating a change to it.
bool isSynchronizable() const
Gets the ScaleViz synchronizable state of this object.
virtual void setName(const SbName &name)
Sets the name of an instance.
virtual SbName getName() const
Returns the name of an instance.
void setSynchronizable(const bool b)
Sets this to be a ScaleViz synchronizable object.
static SoType getClassTypeId()
Returns type identifier for this class.
Maintains a list of pointers to instances of the SoBase classes.
Abstract base class for all database nodes.
Used to write Open Inventor data files.
Path that points to a list of hierarchical nodes.
Base class for ref-counted objects.
Stores runtime type information.
Base class for object storing runtime type information.