#ifndef COIN_SODB_H #define COIN_SODB_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 #include #include #include class SbName; class SbTime; class SoBase; class SoField; class SoInput; class SoNode; class SoPath; class SoSeparator; class SoVRMLGroup; class SoGroup; typedef void SoDBHeaderCB(void * data, SoInput * in); class COIN_DLL_API SoDB { public: static void init(void); static void finish(void); static void cleanup(void); static const char * getVersion(void); static SbBool read(SoInput * in, SoPath *& path); static SbBool read(SoInput * in, SoBase *& base); static SbBool read(SoInput * in, SoNode *& rootnode); static SoSeparator * readAll(SoInput * in); static SoVRMLGroup * readAllVRML(SoInput * in); static SbBool isValidHeader(const char * teststring); static SbBool registerHeader(const SbString & headerstring, SbBool isbinary, float ivversion, SoDBHeaderCB * precallback, SoDBHeaderCB * postcallback, void * userdata = NULL); static SbBool getHeaderData(const SbString & headerstring, SbBool & isbinary, float & ivversion, SoDBHeaderCB *& precallback, SoDBHeaderCB *& postcallback, void *& userdata, SbBool substringok = FALSE); static int getNumHeaders(void); static SbString getHeaderString(const int i); static SoField * createGlobalField(const SbName & name, SoType type); static SoField * getGlobalField(const SbName & name); static void renameGlobalField(const SbName & from, const SbName & to); static void setRealTimeInterval(const SbTime & interval); static const SbTime & getRealTimeInterval(void); static void enableRealTimeSensor(SbBool on); static SoSensorManager * getSensorManager(void); static void setDelaySensorTimeout(const SbTime & t); static const SbTime & getDelaySensorTimeout(void); static int doSelect(int nfds, void * readfds, void * writefds, void * exceptfds, struct timeval * usertimeout); static void addConverter(SoType from, SoType to, SoType converter); static SoType getConverter(SoType from, SoType to); static SbBool isInitialized(void); static void startNotify(void); static SbBool isNotifying(void); static void endNotify(void); typedef SbBool ProgressCallbackType(const SbName & itemid, float fraction, SbBool interruptible, void * userdata); static void addProgressCallback(ProgressCallbackType * func, void * userdata); static void removeProgressCallback(ProgressCallbackType * func, void * userdata); static SbBool isMultiThread(void); static void readlock(void); static void readunlock(void); static void writelock(void); static void writeunlock(void); static void createRoute(SoNode * from, const char * eventout, SoNode * to, const char * eventin); static void removeRoute(SoNode * from, const char * eventout, SoNode * to, const char * eventin); private: static SoGroup * readAllWrapper(SoInput * in, const SoType & grouptype); }; #endif // !COIN_SODB_H