summaryrefslogtreecommitdiff
path: root/include/variable.h
blob: 393239fbddf9b5aeadb3ad960c580b036cfe420a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
 *  Variable.h
 *
 *  Base class for variables that are stored in the Zend engine.
 *
 *  @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com>
 *  @copyright 2013 Copernica BV
 */

/**
 *  Set up namespace
 */
namespace PhpCpp {

/**
 *  Class definition
 */
class Variable
{
public:
    /**
     *  Empty constructor (value = NULL)
     */
    Variable();
    
    /**
     *  Constructor based on integer value
     *  @param  value
     */
    Variable(int value);
    
    /**
     *  Constructor based on boolean value
     *  @param  value
     */
    Variable(bool value);
    
    /**
     *  Constructor based on string value
     *  @param  value
     */
    Variable(const std::string &value);
    
    /**
     *  Constructor based on decimal value
     *  @param  value
     */
    Variable(double value);
    
    /**
     *  Copy constructor
     *  @param  value
     */
    Variable(const Variable &that);
    
    /**
     *  Destructor
     */
    virtual ~Variable();

    /**
     *  Assignment operator
     *  @param  value
     *  @return Variable
     */
    virtual Variable &operator=(const Variable &value);

    /**
     *  Is this an integer value?
     *  @return bool
     */
    virtual bool isInt();
    
    /**
     *  Is this a boolean value?
     *  @return bool
     */
    virtual bool isBool();
    
    /**
     *  Is this a string value?
     *  @return bool
     */
    virtual bool isString();
    
    /**
     *  Is this a decimal value?
     *  @return bool
     */
    virtual bool isDecimal();
    
    /**
     *  Is this an object value?
     *  @return bool
     */
    virtual bool isObject();
    
    /**
     *  Is this an array value?
     *  @return bool
     */
    virtual bool isArray();
    
    /**
     *  Retrieve the value as integer
     *  @return int
     */
    virtual int intValue();
    
    /**
     *  Retrieve the value as boolean
     *  @return bool
     */
    virtual bool boolValue();
    
    /**
     *  Retrieve the value as string
     *  @return string
     */
    std::string stringValue();
    
    /**
     *  Retrieve the value as decimal
     *  @return double
     */
    virtual double decimalValue();
};

/**
 *  End of namespace
 */
}