Skip to content

Commit

Permalink
Separate functionality of parsed grammars into free functions instead…
Browse files Browse the repository at this point in the history
… of templated class
  • Loading branch information
MarkusFrankATcernch committed Apr 9, 2020
1 parent ce85c19 commit a87cf29
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
1 change: 1 addition & 0 deletions DDCore/include/DD4hep/AlignmentData.h
Original file line number Diff line number Diff line change
Expand Up @@ -196,5 +196,6 @@ namespace dd4hep {
{ return detectorToLocal(Position(det[0],det[1],det[2])); }
};
} /* End namespace dd4hep */
std::ostream& operator << (std::ostream& s, const dd4hep::Delta& data);
std::ostream& operator << (std::ostream& s, const dd4hep::AlignmentData& data);
#endif /* DD4HEP_ALIGMENTS_ALIGNMENTDATA_H */
3 changes: 3 additions & 0 deletions DDCore/include/DD4hep/Grammar.h
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,8 @@ namespace dd4hep {
class GrammarRegistry {
/// Default constructor
GrammarRegistry() = default;
/// PropertyGrammar overload: Serialize a property to a string
template <typename T> static std::string str(const BasicGrammar&, const void*) { return ""; }
public:
/// Registry instance singleton
static const GrammarRegistry& instance();
Expand All @@ -230,6 +232,7 @@ namespace dd4hep {
BasicGrammar::specialization_t spec;
spec.bind = detail::constructObject<T>;
spec.copy = detail::copyObject<T>;
spec.str = GrammarRegistry::str<T>;
return pre_note_specs<T>(spec);
}
template <typename T> static const GrammarRegistry& pre_note() {
Expand Down
8 changes: 5 additions & 3 deletions DDCore/include/DD4hep/detail/Grammar_parsed.h
Original file line number Diff line number Diff line change
Expand Up @@ -237,9 +237,11 @@ namespace dd4hep {
static Grammar<TYPE> gr;
if ( 0 == gr.specialization.bind ) gr.specialization.bind = detail::constructObject<TYPE>;
if ( 0 == gr.specialization.copy ) gr.specialization.copy = detail::copyObject<TYPE>;
if ( 0 == gr.specialization.fromString ) gr.specialization.fromString = detail::grammar_fromString<TYPE>;
if ( 0 == gr.specialization.eval ) gr.specialization.eval = detail::grammar_eval<TYPE>;
if ( 0 == gr.specialization.str ) gr.specialization.str = detail::grammar_str<TYPE>;
if ( 0 == gr.specialization.fromString ) {
gr.specialization.fromString = detail::grammar_fromString<TYPE>;
gr.specialization.eval = detail::grammar_eval<TYPE>;
gr.specialization.str = detail::grammar_str<TYPE>;
}
s_gr = &gr;
return *s_gr;
}
Expand Down

0 comments on commit a87cf29

Please sign in to comment.