00001
00002
00003
00004
00005
00006 #include "dom/DOM_Document.hpp"
00007 #include "xml/Persistence.h"
00008
00009 namespace xml {
00010 std::map<PersistentObject::_PersistKey, PersistentObject::_Factory*>*
00011 PersistentObject::s_persist_table = 0;
00012
00014 PersistentObject* PersistentObject::_Factory::create(const DOM_Element&) {
00015 return 0;
00016 }
00017
00018
00019
00020
00021 DOM_Element PersistentObject::persist(DOM_Element& parent) const {
00022 DOM_Document doc = parent.getOwnerDocument();
00023
00024
00025
00026
00027
00028
00029 DOM_Element newElem =
00030 doc.createElement(static_cast<DOMString> (persistKey().c_str()));
00031 parent.appendChild(newElem);
00032
00033 return newElem;
00034 }
00035
00036
00037
00038
00039
00040 bool PersistentObject::addPersistence(const _PersistKey& i, _Factory* f) {
00041
00042 static std::map<PersistentObject::_PersistKey, PersistentObject::_Factory*>
00043 splist;
00044
00045 if (!s_persist_table)
00046 s_persist_table = &splist;
00047
00048 else if ((s_persist_table->find(i) != s_persist_table->end()))
00049 return false;
00050
00051 s_persist_table->insert( std::make_pair<_PersistKey,_Factory*>(i,f) );
00052
00053 return true;
00054 }
00055 }
00056
00057
00058
00059
00060