diff options
author | Nikolai Pretzell <np@openoffice.org> | 2002-11-01 16:15:51 +0000 |
---|---|---|
committer | Nikolai Pretzell <np@openoffice.org> | 2002-11-01 16:15:51 +0000 |
commit | 18e7b2a7dbc74cd094028e11b0910f1136cce615 (patch) | |
tree | bc1652165f7eb6af956a96cbb2e6408db0da2cbf /autodoc/source/display | |
parent | 7a9d96862db4571421d6eadb314da3c0c67ece2b (diff) |
#103134#
Diffstat (limited to 'autodoc/source/display')
76 files changed, 13136 insertions, 16 deletions
diff --git a/autodoc/source/display/html/cfrstd.cxx b/autodoc/source/display/html/cfrstd.cxx index 2b41edc625b3..d4d726e99531 100644 --- a/autodoc/source/display/html/cfrstd.cxx +++ b/autodoc/source/display/html/cfrstd.cxx @@ -2,9 +2,9 @@ * * $RCSfile: cfrstd.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: np $ $Date: 2002-05-14 09:02:11 $ + * last change: $Author: np $ $Date: 2002-11-01 17:14:21 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -61,12 +61,111 @@ #include <precomp.h> -#include <html/cfrstd.hxx> +#include <cfrstd.hxx> // NOT FULLY DEFINED SERVICES +/* CSS Styles + ---------- + + +Colors: +- light background color #eeeeff +- dark background color #ccccff +- self in navibar background color #2222ad + + +Fonts: +- page title 20, bold, Arial +- navibar main 12, bold, Arial +- navibar sub 8, Arial, kapitlchen +- attrtable title line 8, bold, Arial, kapitlchen +- attrtable value line 8, Arial kapitlchen + +- namespace chain 13, bold +- table title 13, bold +- template line 13 + +- member paragraph title 12, bold + +- docu paragraph title 11, bold +- standard text 11 + +- hierarchy 11, monospace + + +classes: + + td.title page title + h3 table title + h4 member paragraph title + + td.nmain navigation main bar + td.nsub navigation sub bar + a.nmain links in navigation main bar + a.nsub links in navigation sub bar + + td.attr1 attribute table head line + td.attr2 attribute table value line + + p.namechain namespace chain in head of pages + p.tpl template line in head of pages + + pre.doc preformatted docu + pre.hierarchy class bases hierarchy graphic + + dl.syntax function- or variable-declaration field + a.syntax link in function- or variable-declaration field + + p.dt docu paragraph title + dl.dt docu paragraph title + + p standard text + dl standard text + dd standard text +*/ + + +#define CRLF "\n" + +namespace +{ +const char * const C_sStdStyle = + "h3 { font-size:13pt; font-weight:bold; margin-top:3pt; margin-bottom:1pt; }"CRLF + "p, dt, dd, pre { font-size:11pt; margin-top:3pt; margin-bottom:1pt; }"CRLF + + "table.lightbg { background-color:#eeeeff; }"CRLF + "table.subtitle { margin-top:6pt; margin-bottom:6pt; }"CRLF + + "td { font-size:11pt; }"CRLF + "td.title { font-family: Arial; font-size:19pt; font-weight:bold; text-align:center; background-color:#ccccff; line-height:30pt; }"CRLF + "td.subtitle { font-family: Arial; font-size:13pt; background-color:#ccccff; line-height:20pt; }"CRLF + "td.imdetail { width:100%; background-color:#eeeeff; }"CRLF + "a.membertitle { font-size:12pt; font-weight:bold; line-height:18pt; }"CRLF + + "td.imsum_left { width:30%; }"CRLF + "td.imsum_right { width:70%; }"CRLF + + "td.navimain, a.navimain { text-align:center; font-family: Arial; font-size:12pt; font-weight:bold; }"CRLF + "td.navimainself { text-align:center; font-family: Arial; font-size:12pt; font-weight:bold; color:#ffffff; background-color:#2222ad; }"CRLF + "td.navimainnone { text-align:center; font-family: Arial; font-size:12pt; }"CRLF + "td.attrtitle { font-weight:bold; background-color:#eeeeff; }"CRLF + "td.navisub, a.navisub, td.attrtitle, td.attrvalue { text-align:center; font-family: Arial; font-size:9pt; font-variant:small-caps; }"CRLF + "td.navimain, td.navisub { padding-left:7pt; padding-right:7pt; }"CRLF + + "p.raise { font-size:11pt; margin-top:0pt; text-align:right; padding-right:5pt; }"CRLF + + "a.navimain, a.navisub { color:#000000; }"CRLF + ".dt { font-weight:bold; }"CRLF + ".namechain { font-size:13pt; font-weight:bold; margin-top:3pt; margin-bottom:6pt; }"CRLF + ".tpl { font-size:13pt; margin-top:3pt; margin-bottom:6pt; }"CRLF + ; +} // anonymous namespace + + + DYN Html_Image * StdFrame::LogoSrc() const @@ -93,8 +192,14 @@ StdFrame::LogoLink() const const char * StdFrame::CopyrightText() const { - return "Copyright 2002 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303 USA."; + return "Copyright © 2002 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303 USA."; // return "Copyright 2001 OpenOffice.org Foundation. All Rights Reserved."; } +const char * +StdFrame::CssStyle() const +{ + return C_sStdStyle; +} + diff --git a/autodoc/source/display/html/hd_docu.cxx b/autodoc/source/display/html/hd_docu.cxx index 1dcc602ac777..7f9700949426 100644 --- a/autodoc/source/display/html/hd_docu.cxx +++ b/autodoc/source/display/html/hd_docu.cxx @@ -2,9 +2,9 @@ * * $RCSfile: hd_docu.cxx,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: np $ $Date: 2002-03-08 14:45:23 $ + * last change: $Author: np $ $Date: 2002-11-01 17:14:22 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -459,8 +459,8 @@ Docu_Display::Write_QualifiedName( const ary::QualifiedName & i_sQuName ) { if ( i_sQuName.IsAbsolute() ) CurOut() << "::"; - for ( ary::QualifiedName::namespace_iterator it = i_sQuName.begin(); - it != i_sQuName.end(); + for ( ary::QualifiedName::namespace_iterator it = i_sQuName.first_namespace(); + it != i_sQuName.end_namespace(); ++it ) { CurOut() << (*it) << "::"; diff --git a/autodoc/source/display/html/hdimpl.cxx b/autodoc/source/display/html/hdimpl.cxx index dee9d525af98..a3a5c8887e0f 100644 --- a/autodoc/source/display/html/hdimpl.cxx +++ b/autodoc/source/display/html/hdimpl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: hdimpl.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: np $ $Date: 2002-05-14 09:02:12 $ + * last change: $Author: np $ $Date: 2002-11-01 17:14:22 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -68,7 +68,7 @@ #include <stdlib.h> #include <stdio.h> #include <ary/ceslot.hxx> -#include <ary/quname.hxx> +#include <ary/qualiname.hxx> #include <ary/cpp/c_class.hxx> #include <ary/cpp/c_disply.hxx> #include <ary/cpp/c_enum.hxx> diff --git a/autodoc/source/display/idl/hfi_constgroup.cxx b/autodoc/source/display/idl/hfi_constgroup.cxx new file mode 100644 index 000000000000..29f152e606f3 --- /dev/null +++ b/autodoc/source/display/idl/hfi_constgroup.cxx @@ -0,0 +1,175 @@ +/************************************************************************* + * + * $RCSfile: hfi_constgroup.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:24 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_constgroup.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_constgroup.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_navi_sub.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_navibar.hxx" +#include "hfi_property.hxx" +#include "hi_linkhelper.hxx" + + +extern const String + C_sCePrefix_Constants("constants group"); + + +namespace +{ + +const String + C_sList_Constants("Constants"); +const String + C_sList_Constants_Label("Constants"); +const String + C_sList_ConstantDetails("Constants' Details"); +const String + C_sList_ConstantDetails_Label("ConstantDetails"); + +enum E_SubListIndices +{ + sli_ConstantsSummary = 0, + sli_ConstantDetails = 1 +}; + + +} // anonymous namespace + + + +HF_IdlConstGroup::HF_IdlConstGroup( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlConstGroup::~HF_IdlConstGroup() +{ +} + +void +HF_IdlConstGroup::Produce_byData( const client & i_ce ) const +{ + Dyn<HF_NaviSubRow> + pNaviSubRow( &make_Navibar(i_ce) ); + + HF_TitleTable + aTitle(CurOut()); + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + + aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker); + aTitle.Produce_Title( StreamLock(200)() + << C_sCePrefix_Constants + << " " + << i_ce.LocalName() + << c_str ); + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); + + dyn_ce_list + dpConstants; + ary::idl::ifc_constgroup::attr::Get_Constants(dpConstants, i_ce); + if (*dpConstants) + { + produce_Members( *dpConstants, + C_sList_Constants, + C_sList_Constants_Label, + C_sList_ConstantDetails, + C_sList_ConstantDetails_Label ); + pNaviSubRow->SwitchOn(sli_ConstantsSummary); + pNaviSubRow->SwitchOn(sli_ConstantDetails); + } + pNaviSubRow->Produce_Row(); +} + +HF_NaviSubRow & +HF_IdlConstGroup::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeMainRow(i_ce); + + DYN HF_NaviSubRow & + ret = aNaviBar.Add_SubRow(); + ret.AddItem(C_sList_Constants, C_sList_Constants_Label, false); + ret.AddItem(C_sList_ConstantDetails, C_sList_ConstantDetails_Label, false); + + CurOut() << new Html::HorizontalLine(); + return ret; +} + +void +HF_IdlConstGroup::produce_MemberDetails( HF_SubTitleTable & o_table, + const client & i_ce ) const +{ + HF_IdlConstant + aElement( Env(), o_table ); + aElement.Produce_byData(i_ce); +} + diff --git a/autodoc/source/display/idl/hfi_constgroup.hxx b/autodoc/source/display/idl/hfi_constgroup.hxx new file mode 100644 index 000000000000..eb3f59a9e05d --- /dev/null +++ b/autodoc/source/display/idl/hfi_constgroup.hxx @@ -0,0 +1,100 @@ +/************************************************************************* + * + * $RCSfile: hfi_constgroup.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:25 $ + * + * 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 ADC_DISPLAY_HFI_CONSTGROUP_HXX +#define ADC_DISPLAY_HFI_CONSTGROUP_HXX + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + +class HF_IdlConstGroup : public HtmlFactory_Idl +{ + public: + HF_IdlConstGroup( + Environment & io_rEnv, + Xml::Element & o_rOut ); + virtual ~HF_IdlConstGroup(); + + void Produce_byData( + const client & ce ) const; + private: + HF_NaviSubRow & make_Navibar( + const client & ce ) const; + virtual void produce_MemberDetails( + HF_SubTitleTable & o_table, + const client & ce ) const; +}; + + + +// IMPLEMENTATION + + +extern const String + C_sCePrefix_Constants; + +#endif + + diff --git a/autodoc/source/display/idl/hfi_doc.cxx b/autodoc/source/display/idl/hfi_doc.cxx new file mode 100644 index 000000000000..7c2488b9b7bf --- /dev/null +++ b/autodoc/source/display/idl/hfi_doc.cxx @@ -0,0 +1,146 @@ +/************************************************************************* + * + * $RCSfile: hfi_doc.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:25 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_doc.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary_i/codeinf2.hxx> +#include <toolkit/hf_docentry.hxx> +#include "hfi_tag.hxx" + + + + +HF_IdlDocu::HF_IdlDocu( Environment & io_rEnv, + HF_DocEntryList & o_rOut ) + : HtmlFactory_Idl( io_rEnv, &o_rOut.CurOut() ), + rOut(o_rOut) +{ +} + +HF_IdlDocu::~HF_IdlDocu() +{ +} + +void +HF_IdlDocu::Produce_byData( const client & i_ce, + const ce_info * i_doc ) const +{ + const ce_info * i_pDocu = i_doc != 0 + ? i_doc + : i_ce.Docu(); + if (i_pDocu == 0) + return; + + Xml::Element * + pDescrDefinition = 0; + bool bShort = NOT i_pDocu->Short().IsEmpty(); + bool bDescr = NOT i_pDocu->Description().IsEmpty(); + + if ( i_pDocu->IsDeprecated() ) + { + rOut.Produce_Term("[ DEPRECATED ]"); + } + if ( i_pDocu->IsOptional() ) + { + rOut.Produce_Term("[ OPTIONAL ]"); + } + + if ( bShort OR bDescr ) + { + rOut.Produce_Term("Description"); + HF_IdlDocuTextDisplay + aDescription( Env(), 0, i_ce); + if (bShort) + { + aDescription.Out().Enter( rOut.Produce_Definition() ); + i_pDocu->Short().DisplayAt( aDescription ); + aDescription.Out().Leave(); + } + if (bDescr) + { + aDescription.Out().Enter( rOut.Produce_Definition() ); + i_pDocu->Description().DisplayAt( aDescription ); + aDescription.Out().Leave(); + } + } + + for ( std::vector< ary::info::AtTag2* >::const_iterator + iter = i_pDocu->Tags().begin(); + iter != i_pDocu->Tags().end(); + ++iter ) + { + if ( strlen( (*iter)->Title() ) > 0 ) + { + HF_IdlTag + aTag(Env(), i_ce); + Xml::Element & + rTerm = rOut.Produce_Term(); + aTag.Produce_byData( rTerm, + rOut.Produce_Definition(), + *(*iter) ); + } + } // end for +} diff --git a/autodoc/source/display/idl/hfi_doc.hxx b/autodoc/source/display/idl/hfi_doc.hxx new file mode 100644 index 000000000000..cd2bfc116cb8 --- /dev/null +++ b/autodoc/source/display/idl/hfi_doc.hxx @@ -0,0 +1,95 @@ +/************************************************************************* + * + * $RCSfile: hfi_doc.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:26 $ + * + * 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 ADC_DISPLAY_HFI_DOC_HXX +#define ADC_DISPLAY_HFI_DOC_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + + +class HF_DocEntryList; + + +class HF_IdlDocu : public HtmlFactory_Idl +{ + public: + HF_IdlDocu( + Environment & io_rEnv, + HF_DocEntryList & o_rOut ); + virtual ~HF_IdlDocu(); + + void Produce_byData( + const client & i_ce, + const ce_info * i_doc = 0 ) const; + private: + HF_DocEntryList & rOut; +}; + + + +#endif + diff --git a/autodoc/source/display/idl/hfi_enum.cxx b/autodoc/source/display/idl/hfi_enum.cxx new file mode 100644 index 000000000000..19861b9cf9c3 --- /dev/null +++ b/autodoc/source/display/idl/hfi_enum.cxx @@ -0,0 +1,172 @@ +/************************************************************************* + * + * $RCSfile: hfi_enum.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:27 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_enum.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_enum.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_navi_sub.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_navibar.hxx" +#include "hfi_property.hxx" +#include "hi_linkhelper.hxx" + + +extern const String + C_sCePrefix_Enum("enum"); + +namespace +{ + +const String + C_sList_Values("Values"); +const String + C_sList_Values_Label("Values"); +const String + C_sList_ValueDetails("Values' Details"); +const String + C_sList_ValueDetails_Label("ValueDetails"); + +enum E_SubListIndices +{ + sli_ValuesSummary = 0, + sli_ValueDetails = 1 +}; + +} // anonymous namespace + +HF_IdlEnum::HF_IdlEnum( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlEnum::~HF_IdlEnum() +{ +} + +void +HF_IdlEnum::Produce_byData( const client & i_ce ) const +{ + Dyn<HF_NaviSubRow> + pNaviSubRow( &make_Navibar(i_ce) ); + + HF_TitleTable + aTitle(CurOut()); + + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + + aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker); + aTitle.Produce_Title( StreamLock(200)() + << C_sCePrefix_Enum + << " " + << i_ce.LocalName() + << c_str ); + + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); + + dyn_ce_list + dpValues; + ary::idl::ifc_enum::attr::Get_Values(dpValues, i_ce); + if (*dpValues) + { + produce_Members( *dpValues, + C_sList_Values, + C_sList_Values_Label, + C_sList_ValueDetails, + C_sList_ValueDetails_Label ); + pNaviSubRow->SwitchOn(sli_ValuesSummary); + pNaviSubRow->SwitchOn(sli_ValueDetails); + } + pNaviSubRow->Produce_Row(); +} + +HF_NaviSubRow & +HF_IdlEnum::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeMainRow(i_ce); + + DYN HF_NaviSubRow & + ret = aNaviBar.Add_SubRow(); + ret.AddItem(C_sList_Values, C_sList_Values_Label, false); + ret.AddItem(C_sList_ValueDetails, C_sList_ValueDetails_Label, false); + + CurOut() << new Html::HorizontalLine(); + return ret; +} + +void +HF_IdlEnum::produce_MemberDetails( HF_SubTitleTable & o_table, + const client & i_ce) const +{ + HF_IdlEnumValue + aElement( Env(), o_table ); + aElement.Produce_byData(i_ce); +} diff --git a/autodoc/source/display/idl/hfi_enum.hxx b/autodoc/source/display/idl/hfi_enum.hxx new file mode 100644 index 000000000000..e0dc9b86aa94 --- /dev/null +++ b/autodoc/source/display/idl/hfi_enum.hxx @@ -0,0 +1,102 @@ +/************************************************************************* + * + * $RCSfile: hfi_enum.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:27 $ + * + * 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 ADC_DISPLAY_HFI_ENUM_HXX +#define ADC_DISPLAY_HFI_ENUM_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + + +class HF_IdlEnum : public HtmlFactory_Idl +{ + public: + HF_IdlEnum( + Environment & io_rEnv, + Xml::Element & o_rOut ); + virtual ~HF_IdlEnum(); + + void Produce_byData( + const client & ce ) const; + private: + HF_NaviSubRow & make_Navibar( + const client & ce ) const; + virtual void produce_MemberDetails( + HF_SubTitleTable & o_table, + const client & ce ) const; +}; + + + +// IMPLEMENTATION + + +extern const String + C_sCePrefix_Enum; + +#endif + + diff --git a/autodoc/source/display/idl/hfi_globalindex.cxx b/autodoc/source/display/idl/hfi_globalindex.cxx new file mode 100644 index 000000000000..b5ebd3b8687d --- /dev/null +++ b/autodoc/source/display/idl/hfi_globalindex.cxx @@ -0,0 +1,275 @@ +/************************************************************************* + * + * $RCSfile: hfi_globalindex.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:28 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_globalindex.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <cosv/template/tpltools.hxx> +#include <ary/idl/i_ce.hxx> +#include <ary/idl/i_module.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_navibar.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + + + +namespace +{ + +enum E_Types +{ + t_service = 0, + t_interface = 1, + t_struct = 2, + t_exception = 3, + t_enum = 4, + t_typedef = 5, + t_constantsgroup = 6, + t_property = 7, + t_function = 8, + t_structelement = 9, + t_enumvalue = 10, + t_constant = 11, + t_module = 12, + t_singleton = 13, + t_attribute = 14, + t_MAX +}; + +String G_sDummy; +uintt G_nDummy; + + +/* RC-Ids for IDL types (see reposy.cxx): + + Module 2000 + Interface 2001 + Function 2002 + Service 2003 + Property 2004 + + Enum 2005 + EnumValue 2006 + Typedef 2007 + Struct 2008 + StructElement 2009 + + Exception 2010 + ConstantGroup 2011 + Constant 2012 + Singleton 2013 + Attribute 2014 +*/ +const int C_nNumberOfIdlTypes = 15; +const char * C_sTypeNames[C_nNumberOfIdlTypes] = + { "module ", "interface ", "function ", "service ", "property ", + "enum ", "value ", "typedef ", "struct ", "field ", + "exception ", "constants group ", "constant ","singleton ", "attribute " + }; +const char * C_sOwnerNames[C_nNumberOfIdlTypes] = + { "module ", "module ", "interface ", "module ", "service ", + "module ", "enum ", "module ", "module ", "", // could be struct or exception + "module ", "module ", "constants group ", "module ", "interface " + }; + +const char C_cAlphabet[] = +"<a class=\"inverse\" href=\"index-1.html\"><B>A</B></a> <a class=\"inverse\" href=\"index-2.html\"><B>B</B></a> <a class=\"inverse\" href=\"index-3.html\"><B>C</B></a> <a class=\"inverse\" href=\"index-4.html\"><B>D</B></a> <a class=\"inverse\" href=\"index-5.html\"><B>E</B></a> " +"<a class=\"inverse\" href=\"index-6.html\"><B>F</B></a> <a class=\"inverse\" href=\"index-7.html\"><B>G</B></a> <a class=\"inverse\" href=\"index-8.html\"><B>H</B></a> <a class=\"inverse\" href=\"index-9.html\"><B>I</B></a> <a class=\"inverse\" href=\"index-10.html\"><B>J</B></a> " +"<a class=\"inverse\" href=\"index-11.html\"><B>K</B></a> <a class=\"inverse\" href=\"index-12.html\"><B>L</B></a> <a class=\"inverse\" href=\"index-13.html\"><B>M</B></a> <a class=\"inverse\" href=\"index-14.html\"><B>N</B></a> <a class=\"inverse\" href=\"index-15.html\"><B>O</B></a> " +"<a class=\"inverse\" href=\"index-16.html\"><B>P</B></a> <a class=\"inverse\" href=\"index-17.html\"><B>Q</B></a> <a class=\"inverse\" href=\"index-18.html\"><B>R</B></a> <a class=\"inverse\" href=\"index-19.html\"><B>S</B></a> <a class=\"inverse\" href=\"index-20.html\"><B>T</B></a> " +"<a class=\"inverse\" href=\"index-21.html\"><B>U</B></a> <a class=\"inverse\" href=\"index-22.html\"><B>V</B></a> <a class=\"inverse\" href=\"index-23.html\"><B>W</B></a> <a class=\"inverse\" href=\"index-24.html\"><B>X</B></a> <a class=\"inverse\" href=\"index-25.html\"><B>Y</B></a> " +"<a class=\"inverse\" href=\"index-26.html\"><B>Z</B></a>"; + +typedef std::vector<ary::idl::Ce_id> PageData; + +PageData G_PageData; + +} // end anonymous namespace + + +HF_IdlGlobalIndex::HF_IdlGlobalIndex( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlGlobalIndex::~HF_IdlGlobalIndex() +{ +} + +void +HF_IdlGlobalIndex::Produce_Page(ary::idl::alphabetical_index::E_Letter i_letter) const +{ + make_Navibar(); + + HF_TitleTable + aTitle(CurOut()); + aTitle.Produce_Title( StreamLock(100)() + << "Global Index " + << ( i_letter != ary::idl::alphabetical_index::non_alpha + ? char(int(i_letter)-'a'+'A') + : '_' ) + << c_str ); + + // Letters Index + aTitle.Add_Row() + << new Xml::XmlCode( + "<p align=\"center\"><a href=\"index-1.html\"><b>A</b></a> <a href=\"index-2.html\"><b>B</b></a> <a href=\"index-3.html\"><b>C</b></a> <a href=\"index-4.html\"><b>D</b></a> <a href=\"index-5.html\"><b>E</b></a> <a href=\"index-6.html\"><b>F</b></a> <a href=\"index-7.html\"><b>G</b></a> <a href=\"index-8.html\"><b>H</b></a> <a href=\"index-9.html\"><b>I</b></a> <a href=\"index-10.html\"><b>J</b></a>" + " <a href=\"index-11.html\"><b>K</b></a> <a href=\"index-12.html\"><b>L</b></a> <a href=\"index-13.html\"><b>M</b></a> <a href=\"index-14.html\"><b>N</b></a> <a href=\"index-15.html\"><b>O</b></a> <a href=\"index-16.html\"><b>P</b></a> <a href=\"index-17.html\"><b>Q</b></a> <a href=\"index-18.html\"><b>R</b></a> <a href=\"index-19.html\"><b>S</b></a> <a href=\"index-20.html\"><b>T</b></a>" + " <a href=\"index-21.html\"><b>U</b></a> <a href=\"index-22.html\"><b>V</b></a> <a href=\"index-23.html\"><b>W</b></a> <a href=\"index-24.html\"><b>X</b></a> <a href=\"index-25.html\"><b>Y</b></a> <a href=\"index-26.html\"><b>Z</b></a> <a href=\"index-27.html\"><b>_</b></a></p>" ); + + Out().Enter(CurOut() >> *new Html::DefList); + + csv::erase_container(G_PageData); + Env().Data().Get_IndexData(G_PageData, i_letter); + + static StringVector aModule_; + csv::erase_container(aModule_); + String sCeMain; + String sCeMember; + + const intt nDiff = intt(ary::idl::Module::class_id); + const int nIxModule = 0; + const int nIxField = 9; + + HF_IdlTypeText aLinker(Env(),HF_IdlTypeText::use_for_javacompatible_index); + + PageData::const_iterator itEnd = G_PageData.end(); + for ( PageData::const_iterator iter = G_PageData.begin(); + iter != itEnd; + ++iter ) + { + const client & rCe = Env().Data().Find_Ce(*iter); + if (NOT rCe.Owner().IsValid()) + return; // Omit global namespace. + const client & rOwner = Env().Data().Find_Ce(rCe.Owner()); + + Xml::Element & rDT = CurOut() >> *new Html::DefListTerm; + aLinker.Produce_IndexLink(rDT, rCe); + + rDT << " - "; + + int nIx = int(rCe.ClassId()-nDiff); + csv_assert(csv::in_range(0,nIx,15)); + rDT << C_sTypeNames[nIx] + << "in "; + if (nIx != nIxField) + { + rDT << C_sOwnerNames[nIx]; + } + else + { + uintt nOwnerIx = rOwner.ClassId()-nDiff; + rDT << C_sTypeNames[nOwnerIx]; + } + aLinker.Produce_IndexOwnerLink(rDT, rOwner); + CurOut() << new Html::DefListDefinition; + } // end for + + Out().Leave(); + CurOut() << new Html::HorizontalLine; +} + +void +HF_IdlGlobalIndex::make_Navibar() const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_IndexMainRow(); + + CurOut() << new Html::HorizontalLine(); +} + + +#if 0 +void +HF_IdlGlobalIndex::StoreString( const String & i_sName, + E_Types i_eType, + bool i_bUseOwner ) +{ + aText.seekp(0); + + aText << char('A'+char(i_eType)); + + aText << i_sName + << C_cSplit + << sCurModule; + if (i_bUseOwner) + { + aText << "*" + << sCurOwner; + } + + int nBegin = tolower(aText.c_str()[1]); + if (nBegin >= 'a' AND nBegin <= 'z') + aData[nBegin-'a'].push_back(aText.c_str()); + else + aData[C_nIndexUnderscore].push_back(aText.c_str()); +} + + +#endif // 0 + diff --git a/autodoc/source/display/idl/hfi_globalindex.hxx b/autodoc/source/display/idl/hfi_globalindex.hxx new file mode 100644 index 000000000000..21495fe8689a --- /dev/null +++ b/autodoc/source/display/idl/hfi_globalindex.hxx @@ -0,0 +1,94 @@ +/************************************************************************* + * + * $RCSfile: hfi_globalindex.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:29 $ + * + * 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 ADC_DISPLAY_HFI_GLOBALINDEX_HXX +#define ADC_DISPLAY_HFI_GLOBALINDEX_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS +#include <ary/idl/ip_2s.hxx> + + + +class HF_IdlGlobalIndex : public HtmlFactory_Idl +{ + public: + HF_IdlGlobalIndex( + Environment & io_rEnv, + Xml::Element & o_rOut ); + virtual ~HF_IdlGlobalIndex(); + + void Produce_Page( + ary::idl::alphabetical_index::E_Letter + i_letter ) const; + private: + void make_Navibar() const; +}; + + + +#endif + diff --git a/autodoc/source/display/idl/hfi_interface.cxx b/autodoc/source/display/idl/hfi_interface.cxx new file mode 100644 index 000000000000..90fb704093e7 --- /dev/null +++ b/autodoc/source/display/idl/hfi_interface.cxx @@ -0,0 +1,263 @@ +/************************************************************************* + * + * $RCSfile: hfi_interface.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:31 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_interface.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_function.hxx> +#include <ary/idl/ik_interface.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_navi_sub.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_method.hxx" +#include "hfi_navibar.hxx" +#include "hfi_property.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + +extern const String + C_sCePrefix_Interface("interface"); + +namespace +{ + +const String + C_sBaseInterface("Base Hierarchy"); +//const String +// C_sList_ExportingServices("Known Services which Export this Interface"); +//const String +// C_sList_ExportingServices_Link("Exporting Services"); +//const String +// C_sList_ExportingServices_Label("ExportingServices"); +const String + C_sList_Methods("Methods' Summary"); +const String + C_sList_Methods_Label("MethodsSummary"); +const String + C_sDetails_Methods("Methods' Details"); +const String + C_sDetails_Methods_Label("MethodsDetails"); + +const String + C_sList_Attributes("Attributes' Summary"); +const String + C_sList_Attributes_Label("AttributesSummary"); +const String + C_sList_AttributesDetails("Attributes' Details"); +const String + C_sList_AttributesDetails_Label("AttributesDetails"); + + + +enum E_SubListIndices +{ + sli_Methods = 0, + sli_MethodDetails = 1, + sli_AttributesSummary = 2, + sli_AttributesDetails = 3 +}; + +} //anonymous namespace + + + + +HF_IdlInterface::HF_IdlInterface( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut), + eCurProducedMembers(mem_none) +{ +} + +HF_IdlInterface::~HF_IdlInterface() +{ +} + +void +HF_IdlInterface::Produce_byData( const client & i_ce ) const +{ + Dyn<HF_NaviSubRow> + pNaviSubRow( &make_Navibar(i_ce) ); + + HF_TitleTable + aTitle(CurOut()); + + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker); + + aTitle.Produce_Title( StreamLock(200)() << C_sCePrefix_Interface + << " " + << i_ce.LocalName() + << c_str ); + produce_Bases(aTitle.Add_Row(),i_ce,C_sBaseInterface); + + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); + + dyn_ce_list dpFunctions; + ary::idl::ifc_interface::attr::Get_Functions(dpFunctions, i_ce); + + if ( *dpFunctions ) + { + eCurProducedMembers = mem_Functions; + + produce_Members( *dpFunctions, + C_sList_Methods, + C_sList_Methods_Label, + C_sDetails_Methods, + C_sDetails_Methods_Label ); + pNaviSubRow->SwitchOn(sli_Methods); + pNaviSubRow->SwitchOn(sli_MethodDetails); + } + + dyn_ce_list + dpAttributes; + ary::idl::ifc_interface::attr::Get_Attributes(dpAttributes, i_ce); + if (*dpAttributes) + { + eCurProducedMembers = mem_Attributes; + + produce_Members( *dpAttributes, + C_sList_Attributes, + C_sList_Attributes_Label, + C_sList_AttributesDetails, + C_sList_AttributesDetails_Label ); + pNaviSubRow->SwitchOn(sli_AttributesSummary); + pNaviSubRow->SwitchOn(sli_AttributesDetails); + } + eCurProducedMembers = mem_none; + + pNaviSubRow->Produce_Row(); +} + +HtmlFactory_Idl::type_id +HF_IdlInterface::inq_BaseOf( const client & i_ce ) const +{ + return ary::idl::ifc_interface::attr::Base(i_ce); +} + +DYN HF_NaviSubRow & +HF_IdlInterface::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeMainRow(i_ce); + + DYN HF_NaviSubRow & + ret = aNaviBar.Add_SubRow(); + ret.AddItem(C_sList_Methods, C_sList_Methods_Label, false); + ret.AddItem(C_sDetails_Methods, C_sDetails_Methods_Label, false); + ret.AddItem(C_sList_Attributes, C_sList_Attributes_Label, false); + ret.AddItem(C_sList_AttributesDetails, C_sList_AttributesDetails_Label, false); + + CurOut() << new Html::HorizontalLine(); + return ret; +} + +void +HF_IdlInterface::produce_MemberDetails( HF_SubTitleTable & o_table, + const client & i_ce ) const +{ + switch (eCurProducedMembers) + { + case mem_Functions: + break; + case mem_Attributes: + { + HF_IdlAttribute + aAttribute( Env(), o_table); + aAttribute.Produce_byData( i_ce ); + return; + }; + default: //Won't happen. + return; + } // end switch + + typedef ary::idl::ifc_function::attr funcAttr; + + HF_IdlMethod + aFunction( Env(), + o_table.Add_Row() + >> *new Html::TableCell + << new Html::ClassAttr(C_sCellStyle_MDetail) ); + + ary::Dyn_StdConstIterator<ary::idl::Parameter> + pParameters; + funcAttr::Get_Parameters(pParameters, i_ce); + + ary::Dyn_StdConstIterator<ary::idl::Type_id> + pExceptions; + funcAttr::Get_Exceptions(pExceptions, i_ce); + + aFunction.Produce_byData( i_ce.LocalName(), + funcAttr::ReturnType(i_ce), + *pParameters, + *pExceptions, + funcAttr::IsOneway(i_ce), + i_ce ); +} diff --git a/autodoc/source/display/idl/hfi_interface.hxx b/autodoc/source/display/idl/hfi_interface.hxx new file mode 100644 index 000000000000..a24cfd3967bf --- /dev/null +++ b/autodoc/source/display/idl/hfi_interface.hxx @@ -0,0 +1,123 @@ +/************************************************************************* + * + * $RCSfile: hfi_interface.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:32 $ + * + * 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 ADC_DISPLAY_HFI_INTERFACE_HXX +#define ADC_DISPLAY_HFI_INTERFACE_HXX + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS +#include <ary/idl/i_language.hxx> +#include <ary_i/codeinf2.hxx> + + +class HF_NaviSubRow; +class HF_SubTitleTable; + + +class HF_IdlInterface : public HtmlFactory_Idl +{ + public: + HF_IdlInterface( + Environment & io_rEnv, // The CurDirecory() is the one of the here displayed Module. + Xml::Element & o_rOut ); + virtual ~HF_IdlInterface(); + + void Produce_byData( + const client & i_ce ) const; + private: + // Interface HtmlFactory_Idl: + virtual type_id inq_BaseOf( + const client & i_ce ) const; + // Locals + DYN HF_NaviSubRow & make_Navibar( + const client & i_ce ) const; + + virtual void produce_MemberDetails( + HF_SubTitleTable & o_table, + const client & ce ) const; + + // Locals + enum E_CurProducedMembers + { + mem_none, + mem_Functions, + mem_Attributes + }; + + // DATA + mutable E_CurProducedMembers + eCurProducedMembers; +}; + + + +// IMPLEMENTATION + +extern const String + C_sCePrefix_Interface; + + + +#endif diff --git a/autodoc/source/display/idl/hfi_linklist.cxx b/autodoc/source/display/idl/hfi_linklist.cxx new file mode 100644 index 000000000000..95401bd66ec7 --- /dev/null +++ b/autodoc/source/display/idl/hfi_linklist.cxx @@ -0,0 +1,409 @@ +/************************************************************************* + * + * $RCSfile: hfi_linklist.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:33 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_linklist.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/i_gate.hxx> +#include <ary/idl/ip_ce.hxx> +#include <ary/idl/ip_type.hxx> +#include <ary_i/codeinf2.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_doc.hxx" +#include "hfi_tag.hxx" +#include "hfi_typetext.hxx" +#include "hi_ary.hxx" +#include "hi_env.hxx" + + + + +//******************* HF_CommentedLink_Table **********************************// + +HF_CommentedLink_Table::HF_CommentedLink_Table( Environment & io_rEnv, + Xml::Element & o_rOut, + const String & i_sTitle, + const String & i_sLabel, + bool i_bBorder ) + : HtmlFactory_Idl(io_rEnv,&o_rOut), + pTable( new Html::Table( (i_bBorder ? "1" : "0"), "100%", "5", "0") ), + pCurLinkColumn(0), + pCurCommentColumn(0) +{ + CurOut() + >> *new Html::Label(i_sLabel) + << new Html::LineBreak; + CurOut() + << pTable; +// HF_SubTitle aTitle(*pTable); +// aTitle.Produce_it(i_sTitle); +} + +HF_CommentedLink_Table::~HF_CommentedLink_Table() +{ +} + +void +HF_CommentedLink_Table::Add_Line() +{ + Html::TableRow & + rRow = pTable->AddRow(); + + pCurLinkColumn = & (rRow.AddCell() + << new Html::WidthAttr("30%") + << new Xml::AnAttribute("valign","top") ); + pCurCommentColumn = & rRow.AddCell(); + +} + +Xml::Element & +HF_CommentedLink_Table::Cur_LinkColumn() +{ + csv_assert(pCurLinkColumn != 0); + return *pCurLinkColumn; +} + +Xml::Element & +HF_CommentedLink_Table::Cur_CommentColumn() +{ + csv_assert(pCurCommentColumn != 0); + return *pCurCommentColumn; +} + + +//******************* HF_MemberTable **********************************// + +HF_MemberTable::HF_MemberTable( Environment & io_rEnv, + Xml::Element & o_rOut, + const String & i_sTitle, + const String & i_sLabel, + bool i_bInline ) + : HtmlFactory_Idl(io_rEnv,&o_rOut), + pTable( new Html::Table("1", "100%", "5", "0") ), + pCurDeclaration(0), + pCurDescription(0), + bInline(i_bInline) +{ + CurOut() + >> *new Html::Label(i_sLabel) + << new Html::LineBreak; + CurOut() + << pTable; +// HF_SubTitle aTitle(*pTable); +// aTitle.Produce_it(i_sTitle); +} + +HF_MemberTable::~HF_MemberTable() +{ +} + +void +HF_MemberTable::Add_Line() +{ + if (bInline) + { + Html::TableRow & rRow = pTable->AddRow(); + + pCurDeclaration = &( rRow.AddCell() + << new Xml::AnAttribute("valign","top") + << new Html::WidthAttr("30%") ); + pCurDescription = & rRow.AddCell(); + } + else + { + Html::DefList * + pMemberSpace = new Html::DefList; + *pMemberSpace + << new Html::ClassAttr("member"); + + pTable->AddRow().AddCell() << pMemberSpace; + + pCurDeclaration = + & ( *pMemberSpace + >> *new Html::DefListTerm + << new Html::ClassAttr("member") ); + pCurDescription = + & ( *pMemberSpace + >> *new Html::DefListDefinition() + << new Html::ClassAttr("member") ); + } +} + +Xml::Element & +HF_MemberTable::Cur_Declaration() +{ + csv_assert(pCurDeclaration != 0); + return *pCurDeclaration; +} + +Xml::Element & +HF_MemberTable::Cur_Description() +{ + csv_assert(pCurDescription != 0); + return *pCurDescription; +} + + + +//******************* HF_IdlLinkList **********************************// + +HF_IdlLinkList::HF_IdlLinkList( Environment & io_rEnv, + Xml::Element * o_pOut ) + : HtmlFactory_Idl(io_rEnv,o_pOut) +{ +} + +HF_IdlLinkList::~HF_IdlLinkList() +{ +} + +void +HF_IdlLinkList::Produce_NamespaceMembers( const String & i_sTitle, + const String & i_sLabel, + const std::vector<ary::idl::Ce_id> & i_rList, + bool i_bNestedNamespaces ) const +{ + HF_CommentedLink_Table + aTableMaker( Env(), CurOut(), + i_sTitle, i_sLabel, + true ); + + std::vector<ary::idl::Ce_id>::const_iterator itEnd = i_rList.end(); + for ( std::vector<ary::idl::Ce_id>::const_iterator it = i_rList.begin(); + it != itEnd; + ++it ) + { + static String sEntryName; + static String sEntryLink; + const ce_info * + pDocu = 0; + Get_EntryData_NamespaceMembers( sEntryName, sEntryLink, pDocu, *it, i_bNestedNamespaces ); + aTableMaker.Add_Line(); + + aTableMaker.Cur_LinkColumn() + >> *new Html::Link(sEntryLink) + << sEntryName; + + if ( pDocu != 0 ) + { + HF_IdlShortDocu + aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() ); + aTextDisplay.Produce_byData( pDocu ); + } + } // end for +} + +void +HF_IdlLinkList::Produce_GlobalLinks( const String & i_sTitle, + const String & i_sLabel, + ce_list & i_rList ) const +{ + HF_CommentedLink_Table + aTableMaker( Env(), CurOut(), + i_sTitle, i_sLabel, + true ); + + for ( ; i_rList; ++i_rList ) + { + aTableMaker.Add_Line(); + HF_IdlTypeText + aLinkText( Env(), aTableMaker.Cur_LinkColumn(), true ); + aLinkText.Produce_byData(*i_rList); + + const ce_info * + pDocu = Get_EntryDocu(*i_rList); + if ( pDocu != 0 ) + { + HF_IdlShortDocu + aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() ); + aTextDisplay.Produce_byData( pDocu, *i_rList ); + } + } +} + +void +HF_IdlLinkList::Produce_GlobalCommentedLinks( const String & i_sTitle, + const String & i_sLabel, + comref_list & i_rList ) const +{ + HF_CommentedLink_Table + aTableMaker( Env(), CurOut(), + i_sTitle, i_sLabel, + true ); +/* + for ( ; i_rList; ++i_rList ) + { + aTableMaker.Add_Line(); + HF_IdlTypeText + aLinkText( Env(), aTableMaker.Cur_LinkColumn(), true ); + aLinkText.Produce_byData( (*i_rList).first ); + + HF_DocEntryList + aDocList( aTableMaker.Cur_CommentColumn() ); + if ( (*i_rList).second != 0 ) + { + HF_IdlDocu + aDocuDisplay( Env(), aDocList ); + aDocuDisplay.Produce_byData( (*i_rList).second ); + } + else + { + const ce_info * + pShort = Get_EntryDocu( + Env().Gate().Types().Search_CeRelatedTo( + (*i_rList).first) ); + if ( pShort != 0 ) + { + if (pShort->IsDeprecated()) + { + aDocList.Produce_Term() + << "[ DEPRECATED ]"; + } + if (pShort->IsOptional()) + { + aDocList.Produce_Term() + << "[ OPTIONAL ]"; + } + + aDocList.Produce_Term() + << "Description"; + + HF_IdlDocuTextDisplay + aShortDisplay( Env(), &aDocList.Produce_Definition() ); + aShortDisplay.Set_CurScopeTo( + Env().Gate().Types().Search_CeRelatedTo((*i_rList).first) ); + pShort->Short().DisplayAt(aShortDisplay); + } + } + } +*/ +} + +void +HF_IdlLinkList::Produce_MemberLinks( const String & i_sTitle, + const String & i_sLabel, + ce_list & i_rList ) const +{ + HF_CommentedLink_Table + aTableMaker( Env(), CurOut(), + i_sTitle, i_sLabel, + true ); + +/* + for ( ; i_rList; ++i_rList ) + { + const ary::idl::CodeEntity & + rCe = Env().Gate().Ces().Find_Ce(*i_rList); + + aTableMaker.Add_Line(); + aTableMaker.Cur_LinkColumn() + >> *new Html::Link( + StreamLock(200)() << "#" << rCe.LocalName() << c_str) + << rCe.LocalName(); + + const ce_info * + pDocu = rCe.Docu(); + if ( pDocu != 0 ) + { + HF_IdlShortDocu + aTextDisplay(Env(), aTableMaker.Cur_CommentColumn() ); + aTextDisplay.Produce_byData( *pDocu ); + } + } // end for +*/ +} + +void +HF_IdlLinkList::Get_EntryData_NamespaceMembers( + String & o_sEntryName, + String & o_sEntryLink, + const ce_info * & o_pDocu, + ce_id i_nMemberId, + bool i_bIsNestedNamespace ) const +{ + const ary::idl::CodeEntity & + rCe = Env().Data().Find_Ce(i_nMemberId); + + o_sEntryName = rCe.LocalName(); + o_sEntryLink = StreamLock(200)() << rCe.LocalName() + << ( i_bIsNestedNamespace + ? "/module-ix" + : "" ) + << ".html" + << c_str; + o_pDocu = rCe.Docu(); +} + +const ary::info::CodeInformation * +HF_IdlLinkList::Get_EntryDocu(ce_id i_nMemberId) const +{ + if (i_nMemberId.IsValid()) + return Env().Data().Find_Ce(i_nMemberId).Docu(); + else + return 0; +} + + diff --git a/autodoc/source/display/idl/hfi_linklist.hxx b/autodoc/source/display/idl/hfi_linklist.hxx new file mode 100644 index 000000000000..e06fa95171c7 --- /dev/null +++ b/autodoc/source/display/idl/hfi_linklist.hxx @@ -0,0 +1,179 @@ +/************************************************************************* + * + * $RCSfile: hfi_linklist.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:34 $ + * + * 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 ADC_DISPLAY_HFI_LINKLIST_HXX +#define ADC_DISPLAY_HFI_LINKLIST_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS +#include <ary/idl/i_language.hxx> +#include <ary_i/ci_text2.hxx> +#include <ary_i/codeinf2.hxx> + + + + +class HF_CommentedLink_Table : public HtmlFactory_Idl +{ + public: + HF_CommentedLink_Table( + Environment & io_rEnv, + Xml::Element & o_rOut, + const String & i_sTitle, + const String & i_sLabel, + bool i_bBorder = false ); + virtual ~HF_CommentedLink_Table(); + + void Add_Line(); + Xml::Element & Cur_LinkColumn(); + Xml::Element & Cur_CommentColumn(); + + private: + // DATA + Html::Table * pTable; + Xml::Element * pCurLinkColumn; + Xml::Element * pCurCommentColumn; +}; + +class HF_MemberTable : public HtmlFactory_Idl +{ + public: + HF_MemberTable( + Environment & io_rEnv, + Xml::Element & o_rOut, + const String & i_sTitle, + const String & i_sLabel, + bool i_bInline = false ); + virtual ~HF_MemberTable(); + + void Add_Line(); + Xml::Element & Cur_Declaration(); + Xml::Element & Cur_Description(); + + private: + // DATA + Html::Table * pTable; + Xml::Element * pCurDeclaration; + Xml::Element * pCurDescription; + bool bInline; +}; + + + + +class HF_IdlLinkList : public HtmlFactory_Idl +{ + public: + typedef ary::StdConstIterator<ary::idl::CommentedReference> + comref_list; + + HF_IdlLinkList( + Environment & io_rEnv, + Xml::Element * o_pOut ); + virtual ~HF_IdlLinkList(); + + void Produce_NamespaceMembers( + const String & i_sTitle, + const String & i_sLabel, + const std::vector<ary::idl::Ce_id> & + i_rList, + bool i_bNestedNamespaces = false ) const; + void Produce_GlobalLinks( + const String & i_sTitle, + const String & i_sLabel, + ce_list & i_rList ) const; + void Produce_GlobalCommentedLinks( + const String & i_sTitle, + const String & i_sLabel, + comref_list & i_rList ) const; + void Produce_MemberLinks( + const String & i_sTitle, + const String & i_sLabel, + ce_list & i_rList ) const; + private: + void Get_EntryData_NamespaceMembers( + String & o_sEntryName, + String & o_sEntryLink, + const ce_info * & o_pDocuText, + ce_id i_nMemberId, + bool i_bIsNestedNamespace ) const; + const ce_info * Get_EntryDocu( + ce_id i_nMemberId ) const; +}; + + + + + + + + +// IMPLEMENTATION + + +#endif + + diff --git a/autodoc/source/display/idl/hfi_method.cxx b/autodoc/source/display/idl/hfi_method.cxx new file mode 100644 index 000000000000..88c044c2af30 --- /dev/null +++ b/autodoc/source/display/idl/hfi_method.cxx @@ -0,0 +1,253 @@ +/************************************************************************* + * + * $RCSfile: hfi_method.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:35 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_method.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_exception.hxx> +#include <ary/idl/i_param.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_funcdecl.hxx> +#include "hfi_doc.hxx" +#include "hfi_globalindex.hxx" +#include "hfi_typetext.hxx" + + + + + +HF_IdlMethod::HF_IdlMethod( Environment & io_rEnv, + Xml::Element & o_cell) + : HtmlFactory_Idl(io_rEnv,&o_cell) +{ +} + + +HF_IdlMethod::~HF_IdlMethod() +{ +} + + +void +HF_IdlMethod::Produce_byData( const String & i_sName, + type_id i_nReturnType, + param_list & i_rParams, + type_list & i_rExceptions, + bool i_bOneway, + const client & i_ce ) const +{ + CurOut() + >> *new Html::Label(i_sName) + << new Html::ClassAttr(C_sMemberTitle) + << i_sName; + enter_ContentCell(); + write_Declaration( i_sName, + i_nReturnType, + i_rParams, + i_rExceptions, + i_bOneway ); + CurOut() << new Html::HorizontalLine; + write_Docu(CurOut(), i_ce); + leave_ContentCell(); +} + +void +HF_IdlMethod::write_Declaration( const String & i_sName, + type_id i_nReturnType, + param_list & i_rParams, + type_list & i_rExceptions, + bool i_bOneway ) const +{ + HF_FunctionDeclaration + aDecl(CurOut()) ; + Xml::Element & + front = aDecl.Add_ReturnLine(); + + // Front: + if (i_bOneway) + front << "[oneway] "; + HF_IdlTypeText + aReturn(Env(), front,true); + aReturn.Produce_byData(i_nReturnType); + front + << new Html::LineBreak + >> *new Html::Bold + << i_sName; + + // Main line: + Xml::Element & + types = aDecl.Types(); + Xml::Element & + names = aDecl.Names(); + bool bParams = bool(i_rParams); + if (bParams) + { + front + << "("; + HF_IdlTypeText + aType( Env(), types, true ); + + write_Param( aType, names, (*i_rParams) ); + + for (++i_rParams; i_rParams; ++i_rParams) + { + types + << new Html::LineBreak; + names + << "," + << new Html::LineBreak; + write_Param( aType, names, (*i_rParams) ); + } // end for + + names + << " )"; + } + else + front + << "()"; + + + if (i_rExceptions) + { + Xml::Element & + rExcOut = aDecl.Add_RaisesLine("raises", NOT bParams); + HF_IdlTypeText + aExc(Env(), rExcOut, true); + aExc.Produce_byData(*i_rExceptions); + + for (++i_rExceptions; i_rExceptions; ++i_rExceptions) + { + rExcOut + << "," + << new Html::LineBreak; + aExc.Produce_byData(*i_rExceptions); + } // end for + + rExcOut << " );"; + } + else + { + if (bParams) + aDecl.Names() << ";"; + else + aDecl.Front() << ";"; + } +} + +void +HF_IdlMethod::write_Param( HF_IdlTypeText & o_type, + Xml::Element & o_names, + const ary::idl::Parameter & i_param ) const +{ + switch ( i_param.Direction() ) + { + case ary::idl::param_in: + o_type.CurOut() << "[in] "; + break; + case ary::idl::param_out: + o_type.CurOut() << "[out] "; + break; + case ary::idl::param_inout: + o_type.CurOut() << "[inout] "; + break; + } // end switch + + o_type.Produce_byData( i_param.Type() ); + o_names + << i_param.Name(); +} + + +const String sContentBorder("0"); +const String sContentWidth("96%"); +const String sContentPadding("5"); +const String sContentSpacing("0"); + +const String sBgWhite("#ffffff"); +const String sCenter("center"); + +void +HF_IdlMethod::enter_ContentCell() const +{ + + Xml::Element & + rContentCell = CurOut() + >> *new Html::Table( sContentBorder, + sContentWidth, + sContentPadding, + sContentSpacing ) + << new Html::BgColorAttr(sBgWhite) + << new Html::AlignAttr(sCenter) + >> *new Html::TableRow + >> *new Html::TableCell; + Out().Enter(rContentCell); +} + + +void +HF_IdlMethod::leave_ContentCell() const +{ + Out().Leave(); +} + diff --git a/autodoc/source/display/idl/hfi_method.hxx b/autodoc/source/display/idl/hfi_method.hxx new file mode 100644 index 000000000000..4748a6c70df4 --- /dev/null +++ b/autodoc/source/display/idl/hfi_method.hxx @@ -0,0 +1,129 @@ + /************************************************************************* + * + * $RCSfile: hfi_method.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:36 $ + * + * 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 ADC_DISPLAY_HFI_METHOD_HXX +#define ADC_DISPLAY_HFI_METHOD_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS +#include <ary/idl/i_param.hxx> +#include <ary_i/codeinf2.hxx> +typedef ary::info::CodeInformation CodeInfo; +#include "hfi_linklist.hxx" + + + +namespace csi +{ + namespace idl + { + class Parameter; + } +} +class HF_IdlTypeText; + +class HF_IdlMethod : public HtmlFactory_Idl +{ + public: + typedef ary::StdConstIterator<ary::idl::Parameter> param_list; + + HF_IdlMethod( + Environment & io_rEnv, + Xml::Element & o_cell ); + virtual ~HF_IdlMethod(); + + void Produce_byData( + const String & i_sName, + type_id i_nReturnType, + param_list & i_rParams, + type_list & i_rExceptions, + bool i_bOneway, + const client & i_ce ) const; + private: + void write_Declaration( + const String & i_sName, + type_id i_nReturnType, + param_list & i_rParams, + type_list & i_rExceptions, + bool i_bOneway ) const; + void write_Param( + HF_IdlTypeText & o_type, + Xml::Element & o_names, + const ary::idl::Parameter & + i_param ) const; + void enter_ContentCell() const; + void leave_ContentCell() const; +}; + + + +// IMPLEMENTATION + + + +#endif + + diff --git a/autodoc/source/display/idl/hfi_module.cxx b/autodoc/source/display/idl/hfi_module.cxx new file mode 100644 index 000000000000..7897f9fcbd1d --- /dev/null +++ b/autodoc/source/display/idl/hfi_module.cxx @@ -0,0 +1,331 @@ +/************************************************************************* + * + * $RCSfile: hfi_module.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:36 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_module.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/i_module.hxx> +#include <ary/idl/ik_module.hxx> +#include <ary_i/codeinf2.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_navi_sub.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_doc.hxx" +#include "hfi_navibar.hxx" +#include "hfi_tag.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + +extern const String + C_sCePrefix_Module("module"); + +namespace +{ + +const String + C_sList_NestedModules("Nested Modules"); +const String + C_sList_NestedModules_Label("NestedModules"); +const String + C_sList_Services("Services"); +const String + C_sList_Singletons("Singletons"); +const String + C_sList_Interfaces("Interfaces"); +const String + C_sList_Structs("Structs"); +const String + C_sList_Exceptions("Exceptions"); +const String + C_sList_Enums("Enums"); +const String + C_sList_Typedefs("Typedefs"); +const String + C_sList_ConstGroups("Constant Groups"); +const String + C_sList_ConstGroups_Label("ConstantGroups"); + + +enum E_SubListIndices +{ // In case of changes, also adapt make_Navibar() !! + sli_NestedModules = 0, + sli_Services = 1, + sli_Singletons = 2, + sli_Interfaces = 3, + sli_Structs = 4, + sli_Exceptions = 5, + sli_Enums = 6, + sli_Typedefs = 7, + sli_ConstGroups = 8 +}; + +} //anonymous namespace + + +HF_IdlModule::HF_IdlModule( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlModule::~HF_IdlModule() +{ +} + +typedef ary::idl::ifc_module::attr ModuleAttr; + + +void +HF_IdlModule::Produce_byData( const client & i_ce ) const +{ + Dyn<HF_NaviSubRow> + pNaviSubRow( &make_Navibar(i_ce) ); + + HF_TitleTable + aTitle(CurOut()); + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + + if ( Env().CurPosition().Depth() > 0 ) + { + aNameChain.Produce_CompleteChain_forModule(Env().CurPosition(), nameChainLinker); + + aTitle.Produce_Title( StreamLock(200)() + << C_sCePrefix_Module + << " " + << i_ce.LocalName() + << c_str ); + } + else + { + aTitle.Produce_Title( "Global Module" ); + } + + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); + + + // Write children lists: + ce_ptr_list aNestedModules; + ce_ptr_list aServices; + ce_ptr_list aInterfaces; + ce_ptr_list aStructs; + ce_ptr_list aExceptions; + ce_ptr_list aEnums; + ce_ptr_list aTypedefs; + ce_ptr_list aConstantGroups; + ce_ptr_list aSingletons; + + ModuleAttr::Get_AllChildrenSeparated( + aNestedModules, + aServices, + aInterfaces, + aStructs, + aExceptions, + aEnums, + aTypedefs, + aConstantGroups, + aSingletons, + Env().Data().Ces(), + i_ce ); + + // Has this to be in the order of enum E_SubListIndices ??? + if (produce_ChildList(C_sList_NestedModules, C_sList_NestedModules_Label, aNestedModules )) + pNaviSubRow->SwitchOn(sli_NestedModules); + if (produce_ChildList(C_sList_Services, C_sList_Services, aServices)) + pNaviSubRow->SwitchOn(sli_Services); + if (produce_ChildList(C_sList_Singletons, C_sList_Singletons, aSingletons)) + pNaviSubRow->SwitchOn(sli_Singletons); + if (produce_ChildList(C_sList_Interfaces, C_sList_Interfaces, aInterfaces)) + pNaviSubRow->SwitchOn(sli_Interfaces); + if (produce_ChildList(C_sList_Structs, C_sList_Structs, aStructs)) + pNaviSubRow->SwitchOn(sli_Structs); + if (produce_ChildList(C_sList_Exceptions, C_sList_Exceptions, aExceptions)) + pNaviSubRow->SwitchOn(sli_Exceptions); + if (produce_ChildList(C_sList_Enums, C_sList_Enums, aEnums)) + pNaviSubRow->SwitchOn(sli_Enums); + if (produce_ChildList(C_sList_Typedefs, C_sList_Typedefs, aTypedefs)) + pNaviSubRow->SwitchOn(sli_Typedefs); + if (produce_ChildList(C_sList_ConstGroups, C_sList_ConstGroups_Label, aConstantGroups)) + pNaviSubRow->SwitchOn(sli_ConstGroups); + pNaviSubRow->Produce_Row(); +} + +DYN HF_NaviSubRow & +HF_IdlModule::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_ModuleMainRow(i_ce); + + DYN HF_NaviSubRow & + ret = aNaviBar.Add_SubRow(); + + // Has to be in the order of E_SubListIndices: + ret.AddItem(C_sList_NestedModules, C_sList_NestedModules_Label, false); + ret.AddItem(C_sList_Services, C_sList_Services, false); + ret.AddItem(C_sList_Singletons, C_sList_Singletons, false); + ret.AddItem(C_sList_Interfaces, C_sList_Interfaces, false); + ret.AddItem(C_sList_Structs, C_sList_Structs, false); + ret.AddItem(C_sList_Exceptions, C_sList_Exceptions, false); + ret.AddItem(C_sList_Enums, C_sList_Enums, false); + ret.AddItem(C_sList_Typedefs, C_sList_Typedefs, false); + ret.AddItem(C_sList_ConstGroups, C_sList_ConstGroups_Label, false); + + CurOut() << new Html::HorizontalLine(); + return ret; +} + +bool +HF_IdlModule::produce_ChildList( const String & i_sName, + const String & i_sLabel, + const ce_ptr_list & i_list ) const +{ + if ( i_list.size() == 0 ) + return false; + + HF_SubTitleTable + aTable( CurOut(), + i_sLabel, + i_sName, + 2 ); + + ce_ptr_list::const_iterator + itEnd = i_list.end(); + for ( ce_ptr_list::const_iterator it = i_list.begin(); + it != itEnd; + ++it ) + { + Xml::Element & + rRow = aTable.Add_Row(); + produce_Link(rRow, *it); + produce_LinkDoc(rRow, *it); + } // end for + + return true; +} + +void +HF_IdlModule::produce_Link( Xml::Element & o_row, + const client * i_ce ) const +{ + csv_assert(i_ce != 0); + Xml::Element & + rCell = o_row + >> *new Html::TableCell + << new Html::ClassAttr(C_sCellStyle_SummaryLeft); + + if (i_ce->ClassId() != ary::idl::Module::class_id) + { + HF_IdlTypeText + aText(Env(), rCell, true); + aText.Produce_byData(i_ce->CeId()); + } + else + { + StreamLock slBuf(100); + rCell + >> *new Html::Link( slBuf() << i_ce->LocalName() + << "/module-ix.html" + << c_str ) + << i_ce->LocalName(); + } +} + +void +HF_IdlModule::produce_LinkDoc( Xml::Element & o_row, + const client * i_ce ) const +{ + csv_assert(i_ce != 0); + + // We need the cell in any case, because, the rendering may be hurt else. + Xml::Element & + rCell = o_row + >> *new Html::TableCell + << new Html::ClassAttr(C_sCellStyle_SummaryRight); + + const client & + rCe = *i_ce; + const ce_info * + pShort = rCe.Docu(); + if ( pShort == 0 ) + return; + + + if (pShort->IsDeprecated()) + { + rCell << "[ DEPRECATED ]" << new Html::LineBreak; + } + if (pShort->IsOptional()) + { + rCell << "[ OPTIONAL ]" << new Html::LineBreak; + } + + HF_IdlDocuTextDisplay + aShortDisplay(Env(), &rCell, *i_ce); + pShort->Short().DisplayAt(aShortDisplay); +} diff --git a/autodoc/source/display/idl/hfi_module.hxx b/autodoc/source/display/idl/hfi_module.hxx new file mode 100644 index 000000000000..df6becb6cb7b --- /dev/null +++ b/autodoc/source/display/idl/hfi_module.hxx @@ -0,0 +1,117 @@ +/************************************************************************* + * + * $RCSfile: hfi_module.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14: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 ADC_DISPLAY_HFI_MODULE_HXX +#define ADC_DISPLAY_HFI_MODULE_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + + +class HF_NaviSubRow; + +class HF_IdlModule : public HtmlFactory_Idl +{ + public: + HF_IdlModule( + Environment & io_rEnv, // The CurDirecory() is the one of the here displayed Module. + Xml::Element & o_rOut ); + virtual ~HF_IdlModule(); + + void Produce_byData( + const client & i_ce ) const; + private: + typedef std::vector< const ary::idl::CodeEntity* > ce_ptr_list; + + DYN HF_NaviSubRow & make_Navibar( + const client & i_ce ) const; + bool produce_ChildList( + const String & i_sName, + const String & i_sLabel, + const ce_ptr_list & i_list ) const; + void produce_Link( + Xml::Element & o_row, + const client * i_ce ) const; + void produce_LinkDoc( + Xml::Element & o_row, + const client * i_ce ) const; +}; + + + +// IMPLEMENTATION + + +extern const String + C_sCePrefix_Module; + + + + + +#endif + + diff --git a/autodoc/source/display/idl/hfi_navibar.cxx b/autodoc/source/display/idl/hfi_navibar.cxx new file mode 100644 index 000000000000..a60fec090c17 --- /dev/null +++ b/autodoc/source/display/idl/hfi_navibar.cxx @@ -0,0 +1,239 @@ +/************************************************************************* + * + * $RCSfile: hfi_navibar.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:38 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_navibar.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <toolkit/hf_navi_main.hxx> +#include <toolkit/hf_navi_sub.hxx> +#include "hfi_interface.hxx" +#include "hfi_module.hxx" +#include "hfi_service.hxx" +#include "hi_linkhelper.hxx" + + +extern const String + C_sLocalManualLinks("#devmanual"); + + +const String C_sTop = "Overview"; +const String C_sModule = "Module"; +const String C_sUse = "Use"; +const String C_sManual = "Manual"; +const String C_sIndex = "Index"; + + + + +HF_IdlNavigationBar::HF_IdlNavigationBar( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlNavigationBar::~HF_IdlNavigationBar() +{ +} + +void +HF_IdlNavigationBar::Produce_CeMainRow( const client & i_ce ) +{ + HF_NaviMainRow + aNaviMain( CurOut() ); + + StreamLock aLink(500); + StreamStr & rLink = aLink(); + + Env().Get_LinkTo( rLink.reset(), + Env().OutputTree().Overview() ); + aNaviMain.Add_StdItem( C_sTop, rLink.c_str() ); + + Env().Get_LinkTo( rLink.reset(), + Env().Linker().PositionOf_CurModule() ); + aNaviMain.Add_StdItem( C_sModule, rLink.c_str() ); + + Env().Get_LinkTo( rLink.reset(), + Env().Linker().PositionOf_CurXRefs(i_ce.LocalName()) ); + aNaviMain.Add_StdItem( C_sUse, rLink.c_str() ); + + + const StringVector & + rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual(); + if (rManualDescrs.size() == 1) + { + aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() )); + } + else if (rManualDescrs.size() > 1) + { + aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks); + } + else + { + aNaviMain.Add_NoneItem( C_sManual ); + } + + Env().Get_LinkTo( rLink.reset(), + Env().Linker().PositionOf_Index() ); + aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() ); + + aNaviMain.Produce_Row(); +} + +void +HF_IdlNavigationBar::Produce_CeXrefsMainRow( const client & i_ce ) +{ + HF_NaviMainRow + aNaviMain( CurOut() ); + + StreamLock aLink(500); + StreamStr & rLink = aLink(); + + Env().Get_LinkTo( rLink.reset(), + Env().OutputTree().Overview() ); + aNaviMain.Add_StdItem( C_sTop, rLink.c_str() ); + + Env().Get_LinkTo( rLink.reset(), + Env().Linker().PositionOf_CurModule() ); + aNaviMain.Add_StdItem( C_sModule, rLink.c_str() ); + + aNaviMain.Add_SelfItem( C_sUse ); + aNaviMain.Add_NoneItem( C_sManual ); + + Env().Get_LinkTo( rLink.reset(), + Env().Linker().PositionOf_Index() ); + aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() ); + + aNaviMain.Produce_Row(); +} + +void +HF_IdlNavigationBar::Produce_ModuleMainRow( const client & i_ce ) +{ + HF_NaviMainRow + aNaviMain( CurOut() ); + + StreamLock aLink(500); + StreamStr & rLink = aLink(); + + Env().Get_LinkTo( rLink.reset(), + Env().OutputTree().Overview() ); + aNaviMain.Add_StdItem( C_sTop, rLink.c_str() ); + + aNaviMain.Add_SelfItem( C_sModule ); + + aNaviMain.Add_NoneItem( C_sUse ); + + const StringVector & + rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual(); + if (rManualDescrs.size() == 1) + { + aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() )); + } + else if (rManualDescrs.size() > 1) + { + aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks); + } + else + { + aNaviMain.Add_NoneItem( C_sManual ); + } + + Env().Get_LinkTo( rLink.reset(), + Env().Linker().PositionOf_Index() ); + aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() ); + + aNaviMain.Produce_Row(); +} + +void +HF_IdlNavigationBar::Produce_IndexMainRow() +{ + HF_NaviMainRow + aNaviMain( CurOut() ); + + StreamLock aLink(500); + StreamStr & rLink = aLink(); + + Env().Get_LinkTo( rLink.reset(), + Env().OutputTree().Overview() ); + aNaviMain.Add_StdItem( C_sTop, rLink.c_str() ); + + aNaviMain.Add_NoneItem( C_sModule ); + aNaviMain.Add_NoneItem( C_sUse ); + aNaviMain.Add_NoneItem( C_sManual ); + + aNaviMain.Add_SelfItem( C_sIndex ); + + aNaviMain.Produce_Row(); + + CurOut() << new Html::HorizontalLine(); +} + +DYN HF_NaviSubRow & +HF_IdlNavigationBar::Add_SubRow() +{ + return *new HF_NaviSubRow( CurOut() ); +} + diff --git a/autodoc/source/display/idl/hfi_navibar.hxx b/autodoc/source/display/idl/hfi_navibar.hxx new file mode 100644 index 000000000000..b5f659769f39 --- /dev/null +++ b/autodoc/source/display/idl/hfi_navibar.hxx @@ -0,0 +1,115 @@ +/************************************************************************* + * + * $RCSfile: hfi_navibar.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:38 $ + * + * 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 ADC_DISPLAY_HFI_NAVIBAR_HXX +#define ADC_DISPLAY_HFI_NAVIBAR_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include "hi_factory.hxx" + // PARAMETERS + +namespace ary +{ +namespace idl +{ +class CodeEntity; +} +} + + +class HF_NaviSubRow; + +/** @resp + Creates a navigation bar for an IDL HTML documentation page. +*/ +class HF_IdlNavigationBar : public HtmlFactory_Idl +{ + public: + HF_IdlNavigationBar( + HtmlEnvironment_Idl & + io_rEnv, + Xml::Element & o_rOut ); + virtual ~HF_IdlNavigationBar(); + + void Produce_CeMainRow( + const client & i_ce ); + void Produce_CeXrefsMainRow( + const client & i_ce ); + void Produce_ModuleMainRow( + const client & i_ce ); + void Produce_IndexMainRow(); + + /** Adds the subrow to the o_rOut argument of the constructor. + */ + DYN HF_NaviSubRow & Add_SubRow(); + + private: + const ary::idl::CodeEntity * + pCe; +}; + +extern const String + C_sLocalManualLinks; + +#endif diff --git a/autodoc/source/display/idl/hfi_property.cxx b/autodoc/source/display/idl/hfi_property.cxx new file mode 100644 index 000000000000..7414ec89958d --- /dev/null +++ b/autodoc/source/display/idl/hfi_property.cxx @@ -0,0 +1,269 @@ +/************************************************************************* + * + * $RCSfile: hfi_property.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:39 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following li + * + * - 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_property.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_attribute.hxx> +#include <ary/idl/ik_constant.hxx> +#include <ary/idl/ik_enumvalue.hxx> +#include <ary/idl/ik_property.hxx> +#include <ary/idl/ik_structelem.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_typetext.hxx" + +void +HF_IdlDataMember::Produce_byData( const client & ce ) const +{ + // Title: + CurOut() + >> *new Html::Label(ce.LocalName()) + << new Html::ClassAttr(C_sMemberTitle) + << ce.LocalName(); + + enter_ContentCell(); + write_Declaration(ce); + CurOut() << new Html::HorizontalLine; + write_Docu(CurOut(), ce); + leave_ContentCell(); +} + +HF_IdlDataMember::HF_IdlDataMember( Environment & io_rEnv, + HF_SubTitleTable & o_table ) + : HtmlFactory_Idl( io_rEnv, + &(o_table.Add_Row() + >> *new Html::TableCell + << new Html::ClassAttr(C_sCellStyle_MDetail)) + ) +{ +} + +const String sContentBorder("0"); +const String sContentWidth("96%"); +const String sContentPadding("5"); +const String sContentSpacing("0"); + +const String sBgWhite("#ffffff"); +const String sCenter("center"); + +void +HF_IdlDataMember::enter_ContentCell() const +{ + + Xml::Element & + rContentCell = CurOut() + >> *new Html::Table( sContentBorder, + sContentWidth, + sContentPadding, + sContentSpacing ) + << new Html::BgColorAttr(sBgWhite) + << new Html::AlignAttr(sCenter) + >> *new Html::TableRow + >> *new Html::TableCell; + Out().Enter(rContentCell); +} + + +void +HF_IdlDataMember::leave_ContentCell() const +{ + Out().Leave(); +} + + +HF_IdlProperty::~HF_IdlProperty() +{ +} + +typedef ary::idl::ifc_property::attr PropertyAttr; + +void +HF_IdlProperty::write_Declaration( const client & i_ce ) const +{ + if (PropertyAttr::HasAnyStereotype(i_ce)) + CurOut() << "[ "; + if (PropertyAttr::IsReadOnly(i_ce)) + CurOut() << "readonly "; + if (PropertyAttr::IsBound(i_ce)) + CurOut() << "bound "; + if (PropertyAttr::IsConstrained(i_ce)) + CurOut() << "constrained "; + if (PropertyAttr::IsMayBeAmbigious(i_ce)) + CurOut() << "maybeambigious "; + if (PropertyAttr::IsMayBeDefault(i_ce)) + CurOut() << "maybedefault "; + if (PropertyAttr::IsMayBeVoid(i_ce)) + CurOut() << "maybevoid "; + if (PropertyAttr::IsRemovable(i_ce)) + CurOut() << "removable "; + if (PropertyAttr::IsTransient(i_ce)) + CurOut() << "transient "; + if (PropertyAttr::HasAnyStereotype(i_ce)) + CurOut() << " ] "; + + HF_IdlTypeText + aType( Env(), CurOut(), true ); + aType.Produce_byData( PropertyAttr::Type(i_ce) ); + + CurOut() << " " >> *new Html::Bold << i_ce.LocalName(); + CurOut() << ";"; +} + + + + +HF_IdlAttribute::~HF_IdlAttribute() +{ +} + +typedef ary::idl::ifc_attribute::attr AttributeAttr; + +void +HF_IdlAttribute::write_Declaration( const client & i_ce ) const +{ + if (AttributeAttr::IsReadOnly(i_ce)) + CurOut() << "[ readonly ] "; + + HF_IdlTypeText + aType( Env(), CurOut(), true ); + aType.Produce_byData( AttributeAttr::Type(i_ce) ); + + CurOut() << " " >> *new Html::Bold << i_ce.LocalName(); + CurOut() << ";"; +} + + + + +HF_IdlEnumValue::~HF_IdlEnumValue() +{ +} + +typedef ary::idl::ifc_enumvalue::attr EnumValueAttr; + +void +HF_IdlEnumValue::write_Declaration( const client & i_ce ) const +{ + CurOut() + >> *new Html::Bold + << i_ce.LocalName(); + + const String & + rValue = EnumValueAttr::Value(i_ce); + if ( NOT rValue.empty() ) + { CurOut() << " " // << " = " // In the moment this is somehow in the value + << rValue; + // CurOut() << ","; // In the moment this is somehow in the value + } + else + CurOut() << ","; +} + + +HF_IdlConstant::~HF_IdlConstant() +{ +} + +typedef ary::idl::ifc_constant::attr ConstantAttr; + +void +HF_IdlConstant::write_Declaration( const client & i_ce ) const +{ + CurOut() << "const "; + HF_IdlTypeText + aType( Env(), CurOut(), true ); + aType.Produce_byData(ConstantAttr::Type(i_ce)); + CurOut() + << " " + >> *new Html::Bold + << i_ce.LocalName(); + const String & + rValue = ConstantAttr::Value(i_ce); + CurOut() << " " // << " = " // In the moment this is somehow in the value + << rValue; + // << ";"; // In the moment this is somehow in the value +} + + +HF_IdlStructElement::~HF_IdlStructElement() +{ +} + +typedef ary::idl::ifc_structelement::attr StructElementAttr; + +void +HF_IdlStructElement::write_Declaration( const client & i_ce ) const +{ + HF_IdlTypeText + aType( Env(), CurOut(), true ); + aType.Produce_byData(StructElementAttr::Type(i_ce)); + CurOut() + << " " + >> *new Html::Bold + << i_ce.LocalName(); + CurOut() + << ";"; +} + diff --git a/autodoc/source/display/idl/hfi_property.hxx b/autodoc/source/display/idl/hfi_property.hxx new file mode 100644 index 000000000000..2d14623bc9e9 --- /dev/null +++ b/autodoc/source/display/idl/hfi_property.hxx @@ -0,0 +1,163 @@ + /************************************************************************* + * + * $RCSfile: hfi_property.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:40 $ + * + * 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 ADC_DISPLAY_HFI_PROPERTY_HXX +#define ADC_DISPLAY_HFI_PROPERTY_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + +class HF_SubTitleTable; + +class HF_IdlDataMember : public HtmlFactory_Idl +{ + public: + void Produce_byData( + const client & ce ) const; + protected: + HF_IdlDataMember( + Environment & io_rEnv, + HF_SubTitleTable & o_table ); + private: + /// @descr Must enclose writing a horizontal line. + virtual void write_Declaration( + const client & i_ce ) const = 0; + + void enter_ContentCell() const; + void leave_ContentCell() const; +}; + + + +class HF_IdlProperty : public HF_IdlDataMember +{ + public: + HF_IdlProperty( + Environment & io_rEnv, + HF_SubTitleTable & o_table ) + : HF_IdlDataMember(io_rEnv, o_table) {} + virtual ~HF_IdlProperty(); + private: + virtual void write_Declaration( + const client & i_ce ) const; +}; + +class HF_IdlAttribute : public HF_IdlDataMember +{ + public: + HF_IdlAttribute( + Environment & io_rEnv, + HF_SubTitleTable & o_table ) + : HF_IdlDataMember(io_rEnv, o_table) {} + virtual ~HF_IdlAttribute(); + private: + virtual void write_Declaration( + const client & i_ce ) const; +}; + + +class HF_IdlEnumValue : public HF_IdlDataMember +{ + public: + HF_IdlEnumValue( + Environment & io_rEnv, + HF_SubTitleTable & o_table ) + : HF_IdlDataMember(io_rEnv, o_table) {} + virtual ~HF_IdlEnumValue(); + private: + virtual void write_Declaration( + const client & i_ce ) const; +}; + +class HF_IdlConstant : public HF_IdlDataMember +{ + public: + HF_IdlConstant( + Environment & io_rEnv, + HF_SubTitleTable & o_table ) + : HF_IdlDataMember(io_rEnv, o_table) {} + virtual ~HF_IdlConstant(); + private: + virtual void write_Declaration( + const client & i_ce ) const; +}; + + +class HF_IdlStructElement : public HF_IdlDataMember +{ + public: + HF_IdlStructElement( + Environment & io_rEnv, + HF_SubTitleTable & o_table ) + : HF_IdlDataMember(io_rEnv, o_table) {} + virtual ~HF_IdlStructElement(); + private: + virtual void write_Declaration( + const client & i_ce ) const; +}; + + +#endif diff --git a/autodoc/source/display/idl/hfi_service.cxx b/autodoc/source/display/idl/hfi_service.cxx new file mode 100644 index 000000000000..66996a5ed11c --- /dev/null +++ b/autodoc/source/display/idl/hfi_service.cxx @@ -0,0 +1,320 @@ +/************************************************************************* + * + * $RCSfile: hfi_service.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:40 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_service.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_service.hxx> +#include <ary_i/codeinf2.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_navi_sub.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_doc.hxx" +#include "hfi_navibar.hxx" +#include "hfi_property.hxx" +#include "hfi_tag.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + + + +extern const String + C_sCePrefix_Service("service"); + +namespace +{ + +const String + C_sList_IncludedServices("Included Services"); +const String + C_sList_IncludedServices_Label("IncludedServices"); +const String + C_sList_ExportedInterfaces("Exported Interfaces"); +const String + C_sList_ExportedInterfaces_Label("ExportedInterfaces"); +const String + C_sList_Properties("Properties' Summary"); +const String + C_sList_Properties_Label("PropertiesSummary"); +const String + C_sList_PropertiesDetails("Properties' Details"); +const String + C_sList_PropertiesDetails_Label("PropertiesDetails"); + + +enum E_SubListIndices +{ + sli_IncludedServices = 0, + sli_ExportedInterfaces = 1, + sli_PropertiesSummary = 2, + sli_PropertiesDetails = 3 +}; + +} //anonymous namespace + + +HF_IdlService::HF_IdlService( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlService::~HF_IdlService() +{ + +} + +typedef ::ary::idl::ifc_service::attr + ServiceAttr; +typedef ::ary::Dyn_StdConstIterator< ::ary::idl::CommentedReference > + dyn_comref_list; + +void +HF_IdlService::Produce_byData( const client & i_ce ) const +{ + Dyn<HF_NaviSubRow> + pNaviSubRow( &make_Navibar(i_ce) ); + + HF_TitleTable + aTitle(CurOut()); + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + + aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker); + aTitle.Produce_Title( StreamLock(200)() << C_sCePrefix_Service + << " " + << i_ce.LocalName() + << c_str ); + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); + + dyn_comref_list + dpIncludedServices; + ServiceAttr::Get_IncludedServices(dpIncludedServices, i_ce); + if (*dpIncludedServices) + { + produce_IncludedServices( i_ce, *dpIncludedServices ); + pNaviSubRow->SwitchOn(sli_IncludedServices); + } + + dyn_comref_list + dpExportedInterfaces; + ServiceAttr::Get_ExportedInterfaces(dpExportedInterfaces, i_ce); + if (*dpExportedInterfaces) + { + produce_ExportedInterfaces( i_ce, *dpExportedInterfaces ); + pNaviSubRow->SwitchOn(sli_ExportedInterfaces); + } + + dyn_ce_list + dpProperties; + ServiceAttr::Get_Properties(dpProperties, i_ce); + if (*dpProperties) + { + produce_Members( *dpProperties, + C_sList_Properties, + C_sList_Properties_Label, + C_sList_PropertiesDetails, + C_sList_PropertiesDetails_Label ); + pNaviSubRow->SwitchOn(sli_PropertiesSummary); + pNaviSubRow->SwitchOn(sli_PropertiesDetails); + } + + pNaviSubRow->Produce_Row(); + CurOut() << new Xml::XmlCode("<br> "); +} + +DYN HF_NaviSubRow & +HF_IdlService::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeMainRow(i_ce); + + DYN HF_NaviSubRow & + ret = aNaviBar.Add_SubRow(); + ret.AddItem(C_sList_IncludedServices, C_sList_IncludedServices_Label, false); + ret.AddItem(C_sList_ExportedInterfaces, C_sList_ExportedInterfaces_Label, false); + ret.AddItem(C_sList_Properties, C_sList_Properties_Label, false); + ret.AddItem(C_sList_PropertiesDetails, C_sList_PropertiesDetails_Label, false); + + CurOut() << new Html::HorizontalLine(); + return ret; +} + +void +HF_IdlService::produce_IncludedServices( const client & i_ce, + comref_list & it_list ) const +{ + csv_assert( it_list ); + + HF_SubTitleTable + aTable( CurOut(), + C_sList_IncludedServices_Label, + C_sList_IncludedServices, + 2 ); + + for ( ; it_list; ++it_list ) + { + Xml::Element & + rRow = aTable.Add_Row(); + produce_Link(rRow, (*it_list).first); + produce_LinkDoc(i_ce, rRow, it_list); + } // end for +} + +void +HF_IdlService::produce_ExportedInterfaces( const client & i_ce, + comref_list & it_list ) const +{ + csv_assert( it_list ); + + HF_SubTitleTable + aTable( CurOut(), + C_sList_ExportedInterfaces_Label, + C_sList_ExportedInterfaces, + 2 ); + + for ( ; it_list; ++it_list ) + { + Xml::Element & + rRow = aTable.Add_Row(); + produce_Link(rRow, (*it_list).first); + produce_LinkDoc(i_ce, rRow, it_list); + } // end for +} + +void +HF_IdlService::produce_Link( Xml::Element & o_row, + type_id i_type ) const +{ + Xml::Element & + rCell = o_row + >> *new Html::TableCell + << new Html::ClassAttr(C_sCellStyle_SummaryLeft); + HF_IdlTypeText + aText(Env(), rCell, true); + aText.Produce_byData(i_type); +} + +void +HF_IdlService::produce_LinkDoc( const client & i_ce, + Xml::Element & o_row, + comref_list & i_commentedRef ) const +{ + Xml::Element & + rCell = o_row + >> *new Html::TableCell + << new Html::ClassAttr(C_sCellStyle_SummaryRight); + + + HF_DocEntryList + aDocList(rCell); + if ( (*i_commentedRef).second != 0 ) + { + HF_IdlDocu + aDocuDisplay(Env(), aDocList); + aDocuDisplay.Produce_byData(i_ce, (*i_commentedRef).second ); + } + else + { + const client * + pCe = Env().Linker().Search_CeFromType((*i_commentedRef).first); + const ce_info * + pShort = pCe != 0 + ? pCe->Docu() + : 0; + if ( pShort != 0 ) + { + if (pShort->IsDeprecated()) + { + rCell << "[ DEPRECATED ]" << new Html::LineBreak; + } + if (pShort->IsOptional()) + { + rCell << "[ OPTIONAL ]" << new Html::LineBreak; + } + + HF_IdlDocuTextDisplay + aShortDisplay( Env(), &rCell, *pCe); + pShort->Short().DisplayAt(aShortDisplay); + } + } // endif ( (*i_commentedRef).second != 0 ) else +} + + +void +HF_IdlService::produce_MemberDetails( HF_SubTitleTable & o_table, + const client & i_ce ) const +{ + HF_IdlProperty + aProperty( Env(), o_table); + aProperty.Produce_byData( i_ce ); +} + + + diff --git a/autodoc/source/display/idl/hfi_service.hxx b/autodoc/source/display/idl/hfi_service.hxx new file mode 100644 index 000000000000..23f5bde69666 --- /dev/null +++ b/autodoc/source/display/idl/hfi_service.hxx @@ -0,0 +1,121 @@ +/************************************************************************* + * + * $RCSfile: hfi_service.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:41 $ + * + * 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 ADC_DISPLAY_HFI_SERVICE_HXX +#define ADC_DISPLAY_HFI_SERVICE_HXX + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + +class HF_NaviSubRow; +class HF_SubTitleTable; + +class HF_IdlService : public HtmlFactory_Idl +{ + public: + typedef ::ary::StdConstIterator< ::ary::idl::CommentedReference> comref_list; + HF_IdlService( + Environment & io_rEnv, // The CurDirecory() is the one of the here displayed Module. + Xml::Element & o_rOut ); + virtual ~HF_IdlService(); + + void Produce_byData( + const client & i_ce ) const; + private: + DYN HF_NaviSubRow & make_Navibar( + const client & i_ce ) const; + + void produce_IncludedServices( + const client & i_ce, + comref_list & it_list ) const; + void produce_ExportedInterfaces( + const client & i_ce, + comref_list & it_list ) const; + + void produce_Link( + Xml::Element & o_row, + type_id i_type ) const; + void produce_LinkDoc( + const client & i_ce, + Xml::Element & o_row, + comref_list & i_commentedRef ) const; + + void produce_MemberDetails( /// of property + HF_SubTitleTable & o_table, + const client & i_ce ) const; +}; + + + +// IMPLEMENTATION + +extern const String + C_sCePrefix_Service; + + + +#endif + + diff --git a/autodoc/source/display/idl/hfi_singleton.cxx b/autodoc/source/display/idl/hfi_singleton.cxx new file mode 100644 index 000000000000..2a196d20ebdb --- /dev/null +++ b/autodoc/source/display/idl/hfi_singleton.cxx @@ -0,0 +1,144 @@ +/************************************************************************* + * + * $RCSfile: hfi_singleton.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:42 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_singleton.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_singleton.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_navibar.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + + + +extern const String + C_sCePrefix_Singleton("singleton"); + +namespace +{ +const String + C_sAssociatedService("Associated Service"); +} //anonymous namespace + + +HF_IdlSingleton::HF_IdlSingleton( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlSingleton::~HF_IdlSingleton() +{ + +} + +typedef ::ary::idl::ifc_singleton::attr + SingletonAttr; + +void +HF_IdlSingleton::Produce_byData( const client & i_ce ) const +{ + make_Navibar(i_ce); + + HF_TitleTable + aTitle(CurOut()); + + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + + aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker); + aTitle.Produce_Title( StreamLock(200)() + << C_sCePrefix_Singleton + << " " + << i_ce.LocalName() + << c_str ); + + HF_DocEntryList + aTopList( aTitle.Add_Row() ); + aTopList.Produce_Term(C_sAssociatedService); + + HF_IdlTypeText + aAssociatedService( Env(), aTopList.Produce_Definition(), true ); + aAssociatedService.Produce_byData( SingletonAttr::AssociatedService(i_ce) ); + + CurOut() << new Html::HorizontalLine; + + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); +} + +void +HF_IdlSingleton::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeMainRow(i_ce); + + CurOut() << new Html::HorizontalLine(); +} diff --git a/autodoc/source/display/idl/hfi_singleton.hxx b/autodoc/source/display/idl/hfi_singleton.hxx new file mode 100644 index 000000000000..c11b45f46497 --- /dev/null +++ b/autodoc/source/display/idl/hfi_singleton.hxx @@ -0,0 +1,101 @@ +/************************************************************************* + * + * $RCSfile: hfi_singleton.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:42 $ + * + * 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 ADC_DISPLAY_HFI_SINGLETON_HXX +#define ADC_DISPLAY_HFI_SINGLETON_HXX + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + +class HF_NaviSubRow; + + +class HF_IdlSingleton : public HtmlFactory_Idl +{ + public: + HF_IdlSingleton( + Environment & io_rEnv, + Xml::Element & o_rOut ); + virtual ~HF_IdlSingleton(); + + void Produce_byData( + const client & i_ce ) const; + private: + void make_Navibar( + const client & i_ce ) const; +}; + + + +// IMPLEMENTATION + +extern const String + C_sCePrefix_Singleton; + + + +#endif + + diff --git a/autodoc/source/display/idl/hfi_struct.cxx b/autodoc/source/display/idl/hfi_struct.cxx new file mode 100644 index 000000000000..a0e49a36273a --- /dev/null +++ b/autodoc/source/display/idl/hfi_struct.cxx @@ -0,0 +1,207 @@ +/************************************************************************* + * + * $RCSfile: hfi_struct.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:43 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_struct.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_exception.hxx> +#include <ary/idl/ik_struct.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_navi_sub.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_navibar.hxx" +#include "hfi_property.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + +extern const String + C_sCePrefix_Struct("struct"); +extern const String + C_sCePrefix_Exception("exception"); + + +namespace +{ + +const String + C_sBaseStruct("Base Hierarchy"); +const String + C_sBaseException("Base Hierarchy"); + +const String + C_sList_Elements("Elements' Summary"); +const String + C_sList_Elements_Label("Elements"); + +const String + C_sList_ElementDetails("Elements' Details"); +const String + C_sList_ElementDetails_Label("ElementDetails"); + +enum E_SubListIndices +{ + sli_ElementsSummary = 0, + sli_ElementsDetails = 1 +}; + +} // anonymous namespace + + + +HF_IdlStruct::HF_IdlStruct( Environment & io_rEnv, + Xml::Element & o_rOut, + bool i_bIsException ) + : HtmlFactory_Idl(io_rEnv, &o_rOut), + bIsException(i_bIsException) +{ +} + +HF_IdlStruct::~HF_IdlStruct() +{ +} + +void +HF_IdlStruct::Produce_byData( const client & i_ce ) const +{ + Dyn<HF_NaviSubRow> + pNaviSubRow( &make_Navibar(i_ce) ); + + HF_TitleTable + aTitle(CurOut()); + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + + aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker); + aTitle.Produce_Title( StreamLock(200)() + << (bIsException + ? C_sCePrefix_Exception + : C_sCePrefix_Struct) + << " " + << i_ce.LocalName() + << c_str ); + produce_Bases( aTitle.Add_Row(), + i_ce, + bIsException + ? C_sBaseException + : C_sBaseStruct ); + + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); + + dyn_ce_list + dpElements; + if (bIsException) + ary::idl::ifc_exception::attr::Get_Elements(dpElements, i_ce); + else + ary::idl::ifc_struct::attr::Get_Elements(dpElements, i_ce); + + if (*dpElements) + { + produce_Members( *dpElements, + C_sList_Elements, + C_sList_Elements_Label, + C_sList_ElementDetails, + C_sList_ElementDetails_Label ); + pNaviSubRow->SwitchOn(sli_ElementsSummary); + pNaviSubRow->SwitchOn(sli_ElementsDetails); + } + pNaviSubRow->Produce_Row(); +} + +HtmlFactory_Idl::type_id +HF_IdlStruct::inq_BaseOf( const client & i_ce ) const +{ + return bIsException + ? ary::idl::ifc_exception::attr::Base(i_ce) + : ary::idl::ifc_struct::attr::Base(i_ce); +} + +HF_NaviSubRow & +HF_IdlStruct::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeMainRow(i_ce); + + DYN HF_NaviSubRow & + ret = aNaviBar.Add_SubRow(); + ret.AddItem(C_sList_Elements, C_sList_Elements_Label, false); + ret.AddItem(C_sList_ElementDetails, C_sList_ElementDetails_Label, false); + + CurOut() << new Html::HorizontalLine(); + return ret; +} + +void +HF_IdlStruct::produce_MemberDetails( HF_SubTitleTable & o_table, + const client & i_ce) const +{ + HF_IdlStructElement + aElement( Env(), o_table ); + aElement.Produce_byData(i_ce); +} + diff --git a/autodoc/source/display/idl/hfi_struct.hxx b/autodoc/source/display/idl/hfi_struct.hxx new file mode 100644 index 000000000000..22db657ee664 --- /dev/null +++ b/autodoc/source/display/idl/hfi_struct.hxx @@ -0,0 +1,111 @@ +/************************************************************************* + * + * $RCSfile: hfi_struct.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:44 $ + * + * 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 ADC_DISPLAY_HFI_STRUCT_HXX +#define ADC_DISPLAY_HFI_STRUCT_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + + +class HF_IdlStruct : public HtmlFactory_Idl +{ + public: + + HF_IdlStruct( + Environment & io_rEnv, + Xml::Element & o_rOut, + bool i_bIsException ); + virtual ~HF_IdlStruct(); + + void Produce_byData( + const client & ce ) const; + private: + // Interface HtmlFactory_Idl: + virtual type_id inq_BaseOf( + const client & i_ce ) const; + // Locals + HF_NaviSubRow & make_Navibar( + const client & ce ) const; + virtual void produce_MemberDetails( + HF_SubTitleTable & o_table, + const client & ce ) const; + // DATA + bool bIsException; +}; + + + +// IMPLEMENTATION + + +extern const String + C_sCePrefix_Struct; +extern const String + C_sCePrefix_Exception; + + +#endif diff --git a/autodoc/source/display/idl/hfi_tag.cxx b/autodoc/source/display/idl/hfi_tag.cxx new file mode 100644 index 000000000000..72036beadb4c --- /dev/null +++ b/autodoc/source/display/idl/hfi_tag.cxx @@ -0,0 +1,331 @@ +/************************************************************************* + * + * $RCSfile: hfi_tag.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:44 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_tag.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary_i/d_token.hxx> +#include <ary/idl/i_ce.hxx> +#include <ary/idl/i_module.hxx> +#include <toolkit/out_tree.hxx> +#include "hfi_typetext.hxx" +#include "hi_ary.hxx" +#include "hi_env.hxx" +#include "hi_linkhelper.hxx" + + + + +inline void +HF_IdlTag::Enter_TextOut( Xml::Element & o_rText ) const +{ + aTextOut.Out().Enter(o_rText); +} + +inline void +HF_IdlTag::Leave_TextOut() const +{ + aTextOut.Out().Leave(); +} + +inline void +HF_IdlTag::PutText_Out( const ary::info::DocuTex2 & i_rText ) const +{ + i_rText.DisplayAt( const_cast< HF_IdlDocuTextDisplay& >(aTextOut) ); +} + + + +HF_IdlTag::HF_IdlTag( Environment & io_rEnv, + const ary::idl::CodeEntity & i_rScopeGivingCe ) + : HtmlFactory_Idl( io_rEnv, 0 ), + pTitleOut(0), + aTextOut(io_rEnv, 0, i_rScopeGivingCe) +{ +} + +HF_IdlTag::~HF_IdlTag() +{ +} + +void +HF_IdlTag::Produce_byData( Xml::Element & o_rTitle, + Xml::Element & o_rText, + const ary::info::AtTag2 & i_rTag ) const +{ + pTitleOut = &o_rTitle; + Enter_TextOut(o_rText); + i_rTag.DisplayAt( const_cast< HF_IdlTag& >(*this) ); + Leave_TextOut(); +} + +void +HF_IdlTag::Display_StdAtTag( const csi::dsapi::DT_StdAtTag & i_rTag ) +{ + if ( i_rTag.Text().IsEmpty() ) + return; + + csv_assert( pTitleOut != 0 ); + *pTitleOut << i_rTag.Title(); + PutText_Out( i_rTag.Text() ); +} + +void +HF_IdlTag::Display_SeeAlsoAtTag( const csi::dsapi::DT_SeeAlsoAtTag & i_rTag ) +{ + if ( i_rTag.Text().IsEmpty() ) + return; + + csv_assert( pTitleOut != 0 ); + *pTitleOut << "See also"; + + HF_IdlTypeText aLinkText(Env(),aTextOut.CurOut(),true); + aLinkText.Produce_byData( i_rTag.LinkText() ); +// aTextOut.Create_LinkToBeFound(i_rTag.LinkText(),true); + aTextOut.CurOut() << new Html::LineBreak; + PutText_Out( i_rTag.Text() ); +} + +void +HF_IdlTag::Display_ParameterAtTag( const csi::dsapi::DT_ParameterAtTag & i_rTag ) +{ + csv_assert( pTitleOut != 0 ); + *pTitleOut + << ( StreamLock(100)() << "Parameter " << i_rTag.Title() << c_str ); + PutText_Out( i_rTag.Text() ); +} + + +//******************** HF_IdlShortDocu *********************/ + +HF_IdlShortDocu::HF_IdlShortDocu( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl( io_rEnv, &o_rOut ) +{ +} + +HF_IdlShortDocu::~HF_IdlShortDocu() +{ +} + +void +HF_IdlShortDocu::Produce_byData( const ary::idl::CodeEntity & i_rCe ) +{ + if (i_rCe.Docu() == 0) + return; + + const ce_info & + rDocu = *i_rCe.Docu(); + if ( rDocu.IsDeprecated() ) + { + CurOut() + >> *new Html::Bold + << "[ DEPRECATED ]" << new Html::LineBreak; + } + if ( rDocu.IsOptional() ) + { + CurOut() + >> *new Html::Bold + << "[ OPTIONAL ]" << new Html::LineBreak; + } + + HF_IdlDocuTextDisplay + aText( Env(), &CurOut(), i_rCe); + rDocu.Short().DisplayAt(aText); +} + + +//******************** HF_IdlDocuTextDisplay *********************/ + + +HF_IdlDocuTextDisplay::HF_IdlDocuTextDisplay( Environment & io_rEnv, + Xml::Element * o_pOut, + const ary::idl::CodeEntity & i_rScopeGivingCe ) + : HtmlFactory_Idl(io_rEnv, o_pOut), + sScope(), + sLinkToken(), + bGatherLink(false), + pScopeGivingCe(&i_rScopeGivingCe) +{ +} + +HF_IdlDocuTextDisplay::~HF_IdlDocuTextDisplay() +{ +} + +void +HF_IdlDocuTextDisplay::Display_TextToken( const csi::dsapi::DT_TextToken & i_rToken ) +{ + if (bGatherLink) + { + if (sLinkToken.length() == 0) + { + sLinkToken = i_rToken.GetText(); + return; + } + else + { + Cerr() << "Error in documentation: Too many or too few tokens for a link in <member> or <type>." << Endl(); + Cerr() << " Link won't be created, but all tokens shown plain." << Endl(); + Cerr() << " \"" << sLinkToken << "\""; + if ( pScopeGivingCe != 0 ) + Cerr() << " in " << pScopeGivingCe->LocalName(); + Cerr() << Endl(); + StopLinkGathering(); + } + } // endif (bGatherLink) + + CurOut() << " " << new Xml::XmlCode( i_rToken.GetText() ); +} + +void +HF_IdlDocuTextDisplay::Display_MupType( const csi::dsapi::DT_MupType & i_rToken ) +{ + if (i_rToken.IsBegin()) + { + StartLinkGathering(i_rToken.Scope()); + } + else + { + if (bGatherLink) + { + CurOut() + << " "; + CreateTypeLink(); + StopLinkGathering(); + } + } +} + +void +HF_IdlDocuTextDisplay::Display_MupMember( const csi::dsapi::DT_MupMember & i_rToken ) +{ + if (i_rToken.IsBegin()) + { + StartLinkGathering(i_rToken.Scope()); + } + else + { + if (bGatherLink) + { + CurOut() + << " "; + CreateMemberLink(); + StopLinkGathering(); + } + } +} + +void +HF_IdlDocuTextDisplay::Display_MupConst( const csi::dsapi::DT_MupConst & i_rToken ) +{ + CurOut() + << " " + >> *new Html::Bold + << i_rToken.GetText(); +} + +void +HF_IdlDocuTextDisplay::Display_Style( const csi::dsapi::DT_Style & i_rToken ) +{ + CurOut() << new Xml::XmlCode( i_rToken.GetText() ); +} + +void +HF_IdlDocuTextDisplay::Display_EOL() +{ + CurOut() << "\n"; +} + +void +HF_IdlDocuTextDisplay::CreateTypeLink() +{ + HF_IdlTypeText aLink(Env(), CurOut(), true, &ScopeGivingCe()); + aLink.Produce_LinkInDocu(sScope, sLinkToken, String::Null_()); +} + +void +HF_IdlDocuTextDisplay::CreateMemberLink() +{ + + HF_IdlTypeText aLink(Env(), CurOut(), true, &ScopeGivingCe()); + + const char * + sSplit = strstr(sLinkToken,"::"); + + if (sSplit != 0) + { + String sCe(sLinkToken.c_str(), sSplit - sLinkToken.c_str()); + String sMember(sSplit+2); + + if (NOT sScope.empty() OR ScopeGivingCe().LocalName() != sCe ) + aLink.Produce_LinkInDocu(sScope, sCe, sMember); + else + aLink.Produce_LocalLinkInDocu(sMember); + } + else + { + aLink.Produce_LocalLinkInDocu(sLinkToken); + } +} diff --git a/autodoc/source/display/idl/hfi_tag.hxx b/autodoc/source/display/idl/hfi_tag.hxx new file mode 100644 index 000000000000..2d381e7d894d --- /dev/null +++ b/autodoc/source/display/idl/hfi_tag.hxx @@ -0,0 +1,208 @@ +/************************************************************************* + * + * $RCSfile: hfi_tag.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:46 $ + * + * 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 ADC_DISPLAY_HFI_TAG_HXX +#define ADC_DISPLAY_HFI_TAG_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" +#include <ary_i/disdocum.hxx> + // COMPONENTS + // PARAMETERS +#include <ary/idl/i_language.hxx> +#include <ary_i/ci_atag2.hxx> +#include <ary_i/ci_text2.hxx> +#include <ary_i/codeinf2.hxx> + +#include <toolkit/hf_docentry.hxx> + +namespace ary +{ +namespace idl +{ + class Module; +} +} + + +/** This class is an implementation of ary::info::DocuText_Display + and will be used by that interface. +*/ +class HF_IdlDocuTextDisplay : public HtmlFactory_Idl, + public ary::info::DocuText_Display +{ + public: + HF_IdlDocuTextDisplay( + Environment & io_rEnv, + Xml::Element * o_pOut, + const ary::idl::CodeEntity & + i_rScopeGivingCe ); + virtual ~HF_IdlDocuTextDisplay(); + + const ary::idl::CodeEntity & + ScopeGivingCe() const { return *pScopeGivingCe; } + private: + virtual void Display_TextToken( + const csi::dsapi::DT_TextToken & + i_rToken ); + virtual void Display_MupType( + const csi::dsapi::DT_MupType & + i_rToken ); + virtual void Display_MupMember( + const csi::dsapi::DT_MupMember & + i_rToken ); + virtual void Display_MupConst( + const csi::dsapi::DT_MupConst & + i_rToken ); + virtual void Display_Style( + const csi::dsapi::DT_Style & i_rToken ); + virtual void Display_EOL(); + + // Local + void StartLinkGathering( + const String & i_sScope ) + { sLinkToken = ""; sScope = i_sScope; bGatherLink = true; } + void StopLinkGathering() { bGatherLink = false; } + /** @precond + The scope is in sScope, the name is in sLinkToken. + */ + void CreateTypeLink(); + /** @precond + The scope is in sScope, the qualified member-name is in sLinkToken. + */ + void CreateMemberLink(); + + // DATA + String sScope; + String sLinkToken; + bool bGatherLink; + const ary::idl::CodeEntity * + pScopeGivingCe; +}; + + + +class HF_IdlShortDocu : public HtmlFactory_Idl +{ + public: + HF_IdlShortDocu( + Environment & io_rEnv, + Xml::Element & o_rOut ); + virtual ~HF_IdlShortDocu(); + + void Produce_byData( + const ary::idl::CodeEntity & + i_rCe ); +}; + + + +class HF_IdlTag : public HtmlFactory_Idl, + public ary::info::DocuTag_Display +{ + public: + HF_IdlTag( + Environment & io_rEnv, + const ary::idl::CodeEntity & + i_rScopeGivingCe ); + virtual ~HF_IdlTag(); + + void Produce_byData( + Xml::Element & o_rTitle, + Xml::Element & o_rText, + const ary::info::AtTag2 & + i_rTag ) const; + private: + virtual void Display_StdAtTag( + const csi::dsapi::DT_StdAtTag & + i_rToken ); + virtual void Display_SeeAlsoAtTag( + const csi::dsapi::DT_SeeAlsoAtTag & + i_rToken ); + virtual void Display_ParameterAtTag( + const csi::dsapi::DT_ParameterAtTag & + i_rToken ); + + void Enter_TextOut( + Xml::Element & o_rText ) const; + void Leave_TextOut() const; + void PutText_Out( + const ary::info::DocuTex2 & + i_rText ) const; + // DATA + mutable Xml::Element * + pTitleOut; + mutable HF_IdlDocuTextDisplay + aTextOut; +}; + + + + +// IMPLEMENTATION + + +#endif + + diff --git a/autodoc/source/display/idl/hfi_typedef.cxx b/autodoc/source/display/idl/hfi_typedef.cxx new file mode 100644 index 000000000000..b822b3b01b36 --- /dev/null +++ b/autodoc/source/display/idl/hfi_typedef.cxx @@ -0,0 +1,131 @@ +/************************************************************************* + * + * $RCSfile: hfi_typedef.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:47 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_typedef.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_typedef.hxx> +#include <toolkit/hf_docentry.hxx> +#include <toolkit/hf_linachain.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_navibar.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + + +HF_IdlTypedef::HF_IdlTypedef( Environment & io_rEnv, + Xml::Element & o_rOut ) + : HtmlFactory_Idl(io_rEnv, &o_rOut) +{ +} + +HF_IdlTypedef::~HF_IdlTypedef() +{ +} + +typedef ary::idl::ifc_typedef::attr TypedefAttr; + +void +HF_IdlTypedef::Produce_byData( const client & i_ce ) const +{ + make_Navibar(i_ce); + + HF_TitleTable + aTitle(CurOut()); + + HF_LinkedNameChain + aNameChain(aTitle.Add_Row()); + + aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker); + aTitle.Produce_Title( StreamLock(200)() + << C_sCePrefix_Typedef + << " " + << i_ce.LocalName() + << c_str ); + + HF_DocEntryList + aTopList( aTitle.Add_Row() ); + aTopList.Produce_Term("Defining Type"); + + HF_IdlTypeText + aDefinition( Env(), aTopList.Produce_Definition(), true ); + aDefinition.Produce_byData( TypedefAttr::DefiningType(i_ce) ); + + CurOut() << new Html::HorizontalLine; + + write_Docu(aTitle.Add_Row(), i_ce); + CurOut() << new Html::HorizontalLine(); +} + +void +HF_IdlTypedef::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeMainRow(i_ce); + + CurOut() << new Html::HorizontalLine(); +} diff --git a/autodoc/source/display/idl/hfi_typedef.hxx b/autodoc/source/display/idl/hfi_typedef.hxx new file mode 100644 index 000000000000..a6f7e4579424 --- /dev/null +++ b/autodoc/source/display/idl/hfi_typedef.hxx @@ -0,0 +1,99 @@ +/************************************************************************* + * + * $RCSfile: hfi_typedef.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:48 $ + * + * 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 ADC_DISPLAY_HFI_TYPEDEF_HXX +#define ADC_DISPLAY_HFI_TYPEDEF_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + + +class HF_IdlTypedef : public HtmlFactory_Idl +{ + public: + HF_IdlTypedef( + Environment & io_rEnv, + Xml::Element & o_rOut ); + virtual ~HF_IdlTypedef(); + + void Produce_byData( + const client & ce ) const; + private: + void make_Navibar( + const client & ce ) const; +}; + + + +// IMPLEMENTATION + + +const String + C_sCePrefix_Typedef("typedef"); + +#endif + + diff --git a/autodoc/source/display/idl/hfi_typetext.cxx b/autodoc/source/display/idl/hfi_typetext.cxx new file mode 100644 index 000000000000..2106d803a50e --- /dev/null +++ b/autodoc/source/display/idl/hfi_typetext.cxx @@ -0,0 +1,573 @@ +/************************************************************************* + * + * $RCSfile: hfi_typetext.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:48 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_typetext.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <string.h> +#include <ary/idl/i_type.hxx> +#include <ary/idl/i_ce.hxx> +#include <ary/idl/i_module.hxx> +#include <ary/idl/ik_ce.hxx> +#include "hi_linkhelper.hxx" + + +inline const ary::idl::Module * +HF_IdlTypeText::referingModule() const +{ + if (pReferingCe == 0) + return Env().Linker().Search_CurModule(); + else + return &Env().Data().Find_Module(pReferingCe->NameRoom()); +} + +inline const HF_IdlTypeText::client * +HF_IdlTypeText::referingCe() const +{ + return pReferingCe; +} + + +HF_IdlTypeText::HF_IdlTypeText( Environment & io_rEnv, + Xml::Element & o_rOut, + bool i_bWithLink, + const client * i_pScopeGivingCe ) + : HtmlFactory_Idl(io_rEnv, &o_rOut), + pReferingCe( i_pScopeGivingCe ), + bWithLink(i_bWithLink) +{ +} + +HF_IdlTypeText::HF_IdlTypeText( Environment & io_rEnv, + E_Index e ) + : HtmlFactory_Idl(io_rEnv, 0), + pReferingCe( 0 ), + bWithLink(true) +{ +} + +HF_IdlTypeText::~HF_IdlTypeText() +{ +} + +void +HF_IdlTypeText::Produce_byData( ary::idl::Type_id i_idType ) const +{ + static StringVector aModule_; + String sName; + ce_id nCe; + int nSequenceCount = 0; + csv::erase_container(aModule_); + + const ary::idl::Type & + rType = Env().Data().Find_Type(i_idType); + Env().Data().Get_TypeText(aModule_, sName, nCe, nSequenceCount, rType); + + if ( Env().Data().IsBuiltInOrRelated(rType) ) + { + produce_BuiltIn(sName,nSequenceCount); + } + else + { + produce_FromStd( aModule_, + sName, + String::Null_(), + nSequenceCount, + (nCe.IsValid() ? exists_yes : exists_no) ); + } +} + +void +HF_IdlTypeText::Produce_byData( ary::idl::Ce_id i_idCe ) const +{ + static StringVector aModule_; + String sCe; + String sMember; + csv::erase_container(aModule_); + + const ary::idl::CodeEntity & + rCe = Env().Data().Find_Ce(i_idCe); + Env().Data().Get_CeText(aModule_, sCe, sMember, rCe); + produce_FromStd(aModule_, sCe, sMember, 0, exists_yes); +} + +void +HF_IdlTypeText::Produce_byData( const String & i_sFullName ) const +{ + static StringVector aModule_; + String sCe, + sMember; + int nSequence = 0; + String sTypeText; + csv::erase_container(aModule_); + + const ary::idl::Module * + pScopeModule = referingModule(); + if (pScopeModule == 0) + { + // SYNTAX_ERR, but rather logical error: Missing module. + CurOut() << i_sFullName; + return; + } + + const char * sTypeStart = strrchr(i_sFullName,'<'); + if ( sTypeStart != 0 ) + { + const char * sTypeEnd = strchr(i_sFullName,'>'); + if (sTypeEnd == 0) + { // SYNTAX_ERR + CurOut() << i_sFullName; + return; + } + + nSequence = count_Sequences(i_sFullName); + sTypeStart++; + sTypeText.assign(sTypeStart, sTypeEnd-sTypeStart); + } + else + { + sTypeText = i_sFullName; + } + + csv::erase_container(aModule_); + bool bFound = // KORR : Check the semantics of this, see if ce really exists in any case? + Env().Data().Search_Ce( aModule_, + sCe,sMember, + sTypeText, + *pScopeModule ); + if (NOT bFound) + { + CurOut() << i_sFullName; + return; + } + + produce_FromStd(aModule_, sCe, sMember, nSequence, exists_yes); +} + +void +HF_IdlTypeText::Produce_LinkInDocu( const String & i_scope, + const String & i_name, + const String & i_member ) const +{ + static StringVector aModule_; + String sName; + ce_id nCe; + int nSequenceCount = 0; + csv::erase_container(aModule_); + + const ary::idl::Module * + pScopeModule = referingModule(); + if (pScopeModule == 0) + { + // SYNTAX_ERR, but rather logical error: Missing module. + CurOut() << i_scope << "::" << i_name; + if (NOT i_member.empty()) + CurOut() << "::" << i_member; + return; + } + + bool + bFound = Env().Data().Search_CesModule( aModule_, + i_scope, + i_name, + *pScopeModule ); + if (NOT bFound) + { + CurOut() << i_scope << "::" << i_name; + if (NOT i_member.empty()) + CurOut() << "::" << i_member; + return; + } + produce_FromStd(aModule_, i_name, i_member, 0, exists_yes); +} + +void +HF_IdlTypeText::Produce_LocalLinkInDocu( const String & i_member ) const +{ + static StringVector aModule_; + String sName; + csv::erase_container(aModule_); + + csv_assert(referingCe() != 0); + if ( referingModule() == Env().Linker().Search_CurModule() ) + { + CurOut() + >> *new Html::Link( StreamLock(200)() + << referingCe()->LocalName() + << ".html#" + << i_member + << c_str ) + << i_member; + return; + } + + String sDummyMember; + Env().Data().Get_CeText(aModule_, sName, sDummyMember, *referingCe()); + produce_FromStd(aModule_, sName, i_member, 0, exists_yes); +} + +void +HF_IdlTypeText::Produce_IndexLink( Xml::Element & o_out, + const client & i_ce ) const +{ + static StringVector aModule_; + String sCe; + String sMember; + csv::erase_container(aModule_); + + Out().Enter(o_out); + + Env().Data().Get_CeText(aModule_, sCe, sMember, i_ce); + produce_IndexLink(aModule_, sCe, sMember, false); + + Out().Leave(); +} + +void +HF_IdlTypeText::Produce_IndexOwnerLink( Xml::Element & o_out, + const client & i_ce ) const +{ + static StringVector aModule_; + String sCe; + String sMember; + csv::erase_container(aModule_); + + Out().Enter(o_out); + + if (i_ce.Owner().IsValid()) + { + Env().Data().Get_CeText(aModule_, sCe, sMember, i_ce); + produce_IndexLink(aModule_, sCe, sMember, true); + } + else + { // global namespace: + + CurOut() + << "." + >> *new Html::Link("../module-ix.html") + << "global namespace"; + } + + + Out().Leave(); +} + +void +HF_IdlTypeText::produce_FromStd( const StringVector & i_module, + const String & i_ce, + const String & i_member, + int i_sequenceCount, + E_Existence i_ceExists ) const +{ + output::Node & + rCeNode = Env().OutputTree().Provide_Node(i_module); + output::Position + aDestination(rCeNode); + bool + bShowModule = rCeNode != Env().CurPosition().RelatedNode() + ? i_module.size() > 0 + : false; + bool + bUseMember = NOT i_member.empty(); + bool + bLink2Module = i_ceExists == exists_yes; + bool + bLink2Ce = i_ceExists == exists_yes; + bool + bLink2Member = NOT Env().Is_MemberExistenceCheckRequired() + AND i_ceExists == exists_yes; + bool + bHasCeOrName = NOT i_ce.empty(); + + if (i_sequenceCount > 0) + start_Sequence(i_sequenceCount); + + StreamLock aLink(300); + StreamStr & rLink = aLink(); + + // Produce output: module + if (bShowModule) + { + int nMax = i_module.size() - 1; + int nCount = 0; + StringVector::const_iterator + itm = i_module.begin(); + for ( ; + nCount < nMax; + ++itm, ++nCount ) + { + CurOut() << "::" << *itm; + } + + CurOut() << "::"; + if (bLink2Module) + { + aDestination.Set_File(output::ModuleFileName()); + Env().Linker().Get_Link2Position(rLink, aDestination); + CurOut() + >> *new Html::Link( rLink.c_str() ) + << *itm; + rLink.reset(); + } + else + { + CurOut() << *itm; + } + + if (bHasCeOrName) + CurOut() << "::"; + } // end if (bShowModule) + + // CodeEntity and member: + aDestination.Set_File( rLink << i_ce << ".html" << c_str ); + rLink.reset(); + + if (bHasCeOrName) + { + if (bUseMember) + { + if (bLink2Member) + { + bool bFunction = strstr(i_member,"()") != 0; + String sMember( i_member ); + if (bFunction) + sMember.assign(i_member.c_str(), sMember.length()-2); + + Env().Linker().Get_Link2Member(rLink, aDestination, sMember); + CurOut() + << i_ce << "::" + >> *new Html::Link(rLink.c_str()) + << i_member; + } + else + { + CurOut() + << i_ce << "::" + << i_member; + } + } + else + { + if (bLink2Ce) + { + Env().Linker().Get_Link2Position(rLink, aDestination); + CurOut() + >> *new Html::Link(rLink.c_str()) + << i_ce; + } + else + { + CurOut() << i_ce; + } + } + } // endif (bHasCeOrName) + + if (i_sequenceCount > 0) + finish_Sequence(i_sequenceCount); +} + +void +HF_IdlTypeText::produce_BuiltIn( const String & i_type, + int i_sequenceCount ) const +{ + if (i_sequenceCount > 0) + start_Sequence(i_sequenceCount); + CurOut() << i_type; + if (i_sequenceCount > 0) + finish_Sequence(i_sequenceCount); +} + +void +HF_IdlTypeText::produce_IndexLink( const StringVector & i_module, + const String & i_ce, + const String & i_member, + bool i_bIsOwner ) const +{ + output::Node & + rCeNode = Env().OutputTree().Provide_Node(i_module); + output::Position + aDestination(rCeNode); + bool + bShowModule = i_bIsOwner OR i_module.size() > 0 AND i_ce.empty(); + bool + bShowNonModule = NOT bShowModule OR i_bIsOwner AND NOT i_ce.empty(); + bool + bUseMember = NOT i_member.empty(); + + StreamLock aLink(300); + StreamStr & rLink = aLink(); + + // Produce output: module + if (bShowModule) + { + if (i_bIsOwner) + { + int nMax = bShowNonModule ? i_module.size() : i_module.size() - 1; + int nCount = 0; + for ( StringVector::const_iterator itm = i_module.begin(); + nCount < nMax; + ++itm, ++nCount ) + { + CurOut() << "::" << *itm; + } + CurOut() << ":: ."; + } + + if (NOT bShowNonModule) + { + aDestination.Set_File(output::ModuleFileName()); + Env().Linker().Get_Link2Position(rLink, aDestination); + CurOut() + >> *new Html::Link( rLink.c_str() ) + >> *new Html::Bold + << i_module.back(); + rLink.reset(); + } + } // end if (bShowModule) + + if (bShowNonModule) + { + aDestination.Set_File( rLink << i_ce << ".html" << c_str ); + rLink.reset(); + + if (bUseMember) + { + bool bFunction = strstr(i_member,"()") != 0; + String sMember( i_member ); + if (bFunction) + sMember.assign(i_member.c_str(), sMember.length()-2); + Env().Linker().Get_Link2Member(rLink, aDestination, sMember); + CurOut() + >> *new Html::Link(rLink.c_str()) + >> *new Html::Bold + << i_member; + } + else + { + Env().Linker().Get_Link2Position(rLink, aDestination); + if (i_bIsOwner) + { + CurOut() + >> *new Html::Link(rLink.c_str()) + << i_ce; + } + else + { + CurOut() + >> *new Html::Link(rLink.c_str()) + >> *new Html::Bold + << i_ce; + } + } + } // endif (bHasCeOrName) +} + +int +HF_IdlTypeText::count_Sequences( const char * i_sFullType ) const +{ + int ret = 0; + + for ( const char * pCount = i_sFullType; + *pCount != 0; + ) + { + pCount = strstr(pCount,"sequence"); + if (pCount != 0) + { + pCount += sizeof("sequence"); // = strlen(sequence) + 1 for '<'. + if ( *(pCount-1) == '\0' ) + { + // SYNTAX_ERR + return 0; + } + ++ret; + } + } // end for + + return ret; +} + +void +HF_IdlTypeText::start_Sequence( int i_count ) const +{ + csv_assert( i_count > 0 ); + for (int i = 0; i < i_count; ++i ) + { + CurOut() << "sequence< "; + } +} + +void +HF_IdlTypeText::finish_Sequence( int i_count ) const +{ + csv_assert( i_count > 0 ); + for (int i = 0; i < i_count; ++i ) + { + CurOut() << " >"; + } +} + + + + diff --git a/autodoc/source/display/idl/hfi_typetext.hxx b/autodoc/source/display/idl/hfi_typetext.hxx new file mode 100644 index 000000000000..1b2158de9577 --- /dev/null +++ b/autodoc/source/display/idl/hfi_typetext.hxx @@ -0,0 +1,156 @@ +/************************************************************************* + * + * $RCSfile: hfi_typetext.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:49 $ + * + * 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 ADC_DISPLAY_HFI_TYPETEXT_HXX +#define ADC_DISPLAY_HFI_TYPETEXT_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + + +class HF_IdlTypeText : public HtmlFactory_Idl +{ + public: + enum E_Index { use_for_javacompatible_index }; + + HF_IdlTypeText( + Environment & io_rEnv, + Xml::Element & o_rOut, + bool i_bWithLink, + const client * i_pScopeGivingCe = 0 ); + HF_IdlTypeText( + Environment & io_rEnv, + E_Index e ); + virtual ~HF_IdlTypeText(); + + void Produce_byData( + ary::idl::Type_id i_idType ) const; + void Produce_byData( + ary::idl::Ce_id i_idCe ) const; + void Produce_byData( + const String & i_sFullName ) const; + void Produce_LinkInDocu( + const String & i_scope, + const String & i_name, + const String & i_member ) const; + void Produce_LocalLinkInDocu( + const String & i_member ) const; + void Produce_IndexLink( + Xml::Element & o_out, + const client & i_ce ) const; + void Produce_IndexOwnerLink( + Xml::Element & o_out, + const client & i_ce ) const; + private: + // Locals + enum E_Existence + { + exists_dontknow, + exists_yes, + exists_no + }; + + void produce_FromStd( + const StringVector & + i_module, + const String & i_ce, + const String & i_member, + int i_sequenceCount, + E_Existence i_ceExists ) const; + void produce_BuiltIn( + const String & i_type, + int i_sequenceCount ) const; + void produce_IndexLink( + const StringVector & + i_module, + const String & i_ce, + const String & i_member, + bool i_bIsOwner ) const; + int count_Sequences( + const char * i_sFullType ) const; + void start_Sequence( + int i_count ) const; + void finish_Sequence( + int i_count ) const; + const ary::idl::Module * + referingModule() const; + const client * referingCe() const; + + // DATA + mutable const client * + pReferingCe; + bool bWithLink; +}; + + + +// IMPLEMENTATION + + + +#endif + + diff --git a/autodoc/source/display/idl/hfi_xrefpage.cxx b/autodoc/source/display/idl/hfi_xrefpage.cxx new file mode 100644 index 000000000000..1a294f6b03e7 --- /dev/null +++ b/autodoc/source/display/idl/hfi_xrefpage.cxx @@ -0,0 +1,221 @@ +/************************************************************************* + * + * $RCSfile: hfi_xrefpage.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:49 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hfi_xrefpage.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_navibar.hxx" +#include "hfi_typetext.hxx" +#include "hi_env.hxx" + + +namespace +{ + +const String + C_sTitleStart("uses of "); +const String + C_sCRLF("\n"); + +} // anonymous namespace + + + +HF_IdlXrefs::HF_IdlXrefs( Environment & io_rEnv, + Xml::Element & o_rOut, + const String & i_prefix, + const client & i_ce ) + : HtmlFactory_Idl(io_rEnv, &o_rOut), + rContentDirectory(*new Html::Paragraph), + pClient(&i_ce) +{ + produce_Main(i_prefix, i_ce); +} + +HF_IdlXrefs::~HF_IdlXrefs() +{ +} + +void +HF_IdlXrefs::Write_ManualLinks( const client & i_ce ) const +{ + const StringVector & + rLinks2Refs = i_ce.Secondaries().Links2RefsInManual(); + if ( rLinks2Refs.size() == 0 ) + { + rContentDirectory + << "References in Developer Manual" + << new Html::LineBreak + << C_sCRLF; + return; + } + + + rContentDirectory + >> *new Html::Link("#devmanrefs") + << "References in Developer Manual" + << new Html::LineBreak + << C_sCRLF; + + HF_SubTitleTable + aList(CurOut(), "devmanrefs", "References in Developer Manual", 1); + Xml::Element & + rOutCell = aList.Add_Row() >>* new Html::TableCell; + + for ( StringVector::const_iterator it = rLinks2Refs.begin(); + it != rLinks2Refs.end(); + ++it ) + { + rOutCell + >> *new Html::Link( Env().Link2Manual(*it)) + << *it; + rOutCell + << new Html::LineBreak + << C_sCRLF; + } // end for + + CurOut() << new Html::HorizontalLine(); + +} + +void +HF_IdlXrefs::Produce_List( const char * i_title, + const char * i_label, + ce_list & i_iterator ) const +{ + if (NOT i_iterator) + { + rContentDirectory + << i_title + << new Html::LineBreak + << C_sCRLF; + return; + } + + csv_assert(*i_label == '#'); + + rContentDirectory + >> *new Html::Link(i_label) + << i_title + << new Html::LineBreak + << C_sCRLF; + + HF_SubTitleTable + aList(CurOut(), i_label+1, i_title, 1); + Xml::Element & + rOutCell = aList.Add_Row() >>* new Html::TableCell; + HF_IdlTypeText + aTypeWriter(Env(), rOutCell, true, pClient); + for ( ce_list & it = i_iterator; it; ++it ) + { + aTypeWriter.Produce_byData(*it); + rOutCell << new Html::LineBreak; + } // end for + CurOut() << new Html::HorizontalLine(); +} + +void +HF_IdlXrefs::produce_Main( const String & i_prefix, + const client & i_ce ) const +{ + make_Navibar(i_ce); + + HF_TitleTable + aTitle(CurOut()); + aTitle.Produce_Title( StreamLock(200)() + << C_sTitleStart + << i_prefix + << " " + << i_ce.LocalName() + << c_str ); + + aTitle.Add_Row() << &rContentDirectory; + rContentDirectory + >> *new Html::Link( StreamLock(200)() + << i_ce.LocalName() + << ".html" + << c_str ) + >> *new Html::Bold + << "back to " + << i_prefix + << " " + << i_ce.LocalName(); + rContentDirectory + << new Html::LineBreak + << new Html::LineBreak + << C_sCRLF; + + CurOut() << new Html::HorizontalLine(); +} + +void +HF_IdlXrefs::make_Navibar( const client & i_ce ) const +{ + HF_IdlNavigationBar + aNaviBar(Env(), CurOut()); + aNaviBar.Produce_CeXrefsMainRow(i_ce); + CurOut() << new Html::HorizontalLine(); +} diff --git a/autodoc/source/display/idl/hfi_xrefpage.hxx b/autodoc/source/display/idl/hfi_xrefpage.hxx new file mode 100644 index 000000000000..407141ca3380 --- /dev/null +++ b/autodoc/source/display/idl/hfi_xrefpage.hxx @@ -0,0 +1,117 @@ +/************************************************************************* + * + * $RCSfile: hfi_xrefpage.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:50 $ + * + * 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 ADC_DISPLAY_HFI_XREFPAGE_HXX +#define ADC_DISPLAY_HFI_XREFPAGE_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "hi_factory.hxx" + // COMPONENTS + // PARAMETERS + + +class HF_IdlXrefs : public HtmlFactory_Idl +{ + public: + + HF_IdlXrefs( + Environment & io_rEnv, + Xml::Element & o_rOut, + const String & i_prefix, + const client & i_ce); + virtual ~HF_IdlXrefs(); + + /** @descr + Only lists which are tried to be produced by this, will occur + in the content directory of the page. They will have links, + if the list has at least one element, else the list is + mentioned in the directory without link and won't appear as + a list below. + + @param i_label [*i_label == '#'] + */ + void Produce_List( + const char * i_title, + const char * i_label, + ce_list & i_iterator ) const; + void Write_ManualLinks( + const client & i_ce ) const; + + private: + // Locals + void produce_Main( + const String & i_prefix, + const client & i_ce ) const; + void make_Navibar( + const client & i_ce ) const; + // DATA + Xml::Element & rContentDirectory; + const client * pClient; +}; + + + +// IMPLEMENTATION + +#endif diff --git a/autodoc/source/display/idl/hi_ary.cxx b/autodoc/source/display/idl/hi_ary.cxx new file mode 100644 index 000000000000..8852ffa3045e --- /dev/null +++ b/autodoc/source/display/idl/hi_ary.cxx @@ -0,0 +1,324 @@ +/************************************************************************* + * + * $RCSfile: hi_ary.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:51 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hi_ary.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <cosv/ploc_dir.hxx> +#include <ary/idl/i_gate.hxx> +#include <ary/idl/i_module.hxx> +#include <ary/idl/i_ce.hxx> +#include <ary/idl/i_type.hxx> +#include <ary/idl/ip_ce.hxx> +#include <ary/idl/ip_type.hxx> + + +inline const ary::idl::Gate & +AryAccess::gate() const + { return rGate; } + +inline const ary::idl::CePilot & +AryAccess::ces() const + { return rGate.Ces(); } + +inline const ary::idl::TypePilot & +AryAccess::types() const + { return rGate.Types(); } + +inline const ary::idl::Module * +AryAccess::find_SubModule( const ary::idl::Module & i_parent, + const String & i_name ) const +{ + ary::idl::Ce_id + nModule = i_parent.Search_Name(i_name); + return ces().Search_Module(nModule); +} + +bool +AryAccess::nextName( const char * & io_TextPtr, + String & o_name ) const +{ + if ( strncmp(io_TextPtr,"::", 2) == 0 ) + io_TextPtr += 2; + + const char * pEnd = strchr(io_TextPtr,':'); + size_t nLen = pEnd == 0 + ? strlen(io_TextPtr) + : pEnd - io_TextPtr; + o_name.assign(io_TextPtr, nLen); + io_TextPtr += nLen; + return nLen > 0; +} + + + +AryAccess::AryAccess( const ary::idl::Gate & i_rGate ) + : rGate(i_rGate) +{ +} + +const ary::idl::Module & +AryAccess::GlobalNamespace() const +{ + return ces().GlobalNamespace(); +} + +const ary::idl::Module & +AryAccess::Find_Module( ary::idl::Ce_id i_ce ) const +{ + return ces().Find_Module(i_ce); +} + + +const ary::idl::CodeEntity & +AryAccess::Find_Ce( ary::idl::Ce_id i_ce ) const +{ + return ces().Find_Ce(i_ce); +} + +const ary::idl::Type & +AryAccess::Find_Type( ary::idl::Type_id i_type ) const +{ + return types().Find_Type(i_type); +} + +ary::idl::Ce_id +AryAccess::CeFromType( ary::idl::Type_id i_type ) const +{ + return types().Search_CeRelatedTo(i_type); +} + +bool +AryAccess::IsBuiltInOrRelated( const ary::idl::Type & i_type ) const +{ + return types().IsBuiltInOrRelated(i_type); +} + +bool +AryAccess::Search_Ce( StringVector & o_module, + String & o_mainEntity, + String & o_memberEntity, + const char * i_sText, + const ary::idl::Module & i_referingScope ) const +{ + o_module.erase(o_module.begin(),o_module.end()); + o_mainEntity = String::Null_(); + o_memberEntity = String::Null_(); + + const ary::idl::Module * pModule = 0; + + if ( strncmp(i_sText, "::", 2) == 0 + OR strncmp(i_sText, "com::sun::star", 14) == 0 ) + pModule = &GlobalNamespace(); + else + { + pModule = &i_referingScope; + ces().Get_Text(o_module, o_mainEntity, o_memberEntity, *pModule); + } + + const char * pNext = i_sText; + String sNextName; + + // Find Module: + while ( nextName(pNext, sNextName) ) + { + const ary::idl::Module * + pSub = find_SubModule(*pModule, sNextName); + if (pSub != 0) + { + pModule = pSub; + o_module.push_back(sNextName); + } + else + break; + } + + // Find main CodeEntity: + if ( sNextName.length() == 0 ) + return true; + ary::idl::Ce_id nCe = pModule->Search_Name(sNextName); + if (NOT nCe.IsValid()) + return false; + o_mainEntity = sNextName; + + // Find member: + if ( *pNext == 0 ) + return true; + if (strchr(pNext,':') != 0) + return false; // This must not happen in IDL + + int nMemberLen = strlen(pNext); + if ( nMemberLen > 2 + ? *(pNext + nMemberLen - 2) == '(' + : false ) + { + nMemberLen -= 2; + } + o_memberEntity.assign(pNext,nMemberLen); + +#if 0 +// The following code avoids false links, but is rather expensive +// in runtime time consumation. + + const ary::idl::CodeEntity * + pCe = Find_Ce(nCe); + if (pCe == 0) + return false; + + if ( NOT ary::idl::ifc_ce::attr::Search_Member(*pCe,o_memberEntity) ) + return false; +#endif + + return true; +} + +bool +AryAccess::Search_CesModule( StringVector & o_module, + const String & i_scope, + const String & i_ce, + const ary::idl::Module & i_referingScope ) const +{ + o_module.erase(o_module.begin(),o_module.end()); + + const ary::idl::Module * + pModule = 0; + + if ( strncmp(i_scope, "::", 2) == 0 + OR strncmp(i_scope, "com::sun::star", 14) == 0 ) + pModule = &GlobalNamespace(); + else + { + pModule = &i_referingScope; + static String Dummy1; + static String Dummy2; + ces().Get_Text(o_module, Dummy1, Dummy2, *pModule); + } + + const char * pNext = i_scope; + String sNextName; + + // Find Module: + while ( nextName(pNext, sNextName) ) + { + const ary::idl::Module * + pSub = find_SubModule(*pModule, sNextName); + if (pSub != 0) + { + pModule = pSub; + o_module.push_back(sNextName); + } + else + return false; + } // end while + return pModule->Search_Name(i_ce).IsValid(); +} + +const ary::idl::Module * +AryAccess::Search_Module( const StringVector & i_nameChain ) const +{ + const ary::idl::Module * ret = + &GlobalNamespace(); + for ( StringVector::const_iterator it = i_nameChain.begin(); + it != i_nameChain.end(); + ++it ) + { + ret = find_SubModule(*ret, *it); + if (ret == 0) + break; + } // end for + return ret; +} + +void +AryAccess::Get_CeText( StringVector & o_module, + String & o_ce, + String & o_member, + const ary::idl::CodeEntity & i_ce ) const +{ + ces().Get_Text(o_module, o_ce, o_member, i_ce); +} + +void +AryAccess::Get_TypeText( StringVector & o_module, + String & o_sCe, + ary::idl::Ce_id & o_nCe, + int & o_sequenceCount, + const ary::idl::Type & i_type ) const +{ + i_type.Get_Text(o_module, o_sCe, o_nCe, o_sequenceCount, gate()); +} + +void +AryAccess::Get_IndexData( std::vector<ary::idl::Ce_id> & o_data, + ary::idl::alphabetical_index::E_Letter i_letter ) const +{ + rGate.Secondaries().Get_AlphabeticalIndex(o_data, i_letter); +} + + +const ary::idl::CePilot & +AryAccess::Ces() const +{ + return rGate.Ces(); +} diff --git a/autodoc/source/display/idl/hi_ary.hxx b/autodoc/source/display/idl/hi_ary.hxx new file mode 100644 index 000000000000..b3fba820767a --- /dev/null +++ b/autodoc/source/display/idl/hi_ary.hxx @@ -0,0 +1,179 @@ +/************************************************************************* + * + * $RCSfile: hi_ary.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:51 $ + * + * 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 ADC_DISPLAY_HI_ARY_HXX +#define ADC_DISPLAY_HI_ARY_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include <ary/idl/i_language.hxx> + // PARAMETERS +#include <ary/idl/ip_2s.hxx> + + +namespace ary +{ +namespace idl +{ + class Module; + class Gate; + class CePilot; + class TypePilot; +} +} +namespace output +{ + class Position; +} + +class AryAccess +{ + public: + // LIFECYCLE + AryAccess( + const ary::idl::Gate & + i_rGate ); + // INQUIRY + const ary::idl::Module & + GlobalNamespace() const; + const ary::idl::Module & + Find_Module( + ary::idl::Ce_id i_ce ) const; + const ary::idl::CodeEntity & + Find_Ce( + ary::idl::Ce_id i_ce ) const; + const ary::idl::Type & + Find_Type( + ary::idl::Type_id i_type ) const; + ary::idl::Ce_id CeFromType( + ary::idl::Type_id i_type ) const; + bool IsBuiltInOrRelated( + const ary::idl::Type & + i_type ) const; + bool Search_Ce( + StringVector & o_module, + String & o_mainEntity, + String & o_memberEntity, + const char * i_sText, + const ary::idl::Module & + i_referingScope ) const; + bool Search_CesModule( + StringVector & o_module, + const String & i_scope, + const String & i_ce, + const ary::idl::Module & + i_referingScope ) const; + const ary::idl::Module * + Search_Module( + const StringVector & + i_nameChain ) const; + + void Get_CeText( + StringVector & o_module, + String & o_ce, + String & o_member, + const ary::idl::CodeEntity & + i_ce ) const; + void Get_TypeText( + StringVector & o_module, + String & o_sCe, + ary::idl::Ce_id & o_nCe, + int & o_sequenceCount, + const ary::idl::Type & + i_type ) const; + void Get_IndexData( + std::vector<ary::idl::Ce_id> & + o_data, + ary::idl::alphabetical_index::E_Letter + i_letter ) const; + + const ary::idl::CePilot & + Ces() const; // KORR + private: + const ary::idl::Module * + find_SubModule( + const ary::idl::Module & + i_parent, + const String & i_name ) const; + + /// Gets "::"-separated names out of a string. + bool nextName( + const char * & io_TextPtr, + String & o_name ) const; + + + const ary::idl::Gate & + gate() const; + const ary::idl::CePilot & + ces() const; + const ary::idl::TypePilot & + types() const; + // DATA + const ary::idl::Gate & + rGate; +}; + + +#endif + + diff --git a/autodoc/source/display/idl/hi_display.cxx b/autodoc/source/display/idl/hi_display.cxx new file mode 100644 index 000000000000..ac5a510e43cd --- /dev/null +++ b/autodoc/source/display/idl/hi_display.cxx @@ -0,0 +1,208 @@ +/************************************************************************* + * + * $RCSfile: hi_display.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:52 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <idl/hi_display.hxx> + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <ary/idl/i_module.hxx> +#include <toolkit/out_tree.hxx> +#include "hi_ary.hxx" +#include "hi_env.hxx" +#include "hi_main.hxx" + + +inline bool +HtmlDisplay_Idl::IsModule( const ary::idl::CodeEntity & i_ce ) const +{ + return i_ce.ClassId() == ary::idl::Module::class_id; +} + +inline const ary::idl::Module & +HtmlDisplay_Idl::Module_Cast( const ary::idl::CodeEntity & i_ce ) const +{ + return static_cast< const ary::idl::Module& >(i_ce); +} + + + + +HtmlDisplay_Idl::HtmlDisplay_Idl() + : pCurPageEnv(), + pMainDisplay() +{ +} + +HtmlDisplay_Idl::~HtmlDisplay_Idl() +{ +} + +void +HtmlDisplay_Idl::do_Run( const char * i_sOutputDirectory, + const ary::idl::Gate & i_rAryGate, + const display::CorporateFrame & i_rLayout ) +{ + SetRunData( i_sOutputDirectory, i_rAryGate, i_rLayout ); + + Create_StartFile(); + Create_FilesInNameTree(); + Create_IndexFiles(); + Create_FilesInProjectTree(); + Create_PackageList(); + Create_HelpFile(); +} + +void +HtmlDisplay_Idl::SetRunData( const char * i_sOutputDirectory, + const ary::idl::Gate & i_rAryGate, + const display::CorporateFrame & i_rLayout ) +{ + csv::ploc::Path aOutputDir( i_sOutputDirectory, true ); + pCurPageEnv = new HtmlEnvironment_Idl( aOutputDir, i_rAryGate, i_rLayout ); + pMainDisplay = new MainDisplay_Idl(*pCurPageEnv); +} + +void +HtmlDisplay_Idl::Create_StartFile() +{ +} + +void +HtmlDisplay_Idl::Create_FilesInNameTree() +{ + Cout() << "\nCreate files in subtree namespaces ..." << Endl(); + + const ary::idl::Module & + rGlobalNamespace = pCurPageEnv->Data().GlobalNamespace(); + pCurPageEnv->Goto_Directory( pCurPageEnv->OutputTree().NamesRoot(), true ); + + RecursiveDisplay_Module(rGlobalNamespace); + + Cout() << "... done." << Endl(); +} + +void +HtmlDisplay_Idl::Create_IndexFiles() +{ + Cout() << "\nCreate files in subtree index ..." << Endl(); + pCurPageEnv->Goto_Directory( pCurPageEnv->OutputTree().IndexRoot(), true ); + pMainDisplay->WriteGlobalIndices(); + Cout() << "... done.\n" << Endl(); +} + +typedef ary::Dyn_StdConstIterator<ary::idl::Ce_id> Dyn_CeIterator; +typedef ary::StdConstIterator<ary::idl::Ce_id> CeIterator; + +void +HtmlDisplay_Idl::RecursiveDisplay_Module( const ary::idl::Module & i_module ) +{ + i_module.Visit(*pMainDisplay); + + Dyn_CeIterator aMembers; + i_module.Get_Names(aMembers); + + for ( CeIterator & iter = *aMembers; + iter; + ++iter ) + { + const ary::idl::CodeEntity & + rCe = pCurPageEnv->Data().Find_Ce(*iter); + + if ( NOT IsModule(rCe) ) + rCe.Visit(*pMainDisplay); + else + { + pCurPageEnv->Goto_DirectoryLevelDown( rCe.LocalName(), true ); + RecursiveDisplay_Module( Module_Cast(rCe) ); + pCurPageEnv->Goto_DirectoryLevelUp(); + } + } // end for +} + +void +HtmlDisplay_Idl::Create_FilesInProjectTree() +{ +} + +void +HtmlDisplay_Idl::Create_PackageList() +{ +#if 0 + Cout() << "\nCreate package list ..." << std::flush; + + pCurPageEnv->CurPosition() = pCurPageEnv->OutputTree().Root(); + + // KORR + // ... + + Cout() << " done." << Endl(); +#endif // 0 +} + +void +HtmlDisplay_Idl::Create_HelpFile() +{ +} + + diff --git a/autodoc/source/display/idl/hi_env.cxx b/autodoc/source/display/idl/hi_env.cxx new file mode 100644 index 000000000000..2987421c9344 --- /dev/null +++ b/autodoc/source/display/idl/hi_env.cxx @@ -0,0 +1,182 @@ +/************************************************************************* + * + * $RCSfile: hi_env.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:52 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hi_env.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <cosv/ploc_dir.hxx> +#include <cfrstd.hxx> +#include <toolkit/out_tree.hxx> +#include "hi_ary.hxx" +#include "hi_linkhelper.hxx" + + + +const String C_s_index_files("index-files"); + +const String C_sUseFileSuffix("-use.html"); +const String C_IndexA_FileName("index-1.html"); + + +HtmlEnvironment_Idl::HtmlEnvironment_Idl( const csv::ploc::Path & i_rOutputDir, + const ary::idl::Gate & i_rGate, + const display::CorporateFrame & i_rLayout ) + : aOutputRoot(i_rOutputDir), + pData(new AryAccess(i_rGate)), + pOutputTree(new output::Tree), + aCurPosition(pOutputTree->Root()), + pLayout(&i_rLayout), + pLinker() +{ + StringVector aHelp; + pOutputTree->Set_NamesRoot(aHelp); + + aHelp.push_back(output::IndexFilesDirName()); + pOutputTree->Set_IndexRoot(aHelp); + + (*aHelp.begin()) = String("com"); + aHelp.push_back(String("sun")); + aHelp.push_back(String("star")); + pOutputTree->Set_Overview(aHelp, output::ModuleFileName() ); + + pLinker = new LinkHelper(*this); +} + +HtmlEnvironment_Idl::~HtmlEnvironment_Idl() +{ +} + +namespace +{ +StringVector G_aChain; +} + +void +HtmlEnvironment_Idl::Goto_Directory( output::Position i_pos, + bool i_bCreateDirectoryIfNecessary ) +{ + aCurPosition = i_pos; + aCurPath = aOutputRoot.MyPath(); + + aCurPosition.Get_Chain(G_aChain); + for ( StringVector::const_iterator it = G_aChain.begin(); + it != G_aChain.end(); + ++it ) + { + aCurPath.DirChain() += *it; + } + + if (i_bCreateDirectoryIfNecessary) + create_Directory(aCurPath); +} + +void +HtmlEnvironment_Idl::Goto_DirectoryLevelDown( const String & i_subDirName, + bool i_bCreateDirectoryIfNecessary ) +{ + aCurPosition +=(i_subDirName); + + aCurPath.SetFile(String::Null_()); + aCurPath.DirChain() += i_subDirName; + + if (i_bCreateDirectoryIfNecessary) + create_Directory(aCurPath); +} + +void +HtmlEnvironment_Idl::Goto_DirectoryLevelUp() +{ + aCurPosition -= 1; + + aCurPath.SetFile(String::Null_()); + aCurPath.DirChain() -= 1; +} + +void +HtmlEnvironment_Idl::Set_CurFile( const String & i_fileName ) +{ + aCurPath.SetFile(i_fileName); +} + +void +HtmlEnvironment_Idl::create_Directory( const csv::ploc::Path & i_path ) + +{ + csv::ploc::Directory aCurDir(i_path); + if (NOT aCurDir.Exists()) + aCurDir.PhysicalCreate(); +} + +const char * +HtmlEnvironment_Idl::Link2Manual( const String & i_link ) const +{ + static StreamStr aLink_(200); + aLink_.reset(); + aCurPosition.Get_LinkToRoot(aLink_); + aLink_ << "../devman/" + << i_link; + return aLink_.c_str(); +} + + diff --git a/autodoc/source/display/idl/hi_env.hxx b/autodoc/source/display/idl/hi_env.hxx new file mode 100644 index 000000000000..aac333cfe2b4 --- /dev/null +++ b/autodoc/source/display/idl/hi_env.hxx @@ -0,0 +1,179 @@ +/************************************************************************* + * + * $RCSfile: hi_env.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:54 $ + * + * 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 ADC_DISPLAY_HI_ENV_HXX +#define ADC_DISPLAY_HI_ENV_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS +#include <cosv/ploc.hxx> +#include <cosv/ploc_dir.hxx> + // PARAMETERS +#include <toolkit/out_position.hxx> + +namespace ary +{ +namespace idl +{ + class Gate; +} +} +namespace display +{ + class CorporateFrame; +} +namespace output +{ + class Tree; +} + +class AryAccess; +class LinkHelper; + +/** @resp + Provides enviroment information to the HTML factory + classes. + + @descr + All information that is not included in the data, especially + about the layout of the output tree and the access to + information from the repository are provided here. + + @see HtmlFactory +*/ +class HtmlEnvironment_Idl +{ + public: + // LIFECYCLE + HtmlEnvironment_Idl( + const csv::ploc::Path & + io_rOutputDir, + const ary::idl::Gate & + i_rGate, + const display::CorporateFrame & + i_rLayout ); + ~HtmlEnvironment_Idl(); + + // OPERATIONS + void Goto_Directory( + output::Position i_pos, + bool i_bCreateDirectoryIfNecessary ); + void Goto_DirectoryLevelDown( + const String & i_subDirName, + bool i_bCreateDirectoryIfNecessary ); + void Goto_DirectoryLevelUp(); + void Set_CurFile( + const String & i_fileName ); + + // INQUIRY + const AryAccess & Data() const { return *pData; } + const char * Link2Manual( + const String & i_link ) const; + + /// This may be reimplemented for removing dead links to members. + bool Is_MemberExistenceCheckRequired() const + { return false; } + + /// @return Holds only the current directory, not the current file. + output::Position & CurPosition() const { return aCurPosition; } + void Get_CurFilePath( + StreamStr & o_buffer ) const + { o_buffer << aCurPath; } + + const display::CorporateFrame & + Layout() const { return *pLayout; } + const LinkHelper & Linker() const { return *pLinker; } + + void Get_LinkTo( + StreamStr & o_result, + output::Position i_destination ) + { CurPosition().Get_LinkTo(o_result, i_destination); } + // ACCESS + output::Tree & OutputTree() { return *pOutputTree; } + + private: + // Local + void create_Directory( + const csv::ploc::Path & + i_path ); + + // DATA + csv::ploc::Directory + aOutputRoot; + csv::ploc::Path aCurPath; + + Dyn<AryAccess> pData; + Dyn<output::Tree> pOutputTree; + mutable output::Position + aCurPosition; + + const display::CorporateFrame * + pLayout; + + Dyn<LinkHelper> pLinker; +}; + + +#endif + + diff --git a/autodoc/source/display/idl/hi_factory.cxx b/autodoc/source/display/idl/hi_factory.cxx new file mode 100644 index 000000000000..ed9343b43e0f --- /dev/null +++ b/autodoc/source/display/idl/hi_factory.cxx @@ -0,0 +1,299 @@ +/************************************************************************* + * + * $RCSfile: hi_factory.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:55 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hi_factory.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_ce.hxx> +#include <toolkit/hf_title.hxx> +#include "hfi_doc.hxx" +#include "hfi_navibar.hxx" +#include "hfi_tag.hxx" +#include "hfi_typetext.hxx" +#include "hi_linkhelper.hxx" + + +extern const String + C_sCellStyle_SummaryLeft("imsum_left"); +extern const String + C_sCellStyle_SummaryRight("imsum_right"); +extern const String + C_sCellStyle_MDetail("imdetail"); +extern const String + C_sMemberTitle("membertitle"); + + +namespace +{ + +const char C_sSpace[92] = " " + " " + " "; +} + + + +void +HtmlFactory_Idl::produce_InternalLink( Xml::Element & o_screen, + const client & i_ce ) const +{ + StreamLock aLocalLink(100); + aLocalLink() << "#" << i_ce.LocalName(); + + o_screen + >> *new Html::TableCell + << new Html::ClassAttr( C_sCellStyle_SummaryLeft ) + >> *new Html::Link( aLocalLink().c_str() ) + << i_ce.LocalName(); +} + +void +HtmlFactory_Idl::produce_ShortDoc( Xml::Element & o_screen, + const client & i_ce ) const +{ + Xml::Element & + rDetailsRowCell = o_screen + >> *new Html::TableCell + << new Html::ClassAttr( C_sCellStyle_SummaryRight ); + HF_IdlShortDocu + aLinkDoc(Env(), rDetailsRowCell); + aLinkDoc.Produce_byData( i_ce ); +} + +void +HtmlFactory_Idl::produce_Bases( Xml::Element & o_screen, + const client & i_ce, + const String & i_sLabel ) const +{ + ary::idl::Type_id nBaseT = baseOf(i_ce); + // ary::idl::ifc_interface::attr::Base(i_ce); + if ( nBaseT.IsValid() ) + { + HF_DocEntryList + aDocList( o_screen ); + aDocList.Produce_Term(i_sLabel); + + int nDepth = 0; + Xml::Element & + rBaseList = aDocList.Produce_Definition() + >> *new Xml::AnElement("pre") + << new Xml::AnAttribute("style","font-family:monospace;"); + recursive_ShowBases( rBaseList, + nBaseT, + nDepth ); + csv_assert(nDepth > 0); + if (nDepth > 30) + nDepth = 30; + rBaseList + << (C_sSpace + 93 - 3*nDepth) + << "|\n" + << (C_sSpace + 93 - 3*nDepth) + << "+-" + >> *new Html::Bold + << i_ce.LocalName(); + } +} + +void +HtmlFactory_Idl::produce_Members( ce_list & it_list, + const String & i_summaryTitle, + const String & i_summaryLabel, + const String & i_detailsTitle, + const String & i_detailsLabel ) const +{ + csv_assert( it_list ); + + HF_SubTitleTable + aSummary( CurOut(), + i_summaryLabel, + i_summaryTitle, + 2 ); + + HF_SubTitleTable + aDetails( CurOut(), + i_detailsLabel, + i_detailsTitle, + 1 ); + + for ( ; it_list; ++it_list ) + { + const ary::idl::CodeEntity & + rCe = Env().Data().Find_Ce(*it_list); + + Xml::Element & + rSummaryRow = aSummary.Add_Row(); + produce_InternalLink(rSummaryRow, rCe); + produce_ShortDoc(rSummaryRow, rCe); + + produce_MemberDetails(aDetails, rCe); + } +} + +void +HtmlFactory_Idl::write_Docu( Xml::Element & o_screen, + const client & i_ce ) const +{ + if (i_ce.Docu() != 0) + { + HF_DocEntryList + aDocuList( o_screen ); + HF_IdlDocu + aDocu( Env(), aDocuList ); + aDocu.Produce_byData(i_ce); + } + + write_ManualLinks(o_screen, i_ce); +} + +void +HtmlFactory_Idl::write_ManualLinks( Xml::Element & o_screen, + const client & i_ce ) const +{ + const StringVector & + rLinks2Descrs = i_ce.Secondaries().Links2DescriptionInManual(); + if ( rLinks2Descrs.size() == 0 ) + return; + + o_screen + >> *new Html::Label(C_sLocalManualLinks.c_str()+1) // Leave out the leading '#'. + << " "; + HF_DocEntryList + aDocuList( o_screen ); + aDocuList.Produce_Term("Developer Manual"); + for ( StringVector::const_iterator it = rLinks2Descrs.begin(); + it != rLinks2Descrs.end(); + ++it ) + { + aDocuList.Produce_Definition() + >> *new Html::Link( Env().Link2Manual(*it)) + << *it; + } // end for +} + +void +HtmlFactory_Idl::produce_MemberDetails( HF_SubTitleTable & o_table, + const client & ce ) const +{ + // Dummy, which does not need to do anything. +} + +void +HtmlFactory_Idl::recursive_ShowBases( Xml::Element & o_screen, + type_id i_baseType, + int & io_nDepth ) const +{ + // go up: + const ary::idl::CodeEntity * + pCe = Env().Linker().Search_CeFromType(i_baseType); + if (pCe == 0) + { + HF_IdlTypeText + aText( Env(), o_screen, pCe != 0 ); + aText.Produce_byData( i_baseType ); + o_screen + << "\n"; + ++io_nDepth; + return; + } + else + { + ary::idl::Type_id nBaseT = baseOf(*pCe); + if (nBaseT.IsValid()) + recursive_ShowBases(o_screen,nBaseT,io_nDepth); + else + { + HF_IdlTypeText + aText( Env(), o_screen, true ); + aText.Produce_byData(pCe->CeId()); + o_screen + << "\n"; + ++io_nDepth; + return; + } + } + + // go back down: + csv_assert(io_nDepth > 0); + if (io_nDepth > 30) + io_nDepth = 30; + o_screen + << (C_sSpace + 93 - 3*io_nDepth) + << "|\n" + << (C_sSpace + 93 - 3*io_nDepth) + << "+-"; + HF_IdlTypeText + aBaseLink( Env(), o_screen, true ); + aBaseLink.Produce_byData(pCe->CeId()); + o_screen + << "\n"; + ++io_nDepth; +} + +HtmlFactory_Idl::type_id +HtmlFactory_Idl::inq_BaseOf( const client & i_ce ) const +{ + // Unused dummy. + return type_id(0); +} + diff --git a/autodoc/source/display/idl/hi_factory.hxx b/autodoc/source/display/idl/hi_factory.hxx new file mode 100644 index 000000000000..fc0dfe13c257 --- /dev/null +++ b/autodoc/source/display/idl/hi_factory.hxx @@ -0,0 +1,166 @@ +/************************************************************************* + * + * $RCSfile: hi_factory.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:56 $ + * + * 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 ADC_DISPLAY_HI_FACTORY_HXX +#define ADC_DISPLAY_HI_FACTORY_HXX + + +// USED SERVICES + // BASE CLASSES +#include <toolkit/htmlfactory.hxx> + // COMPONENTS + // PARAMETERS +#include <ary/stdconstiter.hxx> +#include <ary/idl/i_language.hxx> +#include <toolkit/out_position.hxx> + + +namespace ary +{ + namespace idl + { + class Module; + } +} + + +class HtmlEnvironment_Idl; +class LinkHelper; +class HF_NaviSubRow; +class HF_SubTitleTable; + + +class HtmlFactory_Idl : public HtmlFactory<HtmlEnvironment_Idl> +{ + public: + typedef ary::idl::CodeEntity client; + typedef ary::idl::Ce_id ce_id; + typedef ary::idl::Type_id type_id; + typedef ary::info::CodeInformation ce_info; + + typedef ary::Dyn_StdConstIterator<ce_id> dyn_ce_list; + typedef ary::Dyn_StdConstIterator<type_id> dyn_type_list; + typedef ary::StdConstIterator<ce_id> ce_list; + typedef ary::StdConstIterator<type_id> type_list; + + typedef HtmlEnvironment_Idl Environment; + typedef output::Position OutPosition; + + protected: + HtmlFactory_Idl( + Environment & io_rEnv, + Xml::Element * o_pOut = 0 ) + : HtmlFactory<Environment>(io_rEnv, o_pOut) + { } + + void produce_InternalLink( + Xml::Element & o_row, + const client & i_ce ) const; + void produce_ShortDoc( + Xml::Element & o_row, + const client & i_ce ) const; + void produce_Bases( + Xml::Element & o_screen, + const client & i_ce, + const String & i_sLabel ) const; + void produce_Members( + ce_list & it_list, + const String & i_summaryTitle, + const String & i_summaryLabel, + const String & i_detailsTitle, + const String & i_detailsLabel ) const; + + /// Writes complete docu in standard format. + void write_Docu( + Xml::Element & o_screen, + const client & i_ce ) const; + + void write_ManualLinks( + Xml::Element & o_screen, + const client & i_ce ) const; + private: + // Dummy does nothing + virtual void produce_MemberDetails( + HF_SubTitleTable & o_table, + const client & i_ce ) const; + void recursive_ShowBases( + Xml::Element & o_screen, + type_id i_baseType, + int & io_nDepth ) const; + type_id baseOf( + const client & i_ce ) const + { return inq_BaseOf(i_ce); } + virtual type_id inq_BaseOf( + const client & i_ce ) const; +}; + + +extern const String + C_sCellStyle_SummaryLeft; +extern const String + C_sCellStyle_SummaryRight; +extern const String + C_sCellStyle_MDetail; +extern const String + C_sMemberTitle; + + +#endif diff --git a/autodoc/source/display/idl/hi_linkhelper.cxx b/autodoc/source/display/idl/hi_linkhelper.cxx new file mode 100644 index 000000000000..0593c29dfe46 --- /dev/null +++ b/autodoc/source/display/idl/hi_linkhelper.cxx @@ -0,0 +1,144 @@ +/************************************************************************* + * + * $RCSfile: hi_linkhelper.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:57 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hi_linkhelper.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <ary/idl/i_module.hxx> + + + + +const ary::idl::Module * +LinkHelper::Search_CurModule() const +{ + return Search_Module( rEnv.CurPosition().RelatedNode() ); +} + +const ary::idl::Module * +LinkHelper::Search_Module( output::Node & i_node ) const +{ + static StringVector aNames_; + + output::Node::relative_id + nId = i_node.RelatedNameRoom(); + if (nId == 0) + { + csv::erase_container(aNames_); + i_node.Get_Chain(aNames_); + const ary::idl::Module * pModule = + rEnv.Data().Search_Module(aNames_); + if ( pModule == 0 ) + return 0; + nId = static_cast<output::Node::relative_id>(pModule->Id()); + rEnv.CurPosition().RelatedNode().Set_RelatedNameRoom(nId); + } + + return & rEnv.Data().Find_Module( static_cast<ary::idl::Ce_id>(nId) ); +} + +LinkHelper::OutPosition +LinkHelper::PositionOf_Ce(const CE & i_ce) const +{ + static StringVector aModule_; + csv::erase_container(aModule_); + String sCe; + String sMember; + rEnv.Data().Get_CeText(aModule_, sCe, sMember, i_ce); + output::Node & + rNode = rEnv.OutputTree().RootNode().Provide_Child(aModule_); + return OutPosition(rNode,sCe); +} + + +namespace +{ + const String C_sXrefsSuffix("-xref"); +} + + +LinkHelper::OutPosition +LinkHelper::PositionOf_CurXRefs( const String & i_ceName ) const +{ + return OutPosition( rEnv.CurPosition(), + StreamLock(100)() << i_ceName + << C_sXrefsSuffix + << ".html" + << c_str ); +} + +const String & +LinkHelper::XrefsSuffix() const +{ + return C_sXrefsSuffix; +} + + +String +nameChainLinker( const char * ) +{ + static const String + sModuleFileName_( output::ModuleFileName() ); + return sModuleFileName_; +} diff --git a/autodoc/source/display/idl/hi_linkhelper.hxx b/autodoc/source/display/idl/hi_linkhelper.hxx new file mode 100644 index 000000000000..5d9ee867bd8b --- /dev/null +++ b/autodoc/source/display/idl/hi_linkhelper.hxx @@ -0,0 +1,158 @@ +/************************************************************************* + * + * $RCSfile: hi_linkhelper.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:58 $ + * + * 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 ADC_DISPLAY_HI_LINKHELPER_HXX +#define ADC_DISPLAY_HI_LINKHELPER_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS + // PARAMETERS +#include "hi_ary.hxx" +#include "hi_env.hxx" +#include <toolkit/out_position.hxx> +#include <toolkit/out_tree.hxx> + + +class LinkHelper +{ + public: + typedef ary::idl::CodeEntity CE; + typedef output::Position OutPosition; + + LinkHelper( + HtmlEnvironment_Idl & + io_rEnv ) + : rEnv(io_rEnv) {} + + OutPosition PositionOf_CurModule() const + { return OutPosition( rEnv.CurPosition(), + output::ModuleFileName()); } + OutPosition PositionOf_Ce( + const CE & i_ce ) const; + + OutPosition PositionOf_CurXRefs( + const String & i_ceName) const; + OutPosition PositionOf_Index() const + { OutPosition ret1 = rEnv.OutputTree().IndexRoot(); + return OutPosition( ret1, String(output::IndexFile_A()) ); } + + + const ary::idl::Module * + Search_CurModule() const; + const ary::idl::Module * + Search_Module( + output::Node & i_node ) const; + + const CE * Search_CeFromType( + ary::idl::Type_id i_type ) const; + + +// OutPosition Search_Ce( +// String & o_member, +// const char * i_sText, +// OutPosition * i_referingScope = 0 ) const; + +// OutPosition PositionOf_Ce( +// const char * i_sScope, +// const char * i_sCeName ) const +// { const CE * +// pce = rEnv.Data().Search_Ce( i_sScope, +// i_sCeName ); +// if (pce != 0) return rEnv.Data().PositionOfCe(*pce); +// else return OutPosition(); } + + void Get_Link2Position( + StreamStr & o_link, + OutPosition & i_pos ) const + { rEnv.CurPosition().Get_LinkTo(o_link, i_pos); } + + void Get_Link2Member( + StreamStr & o_link, + OutPosition & i_ownerPos, + const String & i_memberName ) const + { Get_Link2Position(o_link, i_ownerPos); + o_link << "#" << i_memberName; } + const String & XrefsSuffix() const; + + private: + // DATA + mutable HtmlEnvironment_Idl & + rEnv; +}; + +inline const ary::idl::CodeEntity * +LinkHelper::Search_CeFromType( ary::idl::Type_id i_type ) const +{ + ary::idl::Ce_id nCe = rEnv.Data().CeFromType(i_type); + if (nCe.IsValid()) + return &rEnv.Data().Find_Ce(nCe); + return 0; +} + + + +String nameChainLinker( + const char * i_levelName ); + + +#endif diff --git a/autodoc/source/display/idl/hi_main.cxx b/autodoc/source/display/idl/hi_main.cxx new file mode 100644 index 000000000000..da327f3ec6a7 --- /dev/null +++ b/autodoc/source/display/idl/hi_main.cxx @@ -0,0 +1,634 @@ +/************************************************************************* + * + * $RCSfile: hi_main.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:14:59 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include "hi_main.hxx" + + +// NOT FULLY DEFINED SERVICES +#include <algorithm> +#include <cosv/ploc.hxx> +#include <cosv/file.hxx> +#include <ary/idl/i_ce.hxx> +#include <ary/idl/ik_ce.hxx> +#include <ary/idl/ik_enum.hxx> +#include <ary/idl/ik_exception.hxx> +#include <ary/idl/ik_interface.hxx> +#include <ary/idl/ik_service.hxx> +#include <ary/idl/ik_struct.hxx> +#include <ary/idl/ik_typedef.hxx> +#include <cfrstd.hxx> +#include <toolkit/htmlfile.hxx> +#include <toolkit/out_position.hxx> +#include <toolkit/out_tree.hxx> +#include "hfi_constgroup.hxx" +#include "hfi_enum.hxx" +#include "hfi_globalindex.hxx" +#include "hfi_interface.hxx" +#include "hfi_module.hxx" +#include "hfi_struct.hxx" +#include "hfi_service.hxx" +#include "hfi_singleton.hxx" +#include "hfi_typedef.hxx" +#include "hfi_xrefpage.hxx" +#include "hi_env.hxx" +#include "hi_linkhelper.hxx" + + +using ::ary::idl::Ce_id; +using ::ary::idl::Type_id; +using ::ary::idl::ifc_ce::Dyn_CeIterator; + + +/* +typedef ::ary::Dyn_StdConstIterator< ::ary::idl::CommentedReference> + Dyn_ComRefIterator; +namespace read_module = ::ary::idl::ifc_module; +namespace read_interface = ::ary::idl::ifc_interface; +namespace read_service = ::ary::idl::ifc_service; +namespace read_struct = ::ary::idl::ifc_struct; +namespace read_exception = ::ary::idl::ifc_exception; +namespace read_enum = ::ary::idl::ifc_enum; +namespace read_typedef = ::ary::idl::ifc_typedef; +namespace read_constgroup = ::ary::idl::ifc_constantsgroup; +*/ + +namespace +{ + +/** @resp + Inits (constructor) and creates (destructor) the current + html documentation file ( MainDisplay_Idl.pMyFile ). +*/ +class Guard_CurFile +{ + public: + Guard_CurFile( /// For CodeEntities + DocuFile_Html & io_client, + HtmlEnvironment_Idl & + io_env, + const String & i_ceName, + const String & i_titlePrefix ); + Guard_CurFile( /// For Modules + DocuFile_Html & io_client, + HtmlEnvironment_Idl & + io_env ); + Guard_CurFile( /// For Indices + DocuFile_Html & io_client, + HtmlEnvironment_Idl & + io_env, + char i_letter ); + ~Guard_CurFile(); + private: + DocuFile_Html & rClient; + +}; + +/** @resp + Sets and releases the current factory pointer + ( MainDisplay_Idl.pCurFactory ). +*/ +class Guard_CurFactoryPtr +{ + public: + Guard_CurFactoryPtr( + HtmlFactory_Idl *& io_client, + HtmlFactory_Idl & i_factory ) + : rpClient(io_client) + { rpClient = &i_factory; } + + ~Guard_CurFactoryPtr() + { rpClient = 0; } + + private: + HtmlFactory_Idl *& rpClient; + +}; + + +Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client, + HtmlEnvironment_Idl & io_env, + const String & i_ceName, + const String & i_titlePrefix ) + : rClient(io_client) +{ + io_env.Set_CurFile( StreamLock(100)() << i_ceName + << ".html" + << c_str ); + StreamLock aCurFilePath(700); + io_env.Get_CurFilePath(aCurFilePath()); + + rClient.EmptyBody(); + rClient.SetLocation( aCurFilePath().c_str() ); + rClient.SetTitle( StreamLock(100)() << i_titlePrefix << " " << i_ceName << c_str ); +} + +Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client, + HtmlEnvironment_Idl & io_env ) + : rClient(io_client) +{ + io_env.Set_CurFile( output::ModuleFileName() ); + StreamLock aCurFilePath(700); + io_env.Get_CurFilePath(aCurFilePath()); + + rClient.EmptyBody(); + rClient.SetLocation( aCurFilePath().c_str() ); + rClient.SetTitle( StreamLock(100)() << "Module " << io_env.CurPosition().Name() << c_str ); +} + +Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client, + HtmlEnvironment_Idl & io_env, + char i_letter ) + : rClient(io_client) +{ + io_env.Set_CurFile( StreamLock(100)() << "index-" + << ( i_letter != '_' + ? int(i_letter)-'a'+1 + : 27 ) + << ".html" + << c_str ); + StreamLock aCurFilePath(700); + io_env.Get_CurFilePath(aCurFilePath()); + + rClient.EmptyBody(); + rClient.SetLocation( aCurFilePath().c_str() ); + rClient.SetTitle( StreamLock(100)() << "Global Index " + << ( i_letter != '_' + ? char(i_letter-'a'+'A') + : '_' ) + << c_str ); +} + +Guard_CurFile::~Guard_CurFile() +{ + rClient.CreateFile(); +} + + +} // anonymous namespace + + + + +MainDisplay_Idl::MainDisplay_Idl( HtmlEnvironment_Idl & io_rEnv ) + : pEnv(&io_rEnv), + pMyFile(new DocuFile_Html), + pCurFactory(0) +{ + pMyFile->SetStyle( Env().Layout().CssStyle() ); + pMyFile->SetCopyright( Env().Layout().CopyrightText() ); +} + +MainDisplay_Idl::~MainDisplay_Idl() +{ +} + + +void +MainDisplay_Idl::WriteGlobalIndices() +{ + for ( const char * pLetter = "abcdefghijklmnopqrstuvwxyz_X"; *pLetter != 'X'; ++pLetter ) + { + Guard_CurFile gFile( *pMyFile, Env(), *pLetter ); + + HF_IdlGlobalIndex aFactory( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_Page( ary::idl::alphabetical_index::E_Letter(*pLetter) ); + } // end for +} + + +void +MainDisplay_Idl::do_Module( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env() ); + HF_IdlModule aFactory( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_Interface( const ary::idl::CodeEntity & i_ce ) +{ + do_InterfaceDescr(i_ce); + do_Interface2s(i_ce); +} + +void +MainDisplay_Idl::do_Service( const ary::idl::CodeEntity & i_ce ) +{ + do_ServiceDescr(i_ce); + do_Service2s(i_ce); +} + +void +MainDisplay_Idl::do_Struct( const ary::idl::CodeEntity & i_ce ) +{ + do_StructDescr(i_ce); + do_Struct2s(i_ce); +} + +void +MainDisplay_Idl::do_Exception( const ary::idl::CodeEntity & i_ce ) +{ + do_ExceptionDescr(i_ce); + do_Exception2s(i_ce); +} + +void +MainDisplay_Idl::do_Enum( const ary::idl::CodeEntity & i_ce ) +{ + do_EnumDescr(i_ce); + do_Enum2s(i_ce); +} + +void +MainDisplay_Idl::do_Typedef( const ary::idl::CodeEntity & i_ce ) +{ + do_TypedefDescr(i_ce); + do_Typedef2s(i_ce); +} + +void +MainDisplay_Idl::do_ConstantsGroup( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Constants' Group" ); + HF_IdlConstGroup aFactory( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_Singleton( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Singleton" ); + HF_IdlSingleton aFactory( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + + +void +MainDisplay_Idl::do_InterfaceDescr( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Interface" ); + HF_IdlInterface aInterface( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aInterface); + + aInterface.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_ServiceDescr( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Service" ); + HF_IdlService aFactory( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_StructDescr( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Struct" ); + HF_IdlStruct aFactory( *pEnv, pMyFile->Body(), false ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_ExceptionDescr( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Exception" ); + HF_IdlStruct aFactory( *pEnv, pMyFile->Body(), true ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_EnumDescr( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Enum" ); + HF_IdlEnum aFactory( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_TypedefDescr( const ary::idl::CodeEntity & i_ce ) +{ + Guard_CurFile gFile( *pMyFile, + Env(), + i_ce.LocalName(), + "Typedef" ); + HF_IdlTypedef aFactory( *pEnv, pMyFile->Body() ); + Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); + + aFactory.Produce_byData(i_ce); +} + +void +MainDisplay_Idl::do_Interface2s( const ary::idl::CodeEntity & i_ce ) +{ + String sUsesFileName( + StreamLock(100)() + << i_ce.LocalName() + << Env().Linker().XrefsSuffix() + << c_str ); + Guard_CurFile gFile( *pMyFile, + Env(), + sUsesFileName, + "Uses of Interface" ); + HF_IdlXrefs aUses( *pEnv, + pMyFile->Body(), + C_sCePrefix_Interface, + i_ce ); + + Dyn_CeIterator pXrefList; + ary::idl::ifc_interface::xref::Get_Derivations(pXrefList,i_ce); + aUses.Produce_List( + "Derived Interfaces", + "#Deriveds", + *pXrefList ); + ary::idl::ifc_interface::xref::Get_SynonymTypedefs(pXrefList,i_ce); + aUses.Produce_List( + "Synonym Typedefs", + "#Synonyms", + *pXrefList ); + ary::idl::ifc_interface::xref::Get_ExportingServices(pXrefList,i_ce); + aUses.Produce_List( + "Services which Support this Interface", + "#SupportingServices", + *pXrefList ); + ary::idl::ifc_interface::xref::Get_AsReturns(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Return Type", + "#Returns", + *pXrefList ); + ary::idl::ifc_interface::xref::Get_AsParameters(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Parameter", + "#Parameters", + *pXrefList ); + aUses.Write_ManualLinks(i_ce); +} + +void +MainDisplay_Idl::do_Service2s( const ary::idl::CodeEntity & i_ce ) +{ + String sUsesFileName( + StreamLock(100)() + << i_ce.LocalName() + << Env().Linker().XrefsSuffix() + << c_str ); + Guard_CurFile gFile( *pMyFile, + Env(), + sUsesFileName, + "Uses of Service" ); + HF_IdlXrefs aUses( *pEnv, + pMyFile->Body(), + C_sCePrefix_Service, + i_ce ); + Dyn_CeIterator pXrefList; + ary::idl::ifc_service::xref::Get_IncludingServices(pXrefList,i_ce); + aUses.Produce_List( + "Services which Include this Service", + "#IncludingServices", + *pXrefList ); + + ary::idl::ifc_service::xref::Get_InstantiatingSingletons(pXrefList,i_ce); + aUses.Produce_List( + "Singletons which Instantiate this Service", + "#Singletons", + *pXrefList ); + aUses.Write_ManualLinks(i_ce); +} + +void +MainDisplay_Idl::do_Struct2s( const ary::idl::CodeEntity & i_ce ) +{ + String sUsesFileName( + StreamLock(100)() + << i_ce.LocalName() + << Env().Linker().XrefsSuffix() + << c_str ); + Guard_CurFile gFile( *pMyFile, + Env(), + sUsesFileName, + "Uses of Struct" ); + HF_IdlXrefs aUses( *pEnv, + pMyFile->Body(), + C_sCePrefix_Struct, + i_ce ); + Dyn_CeIterator pXrefList; + ary::idl::ifc_struct::xref::Get_Derivations(pXrefList,i_ce); + aUses.Produce_List( + "Derived Structs", + "#Deriveds", + *pXrefList ); + ary::idl::ifc_struct::xref::Get_SynonymTypedefs(pXrefList,i_ce); + aUses.Produce_List( + "Synonym Typedefs", + "#Synonyms", + *pXrefList ); + ary::idl::ifc_struct::xref::Get_AsReturns(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Return Type", + "#Returns", + *pXrefList ); + ary::idl::ifc_struct::xref::Get_AsParameters(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Parameter", + "#Parameters", + *pXrefList ); + aUses.Write_ManualLinks(i_ce); +} + +void +MainDisplay_Idl::do_Exception2s( const ary::idl::CodeEntity & i_ce ) +{ + String sUsesFileName( + StreamLock(100)() + << i_ce.LocalName() + << Env().Linker().XrefsSuffix() + << c_str ); + Guard_CurFile gFile( *pMyFile, + Env(), + sUsesFileName, + "Uses of Exception" ); + HF_IdlXrefs aUses( *pEnv, + pMyFile->Body(), + C_sCePrefix_Exception, + i_ce ); + Dyn_CeIterator pXrefList; + ary::idl::ifc_exception::xref::Get_Derivations(pXrefList,i_ce); + aUses.Produce_List( + "Derived Exceptions", + "#Deriveds", + *pXrefList ); + ary::idl::ifc_exception::xref::Get_RaisingFunctions(pXrefList,i_ce); + aUses.Produce_List( + "Raising Functions", + "#Raisers", + *pXrefList ); + aUses.Write_ManualLinks(i_ce); +} + +void +MainDisplay_Idl::do_Enum2s( const ary::idl::CodeEntity & i_ce ) +{ + String sUsesFileName( + StreamLock(100)() + << i_ce.LocalName() + << Env().Linker().XrefsSuffix() + << c_str ); + Guard_CurFile gFile( *pMyFile, + Env(), + sUsesFileName, + "Uses of Enum" ); + HF_IdlXrefs aUses( *pEnv, + pMyFile->Body(), + C_sCePrefix_Enum, + i_ce ); + Dyn_CeIterator pXrefList; + ary::idl::ifc_enum::xref::Get_SynonymTypedefs(pXrefList,i_ce); + aUses.Produce_List( + "Synonym Typedefs", + "#Synonyms", + *pXrefList ); + ary::idl::ifc_enum::xref::Get_AsReturns(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Return Type", + "#Returns", + *pXrefList ); + ary::idl::ifc_enum::xref::Get_AsParameters(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Parameter", + "#Parameters", + *pXrefList ); + aUses.Write_ManualLinks(i_ce); +} + +void +MainDisplay_Idl::do_Typedef2s( const ary::idl::CodeEntity & i_ce ) +{ + String sUsesFileName( + StreamLock(100)() + << i_ce.LocalName() + << Env().Linker().XrefsSuffix() + << c_str ); + Guard_CurFile gFile( *pMyFile, + Env(), + sUsesFileName, + "Uses of Typedef" ); + HF_IdlXrefs aUses( *pEnv, + pMyFile->Body(), + C_sCePrefix_Typedef, + i_ce ); + Dyn_CeIterator pXrefList; + ary::idl::ifc_typedef::xref::Get_SynonymTypedefs(pXrefList,i_ce); + aUses.Produce_List( + "Synonym Typedefs", + "#Synonyms", + *pXrefList ); + ary::idl::ifc_typedef::xref::Get_AsReturns(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Return Type", + "#Returns", + *pXrefList ); + ary::idl::ifc_typedef::xref::Get_AsParameters(pXrefList,i_ce); + aUses.Produce_List( + "Uses as Parameter", + "#Parameters", + *pXrefList ); + aUses.Write_ManualLinks(i_ce); +} diff --git a/autodoc/source/display/idl/hi_main.hxx b/autodoc/source/display/idl/hi_main.hxx new file mode 100644 index 000000000000..d561723f3a2c --- /dev/null +++ b/autodoc/source/display/idl/hi_main.hxx @@ -0,0 +1,178 @@ +/************************************************************************* + * + * $RCSfile: hi_main.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:00 $ + * + * 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 ADC_DISPLAY_HFIDMAIN_HXX +#define ADC_DISPLAY_HFIDMAIN_HXX + + + +// USED SERVICES + // BASE CLASSES +#include <ary/idl/ihost_ce.hxx> + // COMPONENTS +#include "hi_factory.hxx" + // PARAMETERS + + +class HtmlEnvironment_Idl; +class HtmlFactory_Idl; +class DocuFile_Html; + + +class MainDisplay_Idl : public ary::idl::CeHost +{ + public: + MainDisplay_Idl( + HtmlEnvironment_Idl & + io_rEnv ); + virtual ~MainDisplay_Idl(); + + void WriteGlobalIndices(); + + private: + // Interface ary::idl::CeHost: + virtual void do_Module( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_Service( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_Interface( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_Struct( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_Exception( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_Enum( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_Typedef( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_ConstantsGroup( + const ary::idl::CodeEntity & + i_rData ); + virtual void do_Singleton( + const ary::idl::CodeEntity & + i_rData ); + // Locals + void do_ServiceDescr( + const ary::idl::CodeEntity & + i_rData ); + void do_InterfaceDescr( + const ary::idl::CodeEntity & + i_rData ); + void do_StructDescr( + const ary::idl::CodeEntity & + i_rData ); + void do_ExceptionDescr( + const ary::idl::CodeEntity & + i_rData ); + void do_EnumDescr( + const ary::idl::CodeEntity & + i_rData ); + void do_TypedefDescr( + const ary::idl::CodeEntity & + i_rData ); + void do_SingletonDescr( + const ary::idl::CodeEntity & + i_rData ); + void do_Service2s( + const ary::idl::CodeEntity & + i_rData ); + void do_Interface2s( + const ary::idl::CodeEntity & + i_rData ); + void do_Struct2s( + const ary::idl::CodeEntity & + i_rData ); + void do_Exception2s( + const ary::idl::CodeEntity & + i_rData ); + void do_Enum2s( + const ary::idl::CodeEntity & + i_rData ); + void do_Typedef2s( + const ary::idl::CodeEntity & + i_rData ); + void do_Singleton2s( + const ary::idl::CodeEntity & + i_rData ); + + const HtmlEnvironment_Idl & + Env() const { return *pEnv; } + HtmlEnvironment_Idl & + Env() { return *pEnv; } + Xml::Element & CurHtmlOut() { return pCurFactory->CurOut(); } + + // DATA + HtmlEnvironment_Idl * + pEnv; + Dyn<DocuFile_Html> pMyFile; + HtmlFactory_Idl * pCurFactory; +}; + + + +#endif diff --git a/autodoc/source/display/idl/makefile.mk b/autodoc/source/display/idl/makefile.mk new file mode 100644 index 000000000000..a693866c16df --- /dev/null +++ b/autodoc/source/display/idl/makefile.mk @@ -0,0 +1,110 @@ +#************************************************************************* +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.1 $ +# +# last change: $Author: np $ $Date: 2002-11-01 17:15:01 $ +# +# 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 WARRUNTY OF ANY KIND, EITHER EXPRESS 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): _______________________________________ +# +# +# +#************************************************************************* + +PRJ=..$/..$/.. + +PRJNAME=autodoc +TARGET=display_idl + + +# --- Settings ----------------------------------------------------- + +ENABLE_EXCEPTIONS=true +PRJINC=$(PRJ)$/source + +.INCLUDE : settings.mk +.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk + + +# --- Files -------------------------------------------------------- + +OBJFILES= \ + $(OBJ)$/hfi_constgroup.obj \ + $(OBJ)$/hfi_doc.obj \ + $(OBJ)$/hfi_enum.obj \ + $(OBJ)$/hfi_globalindex.obj \ + $(OBJ)$/hfi_interface.obj \ + $(OBJ)$/hfi_method.obj \ + $(OBJ)$/hfi_module.obj \ + $(OBJ)$/hfi_navibar.obj \ + $(OBJ)$/hfi_property.obj \ + $(OBJ)$/hfi_service.obj \ + $(OBJ)$/hfi_singleton.obj \ + $(OBJ)$/hfi_struct.obj \ + $(OBJ)$/hfi_tag.obj \ + $(OBJ)$/hfi_typedef.obj \ + $(OBJ)$/hfi_typetext.obj \ + $(OBJ)$/hfi_xrefpage.obj \ + $(OBJ)$/hi_ary.obj \ + $(OBJ)$/hi_display.obj \ + $(OBJ)$/hi_env.obj \ + $(OBJ)$/hi_factory.obj \ + $(OBJ)$/hi_linkhelper.obj \ + $(OBJ)$/hi_main.obj + + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk + + + diff --git a/autodoc/source/display/inc/cfrstd.hxx b/autodoc/source/display/inc/cfrstd.hxx new file mode 100644 index 000000000000..6cdef02724c4 --- /dev/null +++ b/autodoc/source/display/inc/cfrstd.hxx @@ -0,0 +1,96 @@ +/************************************************************************* + * + * $RCSfile: cfrstd.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:12 $ + * + * 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 ADC_CFRSTD_HXX +#define ADC_CFRSTD_HXX + + + +// USED SERVICES + // BASE CLASSES +#include <display/corframe.hxx> + // COMPONENTS + // PARAMETERS + + + +class StdFrame : public display::CorporateFrame +{ + public: + virtual DYN Html_Image * + LogoSrc() const; + virtual const char * + LogoLink() const; + virtual const char * + CopyrightText() const; + virtual const char * + CssStyle() const; +}; + + + +// IMPLEMENTATION + + + + +#endif + diff --git a/autodoc/source/display/inc/idl/hi_display.hxx b/autodoc/source/display/inc/idl/hi_display.hxx new file mode 100644 index 000000000000..4e3a292280f4 --- /dev/null +++ b/autodoc/source/display/inc/idl/hi_display.hxx @@ -0,0 +1,144 @@ +/************************************************************************* + * + * $RCSfile: hi_display.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:13 $ + * + * 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 ADC_DISPLAY_HI_DISPLAY_HXX +#define ADC_DISPLAY_HI_DISPLAY_HXX + + + +// USED SERVICES + // BASE CLASSES +#include <autodoc/dsp_html_std.hxx> + // COMPONENTS +#include <cosv/ploc.hxx> + // PARAMETERS + + + +namespace ary +{ + namespace idl + { + class Module; + class CodeEntity; + } // namspace idl +} // namspace csi + + +class MainDisplay_Idl; +class HtmlEnvironment_Idl; + +class HtmlDisplay_Idl : public autodoc::HtmlDisplay_Idl_Ifc +{ + public: + HtmlDisplay_Idl(); + ~HtmlDisplay_Idl(); + private: + // Interface HtmlDisplay_Idl_Ifc: + virtual void do_Run( + const char * i_sOutputDirectory, + const ary::idl::Gate & + i_rAryGate, + const display::CorporateFrame & + i_rLayout ); + void SetRunData( + const char * i_sOutputDirectory, + const ary::idl::Gate & + i_rAryGate, + const display::CorporateFrame & + i_rLayout ); + void Create_StartFile(); + void Create_FilesInNameTree(); + void Create_IndexFiles(); + void Create_FilesInProjectTree(); + void Create_PackageList(); + void Create_HelpFile(); + + /** @descr + - makes sure, the module's directory exists + - creates the module's docu file + - creates docu files for all members of the module + - does the same recursive for all sub-modules. + */ + void RecursiveDisplay_Module( + const ary::idl::Module & + i_rNamespace ); + bool IsModule( + const ary::idl::CodeEntity & + i_ce ) const; + const ary::idl::Module & + Module_Cast( /// @precond Cast must be valid. + const ary::idl::CodeEntity & + i_ce ) const; + // DATA + Dyn<HtmlEnvironment_Idl> + pCurPageEnv; + Dyn<MainDisplay_Idl> + pMainDisplay; +}; + + + +// IMPLEMENTATION + + +#endif + 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..f3a593650234 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_docentry.hxx @@ -0,0 +1,93 @@ +/************************************************************************* + * + * $RCSfile: hf_docentry.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:15 $ + * + * 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 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_Definition(); +}; + + + +#endif + + 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..a99f3f625294 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_funcdecl.hxx @@ -0,0 +1,109 @@ +/************************************************************************* + * + * $RCSfile: hf_funcdecl.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:15 $ + * + * 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 ADC_DISPLAY_HF_FUNCDECL_HXX +#define ADC_DISPLAY_HF_FUNCDECL_HXX + + +// USED SERVICES + // BASE CLASSES +#include <toolkit/htmlfactory.hxx> + // COMPONENTS + // PARAMETERS + + +/** @resp + Provides three cells to put in a function declaration. +*/ +class HF_FunctionDeclaration : public HtmlMaker +{ + public: + HF_FunctionDeclaration( + Xml::Element & o_rParent ); + virtual ~HF_FunctionDeclaration(); + + /// Inserts empty line in 2nd and 3rd cell and returns first. + Xml::Element & Add_ReturnLine(); + + /** Inserts empty line in 1st cell, "raises (" in 2nd + and returns 3rd. + */ + Xml::Element & Add_RaisesLine( + const char * i_sRaisesText, + bool i_bSuppressExtraLine = false ); + + Xml::Element & Front() { return *pFront; } + Xml::Element & Types() { return *pTypes; } + Xml::Element & Names() { return *pNames; } + + private: + Xml::Element * pFront; + Xml::Element * pTypes; + Xml::Element * pNames; +}; + + + +// IMPLEMENTATION + + + +#endif 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..3867472755e2 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_linachain.hxx @@ -0,0 +1,104 @@ +/************************************************************************* + * + * $RCSfile: hf_linachain.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:16 $ + * + * 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 of7 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 ADC_DISPLAY_HF_LINACHAIN_HXX +#define ADC_DISPLAY_HF_LINACHAIN_HXX + + + +// USED SERVICES + // BASE CLASSES +#include "htmlfactory.hxx" +#include "out_position.hxx" + // COMPONENTS + // PARAMETERS + + +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( + output::Position & i_curPosition, + F_LinkMaker i_linkMaker ) const; + void Produce_CompleteChain_forModule( + output::Position & i_curPosition, /// current Module's node + F_LinkMaker i_linkMaker ) const; + private: + void produce_Level( + output::Node & i_levelNode, + output::Position & i_startPosition, + F_LinkMaker i_linkMaker ) const; +}; + +#endif + 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..9fc56427f38f --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_navi_main.hxx @@ -0,0 +1,126 @@ +/************************************************************************* + * + * $RCSfile: hf_navi_main.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:17 $ + * + * 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 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 + + 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..5ada8f2ed7cc --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_navi_sub.hxx @@ -0,0 +1,115 @@ +/************************************************************************* + * + * $RCSfile: hf_navi_sub.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:17 $ + * + * 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 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 + + 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..c568bfa9a853 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/hf_title.hxx @@ -0,0 +1,108 @@ +/************************************************************************* + * + * $RCSfile: hf_title.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:18 $ + * + * 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 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 ); + /// @return a Html::TableCell reference. + Xml::Element & Add_Row(); +}; + + +class HF_SubTitleTable : public HtmlMaker +{ + public: + /// @param i_nColumns [1 .. n] + HF_SubTitleTable( + Xml::Element & o_rOut, + const String & i_label, + const String & i_title, + int i_nColumns ); + virtual ~HF_SubTitleTable(); + + /// @return an Html::TableRow reference. + Xml::Element & Add_Row(); +}; + + +// IMPLEMENTATION + + + +#endif diff --git a/autodoc/source/display/inc/toolkit/htmlfactory.hxx b/autodoc/source/display/inc/toolkit/htmlfactory.hxx new file mode 100644 index 000000000000..ef1f4fe62856 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/htmlfactory.hxx @@ -0,0 +1,135 @@ +/************************************************************************* + * + * $RCSfile: htmlfactory.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:18 $ + * + * 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 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); } + 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 + + diff --git a/autodoc/source/display/inc/toolkit/htmlfile.hxx b/autodoc/source/display/inc/toolkit/htmlfile.hxx new file mode 100644 index 000000000000..0973c928b834 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/htmlfile.hxx @@ -0,0 +1,119 @@ +/************************************************************************* + * + * $RCSfile: htmlfile.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:18 $ + * + * 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 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; +} + +class DocuFile_Html +{ + public: + // LIFECYCLE + DocuFile_Html(); + + void SetLocation( + const csv::ploc::Path & + i_rFilePath ); + void SetTitle( + const char * i_sTitle ); + void SetStyle( + const char * i_sStyle ); + void SetBodyAttr( + const char * i_sAttrName, + const char * i_sAttrValue ); + 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 + udmstri sFilePath; + udmstri sTitle; + udmstri sLocation; + udmstri sStyle; + udmstri sCopyright; + + Html::Body aBodyData; +}; + + + +#endif + + 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..e82c17cd55cc --- /dev/null +++ b/autodoc/source/display/inc/toolkit/out_node.hxx @@ -0,0 +1,162 @@ +/************************************************************************* + * + * $RCSfile: out_node.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:19 $ + * + * 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 ADC_DISPLAY_OUT_NODE_HXX +#define ADC_DISPLAY_OUT_NODE_HXX + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS + // PARAMETERS + + + +namespace output +{ + + +/** @resp + + @descr +*/ +class Node +{ + public: + typedef std::vector< Node* > List; + typedef UINT32 relative_id; + + // LIFECYCLE + enum E_NullObject { null_object }; + + Node(); + explicit Node( + E_NullObject ); + Node( + const String & i_name, + Node & i_parent ); + ~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 + Node & Provide_Child( + const String & i_name ); + 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; } + 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 * 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 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..b4bfcbe082d2 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/out_position.hxx @@ -0,0 +1,154 @@ +/************************************************************************* + * + * $RCSfile: out_position.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:19 $ + * + * 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 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( + 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 LinkTo( + Position & i_destination, + const String & i_localLabel = String::Null_() ) const; + String LinkToRoot( + const String & i_localLabel = String::Null_() ) const; + + void Get_LinkTo( + StreamStr & o_result, + 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() { 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( + intt i_depth ); + + +// IMPLEMENTATION + +inline void +Position::Set_File( const String & i_file ) + { sFile = i_file; } + +} // namespace output + +#endif 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..112598d6c34d --- /dev/null +++ b/autodoc/source/display/inc/toolkit/out_tree.hxx @@ -0,0 +1,170 @@ +/************************************************************************* + * + * $RCSfile: out_tree.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:20 $ + * + * 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 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 diff --git a/autodoc/source/display/inc/toolkit/outputstack.hxx b/autodoc/source/display/inc/toolkit/outputstack.hxx new file mode 100644 index 000000000000..ebb669186be1 --- /dev/null +++ b/autodoc/source/display/inc/toolkit/outputstack.hxx @@ -0,0 +1,107 @@ +/************************************************************************* + * + * $RCSfile: outputstack.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:20 $ + * + * 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 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 + + diff --git a/autodoc/source/display/kernel/displfct.cxx b/autodoc/source/display/kernel/displfct.cxx index 6cf5491e6062..c4665d517d49 100644 --- a/autodoc/source/display/kernel/displfct.cxx +++ b/autodoc/source/display/kernel/displfct.cxx @@ -2,9 +2,9 @@ * * $RCSfile: displfct.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: np $ $Date: 2002-05-14 09:02:12 $ + * last change: $Author: np $ $Date: 2002-11-01 17:15:22 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -65,8 +65,8 @@ // NOT FULLY DECLARED SERVICES #include <html/chd_udk2.hxx> -#include <html/hd_udk2.hxx> -#include <html/cfrstd.hxx> +#include <idl/hi_display.hxx> +#include <cfrstd.hxx> DYN DisplayToolsFactory * DisplayToolsFactory::dpTheInstance_ = 0; @@ -110,7 +110,7 @@ DisplayToolsFactory::Create_HtmlDisplay_UdkStd() const DYN autodoc::HtmlDisplay_Idl_Ifc * DisplayToolsFactory::Create_HtmlDisplay_Idl() const { - return new IdlHtmlDisplay_Udk2; + return new HtmlDisplay_Idl; } const display::CorporateFrame & diff --git a/autodoc/source/display/toolkit/hf_docentry.cxx b/autodoc/source/display/toolkit/hf_docentry.cxx new file mode 100644 index 000000000000..c0fcb01a54b4 --- /dev/null +++ b/autodoc/source/display/toolkit/hf_docentry.cxx @@ -0,0 +1,99 @@ +/************************************************************************* + * + * $RCSfile: hf_docentry.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:23 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/hf_docentry.hxx> + + +// NOT FULLY DEFINED SERVICES + + +HF_DocEntryList::HF_DocEntryList( Xml::Element & o_out ) + : HtmlMaker( o_out >>* new Html::DefList ) +{ +} + +HF_DocEntryList::~HF_DocEntryList() +{ +} + +Xml::Element & +HF_DocEntryList::Produce_Term(const char * i_sTerm ) +{ + Xml::Element & + ret = CurOut() + >> *new Html::DefListTerm + >> *new Html::Bold; + if ( NOT csv::no_str(i_sTerm)) + ret + << i_sTerm; + return ret; +} + +Xml::Element & +HF_DocEntryList::Produce_Definition() +{ + return CurOut() + >> *new Html::DefListDefinition; +} + + diff --git a/autodoc/source/display/toolkit/hf_funcdecl.cxx b/autodoc/source/display/toolkit/hf_funcdecl.cxx new file mode 100644 index 000000000000..f48bbe1cd3d4 --- /dev/null +++ b/autodoc/source/display/toolkit/hf_funcdecl.cxx @@ -0,0 +1,116 @@ +/************************************************************************* + * + * $RCSfile: hf_funcdecl.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:23 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/hf_funcdecl.hxx> + + +// NOT FULLY DEFINED SERVICES + +const String C_sValignTop("top"); + + +HF_FunctionDeclaration::HF_FunctionDeclaration( Xml::Element & o_rParent ) + : HtmlMaker(o_rParent), + pFront(0), + pTypes(0), + pNames(0) +{ + Xml::Element & + rRow = CurOut() + >> *new Html::Table + << new Xml::AnAttribute("border","0") + >> *new Html::TableRow; + pFront = &(rRow >> *new Html::TableCell << new Html::VAlignAttr(C_sValignTop)); + pTypes = &(rRow >> *new Html::TableCell << new Html::VAlignAttr(C_sValignTop)); + pNames = &(rRow >> *new Html::TableCell << new Html::VAlignAttr(C_sValignTop)); +} + +HF_FunctionDeclaration::~HF_FunctionDeclaration() +{ +} + +Xml::Element & +HF_FunctionDeclaration::Add_ReturnLine() +{ + (*pTypes) << new Xml::XmlCode(" <br>\n"); + (*pNames) << new Xml::XmlCode(" <br>\n"); + return *pFront; +} + +Xml::Element & +HF_FunctionDeclaration::Add_RaisesLine( const char * i_sRaisesText, + bool i_bSuppressExtraLine ) +{ + if (NOT i_bSuppressExtraLine) + { + (*pTypes) << new Xml::XmlCode(" <br>"); + (*pNames) << new Xml::XmlCode(" <br>\n"); + } + (*pTypes) + << new Xml::XmlCode("<p class=\"raise\">") + << i_sRaisesText + << new Xml::XmlCode("( </p>\n"); + return *pNames; +} + +
\ No newline at end of file diff --git a/autodoc/source/display/toolkit/hf_linachain.cxx b/autodoc/source/display/toolkit/hf_linachain.cxx new file mode 100644 index 000000000000..e9a8bd9d93cc --- /dev/null +++ b/autodoc/source/display/toolkit/hf_linachain.cxx @@ -0,0 +1,145 @@ +/************************************************************************* + * + * $RCSfile: hf_linachain.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:24 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/hf_linachain.hxx> + + +// NOT FULLY DEFINED SERVICES +#include <toolkit/out_position.hxx> + + + +HF_LinkedNameChain::HF_LinkedNameChain( Xml::Element & o_rOut ) + : HtmlMaker( o_rOut + >> *new Html::Paragraph + << new Html::ClassAttr("namechain") ) +{ +} + +HF_LinkedNameChain::~HF_LinkedNameChain() +{ +} + +void +HF_LinkedNameChain::Produce_CompleteChain( output::Position & i_curPosition, + F_LinkMaker i_linkMaker ) const +{ + produce_Level(i_curPosition.RelatedNode(), i_curPosition, i_linkMaker); +} + +void +HF_LinkedNameChain::Produce_CompleteChain_forModule( output::Position & i_curPosition, + F_LinkMaker i_linkMaker ) const +{ + if (i_curPosition.Depth() == 0) + return; + produce_Level(*i_curPosition.RelatedNode().Parent(), i_curPosition, i_linkMaker); +} + + + +namespace +{ + +StreamStr aLinkBuf(200); + +} + +void +HF_LinkedNameChain::produce_Level( output::Node & i_levelNode, + output::Position & i_startPosition, + F_LinkMaker i_linkMaker ) const +{ + if ( i_levelNode.Depth() > 0 ) + { + produce_Level( *i_levelNode.Parent(), + i_startPosition, + i_linkMaker ); + } + + aLinkBuf.reset(); + + String + sFileName = (*i_linkMaker)(i_levelNode.Name()); + output::Position + aLevelPos(i_levelNode, sFileName); + + i_startPosition.Get_LinkTo(aLinkBuf, aLevelPos); + + if ( i_levelNode.Depth() > 0 ) + { + CurOut() + >> *new Html::Link(aLinkBuf.c_str()) + << new Html::ClassAttr("namechain") + << i_levelNode.Name(); + CurOut() << " :: "; + } + else + { + CurOut() + >> *new Html::Link(aLinkBuf.c_str()) + << new Html::ClassAttr("namechain") + << "::"; + CurOut() << " "; + } +} diff --git a/autodoc/source/display/toolkit/hf_navi_main.cxx b/autodoc/source/display/toolkit/hf_navi_main.cxx new file mode 100644 index 000000000000..cfad07db9050 --- /dev/null +++ b/autodoc/source/display/toolkit/hf_navi_main.cxx @@ -0,0 +1,273 @@ +/************************************************************************* + * + * $RCSfile: hf_navi_main.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:24 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/hf_navi_main.hxx> + + +// NOT FULLY DEFINED SERVICES +#include <cosv/template/tpltools.hxx> + + + +//******************** MainItem and derived ones ***************// +class HF_MainItem : public HtmlMaker +{ + public: + virtual ~HF_MainItem() {} + void Produce_Item() const { do_ProduceItem(); } + protected: + HF_MainItem( + Xml::Element & o_out ) + : HtmlMaker(o_out) {} + private: + virtual void do_ProduceItem() const = 0; +}; + + +namespace +{ + +class StdItem : public HF_MainItem +{ + public: + StdItem( + Xml::Element & o_out, + const char * i_sText, + const char * i_sLink ); + + ~StdItem(); + private: + virtual void do_ProduceItem() const; + + // DATA + udmstri sText; + udmstri sLink; +}; + +class SelfItem : public HF_MainItem +{ + public: + SelfItem( + Xml::Element & o_out, + const char * i_sText ); + ~SelfItem(); + private: + virtual void do_ProduceItem() const; + + // DATA + udmstri sText; +}; + +class NoneItem : public HF_MainItem +{ + public: + NoneItem( + Xml::Element & o_out, + const char * i_sText ); + ~NoneItem(); + private: + virtual void do_ProduceItem() const; + + // DATA + udmstri sText; +}; + +} // anonymous namespace + + + +//******************** HF_NaviMainRow ***************// + + + +HF_NaviMainRow::HF_NaviMainRow( Xml::Element & o_out ) + : HtmlMaker(o_out), + aItems(), + pRow(0) +{ + aItems.reserve(5); + + pRow = + &( CurOut() + >> *new Html::Table + << new Xml::AnAttribute( "border", "0" ) + << new Xml::AnAttribute( "cellpadding", "3" ) + << new Html::ClassAttr("lightbg") + >> *new Html::TableRow + ); +} + +HF_NaviMainRow::~HF_NaviMainRow() +{ + csv::erase_container_of_heap_ptrs(aItems); +} + +void +HF_NaviMainRow::Add_StdItem( const char * i_sText, + const char * i_sLink ) +{ + aItems.push_back(new StdItem( *pRow,i_sText,i_sLink )); +} + +void +HF_NaviMainRow::Add_SelfItem( const char * i_sText ) +{ + aItems.push_back(new SelfItem( *pRow,i_sText )); +} + +void +HF_NaviMainRow::Add_NoneItem( const char * i_sText ) +{ + aItems.push_back(new NoneItem( *pRow,i_sText )); +} + +void +HF_NaviMainRow::Produce_Row() +{ + ItemList::iterator itEnd = aItems.end(); + for ( ItemList::iterator iter = aItems.begin(); + iter != itEnd; + ++iter ) + { + (*iter)->Produce_Item(); + } +} + + + + +//******************** MainItem and derived ones ***************// + +namespace +{ + +StdItem::StdItem( Xml::Element & o_out, + const char * i_sText, + const char * i_sLink ) + : HF_MainItem(o_out), + sText(i_sText), + sLink(i_sLink) +{ +} + +StdItem::~StdItem() +{ +} + +void +StdItem::do_ProduceItem() const +{ + Xml::Element & + rCell = CurOut() >>* new Html::TableCell; + rCell + << new Html::ClassAttr( "navimain" ) + >> *new Html::Link(sLink.c_str()) + << new Html::ClassAttr( "navimain" ) + << sText.c_str(); +} + +SelfItem::SelfItem( Xml::Element & o_out, + const char * i_sText ) + : HF_MainItem(o_out), + sText(i_sText) +{ +} + +SelfItem::~SelfItem() +{ +} + +void +SelfItem::do_ProduceItem() const +{ + Xml::Element & + rCell = CurOut() >>* new Html::TableCell; + rCell + << new Html::ClassAttr( "navimainself" ) + << sText.c_str(); +} + +NoneItem::NoneItem( Xml::Element & o_out, + const char * i_sText ) + : HF_MainItem(o_out), + sText(i_sText) +{ +} + +NoneItem::~NoneItem() +{ +} + +void +NoneItem::do_ProduceItem() const +{ + Xml::Element & + rCell = CurOut() >>* new Html::TableCell; + rCell + << new Html::ClassAttr( "navimainnone" ) + << sText.c_str(); +} + +} // anonymous namespace + + diff --git a/autodoc/source/display/toolkit/hf_navi_sub.cxx b/autodoc/source/display/toolkit/hf_navi_sub.cxx new file mode 100644 index 000000000000..da8deff16ae9 --- /dev/null +++ b/autodoc/source/display/toolkit/hf_navi_sub.cxx @@ -0,0 +1,136 @@ +/************************************************************************* + * + * $RCSfile: hf_navi_sub.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:25 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/hf_navi_sub.hxx> + + +// NOT FULLY DEFINED SERVICES + + +HF_NaviSubRow::HF_NaviSubRow( Xml::Element & o_rOut ) + : HtmlMaker(o_rOut), + aRow(), + pMyRow(0) +{ + Setup_Row(); +} + +HF_NaviSubRow::~HF_NaviSubRow() +{ +} + +void +HF_NaviSubRow::AddItem( const String & i_sText, + const String & i_sLink, + bool i_bSwitchOn ) +{ + aRow.push_back( SubRow_Item( SubRow_Data(i_sText,i_sLink), + i_bSwitchOn )); +} + +void +HF_NaviSubRow::SwitchOn( int i_nIndex ) +{ + if ( i_nIndex < int(aRow.size()) ) + aRow[i_nIndex].second = true; +} + +void +HF_NaviSubRow::Setup_Row() +{ + Html::Table * + pTable = new Html::Table; + CurOut() + >> *pTable + << new Xml::AnAttribute( "border", "0" ) + << new Xml::AnAttribute( "cellpadding", "0" ); + pMyRow = &pTable->AddRow(); +} + +void +HF_NaviSubRow::Produce_Row() +{ + for ( SubRow::const_iterator it = aRow.begin(); + it != aRow.end(); + ++it ) + { + Xml::Element & + rCell = *pMyRow + >> *new Html::TableCell + << new Html::ClassAttr("navisub"); + Xml::Element & + rGoon = (*it).second + ? ( rCell + >> *new Html::Link( StreamLock(100)() + << "#" + << (*it).first.second + << c_str ) + << new Html::ClassAttr("navisub") + ) + : rCell; + rGoon + << (*it).first.first; + } +} + + diff --git a/autodoc/source/display/toolkit/hf_title.cxx b/autodoc/source/display/toolkit/hf_title.cxx new file mode 100644 index 000000000000..2afde9960da2 --- /dev/null +++ b/autodoc/source/display/toolkit/hf_title.cxx @@ -0,0 +1,155 @@ +/************************************************************************* + * + * $RCSfile: hf_title.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:25 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/hf_title.hxx> + + +// NOT FULLY DEFINED SERVICES +#include <stdlib.h> + + +const String C_sTitleBorder("0"); +const String C_sTitleWidth("100%"); +const String C_sTitlePadding("5"); +const String C_sTitleSpacing("3"); + +const String C_sSubTitleBorder("1"); +const String C_sSubTitleWidth("100%"); +const String C_sSubTitlePadding("5"); +const String C_sSubTitleSpacing("0"); +const String C_sColSpan("colspan"); + + +HF_TitleTable::HF_TitleTable( Xml::Element & o_rOut ) + : HtmlMaker(o_rOut >> *new Html::Table( C_sTitleBorder, + C_sTitleWidth, + C_sTitlePadding, + C_sTitleSpacing ) + << new Html::StyleAttr("margin-bottom:6pt;") ) +{ +} + +HF_TitleTable::~HF_TitleTable() +{ +} + + +void +HF_TitleTable::Produce_Title( const char * i_title ) +{ + Add_Row() + << new Html::ClassAttr("title") + << i_title; +} + +Xml::Element & +HF_TitleTable::Add_Row() +{ + return CurOut() + >> *new Html::TableRow + >> *new Html::TableCell; +} + + + + + +HF_SubTitleTable::HF_SubTitleTable( Xml::Element & o_rOut, + const String & i_label, + const String & i_title, + int i_nColumns ) + : HtmlMaker( o_rOut + << new Html::Label(i_label) + >> *new Html::Table( C_sSubTitleBorder, + C_sSubTitleWidth, + C_sSubTitlePadding, + C_sSubTitleSpacing ) + << new Html::ClassAttr("subtitle") ) +{ + csv_assert(i_nColumns > 0); + + Xml::Element & + rCell = CurOut() + >> *new Html::TableRow + >> *new Html::TableCell + << new Html::ClassAttr("subtitle") ; + + if (i_nColumns > 1) + { + String sColumns = StreamLock(20)() << i_nColumns << c_str; + rCell + << new Xml::AnAttribute(C_sColSpan, sColumns); + } + rCell + << i_title; +} + +HF_SubTitleTable::~HF_SubTitleTable() +{ +} + +Xml::Element & +HF_SubTitleTable::Add_Row() +{ + return CurOut() >> *new Html::TableRow; +} diff --git a/autodoc/source/display/toolkit/htmlfile.cxx b/autodoc/source/display/toolkit/htmlfile.cxx new file mode 100644 index 000000000000..2e141475797f --- /dev/null +++ b/autodoc/source/display/toolkit/htmlfile.cxx @@ -0,0 +1,194 @@ +/************************************************************************* + * + * $RCSfile: htmlfile.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:26 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + +#include <precomp.h> +#include <toolkit/htmlfile.hxx> + +// NOT FULLY DECLARED SERVICES +#include <cosv/file.hxx> +#include <udm/html/htmlitem.hxx> + + +using namespace csi; +using csi::xml::AnAttribute; + +DocuFile_Html::DocuFile_Html() + : sFilePath(), + sTitle(), + sLocation(), + sStyle(), + sCopyright(), + aBodyData() +{ + SetBodyAttr( "bgcolor", "#ffffff" ); +} + +void +DocuFile_Html::SetLocation( const csv::ploc::Path & i_rFilePath ) +{ + StreamLock sPath(1000); + i_rFilePath.Get( sPath() ); + + sFilePath = sPath().c_str(); +} + +void +DocuFile_Html::SetTitle( const char * i_sTitle ) +{ + sTitle = i_sTitle; +} + +void +DocuFile_Html::SetStyle( const char * i_sStyle ) +{ + sStyle = i_sStyle; +} + +void +DocuFile_Html::SetBodyAttr( const char * i_sAttrName, + const char * i_sAttrValue ) +{ + aBodyData << new AnAttribute( i_sAttrName, i_sAttrValue ); +} + +void +DocuFile_Html::SetCopyright( const char * i_sCopyright ) +{ + sCopyright = i_sCopyright; +} + +void +DocuFile_Html::EmptyBody() +{ + aBodyData.SetContent(0); + aBodyData + >> *new html::Label( "_top_" ) + << " "; + +} + +bool +DocuFile_Html::CreateFile() +{ + csv::File aFile(sFilePath, csv::CFM_CREATE); + if (NOT aFile.open()) + { + Cerr() << "Can't create file " << sFilePath << "." << Endl(); + return false; + } + + WriteHeader(aFile); + WriteBody(aFile); + + // Write end + static const char sCompletion[] = "\n</html>\n"; + aFile.write( sCompletion ); + + aFile.close(); + Cout() << '.' << Flush(); + return true; +} + + +void +DocuFile_Html::WriteHeader( csv::File & io_aFile ) +{ + static const char s1[] = + "<html>\n<head>\n<title>"; + static const char s2[] = + "</title>\n<style>"; + static const char s3[] = + "</style>\n</head>\n"; + + io_aFile.write( s1 ); + io_aFile.write( sTitle ); + io_aFile.write( s2 ); + io_aFile.write( sStyle ); + io_aFile.write( s3 ); +} + +void +DocuFile_Html::WriteBody( csv::File & io_aFile ) +{ + aBodyData + >> *new html::Link( "#_top_" ) + << "Top of Page"; + + if ( sCopyright.length() > 0 ) + { + aBodyData + << new xml::XmlCode("<hr size=\"3\">"); + + aBodyData + >> *new html::Paragraph + << new html::ClassAttr( "copyright" ) + << new xml::AnAttribute( "align", "center" ) + << new xml::XmlCode(sCopyright); + } + aBodyData.WriteOut(io_aFile); +} + + + + + + + diff --git a/autodoc/source/display/toolkit/makefile.mk b/autodoc/source/display/toolkit/makefile.mk new file mode 100644 index 000000000000..7b5abd6d6a0c --- /dev/null +++ b/autodoc/source/display/toolkit/makefile.mk @@ -0,0 +1,99 @@ +#************************************************************************* +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.1 $ +# +# last change: $Author: np $ $Date: 2002-11-01 17:15:26 $ +# +# 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 WARRUNTY OF ANY KIND, EITHER EXPRESS 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): _______________________________________ +# +# +# +#************************************************************************* + +PRJ=..$/..$/.. + +PRJNAME=autodoc +TARGET=display_toolkit + + +# --- Settings ----------------------------------------------------- + +ENABLE_EXCEPTIONS=true +PRJINC=$(PRJ)$/source + +.INCLUDE : settings.mk +.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk + + +# --- Files -------------------------------------------------------- + +OBJFILES= \ + $(OBJ)$/hf_docentry.obj \ + $(OBJ)$/hf_funcdecl.obj \ + $(OBJ)$/hf_linachain.obj \ + $(OBJ)$/hf_navi_main.obj \ + $(OBJ)$/hf_navi_sub.obj \ + $(OBJ)$/hf_title.obj \ + $(OBJ)$/htmlfile.obj \ + $(OBJ)$/out_node.obj \ + $(OBJ)$/out_position.obj \ + $(OBJ)$/out_tree.obj \ + $(OBJ)$/outputstack.obj + + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk + + + diff --git a/autodoc/source/display/toolkit/out_node.cxx b/autodoc/source/display/toolkit/out_node.cxx new file mode 100644 index 000000000000..fd65e8479def --- /dev/null +++ b/autodoc/source/display/toolkit/out_node.cxx @@ -0,0 +1,265 @@ +/************************************************************************* + * + * $RCSfile: out_node.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:27 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/out_node.hxx> + + +// NOT FULLY DEFINED SERVICES +#include <algorithm> + + +namespace output +{ + + +namespace +{ + +struct Less_NodePtr +{ + bool operator()( + Node * p1, + Node * p2 ) const + { return p1->Name() < p2->Name(); } +}; + +struct Less_NodePtr C_Less_NodePtr; + + +Node C_aNullNode(Node::null_object); + + +} // namepace anonymous + + +//********************** Node ***************************// + + +Node::Node() + : sName(), + pParent(0), + aChildren(), + nDepth(0), + nNameRoomId(0) +{ +} + +Node::Node( E_NullObject ) + : sName(), + pParent(0), + aChildren(), + nDepth(-1), + nNameRoomId(0) +{ +} + +Node::Node( const String & i_name, + Node & i_parent ) + : sName(i_name), + pParent(&i_parent), + aChildren(), + nDepth(i_parent.Depth()+1), + nNameRoomId(0) +{ +} + +Node::~Node() +{ + for ( List::iterator it = aChildren.begin(); + it != aChildren.end(); + ++it ) + { + delete *it; + } +} + +Node & +Node::Provide_Child( const String & i_name ) +{ + Node * ret = find_Child(i_name); + if (ret != 0) + return *ret; + return add_Child(i_name); +} + +void +Node::Get_Path( StreamStr & o_result, + intt i_maxDepth ) const +{ + // Intentionally 'i_maxDepth != 0', so max_Depth == -1 sets no limit: + if (i_maxDepth != 0) + { + if (pParent != 0) + pParent->Get_Path(o_result, i_maxDepth-1); + o_result << sName << '/'; + } +} + +void +Node::Get_Chain( StringVector & o_result, + intt i_maxDepth ) const +{ + if (i_maxDepth != 0) + { + // This is called also for the toplevel Node, + // but there happens nothing: + if (pParent != 0) + { + pParent->Get_Chain(o_result, i_maxDepth-1); + o_result.push_back(sName); + } + } +} + +Node * +Node::find_Child( const String & i_name ) +{ + // Trying to optimise search in a vector: + + uintt nSize = aChildren.size(); + if ( nSize > 0 AND nSize < 20 ) + { + List::const_iterator it = aChildren.begin(); + List::const_iterator itMiddle = it + nSize/2; + int comp = 0; + + if ( i_name < (*itMiddle)->Name() ) + { + for ( ; + it != itMiddle + ? (comp = csv::compare(i_name, (*it)->Name())) <= 0 + : false; + ++it ) + { + if ( comp == 0 ) + return *it; + } // end for + } + else + { + List::const_iterator itEnd = aChildren.end(); + for ( it = itMiddle; + it != itEnd + ? (comp = csv::compare(i_name, (*it)->Name())) <= 0 + : false; + ++it ) + { + if ( comp == 0 ) + return *it; + } // end for + } + } + else if (nSize > 0) + { + Node aSearch; + aSearch.sName = i_name; + + List::const_iterator + ret = std::lower_bound( aChildren.begin(), + aChildren.end(), + &aSearch, + C_Less_NodePtr ); + if ( ret != aChildren.end() ? (*ret)->Name() == i_name : false ) + return *ret; + } + + return 0; +} + +Node & +Node::add_Child( const String & i_name ) +{ + Dyn<Node> pNew( new Node(i_name,*this) ); + Node * pSearch = pNew.Ptr(); // Necessary, because Release() invalidates pNew. + + List::iterator + itNew = aChildren.insert( std::upper_bound( aChildren.begin(), + aChildren.end(), + pSearch, + C_Less_NodePtr ), + pSearch ); + return *pNew.Release(); // Release, because it is hold by aChildren now. +} + +Node & +Node::provide_Child( StringVector::const_iterator i_next, + StringVector::const_iterator i_end ) +{ + if (i_next == i_end) + return *this; + return Provide_Child(*i_next).provide_Child(i_next+1,i_end); +} + + + + +Node & +Node::Null_() +{ + return C_aNullNode; +} + + + + +} // namespace output diff --git a/autodoc/source/display/toolkit/out_position.cxx b/autodoc/source/display/toolkit/out_position.cxx new file mode 100644 index 000000000000..54ecd107254b --- /dev/null +++ b/autodoc/source/display/toolkit/out_position.cxx @@ -0,0 +1,260 @@ +/************************************************************************* + * + * $RCSfile: out_position.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:27 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/out_position.hxx> + + +// NOT FULLY DEFINED SERVICES + + + +namespace output +{ + + + +namespace +{ + +const int C_nAssumedMaxLinkLength = 500; + +const int C_nMaxDepth = 30; +char C_sUpLinkArray[3*C_nMaxDepth+1] = + "../../../../../../../../../../" + "../../../../../../../../../../" + "../../../../../../../../../../"; + +const char * C_sUpLink = &C_sUpLinkArray[0]; + + +void move_ToParent( + Node * & io_node, + intt i_levels = 1 ); + +void +move_ToParent( Node * & io_node, + intt i_levels ) +{ + for ( intt n = 0; n < i_levels; ++n ) + { + csv_assert(io_node != 0); + io_node = io_node->Parent(); + } +} + + + +} // namepace anonymous + + + +Position::Position() + : sFile(), + pDirectory(&Node::Null_()) +{ +} + + +Position::Position( Node & i_directory, + const String & i_file ) + : sFile(i_file), + pDirectory(&i_directory) +{ +} + +Position::Position( Position & i_directory, + const String & i_sDifferentFile ) + : sFile(i_sDifferentFile), + pDirectory(i_directory.pDirectory) +{ +} + + +Position::~Position() +{ +} + + +Position & +Position::operator=( Node & i_node ) +{ + pDirectory = &i_node; + sFile.clear(); + return *this; +} + +Position & +Position::operator+=( const String & i_nodeName ) +{ + csv_assert(pDirectory != 0); + + pDirectory = &pDirectory->Provide_Child(i_nodeName); + sFile.clear(); + + return *this; +} + +Position & +Position::operator-=( intt i_levels ) +{ + csv_assert(pDirectory != 0); + + pDirectory = pDirectory->Parent(); + if (pDirectory == 0) + pDirectory = &Node::Null_(); + sFile.clear(); + + return *this; +} + +String +Position::LinkTo( Position & i_destination, + const String & i_localLabel ) const +{ + StreamLock aLink(C_nAssumedMaxLinkLength); + StreamStr & rLink = aLink(); + Get_LinkTo(rLink, i_destination, i_localLabel); + return rLink.c_str(); +} + +String +Position::LinkToRoot( const String & i_localLabel ) const +{ + return StreamLock(C_nAssumedMaxLinkLength)() << get_UpLink(Depth()) << c_str; +} + +void +Position::Get_LinkTo( StreamStr & o_result, + Position & i_destination, + const String & i_localLabel ) const +{ + Node * p1 = pDirectory; + Node * p2 = i_destination.pDirectory; + intt diff = Depth() - i_destination.Depth(); + intt pathLength1 = 0; + intt pathLength2 = 0; + + if ( diff > 0 ) + { + pathLength1 = diff; + move_ToParent(p1,pathLength1); + } + else if ( diff < 0 ) + { + pathLength2 = -diff; + move_ToParent(p2,pathLength2); + } + + while ( p1 != p2 ) + { + move_ToParent(p1); + move_ToParent(p2); + ++pathLength1; + ++pathLength2; + } + + o_result << get_UpLink(pathLength1); + i_destination.pDirectory->Get_Path(o_result, pathLength2); + o_result << i_destination.sFile; + if (i_localLabel.length()) + o_result << "#" << i_localLabel; +} + +void +Position::Get_LinkToRoot( StreamStr & o_result, + const String & i_localLabel ) const +{ + o_result << get_UpLink(Depth()); +} + +void +Position::Set( Node & i_node, + const String & i_file ) +{ + sFile = i_file; + pDirectory = &i_node; +} + + + + +const char * +get_UpLink(intt i_depth) +{ + if ( i_depth <= C_nMaxDepth ) + return C_sUpLink + 3*(C_nMaxDepth - i_depth); + + + StreamLock aRet(i_depth*3 + 1); + StreamStr & rRet = aRet(); + for ( intt nDepth = i_depth; nDepth > C_nMaxDepth; nDepth -= C_nMaxDepth ) + { + rRet << C_sUpLink; + } + rRet << C_sUpLink + 3*(C_nMaxDepth - nDepth); + return rRet.c_str(); +} + + + +} // namespace output diff --git a/autodoc/source/display/toolkit/out_tree.cxx b/autodoc/source/display/toolkit/out_tree.cxx new file mode 100644 index 000000000000..af87503bcc54 --- /dev/null +++ b/autodoc/source/display/toolkit/out_tree.cxx @@ -0,0 +1,88 @@ +/************************************************************************* + * + * $RCSfile: out_tree.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:28 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/out_tree.hxx> + + +// NOT FULLY DEFINED SERVICES + + +namespace output +{ + +Tree::Tree() + : pRoot(new Node), + pNamesRoot(pRoot.Ptr()), + pIndexRoot(pRoot.Ptr()), + pProjectsRoot(pRoot.Ptr()), + aOverview() +{ +} + +Tree::~Tree() +{ +} + + + +} // namespace output diff --git a/autodoc/source/display/toolkit/outputstack.cxx b/autodoc/source/display/toolkit/outputstack.cxx new file mode 100644 index 000000000000..622c67178e4f --- /dev/null +++ b/autodoc/source/display/toolkit/outputstack.cxx @@ -0,0 +1,93 @@ +/************************************************************************* + * + * $RCSfile: outputstack.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: np $ $Date: 2002-11-01 17:15:28 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + + +#include <precomp.h> +#include <toolkit/outputstack.hxx> + + +// NOT FULLY DEFINED SERVICES + + + +OutputStack::OutputStack() +{ +} + +OutputStack::~OutputStack() +{ +} + +void +OutputStack::Enter( csi::xml::Element & io_rDestination ) +{ + aCurDestination.push(&io_rDestination); +} + +void +OutputStack::Leave() +{ + csv_assert( NOT aCurDestination.empty() ); + aCurDestination.pop(); +} + + + |