Xcos MVC: use shared_ptr on the Model
[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 text
59     FONT,               //!< model::Annotation::description font
60     FONT_SIZE,          //!< model::Annotation::description font size
61     RELATED_TO,         //!< model::Annotation::relatedTo
62     INTERFACE_FUNCTION, //!< model::Block::interfaceFunction value
63     SIM_FUNCTION_NAME,  //!< model::Descriptor::functionName value (stored into model::Block::sim)
64     SIM_FUNCTION_API,   //!< model::Descriptor::functionApi value (stored into model::Block::sim)
65     SIM_SCHEDULE,       //!< model::Descriptor::schedulingProperties value (stored into model::Block::sim)
66     SIM_BLOCKTYPE,      //!< model::Descriptor::blocktype value (stored into model::Block::sim)
67     SIM_DEP_UT,         //!< model::Descriptor::dep_ut value (stored into model::Block::sim)
68     ANGLE,              //!< model::Block::flip and theta values
69     EXPRS,              //!< model::Block::exprs value
70     INPUTS,             //!< model::Block::in value
71     OUTPUTS,            //!< model::Block::out value
72     EVENT_INPUTS,       //!< model::Block::ein value
73     EVENT_OUTPUTS,      //!< model::Block::eout value
74     STATE,              //!< model::Block::state value
75     DSTATE,             //!< model::Block::dstate value
76     ODSTATE,            //!< model::Block::odstate value
77     NZCROSS,            //!< model::Block::nzcross value
78     NMODE,              //!< model::Block::nmode value
79     RPAR,               //!< model::Block::rpar value
80     IPAR,               //!< model::Block::ipar value
81     OPAR,               //!< model::Block::opar value
82     EQUATIONS,          //!< model::Block::equations value
83     UID,                //!< model::Block::uid value
84     PARENT_BLOCK,       //!< model::Block::parentBlock value
85     CHILDREN,           //!< model::Block::children for superblocks or model::Diagram::children value
86     PORT_REFERENCE,     //!< model::Block::portReference value
87     STYLE,              //!< model::Block & Port::style value
88     LABEL,              //!< model::Block & Port & Link::label or id value
89     DESTINATION_PORT,   //!< model::Link::destinationPort value
90     SOURCE_PORT,        //!< model::Link::sourcePort value
91     CONTROL_POINTS,     //!< model::Link::controlPoints value
92     THICK,              //!< model::Link::thick value
93     COLOR,              //!< model::Link::color value
94     KIND,               //!< model::Link::kind value
95     FROM,               //!< model::Link::from value
96     TO,                 //!< model::Link::to value
97     DATATYPE,           //!< model::Port::dataType value
98     DATATYPE_ROWS,      //!< model::Port::dataType adapter helper
99     DATATYPE_COLS,      //!< model::Port::dataType adapter helper
100     DATATYPE_TYPE,      //!< model::Port::dataType adapter helper
101     FIRING,             //!< model::Port::firing value
102     SOURCE_BLOCK,       //!< model::Port::sourceBlock value
103     PORT_KIND,          //!< model::Port::kind value
104     IMPLICIT,           //!< model::Port::implicit value
105     PORT_NUMBER,        //!< model::Port::portNumber value
106     CONNECTED_SIGNALS,  //!< model::Port::connectedSignals value
107     TITLE,              //!< model::Diagram::title file name value
108     PATH,               //!< model::Diagram::title file path value
109     PROPERTIES,         //!< model::Diagram::tol & tf values
110     DIAGRAM_CONTEXT,    //!< model::Diagram::context value
111     VERSION_NUMBER,     //!< model::Diagram::version value
112     MAX_OBJECT_PROPERTIES = VERSION_NUMBER //!< last valid value of the object_properties_t enum
113 };
114
115 #endif /* UTILITIES_HXX_ */