Xcos: put ANNOTATION at the end on sortAndFill
[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 /**
17  * A unique ID is used to represent a reference to any object in the model.
18  *
19  * The 'ScicosID()' zero initialization value is used indicate that BaseObject is not handled by the controller.
20  */
21 typedef long long ScicosID;
22
23 /**
24  * Return status of get and set
25  */
26 enum update_status_t
27 {
28     SUCCESS,        //!< Property updated with new values
29     NO_CHANGES,     //!< Property unchanged
30     FAIL            //!< Update failed
31 };
32
33 /**
34  * Kind of model object.
35  *
36  * All model::BaseObject sub-classes should be listed there. This enum is used to emulate RTTI per Model object.
37  */
38 enum kind_t
39 {
40     BLOCK,          //!< model::Block object
41     DIAGRAM,        //!< model::Diagram object
42     LINK,           //!< model::Link object
43     ANNOTATION,     //!< model::Annotation object
44     PORT            //!< model::Port object
45 };
46
47 /**
48  * Set / Get identifier
49  *
50  * 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.
51  */
52 enum object_properties_t
53 {
54     PARENT_DIAGRAM,     //!< model::*::parentDiagram value (used to locate the diagram layer)
55     PARENT_BLOCK,       //!< model::*::parentBlock value (used to locate the upper layer in case of SuperBlocks hierarchy)
56     GEOMETRY,           //!< model::Annotation::geometry or model::Block::geometry value
57     DESCRIPTION,        //!< model::Annotation::description text
58     FONT,               //!< model::Annotation::description font
59     FONT_SIZE,          //!< model::Annotation::description font size
60     RELATED_TO,         //!< model::Annotation::relatedTo
61     INTERFACE_FUNCTION, //!< model::Block::interfaceFunction value
62     SIM_FUNCTION_NAME,  //!< model::Descriptor::functionName value (stored into model::Block::sim)
63     SIM_FUNCTION_API,   //!< model::Descriptor::functionApi value (stored into model::Block::sim)
64     SIM_SCHEDULE,       //!< model::Descriptor::schedulingProperties value (stored into model::Block::sim)
65     SIM_BLOCKTYPE,      //!< model::Descriptor::blocktype value (stored into model::Block::sim)
66     SIM_DEP_UT,         //!< model::Descriptor::dep_ut value (stored into model::Block::sim)
67     ANGLE,              //!< model::Block::flip and theta values
68     EXPRS,              //!< model::Block::exprs value
69     INPUTS,             //!< model::Block::in value
70     OUTPUTS,            //!< model::Block::out value
71     EVENT_INPUTS,       //!< model::Block::ein value
72     EVENT_OUTPUTS,      //!< model::Block::eout value
73     STATE,              //!< model::Block::state value
74     DSTATE,             //!< model::Block::dstate value
75     ODSTATE,            //!< model::Block::odstate value
76     NZCROSS,            //!< model::Block::nzcross value
77     NMODE,              //!< model::Block::nmode value
78     RPAR,               //!< model::Block::rpar value
79     IPAR,               //!< model::Block::ipar value
80     OPAR,               //!< model::Block::opar value
81     EQUATIONS,          //!< model::Block::equations value
82     UID,                //!< model::Block::uid 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 & Block & Diagram::color value
92     KIND,               //!< model::Link::kind value
93     FROM,               //!< model::Link::from value
94     TO,                 //!< model::Link::to value
95     DATATYPE,           //!< model::Port::dataType value
96     DATATYPE_ROWS,      //!< model::Port::dataType adapter helper
97     DATATYPE_COLS,      //!< model::Port::dataType adapter helper
98     DATATYPE_TYPE,      //!< model::Port::dataType adapter helper
99     FIRING,             //!< model::Port::firing value
100     SOURCE_BLOCK,       //!< model::Port::sourceBlock value
101     PORT_KIND,          //!< model::Port::kind value
102     IMPLICIT,           //!< model::Port::implicit value
103     PORT_NUMBER,        //!< model::Port::portNumber value
104     CONNECTED_SIGNALS,  //!< model::Port::connectedSignals value
105     TITLE,              //!< model::Diagram::title file name value
106     PATH,               //!< model::Diagram::title file path value
107     PROPERTIES,         //!< model::Diagram::tol & tf values
108     DEBUG_LEVEL,        //!< model::Diagram::debug_level value
109     DIAGRAM_CONTEXT,    //!< model::Diagram::context value
110     VERSION_NUMBER,     //!< model::Diagram::version value
111     MAX_OBJECT_PROPERTIES //!< last valid value of the object_properties_t enum
112 };
113
114 /**
115  * PORT_KIND valid values
116  */
117 enum portKind
118 {
119     PORT_UNDEF,
120     PORT_IN,
121     PORT_OUT,
122     PORT_EIN,
123     PORT_EOUT
124 };
125
126
127 #endif /* UTILITIES_HXX_ */