00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_XML_XML_CHOOSER_HXX
00018 # define VCSN_XML_XML_CHOOSER_HXX
00019
00032 namespace vcsn
00033 {
00034 namespace xml
00035 {
00036
00037
00038
00039
00040 template <class S, class T>
00041 void
00042 xml_chooser_base<S, T>::create_type_tag(const Element<S, T>& aut,
00043 xercesc::DOMDocument* doc,
00044 xercesc::DOMElement* root)
00045 {
00046 xercesc::DOMElement* type = tools::create_element(doc, "labelType");
00047 xercesc::DOMElement* monoid =
00048 tools::create_monoid(aut.structure().series().monoid(), doc, type);
00049 tools::create_alphabet(aut.structure().series().monoid().alphabet(),
00050 doc, monoid);
00051 tools::create_semiring(aut, aut.structure().series().semiring(),
00052 doc, type);
00053 root->appendChild(type);
00054 }
00055
00056
00057 template <class S, class T>
00058 void
00059 xml_chooser_base<S, T>::create_label(xercesc::DOMDocument* doc,
00060 htransition_t e,
00061 const Element<S, T>& aut,
00062 xercesc::DOMElement* elt,
00063 bool use_label_node)
00064
00065 {
00066 if (use_label_node)
00067 tools::add_xml_label(doc, elt, aut, aut.series_of(e));
00068 else
00069 tools::add_label(elt, aut, aut.series_of(e));
00070 }
00071
00072
00073 template <class S, class T>
00074 void
00075 xml_chooser_base<S, T>::create_initial_label(xercesc::DOMDocument* doc,
00076 hstate_t s,
00077 const Element<S, T>& aut,
00078 xercesc::DOMElement* elt,
00079 bool use_label_node)
00080 {
00081 if (use_label_node)
00082 tools::add_xml_label(doc, elt, aut, aut.get_initial(s));
00083 else
00084 tools::add_label(elt, aut, aut.get_initial(s));
00085 }
00086
00087 template <class S, class T>
00088 void
00089 xml_chooser_base<S, T>::create_final_label(xercesc::DOMDocument* doc,
00090 hstate_t s,
00091 const Element<S, T>& aut,
00092 xercesc::DOMElement* elt,
00093 bool use_label_node)
00094 {
00095 if (use_label_node)
00096 tools::add_xml_label(doc, elt, aut, aut.get_final(s));
00097 else
00098 tools::add_label(elt, aut, aut.get_final(s));
00099 }
00100
00101
00102
00103
00104
00105
00106 template <class S, class T>
00107 void
00108 xml_chooser<Transducer<S>, T>
00109 ::create_type_tag(const Element<Transducer<S>, T>& aut,
00110 xercesc::DOMDocument* doc,
00111 xercesc::DOMElement* root)
00112 {
00113 xercesc::DOMElement* type = tools::create_element(doc, "labelType");
00114 xercesc::DOMElement* in_monoid =
00115 tools::create_monoid(aut.structure().series().monoid(), doc, type);
00116 tools::create_alphabet(aut.structure().series().monoid().alphabet(),
00117 doc, in_monoid);
00118 xercesc::DOMElement* semiring =
00119 tools::create_semiring(aut, aut.structure().series().semiring(),
00120 doc, type);
00121 xercesc::DOMElement* out_monoid =
00122 tools::create_monoid(aut.structure().series().semiring().monoid(),
00123 doc, semiring);
00124 tools::create_alphabet(aut.structure().series().semiring()
00125 .monoid().alphabet(), doc, out_monoid);
00126 tools::create_semiring(aut,
00127 aut.structure().series().semiring().semiring(),
00128 doc, semiring);
00129 root->appendChild(type);
00130 }
00131
00132
00133
00134
00135
00136
00137 template <class S, class T, class M1, class M2>
00138 void
00139 xml_chooser<FMPtype>::create_type_tag(const Element<FMPtype>& aut,
00140 xercesc::DOMDocument* doc,
00141 xercesc::DOMElement* root)
00142 {
00143 xercesc::DOMElement* type = tools::create_element(doc, "labelType");
00144 xercesc::DOMElement* monoid =
00145 tools::create_monoid(aut.structure().series().monoid(), doc, type);
00146
00147 xercesc::DOMElement* first_monoid =
00148 tools::create_monoid(aut.structure().series().monoid().first_monoid(),
00149 doc, monoid);
00150 tools::create_alphabet(aut.structure().series().monoid()
00151 .first_monoid().alphabet(),
00152 doc, first_monoid);
00153
00154 xercesc::DOMElement* second_monoid =
00155 tools::create_monoid(aut.structure().series().monoid().second_monoid(),
00156 doc, monoid);
00157 tools::create_alphabet(aut.structure().series().monoid()
00158 .second_monoid().alphabet(),
00159 doc, second_monoid);
00160
00161 tools::create_semiring(aut, aut.structure().series().semiring(),
00162 doc, type);
00163 root->appendChild(type);
00164 }
00165
00166
00167 }
00168
00169 }
00170
00171 #endif // ! VCSN_XML_XML_CHOOSER_HXX