blob: 740f95caf49d606fa0f18f350fbd11d23f4b1330 [file] [log] [blame]
Gavin McDonald0b75e1a2010-10-28 02:12:01 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20#ifndef T_ENUM_H
21#define T_ENUM_H
22
23#include "t_enum_value.h"
24#include <vector>
25
26/**
27 * An enumerated type. A list of constant objects with a name for the type.
28 *
29 */
30class t_enum : public t_type {
31 public:
32 t_enum(t_program* program) :
33 t_type(program) {}
34
35 void set_name(const std::string& name) {
36 name_ = name;
37 }
38
39 void append(t_enum_value* constant) {
40 constants_.push_back(constant);
41 }
42
43 const std::vector<t_enum_value*>& get_constants() {
44 return constants_;
45 }
46
47 bool is_enum() const {
48 return true;
49 }
50
51 virtual std::string get_fingerprint_material() const {
52 return "enum";
53 }
54
55 private:
56 std::vector<t_enum_value*> constants_;
57};
58
59#endif