blob: f502f75040f960a92e75ce3d117e7b4aae5d8021 [file] [log] [blame]
Mark Slee31985722006-05-24 21:45:31 +00001#ifndef T_CONSTANT_H
2#define T_CONSTANT_H
3
4#include <string>
5
Mark Sleef5377b32006-10-10 01:42:59 +00006/**
7 * A constant. These are used inside of enum definitions. Constants are just
8 * symbol identifiers that may or may not have an explicit value associated
9 * with them.
10 *
11 * @author Mark Slee <mcslee@facebook.com>
12 */
Mark Slee31985722006-05-24 21:45:31 +000013class t_constant {
14 public:
15 t_constant(std::string name) :
Mark Sleef5377b32006-10-10 01:42:59 +000016 name_(name),
17 has_value_(false),
18 value_(0) {}
Mark Slee31985722006-05-24 21:45:31 +000019
20 t_constant(std::string name, int value) :
Mark Sleef5377b32006-10-10 01:42:59 +000021 name_(name),
22 has_value_(true),
23 value_(value) {}
Mark Slee31985722006-05-24 21:45:31 +000024
25 ~t_constant() {}
26
Mark Sleef5377b32006-10-10 01:42:59 +000027 const std::string& get_name() {
28 return name_;
29 }
30
31 bool has_value() {
32 return has_value_;
33 }
34
35 int get_value() {
36 return value_;
37 }
Mark Slee31985722006-05-24 21:45:31 +000038
39 private:
40 std::string name_;
41 bool has_value_;
42 int value_;
43};
44
45#endif