Merge remote-tracking branch 'origin/6.1'
[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  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 #ifndef DATA_MODEL_H
17 #define DATA_MODEL_H
18
19 #include <map>
20 #include <string>
21
22 #include "Data3D.hxx"
23
24 #include "NgonGeneralData.hxx"
25 #include "NgonGridData.hxx"
26 #include "NgonGridMatplotData.hxx"
27 #include "NgonPolylineData.hxx"
28 #include "MeshData.hxx"
29 #include "MeshFecData.hxx"
30
31 #include "graphicObjectProperties.h"
32
33 extern "C" {
34 #include "BOOL.h"
35
36 #include <stdio.h>
37 }
38
39 class DataModel
40 {
41 private :
42     DataModel() {}
43
44 public :
45     static DataModel *get()
46     {
47         if (m_me == NULL)
48         {
49             m_me = new DataModel();
50         }
51
52         return m_me;
53     }
54
55     static void destroy()
56     {
57         if (m_me)
58         {
59             delete m_me;
60             m_me = NULL;
61         }
62     }
63 public :
64     /**
65      * Sets a graphic object property
66      * As some set methods allocate memory, the FALSE return value also indicates
67      * a failed allocation for these methods, which overlaps with the non-existing
68      * property return value (also FALSE); returning an int, with -1 for a failed
69      * allocation would possibly solve this problem.
70      */
71     BOOL setGraphicObjectProperty(int iUID, int _iName, void const* _dblValue, int numElements);
72
73     /** Returns a graphic object vector property */
74     void getGraphicObjectProperty(int iUID, int _iName, void **_pvData);
75
76     /** Creates a data object */
77     int createDataObject(int iUID, int _iType);
78
79     /**
80      * Deletes a data object
81      */
82     void deleteDataObject(int iUID);
83
84 private :
85     static DataModel *m_me;
86
87     std::map<int, Data3D*> m_dataMap;
88 };
89
90 #endif