Skip to content

Commit

Permalink
today()
Browse files Browse the repository at this point in the history
  • Loading branch information
christoph2 committed Jun 28, 2024
1 parent 10ac90d commit f1ba3c1
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
16 changes: 8 additions & 8 deletions pya2l/aml/aml_visitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ struct TypeRegistry {
static TypeRegistry type_registry;

template<typename Ty>
Type *make_type(const Ty &value) {
auto result = new Type(value);
Type *make_type(const std::string& tag, const Ty &value) {
auto result = new Type(tag, value);
type_registry.add(result);
return result;
}
Expand Down Expand Up @@ -137,26 +137,26 @@ std::any AmlVisitor::visitType_name(amlParser::Type_nameContext *ctx) {
}
if (ctx_pr) {
pdt_name = std::any_cast<std::string>(visit(ctx_pr));
return make_type(pdt_name);
return make_type(tag_text, pdt_name);
}
if (ctx_st) {
const auto sst = std::any_cast<StructOrReferrer>(visit(ctx_st));
return make_type(sst);
return make_type(tag_text, sst);
}
if (ctx_ts) {
const auto sst = std::any_cast<TaggedStructOrReferrer>(visit(ctx_ts));
return make_type(sst);
return make_type(tag_text, sst);
}
if (ctx_tu) {
const auto sst = std::any_cast<TaggedUnionOrReferrer>(visit(ctx_tu));
return make_type(sst);
return make_type(tag_text, sst);
}
if (ctx_en) {
const auto enumeration = std::any_cast<EnumerationOrReferrer>(visit(ctx_en));
return make_type(enumeration);
return make_type(tag_text, enumeration);
}

return visitChildren(ctx);
return {};
}

std::any AmlVisitor::visitPredefined_type_name(amlParser::Predefined_type_nameContext *ctx) {
Expand Down
15 changes: 10 additions & 5 deletions pya2l/aml/klasses.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -439,19 +439,23 @@ using TypeVariant = std::variant<
class Type {
public:

Type(const std::string& predef_type_name) : m_type(predef_type_name), m_disc(TypeType::PredefinedType) {
Type(const std::string& tag, const std::string& predef_type_name) : m_tag(tag), m_type(predef_type_name), m_disc(TypeType::PredefinedType) {
}

Type(const EnumerationOrReferrer& en) : m_type(en), m_disc(TypeType::Enumeration) {
Type(const std::string& tag, const EnumerationOrReferrer& en) : m_tag(tag), m_type(en), m_disc(TypeType::Enumeration) {
}

Type(const StructOrReferrer& st) : m_type(st), m_disc(TypeType::StructType) {
Type(const std::string& tag, const StructOrReferrer& st) : m_tag(tag), m_type(st), m_disc(TypeType::StructType) {
}

Type(const TaggedStructOrReferrer& st) : m_type(st), m_disc(TypeType::TaggedStructType) {
Type(const std::string& tag, const TaggedStructOrReferrer& st) : m_tag(tag), m_type(st), m_disc(TypeType::TaggedStructType) {
}

Type(const TaggedUnionOrReferrer& tu) : m_type(tu), m_disc(TypeType::TaggedUnionType) {
Type(const std::string& tag, const TaggedUnionOrReferrer& tu) : m_tag(tag), m_type(tu), m_disc(TypeType::TaggedUnionType) {
}

const std::string& get_tag() const noexcept {
return m_tag;
}

const TypeVariant& get_type() const noexcept {
Expand All @@ -464,6 +468,7 @@ class Type {

private:

std::string m_tag;
TypeVariant m_type;
TypeType m_disc;
};
Expand Down

0 comments on commit f1ba3c1

Please sign in to comment.