blob: 5fe6f89e7dac9f766562f47857e73b3a82a36bc5 [file] [log] [blame]
Mark Slee31985722006-05-24 21:45:31 +00001#ifndef T_ENUM_H
2#define T_ENUM_H
3
Mark Slee30152872006-11-28 01:24:07 +00004#include "t_enum_value.h"
Mark Slee31985722006-05-24 21:45:31 +00005#include <vector>
6
Mark Sleef5377b32006-10-10 01:42:59 +00007/**
Mark Slee30152872006-11-28 01:24:07 +00008 * An enumerated type. A list of constant objects with a name for the type.
Mark Sleef5377b32006-10-10 01:42:59 +00009 *
10 * @author Mark Slee <mcslee@facebook.com>
11 */
Mark Slee31985722006-05-24 21:45:31 +000012class t_enum : public t_type {
13 public:
Mark Sleef0712dc2006-10-25 19:03:57 +000014 t_enum(t_program* program) :
15 t_type(program) {}
Mark Slee31985722006-05-24 21:45:31 +000016
Mark Sleef5377b32006-10-10 01:42:59 +000017 void set_name(std::string name) {
18 name_ = name;
19 }
20
Mark Slee30152872006-11-28 01:24:07 +000021 void append(t_enum_value* constant) {
Mark Sleef5377b32006-10-10 01:42:59 +000022 constants_.push_back(constant);
23 }
Mark Slee31985722006-05-24 21:45:31 +000024
Mark Slee30152872006-11-28 01:24:07 +000025 const std::vector<t_enum_value*>& get_constants() {
Mark Sleef5377b32006-10-10 01:42:59 +000026 return constants_;
27 }
28
29 bool is_enum() const {
30 return true;
31 }
Mark Slee31985722006-05-24 21:45:31 +000032
33 private:
Mark Slee30152872006-11-28 01:24:07 +000034 std::vector<t_enum_value*> constants_;
Mark Slee31985722006-05-24 21:45:31 +000035};
36
37#endif