diff options
Diffstat (limited to 'autodoc/source/display/inc/toolkit')
-rw-r--r-- | autodoc/source/display/inc/toolkit/hf_docentry.hxx | 62 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/hf_funcdecl.hxx | 74 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/hf_linachain.hxx | 75 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/hf_navi_main.hxx | 94 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/hf_navi_sub.hxx | 83 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/hf_title.hxx | 94 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/htmlfactory.hxx | 104 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/htmlfile.hxx | 88 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/out_node.hxx | 132 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/out_position.hxx | 120 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/out_tree.hxx | 139 | ||||
-rw-r--r-- | autodoc/source/display/inc/toolkit/outputstack.hxx | 75 |
12 files changed, 1140 insertions, 0 deletions
diff --git a/autodoc/source/display/inc/toolkit/hf_docentry.hxx b/autodoc/source/display/inc/toolkit/hf_docentry.hxx new file mode 100644 index 000000000000..028f47b68af1 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_docentry.hxx @@ -0,0 +1,62 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HF_DOCENTRY_HXX +#define ADC_DISPLAY_HF_DOCENTRY_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "htmlfactory.hxx" + // COMPONENTS + // PARAMETERS + +/** @resp + Produces a list of <DT>..</DT> and <DD>. +*/ +class HF_DocEntryList : public HtmlMaker +{ + public: + + HF_DocEntryList( + Xml::Element & o_rOut ); + virtual ~HF_DocEntryList(); + + Xml::Element & Produce_Term( + const char * i_sTerm = 0 ); + Xml::Element & Produce_NormalTerm( /// Font will not be bold. + const char * i_sTerm = 0 ); + Xml::Element & Produce_Definition(); +}; + + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/hf_funcdecl.hxx b/autodoc/source/display/inc/toolkit/hf_funcdecl.hxx new file mode 100644 index 000000000000..013a8d2e123d --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_funcdecl.hxx @@ -0,0 +1,74 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HF_FUNCDECL_HXX +#define ADC_DISPLAY_HF_FUNCDECL_HXX + + +// USED SERVICES + // BASE CLASSES +#include <toolkit/htmlfactory.hxx> + // COMPONENTS + // PARAMETERS + +class HF_FunctionDeclaration : public HtmlMaker +{ + public: + HF_FunctionDeclaration( + Xml::Element & o_rParent, + const String & i_sRaisesText ); + virtual ~HF_FunctionDeclaration(); + + // OPERATIONS + Xml::Element & ReturnCell(); + Xml::Element & NameCell(); + Xml::Element & NewParamTypeCell(); + Xml::Element & ParamNameCell(); + Xml::Element & ExceptionCell(); + + private: + Html::TableRow & ParameterLine(); + + // DATA + String sRaisesText; + Html::Table * pTable; + Xml::Element * pReturnCell; + Xml::Element * pNameCell; + Html::TableRow * pParameterLine; + Xml::Element * pLastParameterCell; + Xml::Element * pExceptionCell; +}; + + +// IMPLEMENTATION + + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/hf_linachain.hxx b/autodoc/source/display/inc/toolkit/hf_linachain.hxx new file mode 100644 index 000000000000..143e864c700e --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_linachain.hxx @@ -0,0 +1,75 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HF_LINACHAIN_HXX +#define ADC_DISPLAY_HF_LINACHAIN_HXX + +// BASE CLASSES +#include "htmlfactory.hxx" +#include "out_position.hxx" + + + + +class HF_LinkedNameChain : public HtmlMaker +{ + public: + /** F_LinkMaker makes a link out of the name of the + parent position. + + Returns true, if there is a link, false if not. + */ + typedef String (*F_LinkMaker)(const char *); + + + HF_LinkedNameChain( + Xml::Element & o_rOut ); + virtual ~HF_LinkedNameChain(); + + void Produce_CompleteChain( + const output::Position & + i_curPosition, + F_LinkMaker i_linkMaker ) const; + void Produce_CompleteChain_forModule( + const output::Position & + i_curPosition, /// current Module's node + F_LinkMaker i_linkMaker ) const; + private: + void produce_Level( + output::Node & i_levelNode, + const output::Position & + i_startPosition, + F_LinkMaker i_linkMaker ) const; +}; + + + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/hf_navi_main.hxx b/autodoc/source/display/inc/toolkit/hf_navi_main.hxx new file mode 100644 index 000000000000..0fbb726a4fcb --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_navi_main.hxx @@ -0,0 +1,94 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HF_NAVI_MAIN_HXX +#define ADC_DISPLAY_HF_NAVI_MAIN_HXX + + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include "htmlfactory.hxx" + // PARAMETERS + + +class HF_MainItem; + + +/** @task + Create a HTML navigation bar with lightly coloured background. + + @descr + There are three kinds of items: + Item with link: Add_StdItem(), + Item without link: Add_NoneItem(), + Item that is current page: Add_SelfItem(). +*/ +class HF_NaviMainRow : public HtmlMaker +{ + public: + enum E_Style + { + eStd, + eSelf, + eNo + }; + HF_NaviMainRow( + Xml::Element & o_out ); + ~HF_NaviMainRow(); + + void Add_StdItem( + const char * i_sText, + const char * i_sLink ); + void Add_SelfItem( + const char * i_sText ); + void Add_NoneItem( + const char * i_sText ); + + void Produce_Row(); + + private: + // DATA + typedef std::vector< DYN HF_MainItem* > ItemList; + + ItemList aItems; + Xml::Element * pRow; +}; + + + +// IMPLEMENTATION + + + + +#endif + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/hf_navi_sub.hxx b/autodoc/source/display/inc/toolkit/hf_navi_sub.hxx new file mode 100644 index 000000000000..24980ed666d8 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_navi_sub.hxx @@ -0,0 +1,83 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HF_NAVI_SUB_HXX +#define ADC_DISPLAY_HFI_NAVI_SUB_HXX + + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include "htmlfactory.hxx" + // PARAMETERS + + +class HF_NaviSubRow : public HtmlMaker +{ + public: + HF_NaviSubRow( + Xml::Element & o_rOut ); + virtual ~HF_NaviSubRow(); + + void AddItem( + const String & i_sText, + const String & i_sLink, + bool i_bSwitchOn ); + void SwitchOn( + int i_nIndex ); + void Produce_Row(); + + private: + typedef std::pair<String,String> SubRow_Data; + typedef std::pair<SubRow_Data,bool> SubRow_Item; + typedef std::vector<SubRow_Item> SubRow; + + /** Puts the row's table into the parent XML-element, but + doesn't write the items, because the actvity-status of + the subitems isn't known yet. + */ + void Setup_Row(); + + // DATA + SubRow aRow; + Xml::Element * pMyRow; +}; + + + + +// IMPLEMENTATION + + + + +#endif + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/hf_title.hxx b/autodoc/source/display/inc/toolkit/hf_title.hxx new file mode 100644 index 000000000000..d0045182ac85 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_title.hxx @@ -0,0 +1,94 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HF_TITLE_HXX +#define ADC_DISPLAY_HF_TITLE_HXX + + + +// USED SERVICES + // BASE CLASSES +#include <toolkit/htmlfactory.hxx> + // COMPONENTS + // PARAMETERS + + +class HF_TitleTable : public HtmlMaker +{ + public: + HF_TitleTable( + Xml::Element & o_rOut ); + virtual ~HF_TitleTable(); + + void Produce_Title( + const char * i_title ); + void Produce_Title( + const char * i_annotations, +// const char * i_label, + const char * i_title ); + + /// @return a Html::TableCell reference. + Xml::Element & Add_Row(); +}; + + +class HF_SubTitleTable : public HtmlMaker +{ + public: + enum E_SubLevel + { + sublevel_1, /// Big title. + sublevel_2, /// Small title. + sublevel_3 /// No title. + }; + + /** @param i_nColumns [1 .. n] + @param i_nSubTitleLevel [1 .. 2] + 1 is a bit bigger than 2. + */ + + HF_SubTitleTable( + Xml::Element & o_rOut, + const String & i_label, + const String & i_title, + int i_nColumns, + E_SubLevel i_eSubTitleLevel = sublevel_1 ); + virtual ~HF_SubTitleTable(); + + /// @return an Html::TableRow reference. + Xml::Element & Add_Row(); +}; + + +// IMPLEMENTATION + + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/htmlfactory.hxx b/autodoc/source/display/inc/toolkit/htmlfactory.hxx new file mode 100644 index 000000000000..4be72412832e --- /dev/null +++ b/autodoc/source/display/inc/toolkit/htmlfactory.hxx @@ -0,0 +1,104 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HTMLFACTORY_HXX +#define ADC_DISPLAY_HTMLFACTORY_HXX + + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include "outputstack.hxx" + // PARAMETERS +#include <udm/xml/xmlitem.hxx> +#include <udm/html/htmlitem.hxx> + +namespace Xml = ::csi::xml; +namespace Html = ::csi::html; + +/** @resp + Base class for HTML page creators (factories) for code entites or + similar items. +*/ +template <class ENV> +class HtmlFactory +{ + public: + // INQUIRY + ENV & Env() const { return *pEnv; } + Xml::Element & CurOut() const { return aDestination.Out(); } + + // ACCESS + OutputStack & Out() const { return aDestination; } + + protected: + HtmlFactory( + ENV & io_rEnv, + Xml::Element * o_pOut = 0 ) + : pEnv(&io_rEnv) { if (o_pOut != 0) aDestination.Enter(*o_pOut); } + ~HtmlFactory() {} + private: + // DATA + ENV * pEnv; + mutable OutputStack aDestination; +}; + + +/** @resp + Base class for HTML paragraph creators, which are to be put into + a parent HTML element. +*/ +class HtmlMaker +{ + public: + + // INQUIRY + Xml::Element & CurOut() const { return *pOut; } + + protected: + HtmlMaker( + Xml::Element & o_rOut ) + : pOut(&o_rOut) {} + private: + // DATA + Xml::Element * pOut; +}; + + + + +// IMPLEMENTATION + + + + +#endif + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/htmlfile.hxx b/autodoc/source/display/inc/toolkit/htmlfile.hxx new file mode 100644 index 000000000000..ae4f773e6680 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/htmlfile.hxx @@ -0,0 +1,88 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_HTMLFILE_HXX +#define ADC_DISPLAY_HTMLFILE_HXX + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include <udm/html/htmlitem.hxx> + // PARAMETERS +#include <cosv/ploc.hxx> + +namespace csv +{ + class File; +} + +/** Represents an HTML output file. +*/ +class DocuFile_Html +{ + public: + // LIFECYCLE + DocuFile_Html(); + + void SetLocation( + const csv::ploc::Path & + i_rFilePath ); + void SetTitle( + const char * i_sTitle ); + void SetRelativeCssPath( + const char * i_sCssFile_relativePath ); + void SetCopyright( + const char * i_sCopyright ); + void EmptyBody(); + + Html::Body & Body() { return aBodyData; } + bool CreateFile(); + + private: + void WriteHeader( + csv::File & io_aFile ); + void WriteBody( + csv::File & io_aFile ); + // DATA + String sFilePath; + String sTitle; + String sLocation; + String sStyle; + String sCssFile; + String sCopyright; + + Html::Body aBodyData; + StreamStr aBuffer; +}; + + + +#endif + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/out_node.hxx b/autodoc/source/display/inc/toolkit/out_node.hxx new file mode 100644 index 000000000000..1c837ec6b50f --- /dev/null +++ b/autodoc/source/display/inc/toolkit/out_node.hxx @@ -0,0 +1,132 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_OUT_NODE_HXX +#define ADC_DISPLAY_OUT_NODE_HXX + + + + +namespace output +{ + + +/** @resp + Represents a tree of names where each node can have only one parent, + but a list of children. + + @see Position + @see Tree +*/ +class Node +{ + public: + typedef std::vector< Node* > List; + typedef UINT32 relative_id; + + // LIFECYCLE + enum E_NullObject { null_object }; + + Node(); + explicit Node( + E_NullObject ); + ~Node(); + + // OPERATORS + bool operator==( + const Node & i_node ) const + { return pParent == i_node.pParent AND sName == i_node.sName; } + bool operator!=( + const Node & i_node ) const + { return NOT operator==(i_node); } + + // OPERATIONS + /// Seek, and if not existent, create. + Node & Provide_Child( + const String & i_name ); + /// Seek, and if not existent, create. + Node & Provide_Child( + const StringVector & + i_path ) + { return provide_Child(i_path.begin(), i_path.end()); } + // INQUIRY + intt Depth() const { return nDepth; } + + const String & Name() const { return sName; } + /// @return Id of a namespace or class etc. this directory represents. + relative_id RelatedNameRoom() const { return nNameRoomId; } + /// @return No delimiter at start, with delimiter at end. + void Get_Path( + StreamStr & o_result, + intt i_maxDepth = -1 ) const; + void Get_Chain( + StringVector & o_result, + intt i_maxDepth = -1 ) const; + // ACCESS + void Set_RelatedNameRoom( + relative_id i_nNameRoomId ) + { nNameRoomId = i_nNameRoomId; } + Node * Parent() { return pParent; } + Node * Child( + const String & i_name ) + { return find_Child(i_name); } + List & Children() { return aChildren; } + + /// @return a reference to a Node with Depth() == -1. + static Node & Null_(); + + private: + // Local + Node( + const String & i_name, + Node & i_parent ); + + Node * find_Child( + const String & i_name ); + Node & add_Child( + const String & i_name ); + Node & provide_Child( + StringVector::const_iterator + i_next, + StringVector::const_iterator + i_end ); + // Data + String sName; + Node * pParent; + List aChildren; + intt nDepth; + relative_id nNameRoomId; +}; + + + + +} // namespace output +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/out_position.hxx b/autodoc/source/display/inc/toolkit/out_position.hxx new file mode 100644 index 000000000000..0bc236cdf871 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/out_position.hxx @@ -0,0 +1,120 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_OUT_POSITION_HXX +#define ADC_DISPLAY_OUT_POSITION_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include <toolkit/out_node.hxx> + // PARAMETERS + + + +namespace output +{ + + + +class Position +{ + public: + // LIFECYCLE + Position(); + explicit Position( + Node & i_directory, + const String & i_file = String::Null_() ); + Position( + const Position & i_directory, + const String & i_rDifferentFile ); + ~Position(); + + // OPERATIONS + Position & operator=( + Node & i_node ); + Position & operator+=( + const String & i_nodeName ); + Position & operator-=( + intt i_levels ); + + // INQUIRY + bool IsValid() const { return pDirectory->Depth() >= 0; } + const String & Name() const { return pDirectory->Name(); } + const String & File() const { return sFile; } + intt Depth() const { return pDirectory->Depth(); } + + void Get_Chain( + StringVector & o_result ) const + { pDirectory->Get_Chain(o_result); } + String LinkToRoot( + const String & i_localLabel = String::Null_() ) const; + + void Get_LinkTo( + StreamStr & o_result, + const Position & i_destination, + const String & i_localLabel = String::Null_() ) const; + void Get_LinkToRoot( + StreamStr & o_result, + const String & i_localLabel = String::Null_() ) const; + + static char Delimiter() { return '/'; } + + // ACCESS + Node & RelatedNode() const { return *pDirectory; } + + void Set( + Node & i_node, + const String & i_file = String::Null_() ); + void Set_File( + const String & i_file ); + + private: + // DATA + String sFile; + Node * pDirectory; +}; + + +/// @return No delimiter at start, with delimiter at end. +const char * get_UpLink( + uintt i_depth ); + + +// IMPLEMENTATION + +inline void +Position::Set_File( const String & i_file ) + { sFile = i_file; } + +} // namespace output + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/out_tree.hxx b/autodoc/source/display/inc/toolkit/out_tree.hxx new file mode 100644 index 000000000000..d04d51b780d4 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/out_tree.hxx @@ -0,0 +1,139 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_OUT_TREE_HXX +#define ADC_DISPLAY_OUT_TREE_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include "out_position.hxx" + // PARAMETERS + + +namespace output +{ + +inline const char * +ModuleFileName() +{ return "module-ix.html"; } +inline const char * +IndexFilesDirName() +{ return "index-files"; } +inline const char * +IndexFile_A() +{ return "index-1.html"; } + + +class Tree +{ + public: + // LIFECYCLE + Tree(); + ~Tree(); + + // OPERATIONS + void Set_Overview( + const StringVector & + i_path, + const String & i_sFileName ); + Node & Set_NamesRoot( + const StringVector & + i_path ); + Node & Set_IndexRoot( + const StringVector & + i_path ); + Node & Set_ProjectsRoot( + const StringVector & + i_path ); + Node & Provide_Node( + const StringVector & + i_path ); + + // ACCESS + Node & RootNode() { return *pRoot; } + Node & NamesRootNode() { return *pNamesRoot; } + Node & IndexRootNode() { return *pIndexRoot; } + Node & ProjectsRootNode() { return *pProjectsRoot; } + + Position Root() { return Position(*pRoot); } + Position Overview() { return aOverview; } + Position NamesRoot() { return Position(*pNamesRoot); } + Position IndexRoot() { return Position(*pIndexRoot); } + Position ProjectsRoot() { return Position(*pProjectsRoot); } + + private: + // forbidden: + Tree(const Tree&); + Tree & operator=(const Tree&); + + // DATA + Dyn<Node> pRoot; + Node * pNamesRoot; + Node * pIndexRoot; + Node * pProjectsRoot; + Position aOverview; +}; + + +// IMPLEMENTATION + +inline Node & +Tree::Provide_Node( const StringVector & i_path ) + { return pRoot->Provide_Child(i_path); } + + +inline void +Tree::Set_Overview( const StringVector & i_path, + const String & i_sFileName ) + { aOverview.Set(Provide_Node(i_path), i_sFileName); } + +inline Node & +Tree::Set_NamesRoot( const StringVector & i_path ) + { pNamesRoot = &Provide_Node(i_path); + return *pNamesRoot; } + +inline Node & +Tree::Set_IndexRoot( const StringVector & i_path ) + { pIndexRoot = &Provide_Node(i_path); + return *pIndexRoot; } + +inline Node & +Tree::Set_ProjectsRoot( const StringVector & i_path ) + { pProjectsRoot = &Provide_Node(i_path); + return *pProjectsRoot; } + + + +} // namespace output + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/autodoc/source/display/inc/toolkit/outputstack.hxx b/autodoc/source/display/inc/toolkit/outputstack.hxx new file mode 100644 index 000000000000..e874516ff157 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/outputstack.hxx @@ -0,0 +1,75 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifndef ADC_DISPLAY_OUTPUTSTACK_HXX +#define ADC_DISPLAY_OUTPUTSTACK_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include <estack.hxx> + // PARAMETERS +#include <udm/xml/xmlitem.hxx> + + +class OutputStack +{ + public: + // LIFECYCLE + OutputStack(); + ~OutputStack(); + + // OPERATIONS + void Enter( + csi::xml::Element & io_rDestination ); + void Leave(); + + // ACCESS + csi::xml::Element & Out() const; // CurOutputNode + + private: + EStack< csi::xml::Element * > + aCurDestination; // The front element is the currently used. + // The later ones are the parents. +}; + +inline csi::xml::Element & +OutputStack::Out() const +{ + csv_assert( aCurDestination.size() > 0 ); + return *aCurDestination.top(); +} + +// IMPLEMENTATION + + +#endif + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |