{\r
MAKE_NONCOPYABLE(XMLObjectBuilder);\r
public:\r
- virtual ~XMLObjectBuilder() {}\r
+ virtual ~XMLObjectBuilder();\r
\r
/**\r
* Creates an empty XMLObject with a particular element name.\r
* @param q QName of element for object\r
* @return the empty XMLObject\r
*/\r
- XMLObject* buildFromQName(const QName& q) const {\r
- return buildObject(q.getNamespaceURI(),q.getLocalPart(),q.getPrefix());\r
- }\r
+ XMLObject* buildFromQName(const QName& q) const;\r
\r
/**\r
* Creates an unmarshalled XMLObject from a DOM Element.\r
* @param bindDocument true iff the XMLObject should take ownership of the DOM Document\r
* @return the unmarshalled XMLObject\r
*/\r
- XMLObject* buildFromElement(xercesc::DOMElement* element, bool bindDocument=false) const {\r
- std::auto_ptr<XMLObject> ret(\r
- buildObject(element->getNamespaceURI(),element->getLocalName(),element->getPrefix(),XMLHelper::getXSIType(element))\r
- );\r
- ret->unmarshall(element,bindDocument);\r
- return ret.release();\r
- }\r
+ XMLObject* buildFromElement(xercesc::DOMElement* element, bool bindDocument=false) const;\r
\r
/**\r
* Creates an unmarshalled XMLObject from the root of a DOM Document.\r
* @param bindDocument true iff the XMLObject should take ownership of the DOM Document\r
* @return the unmarshalled XMLObject\r
*/\r
- XMLObject* buildFromDocument(xercesc::DOMDocument* doc, bool bindDocument=true) const {\r
- return buildFromElement(doc->getDocumentElement(),bindDocument);\r
- }\r
+ XMLObject* buildFromDocument(xercesc::DOMDocument* doc, bool bindDocument=true) const;\r
\r
/**\r
* Creates an unmarshalled XMLObject using the default build method, if a builder can be found.\r
* @param bindDocument true iff the new XMLObject should take ownership of the DOM Document\r
* @return the unmarshalled object or NULL if no builder is available \r
*/\r
- static XMLObject* buildOneFromElement(xercesc::DOMElement* element, bool bindDocument=false) {\r
- const XMLObjectBuilder* b=getBuilder(element);\r
- return b ? b->buildFromElement(element,bindDocument) : NULL;\r
- }\r
+ static XMLObject* buildOneFromElement(xercesc::DOMElement* element, bool bindDocument=false);\r
\r
/**\r
* Retrieves an XMLObjectBuilder using the key it was registered with.\r
* @param key the key used to register the builder\r
* @return the builder or NULL\r
*/\r
- static const XMLObjectBuilder* getBuilder(const QName& key) {\r
- std::map<QName,XMLObjectBuilder*>::const_iterator i=m_map.find(key);\r
- return (i==m_map.end()) ? NULL : i->second;\r
- }\r
+ static const XMLObjectBuilder* getBuilder(const QName& key);\r
\r
/**\r
* Retrieves an XMLObjectBuilder for a given DOM element.\r
* \r
* @return the default builder or NULL\r
*/\r
- static const XMLObjectBuilder* getDefaultBuilder() {\r
- return m_default;\r
- }\r
+ static const XMLObjectBuilder* getDefaultBuilder();\r
\r
/**\r
* Gets an immutable list of all the builders currently registered.\r
* \r
* @return list of all the builders currently registered\r
*/\r
- static const std::map<QName,XMLObjectBuilder*>& getBuilders() {\r
- return m_map;\r
- }\r
+ static const std::map<QName,XMLObjectBuilder*>& getBuilders();\r
\r
/**\r
* Registers a new builder for the given key.\r
* @param builderKey the key used to retrieve this builder later\r
* @param builder the builder\r
*/\r
- static void registerBuilder(const QName& builderKey, XMLObjectBuilder* builder) {\r
- deregisterBuilder(builderKey);\r
- m_map[builderKey]=builder;\r
- }\r
+ static void registerBuilder(const QName& builderKey, XMLObjectBuilder* builder);\r
\r
/**\r
* Registers a default builder\r
* \r
* @param builder the default builder\r
*/\r
- static void registerDefaultBuilder(XMLObjectBuilder* builder) {\r
- deregisterDefaultBuilder();\r
- m_default=builder;\r
- }\r
+ static void registerDefaultBuilder(XMLObjectBuilder* builder);\r
\r
/**\r
* Deregisters a builder.\r
* \r
* @param builderKey the key for the builder to be deregistered\r
*/\r
- static void deregisterBuilder(const QName& builderKey) {\r
- delete getBuilder(builderKey);\r
- m_map.erase(builderKey);\r
- }\r
+ static void deregisterBuilder(const QName& builderKey);\r
\r
/**\r
* Deregisters default builder.\r
*/\r
- static void deregisterDefaultBuilder() {\r
- delete m_default;\r
- m_default=NULL;\r
- }\r
+ static void deregisterDefaultBuilder();\r
\r
/**\r
* Unregisters and destroys all registered builders. \r
static void destroyBuilders();\r
\r
protected:\r
- XMLObjectBuilder() {}\r
+ XMLObjectBuilder();\r
\r
private:\r
static std::map<QName,XMLObjectBuilder*> m_map;\r