111class SoBase:
public SoRefCounter,
public SoTypedObject {
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 *);
261 static SoBase *getNamedBase(
const SbName &,
const SoType&);
262 static int getNamedBases(
const SbName &, SoBaseList &,
const SoType&);
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;
288 void writeFooter(SoOutput* )
const;
290 virtual bool isGroup() {
return false; }
297 static SbBool read(SoInput *in, SoBase *&base,
const SoType &expectedType,
SbBool createAndRead = TRUE);
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;
349 static SbString instancePrefix;
353 static uint32_t s_currentWriteCounter;
354 static SbThreadRWMutex s_writeCounterMutex;
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;
368 static SbBool readReference(SoInput *in, SoBase *&base);
369 static SbBool readBase(SoInput *in, SbName &className, SoBase *&base,
SbBool createAndRead = TRUE);
370 static SbBool readBaseInstance( SoInput *in,
371 const SbName &className,
const SbName &refName,
372 const SbName &netName, SoBase *&base,
SbBool createAndRead = TRUE);
373 static SoBase* createInstance(SoInput *in, SbName className,
unsigned short ioFlags);
375 static void flushInput(SoInput *in);
381 static SbDict *nameObjDict;
385 static SbDict *objNameDict;