From 9f9f038055681a732dbacf39e9a8b52ef6900d01 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Thu, 25 Jun 2020 08:51:41 -0700 Subject: [PATCH] allow Null Member Makes Member easier to work with. --- src/pvxs/data.h | 4 ++++ src/type.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/pvxs/data.h b/src/pvxs/data.h index f4bdeaf..114552f 100644 --- a/src/pvxs/data.h +++ b/src/pvxs/data.h @@ -243,6 +243,10 @@ private: public: struct Helper; + //! Empty/invalid Member + inline + Member() :code(TypeCode::Null) {} + //! Member for non-Compund //! @pre code.kind()!=Kind::Compound inline diff --git a/src/type.cpp b/src/type.cpp index 2e1aac6..540c542 100644 --- a/src/type.cpp +++ b/src/type.cpp @@ -126,6 +126,8 @@ void Member::Helper::node_validate(const Member* parent, const std::string& id, { if(!id.empty() && code.scalarOf()!=TypeCode::Struct && code.scalarOf()!=TypeCode::Union) throw std::logic_error("Only Struct or Union may have an ID"); + else if(!code.valid()) + throw std::logic_error("Invalid TypeCode"); if(parent) { auto c = parent->code.scalarOf(); if(c!=TypeCode::Struct && c!=TypeCode::Union)