FreeWRL / FreeX3D 4.3.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
26namespace freeWRLSAI_cpp
27{
28 //forward declarations
29 class saiNode;
30 class saiField;
31
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_