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
24 public:
30 : name_{std::nullopt}, members_{std::move(members)}, position_{position}
31 {
32 }
33
39 EnumDeclaration(std::string name, std::vector<EnumMember> members, SourcePosition position)
40 : name_{std::move(name)}, members_{std::move(members)}, position_{position}
41 {
42 }
43
47 [[nodiscard]] bool has_name() const
48 {
49 return name_.has_value();
50 }
51
55 [[nodiscard]] const std::optional<std::string> &name() const
56 {
57 return name_;
58 }
59
63 [[nodiscard]] const std::vector<EnumMember> &members() const
64 {
65 return members_;
66 }
67
71 [[nodiscard]] const SourcePosition &position() const
72 {
73 return position_;
74 }
75
76 private:
77 std::optional<std::string> name_;
78 std::vector<EnumMember> members_;
79 SourcePosition position_;
80};
81
82} // 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.