Xcos MVC: implement xx / yy / id / thick / ct
[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.1-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
25 /**
26  * Return status of get and set
27  */
28 enum update_status_t
29 {
30     SUCCESS,        //!< Property updated with new values
31     NO_CHANGES,     //!< Property unchanged
32     FAIL            //!< Update failed
33 };
34
35 /**
36  * Kind of model object.
37  *
38  * All model::BaseObject sub-classes should be listed there. This enum is used to emulate RTTI per Model object.
39  */
40 enum kind_t
41 {
42     ANNOTATION,     //!< model::Annotation object
43     BLOCK,          //!< model::Block object
44     DIAGRAM,        //!< model::Diagram object
45     LINK,           //!< model::Link object
46     PORT            //!< model::Port object
47 };
48
49 /**
50  * Set / Get identifier
51  *
52  * 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.
53  */
54 enum object_properties_t
55 {
56     PARENT_DIAGRAM,     //!< model::Annotation::parentDiagram or model::Block::parentDiagram or model::Link::parentDiagram value
57     GEOMETRY,           //!< model::Annotation::geometry or model::Block::geometry value
58     DESCRIPTION,        //!< model::Annotation::description
59     RELATED_TO,         //!< model::Annotation::relatedTo
60     INTERFACE_FUNCTION, //!< model::Block::interfaceFunction value
61     SIM_FUNCTION_NAME,  //!< model::Descriptor::functionName value (stored into model::Block::sim)
62     SIM_FUNCTION_API,   //!< model::Descriptor::functionApi value (stored into model::Block::sim)
63     SIM_SCHEDULE,       //!< model::Descriptor::schedulingProperties value (stored into model::Block::sim)
64     SIM_BLOCKTYPE,      //!< model::Descriptor::blocktype value (stored into model::Block::sim)
65     SIM_DEP_UT,         //!< model::Descriptor::dep_ut value (stored into model::Block::sim)
66     ANGLE,              //!< model::Block::flip and theta values
67     EXPRS,              //!< model::Block::exprs value
68     INPUTS,             //!< model::Block::in value
69     OUTPUTS,            //!< model::Block::out value
70     EVENT_INPUTS,       //!< model::Block::ein value
71     EVENT_OUTPUTS,      //!< model::Block::eout value
72     STATE,              //!< model::Block::state value
73     DSTATE,             //!< model::Block::dstate value
74     ODSTATE,            //!< model::Block::odstate value
75     NZCROSS,            //!< model::Block::nzcross value
76     NMODE,              //!< model::Block::nmode value
77     RPAR,               //!< model::Block::rpar value
78     IPAR,               //!< model::Block::ipar value
79     OPAR,               //!< model::Block::opar value
80     EQUATIONS,          //!< model::Block::equations value
81     UID,                //!< model::Block::uid value
82     PARENT_BLOCK,       //!< model::Block::parentBlock value
83     CHILDREN,           //!< model::Block::children for superblocks or model::Diagram::children value
84     PORT_REFERENCE,     //!< model::Block::portReference value
85     STYLE,              //!< model::Block & Port::style value
86     LABEL,              //!< model::Block & Port & Link::label or id value
87     DESTINATION_PORT,   //!< model::Link::destinationPort value
88     SOURCE_PORT,        //!< model::Link::sourcePort value
89     CONTROL_POINTS,     //!< model::Link::controlPoints value
90     THICK,              //!< model::Link::thick value
91     COLOR,              //!< model::Link::color value
92     KIND,               //!< model::Link::kind value
93     DATATYPE,           //!< model::Port::dataType value
94     DATATYPE_ROWS,      //!< model::Port::dataType adapter helper
95     DATATYPE_COLS,      //!< model::Port::dataType adapter helper
96     DATATYPE_TYPE,      //!< model::Port::dataType adapter helper
97     FIRING,             //!< model::Port::firing value
98     SOURCE_BLOCK,       //!< model::Port::sourceBlock value
99     PORT_KIND,          //!< model::Port::kind value
100     IMPLICIT,           //!< model::Port::implicit value
101     PORT_NUMBER,        //!< model::Port::portNumber value
102     CONNECTED_SIGNALS,  //!< model::Port::connectedSignals value
103 };
104
105 #endif /* UTILITIES_HXX_ */