FreeWRL/FreeX3D  3.0.0
SAIproto.h
1 /****************************************************************************
2  This file is part of the FreeWRL/FreeX3D Distribution.
3 
4  Copyright 2009 CRC Canada. (http://www.crc.gc.ca)
5 
6  FreeWRL/FreeX3D is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  FreeWRL/FreeX3D is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with FreeWRL/FreeX3D. If not, see <http://www.gnu.org/licenses/>.
18 ****************************************************************************/
19 
20 
21 #ifndef _SAIPROTO_H_ABSTRACT_
22 #define _SAIPROTO_H_ABSTRACT_
23 
24 #include "SAIGlobals.h"
25 
26 namespace freeWRLSAI_cpp
27 {
28  //forward declarations
29  class saiNode;
30  class saiField;
31 
32  class saiProto
33  {
34  public:
35  enum saiLoadState
36  {
37  NOT_STARTED = 0,
38  IN_PROGRESS,
39  COMPLETE,
40  FAILED
41  };
42 
43 
44  virtual bool isExternproto() = 0;
45 
46  virtual saiNode* createInstance(const char* strProtoDeclaration) = 0;
47 
48  virtual std::vector<saiField*>* getFieldDefinitions() = 0;
49 
50  virtual saiLoadState checkLoadState() = 0;
51 
52  virtual void requestImmediateLoad() = 0;
53  };
54 };
55 
56 #endif //_SAIPROTO_H_ABSTRACT_