Xcos MVC: implement in_style / out_style / in_label / out_label / style
[scilab.git] / scilab / modules / scicos / includes / utilities.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 UTILITIES_HXX_
14 #define UTILITIES_HXX_
15
16 #include <iostream>
17
18 /**
19  * A unique ID is used to represent a reference to any object in the model.
20  *
21  * The '0' value is used indicate that BaseObject is not handled by the controller.
22  */
23 typedef long long ScicosID;
24 //struct ScicosID
25 //{
26 //    ScicosID(const ScicosID& u) : v(u.v) {}
27 //    typedef unsigned long long uid_container_type;
28 //    ScicosID(uid_container_type u) : v(u) {}
29 //
30 //    inline bool operator<(const ScicosID& u) const
31 //    {
32 //        return v < u.v;
33 //    }
34 //    inline bool operator==(const ScicosID& u) const
35 //    {
36 //        return v == u.v;
37 //    }
38 //    inline void operator++(int added)
39 //    {
40 //        v = v + added;
41 //    }
42 //    friend std::ostream& operator<< (std::ostream &out, const ScicosID& u);
43 //private:
44 //    uid_container_type v;
45 //};
46
47 /**
48  * Return status of get and set
49  */
50 enum update_status_t
51 {
52     SUCCESS,        //!< Property updated with new values
53     NO_CHANGES,     //!< Property unchanged
54     FAIL            //!< Update failed
55 };
56
57 /**
58  * Kind of model object.
59  *
60  * All model::BaseObject sub-classes should be listed there. This enum is used to emulate RTTI per Model object.
61  */
62 enum kind_t
63 {
64     ANNOTATION,     //!< model::Annotation object
65     BLOCK,          //!< model::Block object
66     DIAGRAM,        //!< model::Diagram object
67     LINK,           //!< model::Link object
68     PORT            //!< model::Port object
69 };
70
71 /**
72  * Set / Get identifier
73  *
74  * For each fields of any model::BaseObject, a corresponding identifier exists and is used on the Controller to store and view-dispatch any modification. This field value will be then used by each view to filter out / in important event per-view.
75  */
76 enum object_properties_t
77 {
78     PARENT_DIAGRAM,     //!< model::Annotation::parentDiagram or model::Block::parentDiagram or model::Link::parentDiagram value
79     GEOMETRY,           //!< model::Annotation::geometry or model::Block::geometry value
80     DESCRIPTION,        //!< model::Annotation::description
81     RELATED_TO,         //!< model::Annotation::relatedTo
82     INTERFACE_FUNCTION, //!< model::Block::interfaceFunction value
83     SIM_FUNCTION_NAME,  //!< model::Descriptor::functionName value (stored into model::Block::sim)
84     SIM_FUNCTION_API,   //!< model::Descriptor::functionApi value (stored into model::Block::sim)
85     SIM_SCHEDULE,       //!< model::Descriptor::schedulingProperties value (stored into model::Block::sim)
86     ANGLE,              //!< model::Block::flip and theta values
87     EXPRS,              //!< model::Block::exprs value
88     INPUTS,             //!< model::Block::in value
89     OUTPUTS,            //!< model::Block::out value
90     EVENT_INPUTS,       //!< model::Block::ein value
91     EVENT_OUTPUTS,      //!< model::Block::eout value
92     PARENT_BLOCK,       //!< model::Block::parentBlock value
93     CHILDREN,           //!< model::Block::children for superblocks or model::Diagram::children value
94     PORT_REFERENCE,     //!< model::Block::portReference value
95     STYLE,              //!< model::Block & Port::style value
96     LABEL,              //!< model::Block & Port::label value
97     DESTINATION_PORT,   //!< model::Link::destinationPort value
98     SOURCE_PORT,        //!< model::Link::sourcePort value
99     CONTROL_POINTS,     //!< model::Link::controlPoints value
100     DATATYPE,           //!< model::Port::dataType value
101     SOURCE_BLOCK,       //!< model::Port::sourceBlock value
102     PORT_KIND,          //!< model::Port::kind value
103     IMPLICIT,           //!< model::Port::implicit value
104     PORT_NUMBER,        //!< model::Port::portNumber value
105     CONNECTED_SIGNALS,  //!< model::Port::connectedSignals value
106 };
107
108 #endif /* UTILITIES_HXX_ */