FreeWRL / FreeX3D 4.3.0
SAIField.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 _SAIFIELD_H_ABSTRACT_
22#define _SAIFIELD_H_ABSTRACT_
23
24#include "SAIGlobals.h"
25
26namespace freeWRLSAI_cpp
27{
28 /*---------------------------------------------------------------------------------------
29 IMPORTANT NOTICE: since freeWRL EAI uses a X3DNode union data type and other X3D tools could
30 use a custom defined data struct, we use a typedefined void pointer as conventional pointer
31 for those data struct. Should be care of the implementation to make the right conversions
32 ----------------------------------------------------------------------------------------*/
33 typedef void* saiFieldValuePtr ;
34
36 {
37 public:
38 enum saiFieldAccess
39 {
40 initializeOnly = 0, //first access state
41 inputOnly, //write only
42 outputOnly, //read only
43 inputOutput //read/write
44 };
45
46 virtual saiFieldAccess getAccessType() = 0; //should return the protected saiFieldAccess flag
47
48 virtual int getType() = 0; //maps to the FIELDTYPE defines as used by the EAI
49
50 virtual const char* getName() = 0;
51
52 virtual void dispose() = 0;
53
54 //WAITING FOR DEFINITION
55 virtual const saiFieldValuePtr getValue() = 0; //read the IMPORTANT NOTICE above
56 virtual void setValue(const saiFieldValuePtr pValue) = 0;
57 //virtual void registerFieldInterest(const saiListener* pListener) = 0; //saiListener model is not defined yet
58 };
59};
60
61#endif //_SAIFIELD_H_ABSTRACT_