+ static XMLNode* get_node (const XMLNode *, const std::string &);
+ static XMLNode* get_or_add_node (XMLNode *, const std::string &);
+
+ private:
+ // no copy construction. object_map saves pointers to _state XMLNodes
+ // use set_state(get_state())
+ GUIObjectState (const GUIObjectState& other);
+
+ XMLNode _state;
+ // ideally we'd use a O(1) hash table here,
+ // but O(log(N)) is fine already.
+ std::map <std::string, XMLNode*> object_map;
+};