Triangle mesh and Fec triangle mesh classes added to the C++ data model.
[scilab.git] / scilab / modules / graphic_objects / includes / DataModel.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #ifndef DATA_MODEL_H
14 #define DATA_MODEL_H
15
16 #include <map>
17 #include <string>
18
19 #include "Data3D.hxx"
20
21 #include "NgonGeneralData.hxx"
22 #include "NgonGridData.hxx"
23 #include "NgonPolylineData.hxx"
24 #include "TriangleMeshData.hxx"
25 #include "TriangleMeshFecData.hxx"
26
27 #include "graphicObjectProperties.h"
28
29 extern "C" {
30 #include "BOOL.h"
31
32 #include <stdio.h>
33 }
34
35 class DataModel
36 {
37 private :
38     DataModel()
39     {
40         m_dataMap = new std::map<std::string, Data3D*>();
41     }
42
43 public :
44     static DataModel *get()
45     {
46         if (m_me == NULL)
47         {
48             m_me = new DataModel();
49         }
50
51         return m_me;
52     }
53
54 public :
55     /**
56      * Sets a graphic object property
57      * As some set methods allocate memory, the FALSE return value also indicates
58      * a failed allocation for these methods, which overlaps with the non-existing
59      * property return value (also FALSE); returning an int, with -1 for a failed
60      * allocation would possibly solve this problem.
61      */
62     BOOL setGraphicObjectProperty(char *_pstID, char* _pstName, void* _dblValue, int numElements);
63
64     /** Returns a graphic object vector property */
65     void* getGraphicObjectProperty(char *_pstID, char* _pstName);
66
67     /**
68      * Returns a graphic object integer property
69      * Implemented in order to avoid returning the address of a
70      * static local variable across too many function calls (see the getProperty
71      * methods of the different Data classes when integer values are returned)
72      * Probably redundant with getGraphicObjectProperty
73      */
74     int* getGraphicObjectIntProperty(char *_pstID, char* _pstName);
75
76     /** Creates a data object */
77     char* createDataObject(char* _pstID, char* _sType);
78
79     /**
80      * Deletes a data object
81      * To be implemented
82      */
83     void deleteDataObject(char* _pstID);
84
85 private :
86     static DataModel *m_me;
87
88     std::map<std::string, Data3D*> *m_dataMap;
89 };
90
91 #endif