FreeWRL/FreeX3D  3.0.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 
26 namespace 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 
35  class saiField
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_