Xcos MVC: add ParamsAdapter
[scilab.git] / scilab / modules / scicos / src / cpp / view_scilab / Adapters.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014-2014 - Scilab Enterprises - Clement DAVID
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 ADAPTERS_H_
14 #define ADAPTERS_H_
15
16 #include <vector>
17 #include <utility>
18 #include <string>
19
20 namespace org_scilab_modules_scicos
21 {
22 namespace view_scilab
23 {
24
25 /*
26  * Shared data between adapters
27  */
28 class Adapters
29 {
30 public:
31     typedef enum
32     {
33         BLOCK_ADAPTER = 0,  //!< \see view_scilab::BlockAdapter
34         CPR_ADAPTER,        //!< \see view_scilab::CprAdapter
35         DELETED_ADAPTER,    //!< \see view_scilab::DeletedAdapter
36         DIAGRAM_ADAPTER,    //!< \see view_scilab::DiagramAdapter
37         GRAPHIC_ADAPTER,    //!< \see view_scilab::GraphicAdapter
38         LINK_ADAPTER,       //!< \see view_scilab::LinkAdapter
39         MODEL_ADAPTER,      //!< \see view_scilab::ModelAdapter
40         PARAMS_ADAPTER,    //!< \see view_scilab::ParamsAdapter
41         SCS_ADAPTER,        //!< \see view_scilab::ScsAdapter
42         STATE_ADAPTER,      //!< \see view_scilab::StateAdapter
43         TEXT_ADAPTER,       //!< \see view_scilab::TextAdapter
44
45         INVALID_ADAPTER     //!< length of the enum is used to report error
46     } adapters_index_t;
47
48     static Adapters& instance();
49
50     adapters_index_t lookup_by_typename(const std::wstring& name);
51
52 private:
53
54     struct adapter_t
55     {
56         adapter_t(std::wstring n, adapters_index_t k) : name(n), kind(k) {};
57
58         inline bool operator<(const adapter_t& v) const
59         {
60             return name < v.name;
61         }
62
63         inline bool operator<(const std::wstring& v) const
64         {
65             return name < v;
66         }
67
68         std::wstring name;
69         adapters_index_t kind;
70     };
71     typedef std::vector<adapter_t> adapters_t;
72
73     Adapters();
74     ~Adapters();
75
76     static Adapters m_instance;
77     adapters_t adapters;
78 };
79
80 } /* namespace view_scilab */
81 } /* namespace org_scilab_modules_scicos */
82
83 #endif /* ADAPTERS_H_ */