diff options
Diffstat (limited to 'udm/source/xml/xmlitem.cxx')
-rw-r--r-- | udm/source/xml/xmlitem.cxx | 546 |
1 files changed, 0 insertions, 546 deletions
diff --git a/udm/source/xml/xmlitem.cxx b/udm/source/xml/xmlitem.cxx deleted file mode 100644 index 8c3e10d8..00000000 --- a/udm/source/xml/xmlitem.cxx +++ /dev/null @@ -1,546 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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 <precomp.h> -#include <udm/xml/xmlitem.hxx> - -// NOT FULLY DECLARED SERVICES -#include <cosv/file.hxx> - - -namespace csi -{ -namespace xml -{ - -char cReplacable[256] = - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 49 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, // ", & - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 99 - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, // <, > - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 100 - 149 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 1 // - }; - - -class MultiItem : public Item -{ - public: - MultiItem(); - ~MultiItem(); - - void Add( - DYN Item * let_dpDatum ) - { csv_assert( let_dpDatum != 0 ); - aItems.push_back(let_dpDatum); } - void Erase() { aItems.erase_all(); } - - private: - virtual void do_WriteOut( - csv::bostream & io_aFile ) const; - // DATA - ItemList aItems; -}; - - -void StreamOut( - Dyn< Item > & o_rContent, - DYN Item * let_dpItem ); -inline void -StreamOut( AttrList & o_rAttrs, - DYN Attribute * let_dpAttr ) -{ - csv_assert( let_dpAttr != 0 ); - o_rAttrs.push_back( let_dpAttr ); -} - - -inline void -Impl_SetContent( Dyn< Item > & o_rContent, - DYN Item * let_dpItem ) -{ - o_rContent = let_dpItem; -} - - -//********************* Attribute ****************************// - -const String attrValueBegin("=\""); -const String attrValueEnd("\""); - -void -Attribute::WriteOut( csv::bostream & io_aFile ) const -{ - io_aFile.write( Name() ); - if ( Value().length() > 0 ) - { - io_aFile.write( attrValueBegin ); - io_aFile.write( Value() ); - io_aFile.write( attrValueEnd ); - } -} - - - -//************************ Element ****************************// - -const String newline("\n"); -const String space(" "); -const String beginTagBegin("<"); -const String endTagBegin("</"); -const String tagEnd(">"); -const String emptyTagEnd("/>"); - -void -Element::do_WriteOut( csv::bostream & io_aFile ) const -{ - io_aFile.write( beginTagBegin ); - io_aFile.write( inq_TagName() ); - - const AttrList * pAttrs = inq_Attrs(); - if ( pAttrs != 0 ) - { - for ( AttrList::iterator it = pAttrs->begin(); - it != pAttrs->end(); - ++it ) - { - - io_aFile.write( space ); - (*it)->WriteOut( io_aFile ); - } - } - - const Item * pContent = inq_Content(); - if ( pContent != 0 ) - io_aFile.write( tagEnd ); - else - { - if (FinishEmptyTag_XmlStyle()) - io_aFile.write( emptyTagEnd ); - else - { - io_aFile.write( tagEnd ); - io_aFile.write( endTagBegin ); - io_aFile.write( inq_TagName() ); - io_aFile.write( tagEnd ); - } - } - if ( LineBreakAfterBeginTag() ) - io_aFile.write( newline ); - if ( pContent == 0 ) - return; - - pContent->WriteOut( io_aFile ); - io_aFile.write( endTagBegin ); - io_aFile.write( inq_TagName() ); - io_aFile.write( tagEnd ); - if ( LineBreakAfterEndTag() ) - io_aFile.write( newline ); -} - -bool -Element::FinishEmptyTag_XmlStyle() const -{ - return true; -} - -bool -Element::LineBreakAfterBeginTag() const -{ - return false; -} - -bool -Element::LineBreakAfterEndTag() const -{ - return LineBreakAfterBeginTag(); -} - - -//************************ EmptyElement ****************************// - -void -EmptyElement::op_streamout( DYN Item * ) -{ - // Does nothing. -} - -void -EmptyElement::op_streamout( DYN Attribute * let_dpAttr ) -{ - StreamOut( inq_RefAttrs(), let_dpAttr ); -} - -void -EmptyElement::do_SetContent( DYN Item * ) -{ - // Does nothing. -} - -const Item * -EmptyElement::inq_Content() const -{ - return 0; -} - -const AttrList * -EmptyElement::inq_Attrs() const -{ - return & const_cast< EmptyElement* >(this)->inq_RefAttrs(); -} - - -//************************ PureElement ****************************// - -void -PureElement::op_streamout( DYN Item * let_dpItem ) -{ - StreamOut( inq_RefContent(), let_dpItem ); -} - -void -PureElement::op_streamout( DYN Attribute * ) -{ - // Does nothing. -} - -void -PureElement::do_SetContent( DYN Item * let_dpItem ) -{ - Impl_SetContent( inq_RefContent(), let_dpItem ); -} - -const Item * -PureElement::inq_Content() const -{ - return const_cast< PureElement* >(this)->inq_RefContent().Ptr(); -} - -const AttrList * -PureElement::inq_Attrs() const -{ - return 0; -} - - -//*************************** SglTag **************************// - -void -SglTag::op_streamout( DYN Item * ) -{ - // Does nothing. -} - -void -SglTag::op_streamout( DYN Attribute * ) -{ - // Does nothing. -} - -void -SglTag::do_SetContent( DYN Item *) -{ - // Does nothing. -} - -const Item * -SglTag::inq_Content() const -{ - return 0; -} - -const AttrList * -SglTag::inq_Attrs() const -{ - return 0; -} - - -//*************************** AnElement **************************// - -AnElement::AnElement( const char * i_sTagName ) - : sTagName( i_sTagName ) - // pContent, - // aAttrs -{ -} - -AnElement::~AnElement() -{ -} - -void -AnElement::op_streamout( DYN Item * let_dpItem ) -{ - StreamOut( pContent, let_dpItem ); -} - -void -AnElement::op_streamout( DYN Attribute * let_dpAttr ) -{ - StreamOut( aAttrs, let_dpAttr ); -} - -void -AnElement::do_SetContent( DYN Item * let_dpItem ) -{ - Impl_SetContent( pContent, let_dpItem ); -} - -const String & -AnElement::inq_TagName() const -{ - return sTagName; -} - -const Item * -AnElement::inq_Content() const -{ - return pContent.Ptr(); -} - -const AttrList * -AnElement::inq_Attrs() const -{ - return &aAttrs; -} - -//*************************** APureElement **************************// - -APureElement::APureElement( const char * i_sTagName ) - : sTagName( i_sTagName ) - // pContent -{ -} - -APureElement::~APureElement() -{ -} - -const String & -APureElement::inq_TagName() const -{ - return sTagName; -} - -Dyn< Item > & -APureElement::inq_RefContent() -{ - return pContent; -} - -//*************************** AnAttribute **************************// -AnAttribute::AnAttribute( const String & i_sName, - const String & i_sValue ) - : sName(i_sName), - sValue(i_sValue) -{ -} - -AnAttribute::AnAttribute( const char * i_sName, - const char * i_sValue ) - : sName(i_sName), - sValue(i_sValue) -{ -} - -AnAttribute::~AnAttribute() -{ -} - -const String & -AnAttribute::inq_Name() const -{ - return sName; -} - -const String & -AnAttribute::inq_Value() const -{ - return sValue; -} - - - -//*************************** Text **************************// - -Text::Text( const String & i_sText ) - : sText(i_sText) -{ -} - -Text::Text( const char * i_sText ) - : sText(i_sText) -{ -} - -Text::~Text() -{ -} - -void -Text::do_WriteOut( csv::bostream & io_aFile ) const -{ - const unsigned char * - pStart = reinterpret_cast< const unsigned char* >(sText.c_str()); - const unsigned char * - pOut = pStart; - - for ( ; *pOut != '\0'; ++pOut ) - { - if ( cReplacable[*pOut] ) - { - if ( pOut != pStart ) - { - io_aFile.write( pStart, pOut-pStart ); - } - - switch (*pOut) - { - case '<': io_aFile.write("<"); break; - case '>': io_aFile.write(">"); break; - case '"': io_aFile.write("""); break; - case '&': io_aFile.write("&"); break; - case 255: io_aFile.write(" "); break; - } - - pStart = pOut+1; - } // endif (cReplacable[*pOut]) - } // end for - - if ( pOut != pStart ) - { - io_aFile.write( pStart, pOut-pStart ); - } -} - - -//*************************** XmlCode **************************// - -XmlCode::XmlCode( const String & i_sText ) - : sText(i_sText) -{ -} - -XmlCode::XmlCode( const char * i_sText ) - : sText(i_sText) -{ -} - -XmlCode::~XmlCode() -{ -} - -void -XmlCode::do_WriteOut( csv::bostream & io_aFile ) const -{ - io_aFile.write(sText); -} - - -//*************************** MultiItem **************************// - -MultiItem::MultiItem() -{ -} - -MultiItem::~MultiItem() -{ -} - -void -MultiItem::do_WriteOut( csv::bostream & io_aFile ) const -{ - ItemList::iterator itEnd = aItems.end(); - - for ( ItemList::iterator it = aItems.begin(); - it != itEnd; - ++it ) - { - (*it)->WriteOut( io_aFile ); - } - -} - - - -//*************************** Helpers **************************// - -void -StreamOut( Dyn< Item > & o_rContent, - DYN Item * let_dpItem ) -{ - MultiItem * pContent = 0; - if ( bool(o_rContent) ) - { - pContent = static_cast< MultiItem* >( o_rContent.MutablePtr() ); - csv_assert( dynamic_cast< MultiItem* >( o_rContent.MutablePtr() ) != 0 ); - } - else - { - pContent = new MultiItem; - o_rContent = pContent; - } - - csv_assert( let_dpItem != 0 ); - pContent->Add( let_dpItem ); -} - - - - -} // namespace xml -} // namespace csi - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |