This file is indexed.

/usr/include/Inventor/SoDB.h is in inventor-dev 2.1.5-10-18.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/*
 *
 *  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved. 
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  Further, this software is distributed without any warranty that it is
 *  free of the rightful claim of any third person regarding infringement
 *  or the like.  Any license provided herein, whether implied or
 *  otherwise, applies only to this software file.  Patent licenses, if
 *  any, provided herein do not apply to combinations of this program with
 *  other software, or any other product whatsoever.
 * 
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
 *  Mountain View, CA  94043, or:
 * 
 *  http://www.sgi.com 
 * 
 *  For further information regarding this notice, see: 
 * 
 *  http://oss.sgi.com/projects/GenInfo/NoticeExplan/
 *
 */

//  -*- C++ -*-

/*
 * Copyright (C) 1990,91   Silicon Graphics, Inc.
 *
 _______________________________________________________________________
 ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
 |
 |   $Revision: 1.1.1.1 $
 |
 |   Description:
 |	Defines the SoDB class
 |
 |   Author(s)		: Paul S. Strauss, Nick Thompson, Gavin Bell
 |
 ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
 _______________________________________________________________________
 */

#ifndef  _SO_DB_
#define  _SO_DB_

#include <Inventor/sensors/SoSensorManager.h>
#include <Inventor/SoType.h>
#include <Inventor/SbPList.h>

class SoBase;
class SoSFRealTime;
class SoSeparator;
class SoInput;
class SoPath;
class SoNode;
class SoField;

typedef void SoDBHeaderCB(void *userData, SoInput *in);

//////////////////////////////////////////////////////////////////////////////
//
//  Class: SoDB
//
//  Inventor database class.  This class maintains all the global
//  information necessary for reading and writing, naming classes, and
//  so on. All public methods on this class are static - users should
//  never explicitly create instances of this class. Initialization of
//  the database class causes a global instance to be created.
//
//////////////////////////////////////////////////////////////////////////////

class SoDB {

  public:
    // Initialization routine. Creates global database
    static void		init();

    // Returns a character string identifying the version of the
    // Inventor library in use
    static const char	*getVersion();

    // Reads a graph from the file specified by the given SoInput,
    // returning a pointer to the resulting root node in rootNode.
    // Returns FALSE on error.
    static SbBool	read(SoInput *in, SoNode *&rootNode);

    // Reads a path from the file specified by the given SoInput,
    // returning a pointer to the resulting path in path. Returns
    // FALSE on error.
    // C-api: name=ReadPath
    static SbBool	read(SoInput *in, SoPath *&path);

    // Reads all graphs from the file specified by the given SoInput.
    // If there is only one graph in the file and its root is an
    // SoSeparator, a pointer to the root is returned. Otherwise, this
    // creates an SoSeparator, adds the root nodes of all graphs read
    // as children of it, and returns a pointer to it. This returns
    // NULL on error.
    static SoSeparator	*readAll(SoInput *in);

    // Register callbacks to be invoked when a particular header string
    // is found.  Returns FALSE if the string is not a valid header
    // string. A valid string must start with '#' and cannot exceed 
    // 80 characters in length. Returns TRUE if the header is successfully 
    // registered. Note, nothing prevents you from registering the same 
    // string multiple times.
    static SbBool	registerHeader(const SbString &headerString,
					SbBool isBinary, 
					float ivVersion, 
					SoDBHeaderCB *preCB,
					SoDBHeaderCB *postCB,
					void *userData = NULL);
    // Returns TRUE if the given header string is found in the list of 
    // registered headers.  If the substringOK flag is TRUE, then
    // also returns TRUE if a subset of the given string is found.
    static SbBool	getHeaderData(const SbString &string,
					SbBool &isBinary,  
					float &ivVersion,
					SoDBHeaderCB *&preCB, 
					SoDBHeaderCB *&postCB, 
					void *&userData, 
					SbBool substringOK = FALSE);					    
    static int		getNumHeaders();
    static SbString	getHeaderString(int i);
    
    // Returns TRUE if the given character string is a valid registered
    // header string. Some trivial tests that can
    // be made on the string before calling this are: it must begin
    // with a '#'; it should be no more than 80 characters; newlines are
    // not allowed
    static SbBool	isValidHeader(const char *testString);

    // Get a global field of the given name and type.  This will
    // return NULL if there is already a global field with the given
    // name but a different type.  There is only ever one global field
    // with a given name.
    static SoField *	createGlobalField(const SbName &name,
					  SoType type);
    
    // Get the global field wih the given name.  It will be a type
    // derived from SoField.
    static SoField *	getGlobalField(const SbName &name);

    // Give a global field a different name.  Naming it ""
    // deletes it.  Giving it the name of another global field deletes
    // the other global field.
    static void		renameGlobalField(const SbName &oldName,
					  const SbName &newName);

    // Sets/returns the realTime global field update interval (default
    // is 60 times/second).  Setting this to zero turns off realTime
    // update.
    static void		setRealTimeInterval(const SbTime &deltaT);
    static const SbTime &getRealTimeInterval();

    // Set/returns delay queue sensors (OneShot, Node, Path, etc)
    // timeout value.  Delay sensor go off whenever there is idle time
    // or when the timeout expires.
    static void		setDelaySensorTimeout(const SbTime &t);
    static const SbTime &getDelaySensorTimeout();

    // Just like UNIX select() call, but does our tasks while waiting.
    // Can be used in applications with their own event loops.
    static int		doSelect(int nfds, fd_set *readfds, fd_set *writefds,
				 fd_set *exceptfds,
				 struct timeval *userTimeOut);

  SoEXTENDER public:
    // Registers a field conversion engine that can be used to
    // convert from one type of field to another. The type id's of the
    // two fields are passed in, as is the type id of the field
    // converter engine (derived from SoFieldConverter).
    static void		addConverter(SoType fromField, SoType toField,
				     SoType converterEngine);

    // Returns the field conversion engine registered for the two
    // given field types. If no such engine exists,
    // SoType::badType() is returned.
    static SoType	getConverter(SoType fromField, SoType toField);

  SoINTERNAL public:
    // Accesses sensor manager
    static SoSensorManager *	getSensorManager();

    // Returns TRUE if database is initialized (for error checking)
    static SbBool	isInitialized()	{ return (globalDB != NULL); }

    // This is called when some instance begins or ends a notification
    // process. It increments or decrements a counter of notifications
    // in progress. When the counter reaches 0, all priority 0
    // (immediate) delay queue sensors are triggered. By doing this,
    // all notification has a chance to finish before any evaluation
    // (due to data sensors, primarily) takes place.
    static void		startNotify()		{ notifyCount++; }
    static SbBool	isNotifying()		{ return (notifyCount > 0); }
    static void		endNotify()
	{ if (--notifyCount == 0)
	      globalDB->sensorManager.processImmediateQueue(); }

    // Enables/disables realTime sensor processing
    static void		enableRealTimeSensor(SbBool enable);

    // Reads a base of any type, returning a pointer to it. Returns
    // FALSE on error.
    static SbBool	read(SoInput *in, SoBase *&base);
    
  private:
    static const char	*versionString;	// Returned by getVersion()
    static SoDB		*globalDB;	// Pointer to the global database
    SoSensorManager	sensorManager;	// Its global sensor manager 	

    static int		notifyCount;	// How many current notifications

    static SoTimerSensor *realTimeSensor;// touches realTime global field 
    static void		realTimeSensorCallback();
    static SoSFRealTime	*realTime;
    
    // List of valid header strings, and their corresponding callbacks
    static SbPList	*headerList;

    // This dictionary stores field conversion engine types. The key
    // is created by mangling the types of the two fields to convert
    // from. The dictionary maps the key to the type of the conversion
    // engine.
    static SbDict	*conversionDict;

    // Returns a conversionDict key from the two given field type id's.
    static uint32_t 	getConversionKey(SoType fromField, SoType toField)
	{ return (fromField.getKey() << 16) | toField.getKey(); }

    static void		iv2_1PreCallback(void *userData, SoInput *in);
    static void		iv2_0PreCallback(void *userData, SoInput *in);
    static void		iv1_0PreCallback(void *userData, SoInput *in);
    static void		iv2_0PostCallback(void *userData, SoInput *in);
    static void		iv1_0PostCallback(void *userData, SoInput *in);
    
};

#endif /* _SO_DB_ */