Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SoAlgorithms.h
1/*=======================================================================
2 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
3 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
4 *** ***
5 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
6 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
7 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
8 *** ***
9 *** RESTRICTED RIGHTS LEGEND ***
10 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
11 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
12 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
13 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
14 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
15 *** ***
16 *** COPYRIGHT (C) 1996-2014 BY FEI S.A.S, ***
17 *** BORDEAUX, FRANCE ***
18 *** ALL RIGHTS RESERVED ***
19**=======================================================================*/
20/*=======================================================================
21** Author : VSG (MMM YYYY)
22**=======================================================================*/
23#if !defined SOALGORITHMS_H
24#define SOALGORITHMS_H
25
26#ifdef _MSC_VER
27#pragma warning( push )
28#pragma warning(disable:4251)
29#endif
30
31
32#include <Inventor/SbString.h>
33#include <Inventor/algorithms/SoAlgorithmsDefs.h>
34#include <Inventor/STL/vector>
35#include <Inventor/threads/SbThreadMutex.h>
36
37#include <Inventor/SoModule.h>
38SO_MODULE_HEADER(SoAlgorithms, __INVENTORALGORITHMSDLL)
39
40class SoBufferObject;
41class SoDeviceContext;
42
43class SoDataExtract;
44class SoSeismic;
45class SoConversion;
46class SoConvolution;
47class SoArithmetic;
48class SoLDMAlgorithms;
49
57#define DECLARE_ALGORITHMS_MODULE( CLASS_NAME ) \
58 extern "C" VC_DLL_EXPORT SoAlgorithms* createAlgorithmsInterface() \
59 { \
60 CLASS_NAME::init(); \
61 return new CLASS_NAME(); \
62 }
63
79{
80public:
81
84 static void init();
85
89 static bool isInitialized();
90
93 static void finish();
94
97
99 virtual ~SoAlgorithms();
100
112 static SoAlgorithms* loadAlgorithmsModule( const SbString& moduleFileName );
113
123 static SbBool unloadAlgorithmsModule( const SbString& moduleFileName );
124
134
142
143
151
152
160
161
162
170
171
179
180
188
189
190private:
197 virtual SoLDMAlgorithms* createLDMAlgorithmsInterface();
198
199private:
200
202 static SbThreadMutex s_initThreadMutex;
203
204private:
205
207 struct Module
208 {
209 SbString name;
210 void* func;
211 unsigned int refCount;
212 };
213
215 static std::vector< Module* > s_loadedModules;
216
218 static int s_initRefCount;
219};
220
221#ifdef _MSC_VER
222#pragma warning( pop )
223#endif
224
225#endif // SOALGORITHMS_H
226
Class for smart character strings.
Definition SbString.h:202
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable mutex c...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Utility function...
static SbBool unloadAlgorithmsModule(const SbString &moduleFileName)
Unloads a module.
virtual SoSeismic * createSeismicInterface()
Returns an instance of the SoSeismic interface defined in the loaded module.
virtual SoConversion * createConversionInterface()
Returns an instance of the SoConversion interface defined in the loaded module.
static SoAlgorithms * loadAlgorithmsModule(const SbString &moduleFileName)
Loads a module and returns an instance of the implementation of SoAlgorithms in this module.
virtual ~SoAlgorithms()
Algorithms interface destructor.
virtual SoBufferObject * createBufferObject()
Returns an instance of a SoBufferObject according to the hardware used by the loaded module.
virtual SoArithmetic * createArithmeticInterface()
Returns an instance of the SoArithmetic interface defined in the loaded module.
virtual SoConvolution * createConvolutionInterface()
Returns an instance of the SoConvolution interface defined in the loaded module.
static void finish()
Static finish function to free the memory allocated by the algorithms module.
virtual SoDeviceContext * createContext()
Returns a DeviceContext that can be used with the algorithms module and SoBufferObject returned by th...
static void init()
Static init function to initialize the algorithms module.
virtual SoDataExtract * createDataExtractInterface()
Returns an instance of the SoDataExtract interface defined in the loaded module.
SoAlgorithms()
Algorithms interface constructor.
static bool isInitialized()
Returns TRUE if module is currently initialized.
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Arithmetic funct...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Abstract base cl...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Type conversion ...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Convolution func...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Data extraction ...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Abstract base cl...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Seismic attribut...
Definition SoSeismic.h:52
int SbBool
Boolean type.
Definition SbBase.h:87