summaryrefslogtreecommitdiff
path: root/xml2cmp/source/xcd/xmlelem.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xml2cmp/source/xcd/xmlelem.cxx')
-rw-r--r--xml2cmp/source/xcd/xmlelem.cxx264
1 files changed, 264 insertions, 0 deletions
diff --git a/xml2cmp/source/xcd/xmlelem.cxx b/xml2cmp/source/xcd/xmlelem.cxx
new file mode 100644
index 000000000000..10662b3a40d4
--- /dev/null
+++ b/xml2cmp/source/xcd/xmlelem.cxx
@@ -0,0 +1,264 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include <xmlelem.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <parse.hxx>
+#include <cr_html.hxx>
+
+XmlElement::XmlElement( const char * i_sName )
+ : sName(i_sName)
+{
+}
+
+void
+XmlElement::Insert2Index( Index & ) const
+{
+ // Default version. Does nothing.
+}
+
+XmlElement *
+MultipleElement::FindChild( const Simstr & i_sChildName )
+{
+ unsigned i_max = aChildren.size();
+ for ( unsigned i = 0; i < i_max; ++i )
+ {
+ if ( aChildren[i]->Name() == i_sChildName )
+ return aChildren[i];
+ }
+
+ return 0;
+}
+
+MultipleElement::~MultipleElement()
+{
+}
+
+MultipleElement::MultipleElement( const char * i_sName )
+ : XmlElement(i_sName)
+{
+}
+
+void
+MultipleElement::AddChild( XmlElement & let_drElement )
+{
+ aChildren.push_back(&let_drElement);
+}
+
+void
+SequenceElement::Parse( X2CParser & io_rParser )
+{
+ io_rParser.Parse_Sequence( Children(), Name() );
+}
+
+void
+SequenceElement::Write2Html( HtmlCreator & io_rHC ) const
+{
+ io_rHC.StartTable();
+
+ Children()[nIndexNameElement]->Write2Html(io_rHC);
+ for ( unsigned i = 0; i < Children().size(); ++i )
+ {
+ if (i != nIndexNameElement)
+ {
+ Children()[i]->Write2Html(io_rHC);
+ }
+ } // end for
+
+ io_rHC.FinishTable();
+}
+
+
+SequenceElement::SequenceElement( const char * i_sName,
+ unsigned i_nIndexNameElement )
+ : MultipleElement(i_sName),
+ nIndexNameElement(i_nIndexNameElement)
+{
+}
+
+FreeChoiceElement::FreeChoiceElement()
+ : MultipleElement("")
+{
+}
+
+void
+FreeChoiceElement::Parse( X2CParser & io_rParser )
+{
+ io_rParser.Parse_FreeChoice(Children());
+}
+
+void
+FreeChoiceElement::Write2Html( HtmlCreator & io_rHC ) const
+{
+ for ( unsigned i = 0; i < Children().size(); ++i )
+ {
+ Children()[i]->Write2Html(io_rHC);
+ } // end for
+}
+
+ListElement::ListElement( const char * i_sElementsName,
+ F_CREATE i_fCreateNewElement )
+ : MultipleElement(i_sElementsName),
+ fCreateNewElement(i_fCreateNewElement)
+{
+}
+
+void
+ListElement::Parse( X2CParser & io_rParser )
+{
+ io_rParser.Parse_List( *this );
+}
+
+void
+ListElement::Write2Html( HtmlCreator & io_rHC ) const
+{
+ for ( unsigned i = 0; i < Children().size(); ++i )
+ {
+ Children()[i]->Write2Html(io_rHC);
+ } // end for
+}
+
+XmlElement *
+ListElement::Create_and_Add_NewElement()
+{
+ XmlElement * pNew = (*fCreateNewElement)(Name());
+ Children().push_back( pNew );
+ return pNew;
+}
+
+TextElement::TextElement( const char * i_sName,
+ E_LinkType i_eLinkType,
+ bool i_bReverseName )
+ : XmlElement(i_sName),
+ eLinkType(i_eLinkType),
+ bReverseName(i_bReverseName)
+{
+}
+
+SglTextElement::SglTextElement( const char * i_sName,
+ E_LinkType i_eLinkType,
+ bool i_bReverseName )
+ : TextElement(i_sName, i_eLinkType, i_bReverseName)
+{
+}
+
+void
+SglTextElement::Parse( X2CParser & io_rParser )
+{
+ io_rParser.Parse_Text(sContent, Name(), IsReversedName());
+}
+
+void
+SglTextElement::Write2Html( HtmlCreator & io_rHC ) const
+{
+ if ( !sContent.is_no_text() )
+ io_rHC.Write_SglTextElement( *this );
+}
+
+MultipleTextElement::MultipleTextElement( const char * i_sName,
+ E_LinkType i_eLinkType,
+ bool i_bReverseName )
+ : TextElement(i_sName, i_eLinkType, i_bReverseName)
+{
+}
+
+void
+MultipleTextElement::Parse( X2CParser & io_rParser )
+{
+ io_rParser.Parse_MultipleText(aContent, Name(), IsReversedName());
+}
+
+void
+MultipleTextElement::Write2Html( HtmlCreator & io_rHC ) const
+{
+ if (Size() > 0)
+ io_rHC.Write_MultiTextElement( *this );
+}
+
+const Simstr &
+MultipleTextElement::Data( unsigned i_nNr ) const
+{
+ static const Simstr sNull_;
+
+ if (aContent.is_valid_index(i_nNr))
+ return aContent[i_nNr];
+ return sNull_;
+}
+
+EmptyElement::EmptyElement( const char * i_sName )
+ : XmlElement(i_sName)
+{
+}
+
+SglAttrElement::SglAttrElement( const char * i_sName,
+ const char * i_sAttrName )
+ : EmptyElement(i_sName),
+ sAttrName(i_sAttrName)
+{
+}
+
+void
+SglAttrElement::Parse( X2CParser & io_rParser )
+{
+ io_rParser.Parse_SglAttr(sAttrValue, Name(), sAttrName);
+}
+
+void
+SglAttrElement::Write2Html( HtmlCreator & io_rHC ) const
+{
+ io_rHC.Write_SglText( Name(), sAttrValue );
+}
+
+MultipleAttrElement::MultipleAttrElement( const char * i_sName,
+ const char ** i_sAttrNames,
+ unsigned i_nSize )
+ : EmptyElement(i_sName)
+{
+ for ( unsigned i = 0; i < i_nSize; ++i )
+ {
+ aAttrNames.push_back(Simstr(i_sAttrNames[i]));
+ aAttrValues.push_back(Simstr(""));
+ }
+}
+
+void
+MultipleAttrElement::Parse( X2CParser & io_rParser )
+{
+ io_rParser.Parse_MultipleAttr(aAttrValues, Name(), aAttrNames);
+}
+
+void
+MultipleAttrElement::Write2Html( HtmlCreator & io_rHC ) const
+{
+ if ( ! aAttrValues[0].is_no_text() )
+ io_rHC.Write_ReferenceDocu( Name(), aAttrValues[0], aAttrValues[1], aAttrValues[2] );
+}
+
+