26 explicit Group(
size_t numChildren = 0);
30 template<
typename Iterator>
31 Group(Iterator begin, Iterator end)
33 for (Iterator itr = begin; itr != end; ++itr) addChild(*itr);
41 children.push_back(child);
48 template<
class N,
class V>
49 static void t_traverse(N& node, V& visitor)
51 for (
auto& child : node.children) child->accept(visitor);
54 void traverse(
Visitor& visitor)
override { t_traverse(*
this, visitor); }
55 void traverse(ConstVisitor& visitor)
const override { t_traverse(*
this, visitor); }
56 void traverse(RecordTraversal& visitor)
const override { t_traverse(*
this, visitor); }
58 void read(Input& input)
override;
59 void write(Output& output)
const override;
int compare(const Object &rhs) const override
compare two objects, return -1 if this object is less than rhs, return 0 if it's equal,...