summaryrefslogtreecommitdiff
path: root/udm/inc
diff options
context:
space:
mode:
authorNikolai Pretzell <np@openoffice.org>2002-03-08 13:32:38 +0000
committerNikolai Pretzell <np@openoffice.org>2002-03-08 13:32:38 +0000
commit1710683406e72de5458733231636e8fdb2c2c0bc (patch)
treedf25bf37d37eb1edb00165da07c8529458be562b /udm/inc
parent8913e1e75efa377a107fa37d22680ec223cb043c (diff)
Moving Autodoc to OpenOffice.org, module udm: UnifiedDataModel
Diffstat (limited to 'udm/inc')
-rw-r--r--udm/inc/udm/html/htmlitem.hxx435
-rw-r--r--udm/inc/udm/xml/xmlitem.hxx420
2 files changed, 855 insertions, 0 deletions
diff --git a/udm/inc/udm/html/htmlitem.hxx b/udm/inc/udm/html/htmlitem.hxx
new file mode 100644
index 000000000000..30cfab2e3e45
--- /dev/null
+++ b/udm/inc/udm/html/htmlitem.hxx
@@ -0,0 +1,435 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlitem.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: np $ $Date: 2002-03-08 14:32:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef CSI_HTML_HTMLITEM_HXX
+#define CSI_HTML_HTMLITEM_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+#include <udm/xml/xmlitem.hxx>
+ // COMPONENTS
+ // PARAMETERS
+
+
+#define COMPATIBLE_NETSCAPE_47
+
+namespace csi
+{
+namespace html
+{
+
+
+
+/** <BODY>
+*/
+class Body : public csi::xml::AnElement
+{
+ public:
+ Body()
+ : csi::xml::AnElement("body") {}
+ private:
+ virtual bool LineBreakAfterBeginTag() const;
+};
+
+
+#ifdef COMPATIBLE_NETSCAPE_47
+/** <BR>
+*/
+class HorizontalLine : public xml::XmlCode
+{
+ public:
+ HorizontalLine()
+ : xml::XmlCode("<hr>\n") {}
+};
+
+#else
+/** <HR>
+*/
+class HorizontalLine : public csi::xml::AnEmptyElement
+{
+ public:
+ HorizontalLine()
+ : csi::xml::AnEmptyElement("hr") {}
+ private:
+ virtual bool LineBreakAfterBeginTag() const;
+};
+#endif
+
+
+/** <IMG .... >
+*/
+class Image : public csi::xml::AnEmptyElement
+{
+ public:
+ Image(
+ const csv::String & i_sSrc,
+ const csv::String & i_sWidth,
+ const csv::String & i_sHeight,
+ const csv::String & i_sAlign,
+ const csv::String & i_sBorder );
+};
+
+/** <A name="">
+*/
+class Label : public csi::xml::AnElement
+{
+ public:
+ Label(
+ const csv::String & i_sLabel )
+ : csi::xml::AnElement("a")
+ { *this << new csi::xml::AnAttribute("name", i_sLabel); }
+ private:
+ virtual bool LineBreakAfterEndTag() const;
+};
+
+/** <p>
+*/
+class Paragraph : public csi::xml::AnElement
+{
+ public:
+ Paragraph()
+ : csi::xml::AnElement("p") {}
+ private:
+ virtual bool LineBreakAfterEndTag() const;
+};
+
+/** <H1-6>
+*/
+class Headline : public csi::xml::APureElement
+{
+ public:
+ Headline(
+ int i_nNr )
+ : csi::xml::APureElement(sTags[i_nNr-1]) { csv_assert(1 <= i_nNr AND i_nNr < 7); }
+ private:
+ static const char * sTags[6];
+ virtual bool LineBreakAfterEndTag() const;
+};
+
+#ifdef COMPATIBLE_NETSCAPE_47
+/** <BR>
+*/
+class LineBreak : public xml::XmlCode
+{
+ public:
+ LineBreak()
+ : xml::XmlCode("<br>\n") {}
+};
+
+#else
+/** <BR>
+*/
+class LineBreak : public csi::xml::ASglTag
+{
+ public:
+ LineBreak()
+ : csi::xml::ASglTag("br") {}
+ private:
+ virtual bool LineBreakAfterBeginTag() const;
+};
+#endif
+
+
+/** <b>
+*/
+class Bold : public csi::xml::APureElement
+{
+ public:
+ Bold()
+ : csi::xml::APureElement("b") {}
+};
+
+/** <i>
+*/
+class Italic : public csi::xml::APureElement
+{
+ public:
+ Italic()
+ : csi::xml::APureElement("i") {}
+};
+
+/** <strong>
+*/
+class Strong : public csi::xml::APureElement
+{
+ public:
+ Strong()
+ : csi::xml::APureElement("strong") {}
+};
+
+/** <em>
+*/
+class Emphasized : public csi::xml::APureElement
+{
+ public:
+ Emphasized()
+ : csi::xml::APureElement("em") {}
+};
+
+/** <font>
+*/
+class Font : public csi::xml::AnElement
+{
+ public:
+ Font()
+ : csi::xml::AnElement("font") {}
+};
+
+
+/** <A href="">
+*/
+class Link : public csi::xml::AnElement
+{
+ public:
+ Link(
+ const csv::String &i_sDestinaton )
+ : csi::xml::AnElement("a")
+ { *this << new csi::xml::AnAttribute("href", i_sDestinaton); }
+};
+
+class TableCell : public csi::xml::AnElement
+{
+ public:
+ TableCell()
+ : csi::xml::AnElement("td") {}
+ private:
+ virtual bool LineBreakAfterEndTag() const;
+};
+
+class TableRow : public csi::xml::AnElement
+{
+ public:
+ TableRow()
+ : csi::xml::AnElement("tr") {}
+
+ TableCell & AddCell(
+ DYN csi::xml::Item* let_dpItem = 0 );
+ private:
+ virtual bool LineBreakAfterBeginTag() const;
+};
+
+/** <table ....>
+*/
+class Table : public csi::xml::AnElement
+{
+ public:
+ Table()
+ : csi::xml::AnElement("table") {}
+ Table(
+ const csv::String & i_sBorder,
+ const csv::String & i_sWidth,
+ const csv::String & i_sCellPadding,
+ const csv::String & i_sCellSpacing );
+ TableRow & AddRow();
+ private:
+ virtual bool FinishEmptyTag_XmlStyle() const;
+ virtual bool LineBreakAfterBeginTag() const;
+};
+
+
+
+class DefListTerm : public csi::xml::AnElement
+{
+ public:
+ DefListTerm()
+ : csi::xml::AnElement("dt") {}
+ private:
+ virtual bool LineBreakAfterEndTag() const;
+};
+
+class DefListDefinition : public csi::xml::AnElement
+{
+ public:
+ DefListDefinition()
+ : csi::xml::AnElement("dd") {}
+ private:
+ virtual bool LineBreakAfterEndTag() const;
+};
+
+/** <DL>
+*/
+class DefList : public csi::xml::AnElement
+{
+ public:
+ DefList()
+ : csi::xml::AnElement("dl") {}
+
+ DefListTerm & AddTerm(
+ DYN csi::xml::Item* let_dpItem = 0 );
+ DefListDefinition & AddDefinition(
+ DYN csi::xml::Item* let_dpItem = 0 );
+ private:
+ virtual bool LineBreakAfterBeginTag() const;
+};
+
+
+class ListItem : public csi::xml::AnElement
+{
+ public:
+ ListItem()
+ : csi::xml::AnElement("li") {}
+ private:
+ virtual bool LineBreakAfterEndTag() const;
+};
+
+/** <OL>
+*/
+class NumeratedList : public csi::xml::AnElement
+{
+ public:
+ NumeratedList()
+ : csi::xml::AnElement("ol") {}
+
+ ListItem & AddItem(
+ DYN csi::xml::Item* let_dpItem = 0 );
+ private:
+ virtual bool LineBreakAfterBeginTag() const;
+};
+
+/** <UL>
+*/
+class SimpleList : public csi::xml::AnElement
+{
+ public:
+ SimpleList()
+ : csi::xml::AnElement("ul") {}
+
+ ListItem & AddItem(
+ DYN csi::xml::Item* let_dpItem = 0 );
+ private:
+ virtual bool LineBreakAfterBeginTag() const;
+};
+
+
+class ClassAttr : public csi::xml::AnAttribute
+{
+ public:
+ ClassAttr(
+ const csv::String & i_sValue )
+ : csi::xml::AnAttribute( "class", i_sValue ) {}
+};
+
+class StyleAttr : public csi::xml::AnAttribute
+{
+ public:
+ StyleAttr(
+ const csv::String & i_sValue )
+ : csi::xml::AnAttribute( "style", i_sValue ) {}
+};
+
+class SizeAttr : public csi::xml::AnAttribute
+{
+ public:
+ SizeAttr(
+ const csv::String & i_sValue )
+ : csi::xml::AnAttribute( "size", i_sValue ) {}
+};
+
+class ColorAttr : public csi::xml::AnAttribute
+{
+ public:
+ ColorAttr(
+ const csv::String & i_sValue )
+ : csi::xml::AnAttribute( "color", i_sValue ) {}
+};
+
+class BgColorAttr : public csi::xml::AnAttribute
+{
+ public:
+ BgColorAttr(
+ const csv::String & i_sValue )
+ : csi::xml::AnAttribute( "bgcolor", i_sValue ) {}
+};
+
+class AlignAttr : public csi::xml::AnAttribute
+{
+ public:
+ AlignAttr(
+ const csv::String & i_sValue )
+ : csi::xml::AnAttribute( "align", i_sValue ) {}
+};
+
+class WidthAttr : public csi::xml::AnAttribute
+{
+ public:
+ WidthAttr(
+ const csv::String & i_sValue )
+ : csi::xml::AnAttribute( "width", i_sValue ) {}
+};
+
+
+
+class Sbr : public csi::xml::XmlCode // Sourcefile lineBreak
+{
+ public:
+ Sbr()
+ : csi::xml::XmlCode("\n") {}
+};
+
+
+} // namespace html
+} // namespace csi
+
+namespace Html = csi::html;
+
+#endif
+
+
diff --git a/udm/inc/udm/xml/xmlitem.hxx b/udm/inc/udm/xml/xmlitem.hxx
new file mode 100644
index 000000000000..2d78016f41ed
--- /dev/null
+++ b/udm/inc/udm/xml/xmlitem.hxx
@@ -0,0 +1,420 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlitem.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: np $ $Date: 2002-03-08 14:32:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef CSI_XML_XMLITEM_HXX
+#define CSI_XML_XMLITEM_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <cosv/template/swelist.hxx>
+#include <cosv/template/dyn.hxx>
+ // PARAMETERS
+
+namespace csv
+{
+ class AnyWrite;
+}
+
+
+namespace csi
+{
+namespace xml
+{
+
+
+/* Basics:
+ Item, Attribute, Element, TextContext
+*/
+
+class Item
+{
+ public:
+ virtual ~Item() {}
+ void WriteOut(
+ csv::bostream & io_aFile ) const;
+ private:
+ virtual void do_WriteOut(
+ csv::bostream & io_aFile ) const = 0;
+};
+
+typedef csv::SweList_dyn< Item > ItemList;
+
+class Attribute
+{
+ public:
+ virtual ~Attribute() {}
+
+ void WriteOut(
+ csv::bostream & io_aFile ) const;
+
+ const csv::String& Name() const;
+ const csv::String& Value() const;
+
+ private:
+ virtual const csv::String &
+ inq_Name() const = 0;
+ virtual const csv::String &
+ inq_Value() const = 0;
+};
+
+typedef csv::SweList_dyn< Attribute > AttrList;
+
+
+class Element : public Item
+{
+ public:
+ Element & operator<<( /// For multiple content items.
+ DYN Item * let_dpItem );
+ Element & operator<<( /// For multiple content items.
+ const csv::String& let_drText );
+ Element & operator<<( /// For multiple content items.
+ const char * let_dpText );
+ Element & operator<<(
+ DYN Attribute * let_dpAttr );
+
+ Element & operator>>( /// For multiple content items. @return the child Element.
+ DYN Element & let_drElement );
+
+
+ Item * SetContent( /// For only one content item.
+ DYN Item * let_dpItem ); /// Replaces previous content. May be 0, then all content is deleted.
+ private:
+ // Interface Item:
+ virtual void do_WriteOut(
+ csv::bostream & io_aFile ) const;
+ // Local
+ virtual void op_streamout(
+ DYN Item * let_dpItem ) = 0;
+ virtual void op_streamout(
+ DYN Attribute * let_dpAttr ) = 0;
+
+ virtual void do_SetContent(
+ DYN Item * let_dpItem ) = 0;
+ // Helpers
+ virtual const csv::String &
+ inq_TagName() const = 0;
+ virtual const Item *
+ inq_Content() const = 0;
+ virtual const AttrList *
+ inq_Attrs() const = 0;
+
+ virtual bool FinishEmptyTag_XmlStyle() const; /// Defaulted to: true
+
+ virtual bool LineBreakAfterBeginTag() const; /// Defaulted to: false
+ virtual bool LineBreakAfterEndTag() const; /// Defaulted to: true, if LineBreakAfterBeginTag()
+};
+
+class TextContent : public Item
+{
+};
+
+
+/* Implementation simplifiers:
+ EmptyElement, PureElement, SglTag
+*/
+
+class EmptyElement : public Element
+{
+ private:
+ // Interface Element:
+ virtual void op_streamout( /// does nothing
+ DYN Item * let_dpItem );
+ virtual void op_streamout(
+ DYN Attribute * let_dpAttr );
+ virtual void do_SetContent( /// does nothing
+ DYN Item * let_dpItem );
+ virtual const Item *
+ inq_Content() const; /// @return 0
+ virtual const AttrList *
+ inq_Attrs() const;
+
+ // Local
+ virtual AttrList & inq_RefAttrs() = 0;
+ const AttrList & inq_RefAttrs() const;
+};
+
+class PureElement : public Element
+{
+ private:
+ // Interface Element:
+ virtual void op_streamout(
+ DYN Item * let_dpItem );
+ virtual void op_streamout( /// does nothing
+ DYN Attribute * let_dpAttr );
+ virtual void do_SetContent(
+ DYN Item * let_dpItem );
+ virtual const Item *
+ inq_Content() const;
+ virtual const AttrList *
+ inq_Attrs() const; /// @return 0
+ // Local
+ virtual Dyn< Item > &
+ inq_RefContent() = 0;
+ const Dyn< Item > & inq_RefContent() const;
+};
+
+class SglTag : public Element
+{
+ private:
+ // Interface Element:
+ virtual void op_streamout( /// does nothing
+ DYN Item * let_dpItem );
+ virtual void op_streamout( /// does nothing
+ DYN Attribute * let_dpAttr );
+ virtual void do_SetContent( /// does nothing
+ DYN Item * let_dpItem );
+ virtual const Item *
+ inq_Content() const; /// @return 0
+ virtual const AttrList *
+ inq_Attrs() const; /// @return 0
+};
+
+
+
+/* Standard Element implementations, if there are not any
+ specialized ones.
+*/
+
+class AnElement : public Element
+{
+ public:
+ AnElement(
+ const csv::String& i_sTagName );
+ ~AnElement();
+ private:
+ // Interface Element
+ virtual void op_streamout(
+ DYN Item * let_dpItem );
+ virtual void op_streamout(
+ DYN Attribute * let_dpAttr );
+ virtual void do_SetContent(
+ DYN Item * let_dpItem );
+ virtual const csv::String &
+ inq_TagName() const;
+ virtual const Item *
+ inq_Content() const;
+ virtual const AttrList *
+ inq_Attrs() const;
+ // DATA
+ csv::String sTagName;
+ Dyn< Item > pContent;
+ AttrList aAttrs;
+};
+
+
+class AnEmptyElement : public EmptyElement
+{
+ public:
+ AnEmptyElement(
+ const csv::String & i_sTagName );
+ ~AnEmptyElement();
+ private:
+ // Interface Element:
+ virtual const csv::String &
+ inq_TagName() const;
+ // Interface EmptyElement:
+ virtual AttrList & inq_RefAttrs();
+
+ // DATA
+ csv::String sTagName;
+ AttrList aAttrs;
+};
+
+class APureElement : public PureElement
+{
+ public:
+ APureElement(
+ const csv::String & i_sTagName );
+ ~APureElement();
+ private:
+ // Interface Element:
+ virtual const csv::String &
+ inq_TagName() const;
+ // Interface PureElement:
+ virtual Dyn< Item > &
+ inq_RefContent();
+ // DATA
+ csv::String sTagName;
+ Dyn< Item > pContent;
+};
+
+class ASglTag : public SglTag
+{
+ public:
+ ASglTag(
+ const csv::String & i_sTagName );
+ ~ASglTag();
+ private:
+ // Interface Element:
+ virtual const csv::String &
+ inq_TagName() const;
+ // DATA
+ csv::String sTagName;
+};
+
+
+/* Standard Attribute implementation
+*/
+class AnAttribute : public Attribute
+{
+ public:
+ AnAttribute(
+ const csv::String & i_sName,
+ const csv::String & i_sValue );
+ ~AnAttribute();
+ private:
+ // Interface Attribute:
+ virtual const csv::String &
+ inq_Name() const;
+ virtual const csv::String &
+ inq_Value() const;
+ // DATA
+ csv::String sName;
+ csv::String sValue;
+};
+
+
+
+/* Implementations of TextContent:
+
+ Text ( reserved characters will be replaced and appear unchanged )
+ XmlCode ( reserved characters stay and are interpreted
+ by the XML-viewer )
+*/
+class Text : public TextContent
+{
+ public:
+ Text(
+ const csv::String & i_sText );
+ Text(
+ const char * i_sText );
+ ~Text();
+ private:
+ virtual void do_WriteOut(
+ csv::bostream & io_aFile ) const;
+ // DATA
+ csv::String sText;
+};
+
+
+class XmlCode : public TextContent
+{
+ public:
+ XmlCode(
+ const csv::String & i_sText );
+ ~XmlCode();
+ private:
+ virtual void do_WriteOut(
+ csv::bostream & io_aFile ) const;
+ // DATA
+ csv::String sText;
+};
+
+
+
+// IMPLEMENTATION
+
+inline void
+Item::WriteOut( csv::bostream & io_aFile ) const
+ { do_WriteOut(io_aFile); }
+
+inline const csv::String &
+Attribute::Name() const
+ { return inq_Name(); }
+inline const csv::String &
+Attribute::Value() const
+ { return inq_Value(); }
+
+inline Element &
+Element::operator<<( DYN Item * let_dpItem )
+ { op_streamout(let_dpItem); return *this; }
+inline Element &
+Element::operator<<( const csv::String & let_drText )
+ { op_streamout( new Text(let_drText) ); return *this; }
+inline Element &
+Element::operator<<( const char * let_drText )
+ { op_streamout( new Text(let_drText) ); return *this; }
+inline Element &
+Element::operator<<( DYN Attribute * let_dpAttr )
+ { op_streamout(let_dpAttr); return *this; }
+inline Element &
+Element::operator>>( DYN Element & let_drElement )
+ { op_streamout(&let_drElement); return let_drElement; }
+inline Item *
+Element::SetContent( DYN Item * let_dpItem )
+ { do_SetContent(let_dpItem); return let_dpItem; }
+
+inline const AttrList &
+EmptyElement::inq_RefAttrs() const
+ { return const_cast< EmptyElement* >(this)->inq_RefAttrs(); }
+
+inline const Dyn< Item > &
+PureElement::inq_RefContent() const
+ { return const_cast< PureElement* >(this)->inq_RefContent(); }
+
+} // namespace xml
+} // namespace csi
+
+
+#endif
+
+