Porytiles
Loading...
Searching...
No Matches
enum_declaration.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <optional>
4#include <string>
5#include <vector>
6
9
10namespace porytiles {
11
26 public:
34 : name_{std::nullopt}, members_{std::move(members)}, position_{position}
35 {
36 }
37
45 EnumDeclaration(std::string name, std::vector<EnumMember> members, SourcePosition position)
46 : name_{std::move(name)}, members_{std::move(members)}, position_{position}
47 {
48 }
49
55 [[nodiscard]] bool has_name() const
56 {
57 return name_.has_value();
58 }
59
65 [[nodiscard]] const std::optional<std::string> &name() const
66 {
67 return name_;
68 }
69
75 [[nodiscard]] const std::vector<EnumMember> &members() const
76 {
77 return members_;
78 }
79
85 [[nodiscard]] const SourcePosition &position() const
86 {
87 return position_;
88 }
89
90 private:
91 std::optional<std::string> name_;
92 std::vector<EnumMember> members_;
93 SourcePosition position_;
94};
95
96} // namespace porytiles
Represents a parsed C enum declaration.
const std::vector< EnumMember > & members() const
Returns the enum members.
const SourcePosition & position() const
Returns the source position of the enum keyword.
const std::optional< std::string > & name() const
Returns the enum name if present.
EnumDeclaration(std::vector< EnumMember > members, SourcePosition position)
Constructs an anonymous enum declaration.
EnumDeclaration(std::string name, std::vector< EnumMember > members, SourcePosition position)
Constructs a named enum declaration.
bool has_name() const
Checks if this enum has a name.
Represents a position within source content.