]> Shamusworld >> Repos - architektonas/blob - src/base/rs_variable.h
657f240bf5b16049734508e0e43d7e2d8dfb29bf
[architektonas] / src / base / rs_variable.h
1 /****************************************************************************
2 ** $Id: rs_variable.h 1648 2003-06-11 06:56:01Z andrew $
3 **
4 ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
5 **
6 ** This file is part of the qcadlib Library project.
7 **
8 ** This file may be distributed and/or modified under the terms of the
9 ** GNU General Public License version 2 as published by the Free Software
10 ** Foundation and appearing in the file LICENSE.GPL included in the
11 ** packaging of this file.
12 **
13 ** Licensees holding valid qcadlib Professional Edition licenses may use
14 ** this file in accordance with the qcadlib Commercial License
15 ** Agreement provided with the Software.
16 **
17 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
18 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 **
20 ** See http://www.ribbonsoft.com for further details.
21 **
22 ** Contact info@ribbonsoft.com if any conditions of this licensing are
23 ** not clear to you.
24 **
25 **********************************************************************/
26
27 #ifndef RS_VARIABLE_H
28 #define RS_VARIABLE_H
29
30 #include <QtCore>
31 #include "rs.h"
32 #include "vector.h"
33 #include "rs_debug.h"
34
35 /**
36  * A variable of type int, double, string or vector.
37  * The variable also contains its type and an int code
38  * which can identify its contents in any way.
39  *
40  * @author Andrew Mustun
41  */
42 class RS_Variable
43 {
44         public:
45                 typedef struct {
46                         QString s;
47                         int i;
48                         double d;
49                         Vector v;
50                 } RS_VariableContents;
51
52                 RS_Variable();
53                 RS_Variable(const Vector & v, int c);
54                 RS_Variable(const QString & v, int c);
55                 RS_Variable(int v, int c);
56                 RS_Variable(double v, int c);
57                 virtual ~RS_Variable();
58
59                 void setString(const QString & str);
60                 void setInt(int i);
61                 void setDouble(double d);
62                 void setVector(const Vector & v);
63                 QString getString();
64                 int getInt();
65                 double getDouble();
66                 Vector getVector();
67                 RS2::VariableType getType();
68                 int getCode();
69
70                 //friend std::ostream& operator << (std::ostream& os, RS_Variable& v);
71
72         private:
73                 RS_VariableContents contents;
74                 RS2::VariableType type;
75                 int code;
76 };
77
78 #endif