summaryrefslogtreecommitdiff
path: root/autodoc/source/display/idl
diff options
context:
space:
mode:
Diffstat (limited to 'autodoc/source/display/idl')
-rw-r--r--autodoc/source/display/idl/hfi_constgroup.cxx140
-rw-r--r--autodoc/source/display/idl/hfi_constgroup.hxx68
-rw-r--r--autodoc/source/display/idl/hfi_doc.cxx194
-rw-r--r--autodoc/source/display/idl/hfi_doc.hxx88
-rw-r--r--autodoc/source/display/idl/hfi_enum.cxx136
-rw-r--r--autodoc/source/display/idl/hfi_enum.hxx70
-rw-r--r--autodoc/source/display/idl/hfi_globalindex.cxx278
-rw-r--r--autodoc/source/display/idl/hfi_globalindex.hxx91
-rw-r--r--autodoc/source/display/idl/hfi_hierarchy.cxx205
-rw-r--r--autodoc/source/display/idl/hfi_hierarchy.hxx127
-rw-r--r--autodoc/source/display/idl/hfi_interface.cxx360
-rw-r--r--autodoc/source/display/idl/hfi_interface.hxx93
-rw-r--r--autodoc/source/display/idl/hfi_linklist.cxx380
-rw-r--r--autodoc/source/display/idl/hfi_linklist.hxx147
-rw-r--r--autodoc/source/display/idl/hfi_method.cxx238
-rw-r--r--autodoc/source/display/idl/hfi_method.hxx106
-rw-r--r--autodoc/source/display/idl/hfi_module.cxx302
-rw-r--r--autodoc/source/display/idl/hfi_module.hxx85
-rw-r--r--autodoc/source/display/idl/hfi_navibar.cxx227
-rw-r--r--autodoc/source/display/idl/hfi_navibar.hxx85
-rw-r--r--autodoc/source/display/idl/hfi_property.cxx454
-rw-r--r--autodoc/source/display/idl/hfi_property.hxx185
-rw-r--r--autodoc/source/display/idl/hfi_service.cxx365
-rw-r--r--autodoc/source/display/idl/hfi_service.hxx101
-rw-r--r--autodoc/source/display/idl/hfi_singleton.cxx136
-rw-r--r--autodoc/source/display/idl/hfi_singleton.hxx71
-rw-r--r--autodoc/source/display/idl/hfi_siservice.cxx178
-rw-r--r--autodoc/source/display/idl/hfi_siservice.hxx74
-rw-r--r--autodoc/source/display/idl/hfi_struct.cxx206
-rw-r--r--autodoc/source/display/idl/hfi_struct.hxx81
-rw-r--r--autodoc/source/display/idl/hfi_tag.cxx357
-rw-r--r--autodoc/source/display/idl/hfi_tag.hxx180
-rw-r--r--autodoc/source/display/idl/hfi_typedef.cxx95
-rw-r--r--autodoc/source/display/idl/hfi_typedef.hxx67
-rw-r--r--autodoc/source/display/idl/hfi_typetext.cxx760
-rw-r--r--autodoc/source/display/idl/hfi_typetext.hxx160
-rw-r--r--autodoc/source/display/idl/hfi_xrefpage.cxx276
-rw-r--r--autodoc/source/display/idl/hfi_xrefpage.hxx107
-rw-r--r--autodoc/source/display/idl/hi_ary.cxx273
-rw-r--r--autodoc/source/display/idl/hi_ary.hxx164
-rw-r--r--autodoc/source/display/idl/hi_display.cxx200
-rw-r--r--autodoc/source/display/idl/hi_env.cxx202
-rw-r--r--autodoc/source/display/idl/hi_env.hxx163
-rw-r--r--autodoc/source/display/idl/hi_factory.cxx323
-rw-r--r--autodoc/source/display/idl/hi_factory.hxx172
-rw-r--r--autodoc/source/display/idl/hi_linkhelper.cxx99
-rw-r--r--autodoc/source/display/idl/hi_linkhelper.hxx110
-rw-r--r--autodoc/source/display/idl/hi_main.cxx766
-rw-r--r--autodoc/source/display/idl/hi_main.hxx181
-rw-r--r--autodoc/source/display/idl/makefile.mk77
50 files changed, 10003 insertions, 0 deletions
diff --git a/autodoc/source/display/idl/hfi_constgroup.cxx b/autodoc/source/display/idl/hfi_constgroup.cxx
new file mode 100644
index 000000000000..d61584e54b0e
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_constgroup.cxx
@@ -0,0 +1,140 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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);
+ produce_Title(aTitle, C_sCePrefix_Constants, i_ce);
+
+ 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).operator bool() )
+ {
+ 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,true); // true := avoid link to Use-page.
+
+ 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);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_constgroup.hxx b/autodoc/source/display/idl/hfi_constgroup.hxx
new file mode 100644
index 000000000000..4e5dd8f6b5fa
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_constgroup.hxx
@@ -0,0 +1,68 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_doc.cxx b/autodoc/source/display/idl/hfi_doc.cxx
new file mode 100644
index 000000000000..07ee3db97bee
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_doc.cxx
@@ -0,0 +1,194 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_doc.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+#include <ary_i/d_token.hxx>
+#include <toolkit/hf_docentry.hxx>
+#include "hfi_tag.hxx"
+#include "hi_ary.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_fromCodeEntity( const client & i_ce ) const
+{
+ const ce_info *
+ i_pDocu = Get_IdlDocu(i_ce.Docu());
+ if (i_pDocu != 0)
+ Produce_byDocuAndScope(*i_pDocu, &i_ce, i_ce);
+}
+
+void
+HF_IdlDocu::Produce_fromReference( const ce_info & i_rDocuForReference,
+ const client & i_rScopeGivingCe ) const
+{
+ Produce_byDocuAndScope(i_rDocuForReference, 0, i_rScopeGivingCe );
+}
+
+void
+HF_IdlDocu::Produce_byDocuAndScope( const ce_info & i_rDocu,
+ const client * i_pClient,
+ const client & i_rScopeGivingCe ) const
+{
+ bool bShort = NOT i_rDocu.Short().IsEmpty();
+ bool bDescr = NOT i_rDocu.Description().IsEmpty();
+
+ if ( i_rDocu.IsDeprecated()
+ OR (
+ (i_pClient != 0 ? i_pClient->SightLevel() == ary::idl::sl_File : false)
+ AND NOT i_rDocu.IsPublished()
+ )
+ OR i_rDocu.IsOptional() )
+ { // any usage restriction
+ rOut.Produce_Term("Usage Restrictions");
+
+ if ( i_rDocu.IsDeprecated() )
+ rOut.Produce_Definition() >> *new Html::Italic << "deprecated";
+ if ( (i_pClient != 0 ? i_pClient->SightLevel() == ary::idl::sl_File : false)
+ AND NOT i_rDocu.IsPublished() )
+ rOut.Produce_Definition() >> *new Html::Italic << "not published";
+ if ( i_rDocu.IsOptional() )
+ rOut.Produce_Definition() >> *new Html::Italic << "optional";
+
+ if ( i_rDocu.IsDeprecated() AND
+ // KORR_FUTURE
+ // Workaround, because DocuTex2::IsEmpty() does not
+ // calculate whitespace tokens only as empty.
+ i_rDocu.DeprecatedText().Tokens().size() > 1 )
+ {
+ rOut.Produce_Term("Deprecation Info");
+
+ HF_IdlDocuTextDisplay
+ aDescription( Env(), 0, i_rScopeGivingCe);
+ aDescription.Out().Enter( rOut.Produce_Definition() );
+ i_rDocu.DeprecatedText().DisplayAt( aDescription );
+ aDescription.Out().Leave();
+ }
+ } // end if (<any usage restriction>)
+
+ if ( bShort OR bDescr )
+ {
+ rOut.Produce_Term("Description");
+ HF_IdlDocuTextDisplay
+ aDescription( Env(), 0, i_rScopeGivingCe);
+ if (bShort)
+ {
+ aDescription.Out().Enter( rOut.Produce_Definition() );
+ i_rDocu.Short().DisplayAt( aDescription );
+ aDescription.Out().Leave();
+ }
+ if (bDescr)
+ {
+ aDescription.Out().Enter( rOut.Produce_Definition() );
+ i_rDocu.Description().DisplayAt( aDescription );
+ aDescription.Out().Leave();
+ }
+ }
+
+ std::vector< csi::dsapi::DT_SeeAlsoAtTag* >
+ aSeeAlsosWithoutText;
+ std::vector< csi::dsapi::DT_SeeAlsoAtTag* >
+ aSeeAlsosWithText;
+
+ for ( std::vector< ary::inf::AtTag2* >::const_iterator
+ iter = i_rDocu.Tags().begin();
+ iter != i_rDocu.Tags().end();
+ ++iter )
+ {
+ csi::dsapi::DT_SeeAlsoAtTag*
+ pSeeAlso = dynamic_cast< csi::dsapi::DT_SeeAlsoAtTag * >(*iter);
+ if (pSeeAlso != 0 )
+ {
+ if ( pSeeAlso->Text().IsEmpty() )
+ {
+ aSeeAlsosWithoutText.push_back(pSeeAlso);
+ }
+ else
+ {
+ aSeeAlsosWithText.push_back(pSeeAlso);
+ }
+ continue;
+ }
+
+ if ( strlen( (*iter)->Title() ) > 0 )
+ {
+ HF_IdlTag
+ aTag(Env(), i_rScopeGivingCe);
+ Xml::Element &
+ rTerm = rOut.Produce_Term();
+ aTag.Produce_byData( rTerm,
+ rOut.Produce_Definition(),
+ *(*iter) );
+ }
+ } // end for
+
+ if (aSeeAlsosWithoutText.size() > 0)
+ {
+ HF_IdlTag
+ aSeeAlsoTag(Env(), i_rScopeGivingCe);
+ Xml::Element &
+ rTerm = rOut.Produce_Term();
+ aSeeAlsoTag.Produce_byData( rTerm,
+ rOut.Produce_Definition(),
+ aSeeAlsosWithoutText );
+ }
+
+ for ( std::vector< csi::dsapi::DT_SeeAlsoAtTag* >::const_iterator
+ itSee2 = aSeeAlsosWithText.begin();
+ itSee2 != aSeeAlsosWithText.end();
+ ++itSee2 )
+ {
+ HF_IdlTag
+ aTag(Env(), i_rScopeGivingCe);
+ Xml::Element &
+ rTerm = rOut.Produce_Term();
+ aTag.Produce_byData( rTerm,
+ rOut.Produce_Definition(),
+ *(*itSee2) );
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_doc.hxx b/autodoc/source/display/idl/hfi_doc.hxx
new file mode 100644
index 000000000000..a9f28305a68b
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_doc.hxx
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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();
+
+
+ /** Produces documentation by the CodeInfo accompanying
+ ->i_ce.
+ */
+ void Produce_fromCodeEntity(
+ const client & i_ce ) const;
+
+ /** Produces documentation by the CodeInfo accompanying
+ a link or reference to a CodeEntity.
+
+ @param i_rScopeGivingCe
+ Gives the scope from which links are to be calculated.
+ */
+ void Produce_fromReference(
+ const ce_info & i_rDocuForReference,
+ const client & i_rScopeGivingCe ) const;
+
+ private:
+ // Locals
+ /** Produces documentation.
+
+ @param i_rScopeGivingCe
+ Gives the scope from which links are to be calculated.
+ */
+ void Produce_byDocuAndScope(
+ const ce_info & i_rDocu,
+ const client * i_pClient, /// May be 0.
+ const client & i_rScopeGivingCe ) const;
+
+ // DATA
+ HF_DocEntryList & rOut;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_enum.cxx b/autodoc/source/display/idl/hfi_enum.cxx
new file mode 100644
index 000000000000..441881918ab5
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_enum.cxx
@@ -0,0 +1,136 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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);
+ produce_Title(aTitle, C_sCePrefix_Enum, i_ce);
+
+ 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).operator bool() )
+ {
+ 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);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_enum.hxx b/autodoc/source/display/idl/hfi_enum.hxx
new file mode 100644
index 000000000000..0ceafdf26454
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_enum.hxx
@@ -0,0 +1,70 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_globalindex.cxx b/autodoc/source/display/idl/hfi_globalindex.cxx
new file mode 100644
index 000000000000..e76a411c6556
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_globalindex.cxx
@@ -0,0 +1,278 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_globalindex.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/tpl/tpltools.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_types4idl.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_siservice = 15,
+ t_sisingleton = 16,
+ t_MAX
+};
+
+String G_sDummy;
+
+
+/* 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
+ SglIfcService 2015
+ SglIfcSingleton 2016
+*/
+const int C_nNumberOfIdlTypes = 17;
+const char * C_sTypeNames[C_nNumberOfIdlTypes] =
+ { "module ", "interface ", "function ", "service ", "property ",
+ "enum ", "value ", "typedef ", "struct ", "field ",
+ "exception ", "constants group ", "constant ","singleton ", "attribute ",
+ "service", "singleton"
+ };
+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 ",
+ "module", "module"
+ };
+const intt C_nNamesArrayOffset = intt(ary::idl::Module::class_id);
+const int C_nIxField = 9;
+
+
+
+
+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>";
+
+
+
+HF_IdlGlobalIndex::PageData G_PageData;
+
+} // end anonymous namespace
+
+
+inline void
+HF_IdlGlobalIndex::write_EntryItself( Xml::Element & o_destination,
+ const ary::idl::CodeEntity & i_ce,
+ const HF_IdlTypeText & i_typeLinkWriter ) const
+{
+ i_typeLinkWriter.Produce_IndexLink(o_destination, i_ce);
+ o_destination << " - ";
+}
+
+
+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());
+ StreamLock sl(100);
+ aTitle.Produce_Title( sl()
+ << "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);
+
+ // Helper object to produce links to the index Entries.
+ HF_IdlTypeText aTypeLinkWriter(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 )
+ {
+ produce_Line(iter, aTypeLinkWriter);
+ } // 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();
+}
+
+void
+HF_IdlGlobalIndex::produce_Line( PageData::const_iterator i_entry,
+ const HF_IdlTypeText & i_typeLinkWriter) const
+{
+ const client &
+ rCe = Env().Data().Find_Ce(*i_entry);
+ if (NOT rCe.Owner().IsValid())
+ return; // Omit global namespace.
+
+ // The destination for the created output:
+ Xml::Element & rDT = CurOut() >> *new Html::DefListTerm;
+
+ /** The following code is intended to produce an output that
+ will be recognized by the context help system of Forte.
+ That is reached by making it similar to the indices, that
+ Javadoc produces.
+ If the link to the Entry contains a hashmark, the Forte-Help
+ requires following a link to the owner.
+ But if there is no hashmark, the following link must go to
+ the same Entry again. Doesn't make really sense :-(, but that's
+ like it is.
+ */
+ write_EntryItself(rDT,rCe,i_typeLinkWriter);
+ if (rCe.SightLevel() == ary::idl::sl_Member)
+ write_OwnerOfEntry(rDT,rCe,i_typeLinkWriter);
+ else
+ write_EntrySecondTime(rDT,rCe,i_typeLinkWriter);
+
+ // This produces an empty "<dd></dd>", which is also needed to reach
+ // similarity to the Javadoc index:
+ CurOut() << new Html::DefListDefinition;
+}
+
+void
+HF_IdlGlobalIndex::write_OwnerOfEntry( Xml::Element & o_destination,
+ const ary::idl::CodeEntity & i_ce,
+ const HF_IdlTypeText & i_typeLinkWriter ) const
+{
+ const client &
+ rOwner = Env().Data().Find_Ce(i_ce.Owner());
+
+ int nIx = int(i_ce.AryClass() - C_nNamesArrayOffset);
+ csv_assert(csv::in_range(0,nIx,C_nNumberOfIdlTypes));
+
+ o_destination << C_sTypeNames[nIx]
+ << "in ";
+ if (nIx != C_nIxField)
+ {
+ o_destination << C_sOwnerNames[nIx];
+ }
+ else
+ {
+ uintt
+ nOwnerIx = rOwner.AryClass() - C_nNamesArrayOffset;
+ csv_assert(
+ nOwnerIx < static_cast< unsigned int >(C_nNumberOfIdlTypes));
+ o_destination << C_sTypeNames[nOwnerIx];
+ }
+ i_typeLinkWriter.Produce_IndexOwnerLink(o_destination, rOwner);
+}
+
+void
+HF_IdlGlobalIndex::write_EntrySecondTime( Xml::Element & o_destination,
+ const ary::idl::CodeEntity & i_ce,
+ const HF_IdlTypeText & i_typeLinkWriter ) const
+{
+ int nIx = int(i_ce.AryClass() - C_nNamesArrayOffset);
+ csv_assert(csv::in_range(0,nIx,C_nNumberOfIdlTypes));
+
+ o_destination << C_sTypeNames[nIx]
+ << " ";
+ i_typeLinkWriter.Produce_IndexSecondEntryLink(o_destination, i_ce);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_globalindex.hxx b/autodoc/source/display/idl/hfi_globalindex.hxx
new file mode 100644
index 000000000000..eaf4c7d449ac
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_globalindex.hxx
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_GLOBALINDEX_HXX
+#define ADC_DISPLAY_HFI_GLOBALINDEX_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_gate.hxx>
+
+
+class HF_IdlTypeText;
+
+class HF_IdlGlobalIndex : public HtmlFactory_Idl
+{
+ public:
+ typedef std::vector<ary::idl::Ce_id> PageData;
+
+ 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; /// Called by @->Produce_Page()
+ void produce_Line( /// Called by @->Produce_Page()
+ PageData::const_iterator
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+
+ void write_EntryItself( /// Called by @->produceLine()
+ Xml::Element & o_destination,
+ const ary::idl::CodeEntity &
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+
+ void write_OwnerOfEntry( /// Called by @->produceLine()
+ Xml::Element & o_destination,
+ const ary::idl::CodeEntity &
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+
+ void write_EntrySecondTime( /// Called by @->produceLine()
+ Xml::Element & o_destination,
+ const ary::idl::CodeEntity &
+ i_entry,
+ const HF_IdlTypeText &
+ i_typeLinkWriter ) const;
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_hierarchy.cxx b/autodoc/source/display/idl/hfi_hierarchy.cxx
new file mode 100644
index 000000000000..6b2f8b8f578e
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_hierarchy.cxx
@@ -0,0 +1,205 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_hierarchy.hxx"
+
+
+// NOT FULLY DECLARED SERVICES
+#include <udm/html/htmlitem.hxx>
+#include <ary/stdconstiter.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/i_type.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.hxx>
+#include "hfi_interface.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_env.hxx"
+
+
+
+HF_IdlBaseNode::HF_IdlBaseNode( const TYPE & i_rType,
+ const GATE & i_rGate,
+ intt i_nPositionOffset,
+ HF_IdlBaseNode & io_rDerived )
+ : nType(i_rType.TypeId()),
+ aBases(),
+ nCountBases(0),
+ nPosition(i_nPositionOffset),
+ pDerived(&io_rDerived)
+{
+ Ce_id nCe = i_rGate.Types().Search_CeRelatedTo(nType);
+ if (nCe.IsValid())
+ {
+ GatherBases(i_rGate.Ces().Find_Ce(nCe), i_rGate);
+ }
+}
+
+HF_IdlBaseNode::~HF_IdlBaseNode()
+{
+}
+
+void
+HF_IdlBaseNode::FillPositionList( std::vector< const HF_IdlBaseNode* > & o_rPositionList ) const
+{
+ for ( BaseList::const_iterator it = aBases.begin();
+ it != aBases.end();
+ ++it )
+ {
+ (*it)->FillPositionList(o_rPositionList);
+ } // end for
+
+ o_rPositionList.push_back(this);
+}
+
+void
+HF_IdlBaseNode::GatherBases( const CE & i_rCe,
+ const GATE & i_rGate )
+{
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ aHelp;
+ ary::idl::ifc_interface::attr::Get_Bases(aHelp,i_rCe);
+
+ for ( ary::StdConstIterator<ary::idl::CommentedRelation> & it = *aHelp;
+ it.operator bool();
+ ++it )
+ {
+ const TYPE &
+ rBaseType = i_rGate.Types().Find_Type((*it).Type());
+
+ Dyn<HF_IdlBaseNode>
+ pBaseNode( new HF_IdlBaseNode( rBaseType,
+ i_rGate,
+ nPosition,
+ *this )
+ );
+
+ intt nAddedBases = pBaseNode->BaseCount() + 1;
+ nCountBases += nAddedBases;
+ nPosition += nAddedBases;
+ aBases.push_back( pBaseNode.Release() );
+ } // end for
+}
+
+
+void
+Write_BaseHierarchy( csi::xml::Element & o_rOut,
+ HtmlEnvironment_Idl & i_env,
+ const ary::idl::CodeEntity & i_ce )
+{
+ csi::xml::Element &
+ rPre = o_rOut
+ >> *new csi::xml::AnElement("pre")
+ << new csi::html::StyleAttr("font-family:monospace;");
+
+ std::vector<uintt>
+ aSetColumns;
+ rPre
+ >> *new csi::html::Strong
+ << i_ce.LocalName();
+ rPre
+ << "\n";
+ Write_Bases( rPre,
+ i_env,
+ i_ce,
+ aSetColumns );
+ rPre
+ << "\n";
+
+}
+
+
+void
+Write_Bases( csi::xml::Element & o_out,
+ HtmlEnvironment_Idl & i_env,
+ const ary::idl::CodeEntity & i_rCe,
+ std::vector<uintt> & io_setColumns )
+{
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ aHelp;
+ ary::idl::ifc_interface::attr::Get_Bases(aHelp,i_rCe);
+
+ for ( ary::StdConstIterator<ary::idl::CommentedRelation> & it = *aHelp;
+ it.operator bool();
+ // NO INCREMENT HERE, see below
+ )
+ {
+ ary::idl::Type_id
+ nType = (*it).Type();
+ ++it;
+ bool
+ bThereComesMore = it.operator bool();
+
+ ary::idl::Ce_id
+ nCe = i_env.Gate().Types().Search_CeRelatedTo(nType);
+ if (nCe.IsValid())
+ {
+ // KORR_FUTURE
+ // Rather check for id(!) of com::sun::star::uno::XInterface.
+ if (i_env.Gate().Ces().Find_Ce(nCe).LocalName() == "XInterface")
+ continue;
+ }
+
+ for (uintt i = 0; i < io_setColumns.size(); ++i)
+ {
+ if (io_setColumns[i] == 1)
+ o_out << new csi::xml::XmlCode("&#x2503");
+ else
+ o_out << " ";
+ o_out << " ";
+ }
+
+ if (bThereComesMore)
+ o_out << new csi::xml::XmlCode("&#x2523");
+ else
+ o_out << new csi::xml::XmlCode("&#x2517");
+ o_out << " ";
+
+ HF_IdlTypeText
+ aDisplay( i_env, o_out, true, i_env.CurPageCe());
+ aDisplay.Produce_byData(nType);
+ o_out << "\n";
+
+ if (nCe.IsValid())
+ {
+ io_setColumns.push_back(bThereComesMore ? 1 : 0);
+
+ const ary::idl::CodeEntity &
+ rCe = i_env.Gate().Ces().Find_Ce(nCe);
+ Write_Bases( o_out,
+ i_env,
+ rCe,
+ io_setColumns );
+ io_setColumns.pop_back();
+ }
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_hierarchy.hxx b/autodoc/source/display/idl/hfi_hierarchy.hxx
new file mode 100644
index 000000000000..d0a8c7636c5d
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_hierarchy.hxx
@@ -0,0 +1,127 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_HIERARCHY_HXX
+#define ADC_DISPLAY_HFI_HIERARCHY_HXX
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+#include <ary/idl/i_types4idl.hxx>
+
+
+namespace csi
+{
+namespace xml
+{
+ class Element;
+}
+}
+
+
+class HF_IdlInterface;
+class HtmlEnvironment_Idl;
+
+
+
+/** Represents a node in an pyramidic inheritance hierarchy which shall be
+ displayed in text mode.
+*/
+class HF_IdlBaseNode
+{
+ public:
+ typedef ary::idl::CodeEntity CE;
+ typedef ary::idl::Type TYPE;
+ typedef ary::idl::Gate GATE;
+ typedef ary::idl::Ce_id Ce_id;
+ typedef ary::idl::Type_id Type_id;
+
+ /** @descr
+ The constructor recursively calls further constructors of
+ HF_IdlBaseNode for the bases of ->i_rType, if ->i_rType matches to a
+ ->CE.
+ So it builds up a complete hierarchy tree of all base classes
+ of ->i_pEntity.
+ */
+ HF_IdlBaseNode(
+ const TYPE & i_rType,
+ const GATE & i_rGate,
+ intt i_nPositionOffset,
+ HF_IdlBaseNode & io_rDerived );
+ ~HF_IdlBaseNode();
+
+ /** Recursively fills ->o_rPositionList with the instances of base
+ classes in the order in which they will be displayed.
+ */
+ void FillPositionList(
+ std::vector< const HF_IdlBaseNode* > &
+ o_rPositionList ) const;
+
+ Type_id Type() const { return nType; }
+ intt BaseCount() const { return nCountBases; }
+ intt Position() const { return nPosition; }
+ int Xpos() const { return 3*Position(); }
+ int Ypos() const { return 2*Position(); }
+ const HF_IdlBaseNode * Derived() const { return pDerived; }
+
+ private:
+ typedef std::vector< DYN HF_IdlBaseNode* > BaseList;
+
+ void GatherBases(
+ const CE & i_rCe,
+ const GATE & i_rGate );
+
+ // DATA
+ Type_id nType;
+ BaseList aBases;
+ intt nCountBases;
+ intt nPosition;
+ HF_IdlBaseNode * pDerived;
+};
+
+void Write_BaseHierarchy(
+ csi::xml::Element & o_rOut,
+ HtmlEnvironment_Idl &
+ i_env,
+ const ary::idl::CodeEntity &
+ i_rCe );
+
+void Write_Bases(
+ csi::xml::Element & o_rOut,
+ HtmlEnvironment_Idl &
+ i_env,
+ const ary::idl::CodeEntity &
+ i_rCe,
+ std::vector<uintt> &
+ io_setColumns );
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_interface.cxx b/autodoc/source/display/idl/hfi_interface.cxx
new file mode 100644
index 000000000000..2f60a36dd20f
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_interface.cxx
@@ -0,0 +1,360 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_interface.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ik_function.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/idl/ip_ce.hxx>
+#include <ary/idl/ip_type.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_hierarchy.hxx"
+#include "hfi_method.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_Interface("interface");
+
+namespace
+{
+
+const String
+ C_sBaseInterface("Base Interfaces");
+const String
+ C_sList_BaseComments("Comments on Base Interfaces");
+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_MethodsSummay = 0,
+ sli_AttributesSummary = 1,
+ sli_MethodDetails = 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);
+
+ produce_Title(aTitle, C_sCePrefix_Interface, i_ce);
+
+ produce_BaseHierarchy( 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).operator bool() )
+ {
+ eCurProducedMembers = mem_Functions;
+
+ produce_Members( *dpFunctions,
+ C_sList_Methods,
+ C_sList_Methods_Label,
+ C_sDetails_Methods,
+ C_sDetails_Methods_Label,
+ HtmlFactory_Idl::viewtype_summary );
+ pNaviSubRow->SwitchOn(sli_MethodsSummay);
+ }
+
+ dyn_ce_list
+ dpAttributes;
+ ary::idl::ifc_interface::attr::Get_Attributes(dpAttributes, i_ce);
+ if ( (*dpAttributes).operator bool() )
+ {
+ eCurProducedMembers = mem_Attributes;
+
+ produce_Members( *dpAttributes,
+ C_sList_Attributes,
+ C_sList_Attributes_Label,
+ C_sList_AttributesDetails,
+ C_sList_AttributesDetails_Label,
+ HtmlFactory_Idl::viewtype_summary );
+ pNaviSubRow->SwitchOn(sli_AttributesSummary);
+ }
+
+ ary::idl::ifc_interface::attr::Get_Functions(dpFunctions, i_ce);
+ if ( (*dpFunctions).operator bool() )
+ {
+ eCurProducedMembers = mem_Functions;
+
+ produce_Members( *dpFunctions,
+ C_sList_Methods,
+ C_sList_Methods_Label,
+ C_sDetails_Methods,
+ C_sDetails_Methods_Label,
+ HtmlFactory_Idl::viewtype_details );
+ pNaviSubRow->SwitchOn(sli_MethodDetails);
+ }
+
+ ary::idl::ifc_interface::attr::Get_Attributes(dpAttributes, i_ce);
+ if ( (*dpAttributes).operator bool() )
+ {
+ eCurProducedMembers = mem_Attributes;
+
+ produce_Members( *dpAttributes,
+ C_sList_Attributes,
+ C_sList_Attributes_Label,
+ C_sList_AttributesDetails,
+ C_sList_AttributesDetails_Label,
+ HtmlFactory_Idl::viewtype_details );
+ pNaviSubRow->SwitchOn(sli_AttributesDetails);
+ }
+
+ eCurProducedMembers = mem_none;
+
+ pNaviSubRow->Produce_Row();
+}
+
+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_sList_Attributes, C_sList_Attributes_Label, false);
+ ret.AddItem(C_sDetails_Methods, C_sDetails_Methods_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),
+ funcAttr::HasEllipse(i_ce),
+ i_ce );
+}
+
+void
+HF_IdlInterface::produce_BaseHierarchy( Xml::Element & o_screen,
+ const client & i_ce,
+ const String & i_sLabel ) const
+{
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ pHelp;
+ ary::idl::ifc_interface::attr::Get_Bases(pHelp, i_ce);
+ if (NOT (*pHelp).operator bool())
+ return;
+
+ // Check for XInterface as only base:
+ ary::StdConstIterator<ary::idl::CommentedRelation> &
+ itTest = *pHelp;
+ ary::idl::Ce_id
+ nCe = Env().Gate().Types().Search_CeRelatedTo((*itTest).Type());
+ if (nCe.IsValid())
+ {
+ // KORR_FUTURE
+ // Rather check for id(!) of com::sun::star::uno::XInterface.
+ if (Env().Gate().Ces().Find_Ce(nCe).LocalName() == "XInterface")
+ {
+ ++itTest;
+ if (NOT itTest.operator bool())
+ return;
+ }
+ }
+
+ // Write hierarchy:
+
+ HF_DocEntryList
+ aDocList( o_screen );
+ aDocList.Produce_Term(i_sLabel);
+ Xml::Element &
+ rBaseList = aDocList.Produce_Definition();
+
+// NEW
+ Write_BaseHierarchy(rBaseList, Env(), i_ce);
+
+ // Write comments:
+ // KORR_FUTURE: Make sure, no empty table is constructed when comments list is empty.
+ HF_SubTitleTable
+ aBaseTable( aDocList.Produce_Definition(),
+ "",
+ C_sList_BaseComments,
+ 2,
+ HF_SubTitleTable::sublevel_3 );
+
+ ary::Dyn_StdConstIterator<ary::idl::CommentedRelation>
+ pBases;
+ ary::idl::ifc_interface::attr::Get_Bases(pBases, i_ce);
+ for ( ary::StdConstIterator<ary::idl::CommentedRelation> & it = *pBases;
+ it.operator bool();
+ ++it )
+ {
+ Xml::Element &
+ rRow = aBaseTable.Add_Row();
+
+ Xml::Element &
+ rTerm = rRow
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryLeft);
+ HF_IdlTypeText
+ aTypeDisplay( Env(), rTerm, false, 0);
+ aTypeDisplay.Produce_byData((*it).Type());
+
+ Xml::Element &
+ rDocu = rRow
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryRight);
+
+ HF_DocEntryList
+ aDocuList(rDocu);
+
+ if ((*it).Info() != 0)
+ {
+// aDocuList.Produce_Term("Comment on Base Reference");
+
+ HF_IdlDocu
+ aDocuDisplay(Env(), aDocuList);
+ aDocuDisplay.Produce_fromReference(*(*it).Info(), i_ce);
+ }
+ else
+ {
+ const client *
+ pCe = Env().Linker().Search_CeFromType((*it).Type());
+ const ce_info *
+ pShort = pCe != 0
+ ? Get_IdlDocu(pCe->Docu())
+ : (const ce_info *)(0);
+ if ( pShort != 0 )
+ {
+ aDocuList.Produce_NormalTerm("(referenced interface's summary:)");
+
+ Xml::Element &
+ rDef = aDocuList.Produce_Definition();
+ HF_IdlDocuTextDisplay
+ aShortDisplay( Env(), &rDef, *pCe);
+ pShort->Short().DisplayAt(aShortDisplay);
+ } // end if (pShort != 0)
+ } // endif ( (*i_commentedRef).Info() != 0 ) else
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_interface.hxx b/autodoc/source/display/idl/hfi_interface.hxx
new file mode 100644
index 000000000000..74af1eab5037
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_interface.hxx
@@ -0,0 +1,93 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_INTERFACE_HXX
+#define ADC_DISPLAY_HFI_INTERFACE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_types4idl.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+
+
+class HF_NaviSubRow;
+class HF_SubTitleTable;
+class HF_IdlBaseNode;
+
+class HF_IdlInterface : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlInterface(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlInterface();
+
+ void Produce_byData(
+ const client & i_ce ) const;
+ private:
+ // Locals
+ DYN HF_NaviSubRow & make_Navibar(
+ const client & i_ce ) const;
+
+ virtual void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & ce ) const;
+ void produce_BaseHierarchy(
+ Xml::Element & o_screen,
+ const client & i_ce,
+ const String & i_sLabel ) const;
+
+ // Locals
+ enum E_CurProducedMembers
+ {
+ mem_none,
+ mem_Functions,
+ mem_Attributes
+ };
+
+ // DATA
+ mutable E_CurProducedMembers
+ eCurProducedMembers;
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Interface;
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_linklist.cxx b/autodoc/source/display/idl/hfi_linklist.cxx
new file mode 100644
index 000000000000..12810b8e760a
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_linklist.cxx
@@ -0,0 +1,380 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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 <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)
+{
+ *pTable
+ << new Html::ClassAttr("commentedlinks");
+
+ 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)
+{
+ *pTable
+ << new Html::ClassAttr("memberlist");
+
+ 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::doc::OldIdlDocu *
+HF_IdlLinkList::Get_EntryDocu(ce_id i_nMemberId) const
+{
+ if (i_nMemberId.IsValid())
+ return Env().Data().Find_Ce(i_nMemberId).Docu();
+ else
+ return 0;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_linklist.hxx b/autodoc/source/display/idl/hfi_linklist.hxx
new file mode 100644
index 000000000000..4cfe3d8dc7d0
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_linklist.hxx
@@ -0,0 +1,147 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_LINKLIST_HXX
+#define ADC_DISPLAY_HFI_LINKLIST_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+#include <ary_i/ci_text2.hxx>
+#include <ary/doc/d_oldidldocu.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::CommentedRelation>
+ 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
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_method.cxx b/autodoc/source/display/idl/hfi_method.cxx
new file mode 100644
index 000000000000..288f1dea57a9
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_method.cxx
@@ -0,0 +1,238 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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,
+ bool i_bEllipse,
+ 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,
+ i_bEllipse );
+ 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,
+ bool i_bEllipse ) const
+{
+ HF_FunctionDeclaration
+ aDecl(CurOut(), "raises") ;
+ Xml::Element &
+ rReturnLine = aDecl.ReturnCell();
+
+ // Return line:
+ if (i_bOneway)
+ rReturnLine << "[oneway] ";
+ if (i_nReturnType.IsValid())
+ { // Normal function, but not constructors:
+ HF_IdlTypeText
+ aReturn(Env(), rReturnLine, true);
+ aReturn.Produce_byData(i_nReturnType);
+ }
+
+ // Main line:
+ Xml::Element &
+ rNameCell = aDecl.NameCell();
+ rNameCell
+ >> *new Html::Bold
+ << i_sName;
+
+ Xml::Element *
+ pParamEnd = 0;
+
+ bool bParams = i_rParams.operator bool();
+ if (bParams)
+ {
+ rNameCell
+ << "(";
+
+ pParamEnd = write_Param( aDecl, *i_rParams );
+ for (++i_rParams; i_rParams; ++i_rParams)
+ {
+ *pParamEnd << ",";
+ pParamEnd = write_Param( aDecl, *i_rParams );
+ } // end for
+
+ if (i_bEllipse)
+ {
+ Xml::Element &
+ rParamType = aDecl.NewParamTypeCell();
+ rParamType
+ << " ...";
+ pParamEnd = &rParamType;
+ }
+ *pParamEnd
+ << " )";
+ }
+ else
+ {
+ rNameCell
+ << "()";
+ }
+
+ if ( i_rExceptions.operator bool() )
+ {
+ Xml::Element &
+ rExcOut = aDecl.ExceptionCell();
+ 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)
+ {
+ *pParamEnd << ";";
+ }
+ else
+ {
+ rNameCell << ";";
+ }
+}
+
+Xml::Element *
+HF_IdlMethod::write_Param( HF_FunctionDeclaration & o_decl,
+ const ary::idl::Parameter & i_param ) const
+{
+ Xml::Element &
+ rTypeCell = o_decl.NewParamTypeCell();
+ Xml::Element &
+ rNameCell = o_decl.ParamNameCell();
+
+ switch ( i_param.Direction() )
+ {
+ case ary::idl::param_in:
+ rTypeCell << "[in] ";
+ break;
+ case ary::idl::param_out:
+ rTypeCell << "[out] ";
+ break;
+ case ary::idl::param_inout:
+ rTypeCell << "[inout] ";
+ break;
+ } // end switch
+
+ HF_IdlTypeText
+ aTypeWriter(Env(), rTypeCell, true);
+ aTypeWriter.Produce_byData( i_param.Type() );
+
+ rNameCell
+ << i_param.Name();
+ return &rNameCell;
+}
+
+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::ClassAttr("table-in-method")
+ << 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();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_method.hxx b/autodoc/source/display/idl/hfi_method.hxx
new file mode 100644
index 000000000000..eea58978d5c7
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_method.hxx
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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/doc/d_oldidldocu.hxx>
+typedef ary::doc::OldIdlDocu CodeInfo;
+#include "hfi_linklist.hxx"
+
+
+
+namespace csi
+{
+ namespace idl
+ {
+ class Parameter;
+ }
+}
+
+class HF_FunctionDeclaration;
+
+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,
+ bool i_bEllipse,
+ 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,
+ bool i_bEllipse ) const;
+// void write_Param(
+// HF_IdlTypeText & o_type,
+// Xml::Element & o_names,
+// const ary::idl::Parameter &
+// i_param ) const;
+
+ Xml::Element * write_Param(
+ HF_FunctionDeclaration &
+ o_decl,
+ const ary::idl::Parameter &
+ i_param ) const;
+ void enter_ContentCell() const;
+ void leave_ContentCell() const;
+};
+
+
+
+// IMPLEMENTATION
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_module.cxx b/autodoc/source/display/idl/hfi_module.cxx
new file mode 100644
index 000000000000..e2923c912a2a
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_module.cxx
@@ -0,0 +1,302 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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/doc/d_oldidldocu.hxx>
+#include <ary/getncast.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);
+
+ StreamLock
+ sl(200);
+ aTitle.Produce_Title( sl()
+ << 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 ( NOT ary::is_type<ary::idl::Module>(*i_ce) )
+ {
+ 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 = Get_IdlDocu(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);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_module.hxx b/autodoc/source/display/idl/hfi_module.hxx
new file mode 100644
index 000000000000..4af2f33438e7
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_module.hxx
@@ -0,0 +1,85 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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 CurDirectory() 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
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_navibar.cxx b/autodoc/source/display/idl/hfi_navibar.cxx
new file mode 100644
index 000000000000..098361fe14f1
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_navibar.cxx
@@ -0,0 +1,227 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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 = "Devguide";
+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,
+ bool i_bNoUsePage )
+{
+ 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() );
+
+ if (i_bNoUsePage)
+ {
+ aNaviMain.Add_NoneItem( C_sUse );
+ }
+ else
+ {
+ 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() == 2)
+ {
+ aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
+ }
+ else if (rManualDescrs.size() > 2)
+ {
+ 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 );
+
+ const StringVector &
+ rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
+ if (rManualDescrs.size() == 2)
+ {
+ aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
+ }
+ else if (rManualDescrs.size() > 2)
+ {
+ 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_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() );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_navibar.hxx b/autodoc/source/display/idl/hfi_navibar.hxx
new file mode 100644
index 000000000000..70edf2057f38
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_navibar.hxx
@@ -0,0 +1,85 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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,
+ bool i_bNoUsePage = false );
+ 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_property.cxx b/autodoc/source/display/idl/hfi_property.cxx
new file mode 100644
index 000000000000..4540d99daebb
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_property.cxx
@@ -0,0 +1,454 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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_docentry.hxx>
+#include <toolkit/hf_title.hxx>
+#include "hfi_typetext.hxx"
+#include "hfi_doc.hxx"
+#include "hfi_tag.hxx"
+#include "hi_env.hxx"
+#include "hi_ary.hxx"
+#include "hi_linkhelper.hxx"
+
+void
+HF_IdlDataMember::Produce_byData( const client & ce ) const
+{
+ write_Title(ce);
+ enter_ContentCell();
+ write_Declaration(ce);
+ write_Description(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::write_Title( const client & i_ce ) const
+{
+ CurOut()
+ >> *new Html::Label(i_ce.LocalName())
+ << new Html::ClassAttr(C_sMemberTitle)
+ << i_ce.LocalName();
+}
+
+void
+HF_IdlDataMember::write_Description( const client & i_ce ) const
+{
+ CurOut() << new Html::HorizontalLine;
+ write_Docu(CurOut(), i_ce);
+}
+
+void
+HF_IdlDataMember::enter_ContentCell() const
+{
+
+ Xml::Element &
+ rContentCell = CurOut()
+ >> *new Html::Table( sContentBorder,
+ sContentWidth,
+ sContentPadding,
+ sContentSpacing )
+ << new Html::ClassAttr("table-in-data")
+ << 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::IsMayBeAmbiguous(i_ce))
+ CurOut() << "maybeambiguous ";
+ 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 ";
+ CurOut() << "] ";
+ } // end if
+
+ 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::HasAnyStereotype(i_ce))
+ {
+ CurOut() << "[ ";
+ if (AttributeAttr::IsReadOnly(i_ce))
+ CurOut() << "readonly ";
+ if (AttributeAttr::IsBound(i_ce))
+ CurOut() << "bound ";
+ CurOut() << "] ";
+ }
+
+ HF_IdlTypeText
+ aType( Env(), CurOut(), true );
+ aType.Produce_byData( AttributeAttr::Type(i_ce) );
+
+ CurOut()
+ << " "
+ >> *new Html::Bold
+ << i_ce.LocalName();
+
+ dyn_type_list pGetExceptions;
+ dyn_type_list pSetExceptions;
+ AttributeAttr::Get_GetExceptions(pGetExceptions, i_ce);
+ AttributeAttr::Get_SetExceptions(pSetExceptions, i_ce);
+
+ bool bGetRaises = (*pGetExceptions).IsValid();
+ bool bSetRaises = (*pSetExceptions).IsValid();
+ bool bRaises = bGetRaises OR bSetRaises;
+ if (bRaises)
+ {
+ HF_DocEntryList aSub(CurOut());
+
+ if (bGetRaises)
+ {
+ Xml::Element &
+ rGet = aSub.Produce_Definition();
+ HF_IdlTypeText
+ aExc(Env(), rGet, true);
+ type_list & itExc = *pGetExceptions;
+
+ rGet << "get raises (";
+ aExc.Produce_byData(*itExc);
+ for (++itExc; itExc.operator bool(); ++itExc)
+ {
+ rGet
+ << ",";
+ aExc.Produce_byData(*itExc);
+ } // end for
+ rGet << ")";
+ if (NOT bSetRaises)
+ rGet << ";";
+ } // end if (bGetRaises)
+
+ if (bSetRaises)
+ {
+ Xml::Element &
+ rSet = aSub.Produce_Definition();
+ HF_IdlTypeText
+ aExc(Env(), rSet, true);
+ type_list & itExc = *pSetExceptions;
+
+ rSet << "set raises (";
+ aExc.Produce_byData(*itExc);
+ for (++itExc; itExc.operator bool(); ++itExc)
+ {
+ rSet
+ << ",";
+ aExc.Produce_byData(*itExc);
+ } // end for
+ rSet << ");";
+ } // end if (bSetRaises)
+ }
+ else
+ {
+ 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()
+ << ";";
+}
+
+HF_IdlCommentedRelationElement::~HF_IdlCommentedRelationElement()
+{
+}
+
+void
+HF_IdlCommentedRelationElement::produce_Summary( Environment & io_env,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const client & i_rScopeGivingCe )
+{
+ csv_assert( i_commentedRef.Info() );
+
+ const ary::idl::Type_id aType = i_commentedRef.Type();
+ const ce_info & rDocu = *i_commentedRef.Info();
+
+ bool bShort = NOT rDocu.Short().IsEmpty();
+ bool bDescr = NOT rDocu.Description().IsEmpty();
+
+ if ( bShort )
+ {
+ HF_IdlDocuTextDisplay
+ aDescription(io_env, 0, i_rScopeGivingCe);
+
+ Xml::Element& rPara = io_context >> *new Html::Paragraph;
+ aDescription.Out().Enter( rPara );
+ rDocu.Short().DisplayAt( aDescription );
+
+ // if there's more than just the summary - i.e. a description, or usage restrictions, or tags -,
+ // then add a link to the details section
+ if ( bDescr OR rDocu.IsDeprecated() OR rDocu.IsOptional() OR NOT rDocu.Tags().empty() )
+ {
+ StreamLock aLocalLink(100);
+ aLocalLink() << "#" << get_LocalLinkName(io_env, i_commentedRef);
+
+ aDescription.Out().Out() << "(";
+ aDescription.Out().Out()
+ >> *new Html::Link( aLocalLink().c_str() )
+ << "details";
+ aDescription.Out().Out() << ")";
+ }
+
+ aDescription.Out().Leave();
+ }
+}
+
+void
+HF_IdlCommentedRelationElement::produce_LinkDoc( Environment & io_env,
+ const client & i_ce,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const E_DocType i_docType )
+{
+ if ( i_commentedRef.Info() != 0 )
+ {
+ if ( i_docType == doctype_complete )
+ {
+ HF_DocEntryList aDocList(io_context);
+ HF_IdlDocu aDocuDisplay(io_env, aDocList);
+
+ aDocuDisplay.Produce_fromReference(*i_commentedRef.Info(), i_ce);
+ }
+ else
+ {
+ produce_Summary(io_env, io_context, i_commentedRef, i_ce);
+ }
+ }
+ else
+ {
+ HF_DocEntryList aDocList(io_context);
+
+ const client *
+ pCe = io_env.Linker().Search_CeFromType(i_commentedRef.Type());
+ const ce_info *
+ pShort = pCe != 0
+ ? Get_IdlDocu(pCe->Docu())
+ : (const ce_info *)(0);
+ if ( pShort != 0 )
+ {
+ aDocList.Produce_NormalTerm("(referenced entity's summary:)");
+ Xml::Element &
+ rDef = aDocList.Produce_Definition();
+ HF_IdlDocuTextDisplay
+ aShortDisplay( io_env, &rDef, *pCe);
+ pShort->Short().DisplayAt(aShortDisplay);
+ } // end if (pShort != 0)
+ } // endif ( (*i_commentedRef).Info() != 0 ) else
+}
+
+
+String
+HF_IdlCommentedRelationElement::get_LocalLinkName( Environment & io_env,
+ const comref & i_commentedRef )
+{
+ StringVector aModules;
+ String sLocalName;
+ ce_id nCe;
+ int nSequenceCount = 0;
+
+ const ary::idl::Type &
+ rType = io_env.Data().Find_Type(i_commentedRef.Type());
+ io_env.Data().Get_TypeText(aModules, sLocalName, nCe, nSequenceCount, rType);
+
+ // speaking strictly, this is not correct: If we have two interfaces with the same local
+ // name, but in different modules, then the link name will be ambiguous. However, this should
+ // be too seldom a case to really make the link names that ugly by adding the module information.
+ return sLocalName;
+}
+
+void
+HF_IdlCommentedRelationElement::write_Title( const client & /*i_ce*/ ) const
+{
+
+ Xml::Element &
+ rAnchor = CurOut()
+ >> *new Html::Label(get_LocalLinkName(Env(), m_relation))
+ << new Html::ClassAttr(C_sMemberTitle);
+
+ HF_IdlTypeText
+ aText(Env(), rAnchor, true);
+ aText.Produce_byData(m_relation.Type());
+}
+
+void
+HF_IdlCommentedRelationElement::write_Declaration( const client & /*i_ce*/ ) const
+{
+ // nothing to do here - an entity which is a commented relation does not have a declaration
+}
+
+void
+HF_IdlCommentedRelationElement::write_Description( const client & i_ce ) const
+{
+ produce_LinkDoc( Env(), i_ce, CurOut(), m_relation, doctype_complete );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_property.hxx b/autodoc/source/display/idl/hfi_property.hxx
new file mode 100644
index 000000000000..7c6a24004229
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_property.hxx
@@ -0,0 +1,185 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_PROPERTY_HXX
+#define ADC_DISPLAY_HFI_PROPERTY_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+
+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 );
+ virtual ~HF_IdlDataMember() {}
+
+ private:
+ virtual void write_Title(
+ const client & i_ce ) const;
+
+ virtual void write_Declaration(
+ const client & i_ce ) const = 0;
+
+ virtual void write_Description(
+ const client & i_ce ) const;
+
+ 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;
+};
+
+class HF_IdlCommentedRelationElement : public HF_IdlDataMember
+{
+ public:
+ HF_IdlCommentedRelationElement(
+ Environment & io_rEnv,
+ HF_SubTitleTable & o_table,
+ const ary::idl::CommentedRelation& i_relation )
+ : HF_IdlDataMember(io_rEnv, o_table)
+ , m_relation( i_relation )
+ {
+ }
+ virtual ~HF_IdlCommentedRelationElement();
+
+ typedef ::ary::idl::CommentedRelation comref;
+
+ static void produce_LinkDoc(
+ Environment & io_env,
+ const client & i_ce,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const E_DocType i_docType );
+
+ private:
+ virtual void write_Title(
+ const client & i_ce ) const;
+ virtual void write_Declaration(
+ const client & i_ce ) const;
+ virtual void write_Description(
+ const client & i_ce ) const;
+ private:
+ static void produce_Summary( Environment & io_env,
+ Xml::Element & io_context,
+ const comref & i_commentedRef,
+ const client & i_rScopeGivingCe );
+
+ static String get_LocalLinkName( Environment & io_env,
+ const comref & i_commentedRef );
+
+ private:
+ const ary::idl::CommentedRelation& m_relation;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_service.cxx b/autodoc/source/display/idl/hfi_service.cxx
new file mode 100644
index 000000000000..f78874020a1b
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_service.cxx
@@ -0,0 +1,365 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_service.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_property.hxx>
+#include <ary/idl/ik_service.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("Services' Summary");
+const String
+ C_sList_IncludedServices_Heading("Included Services - Summary");
+const String
+ C_sList_IncludedServices_Label("ServicesSummary");
+const String
+ C_sList_IncludedServicesDetails("Services' Details");
+const String
+ C_sList_IncludedServicesDetails_Heading("Included Services - Details");
+const String
+ C_sList_IncludedServicesDetails_Label("ServicesDetails");
+const String
+ C_sList_ExportedInterfaces("Interfaces' Summary");
+const String
+ C_sList_ExportedInterfaces_Heading("Exported Interfaces - Summary");
+const String
+ C_sList_ExportedInterfaces_Label("InterfacesSummary");
+const String
+ C_sList_ExportedInterfacesDetails("Interfaces' Details");
+const String
+ C_sList_ExportedInterfacesDetails_Heading("Exported Interfaces - Details");
+const String
+ C_sList_ExportedInterfacesDetails_Label("InterfacesDetails");
+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_IncludedServicesSummary = 0,
+ sli_InterfacesSummary = 1,
+ sli_PropertiesSummary = 2,
+ sli_IncludedServicesDetails = 3,
+ sli_InterfacesDetails = 4,
+ sli_PropertiesDetails = 5
+};
+
+} //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::CommentedRelation >
+ dyn_comref_list;
+
+void
+HF_IdlService::produce_CommentedRelations( const client & i_ce,
+ comref_list & it_list,
+ const String & i_summaryTitle,
+ const String & i_summaryLabel,
+ const String & i_detailsTitle,
+ const String & i_detailsLabel,
+ const E_DocType i_docType ) const
+{
+ csv_assert( it_list );
+
+ bool bSummaryOnly = ( i_docType == doctype_summaryOnly );
+ HF_SubTitleTable aTable(
+ CurOut(),
+ bSummaryOnly ? i_summaryLabel : i_detailsLabel,
+ bSummaryOnly ? i_summaryTitle : i_detailsTitle,
+ 2 );
+
+ for ( ; it_list; ++it_list )
+ {
+ Xml::Element &
+ rRow = aTable.Add_Row();
+
+ if ( bSummaryOnly )
+ {
+ produce_Link(rRow, (*it_list).Type());
+ produce_LinkSummary(i_ce, rRow, *it_list);
+ }
+ else
+ {
+ HF_IdlCommentedRelationElement
+ aRelation( Env(), aTable, *it_list );
+ aRelation.Produce_byData( i_ce );
+ }
+ } // end for
+}
+
+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);
+ produce_Title(aTitle, C_sCePrefix_Service, i_ce);
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ // produce ...
+ // - included services: summary
+ dyn_comref_list dpIncludedServices;
+ ServiceAttr::Get_IncludedServices(dpIncludedServices, i_ce);
+ if ( (*dpIncludedServices).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpIncludedServices,
+ C_sList_IncludedServices_Heading,
+ C_sList_IncludedServices_Label,
+ C_sList_IncludedServicesDetails_Heading,
+ C_sList_IncludedServicesDetails_Label,
+ doctype_summaryOnly );
+ pNaviSubRow->SwitchOn(sli_IncludedServicesSummary);
+ }
+
+ // - exported interfaces: summary
+ dyn_comref_list dpExportedInterfaces;
+ ServiceAttr::Get_ExportedInterfaces(dpExportedInterfaces, i_ce);
+ if ( (*dpExportedInterfaces).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpExportedInterfaces,
+ C_sList_ExportedInterfaces_Heading,
+ C_sList_ExportedInterfaces_Label,
+ C_sList_ExportedInterfacesDetails_Heading,
+ C_sList_ExportedInterfacesDetails_Label,
+ doctype_summaryOnly );
+ pNaviSubRow->SwitchOn(sli_InterfacesSummary);
+ }
+
+ // - supported properties: summary
+ dyn_ce_list dpProperties;
+ ServiceAttr::Get_Properties(dpProperties, i_ce);
+ if ( (*dpProperties).operator bool() )
+ {
+ produce_Members( *dpProperties,
+ C_sList_Properties,
+ C_sList_Properties_Label,
+ C_sList_PropertiesDetails,
+ C_sList_PropertiesDetails_Label,
+ viewtype_summary );
+ pNaviSubRow->SwitchOn(sli_PropertiesSummary);
+ }
+
+ // - included services: details
+ ServiceAttr::Get_IncludedServices(dpIncludedServices, i_ce);
+ if ( (*dpIncludedServices).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpIncludedServices,
+ C_sList_IncludedServices_Heading,
+ C_sList_IncludedServices_Label,
+ C_sList_IncludedServicesDetails_Heading,
+ C_sList_IncludedServicesDetails_Label,
+ doctype_complete );
+ pNaviSubRow->SwitchOn(sli_IncludedServicesDetails);
+ }
+
+ // - exported interfaces: details
+ ServiceAttr::Get_ExportedInterfaces(dpExportedInterfaces, i_ce);
+ if ( (*dpExportedInterfaces).operator bool() )
+ {
+ produce_CommentedRelations( i_ce, *dpExportedInterfaces,
+ C_sList_ExportedInterfaces_Heading,
+ C_sList_ExportedInterfaces_Label,
+ C_sList_ExportedInterfacesDetails_Heading,
+ C_sList_ExportedInterfacesDetails_Label,
+ doctype_complete );
+ pNaviSubRow->SwitchOn(sli_InterfacesDetails);
+ }
+
+ // supported properties: details
+ ServiceAttr::Get_Properties(dpProperties, i_ce);
+ if ( (*dpProperties).operator bool() )
+ {
+ produce_Members( *dpProperties,
+ C_sList_Properties,
+ C_sList_Properties_Label,
+ C_sList_PropertiesDetails,
+ C_sList_PropertiesDetails_Label,
+ viewtype_details );
+ pNaviSubRow->SwitchOn(sli_PropertiesDetails);
+ }
+
+ pNaviSubRow->Produce_Row();
+ CurOut() << new Xml::XmlCode("<br>&nbsp;");
+}
+
+typedef ary::idl::ifc_property::attr PropertyAttr;
+
+void
+HF_IdlService::produce_SummaryDeclaration( Xml::Element & o_row,
+ const client & i_property ) const
+{
+ // KORR_FUTURE
+ // Put this in to HF_IdlProperty!
+
+ Xml::Element &
+ rCell = o_row
+ >> *new Html::TableCell
+ << new Html::ClassAttr( C_sCellStyle_SummaryLeft );
+
+ if (PropertyAttr::HasAnyStereotype(i_property))
+ {
+ rCell << "[ ";
+ if (PropertyAttr::IsReadOnly(i_property))
+ rCell << "readonly ";
+ if (PropertyAttr::IsBound(i_property))
+ rCell << "bound ";
+ if (PropertyAttr::IsConstrained(i_property))
+ rCell << "constrained ";
+ if (PropertyAttr::IsMayBeAmbiguous(i_property))
+ rCell << "maybeambiguous ";
+ if (PropertyAttr::IsMayBeDefault(i_property))
+ rCell << "maybedefault ";
+ if (PropertyAttr::IsMayBeVoid(i_property))
+ rCell << "maybevoid ";
+ if (PropertyAttr::IsRemovable(i_property))
+ rCell << "removable ";
+ if (PropertyAttr::IsTransient(i_property))
+ rCell << "transient ";
+ rCell << "] ";
+ } // end if
+
+ HF_IdlTypeText
+ aType( Env(), rCell, true );
+ aType.Produce_byData( PropertyAttr::Type(i_property) );
+
+ StreamLock aLocalLink(100);
+ aLocalLink() << "#" << i_property.LocalName();
+ rCell
+ << new Html::LineBreak
+ >> *new Html::Link( aLocalLink().c_str() )
+ << i_property.LocalName();
+}
+
+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_IncludedServicesDetails, C_sList_IncludedServicesDetails_Label, false);
+ ret.AddItem(C_sList_ExportedInterfacesDetails, C_sList_ExportedInterfacesDetails_Label, false);
+ ret.AddItem(C_sList_PropertiesDetails, C_sList_PropertiesDetails_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+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_LinkSummary( const client & i_ce,
+ Xml::Element & o_row,
+ const comref & i_commentedRef ) const
+{
+ Xml::Element &
+ rCell = o_row
+ >> *new Html::TableCell
+ << new Html::ClassAttr(C_sCellStyle_SummaryRight);
+
+ HF_IdlCommentedRelationElement::produce_LinkDoc( Env(), i_ce, rCell, i_commentedRef, doctype_summaryOnly );
+}
+
+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 );
+}
+
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_service.hxx b/autodoc/source/display/idl/hfi_service.hxx
new file mode 100644
index 000000000000..9ca4530eefb2
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_service.hxx
@@ -0,0 +1,101 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_SERVICE_HXX
+#define ADC_DISPLAY_HFI_SERVICE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+
+class HF_NaviSubRow;
+class HF_SubTitleTable;
+
+class HF_IdlService : public HtmlFactory_Idl
+{
+ public:
+ typedef ::ary::idl::CommentedRelation comref;
+ typedef ::ary::StdConstIterator< comref > comref_list;
+
+ HF_IdlService(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlService();
+
+ void Produce_byData(
+ const client & i_ce ) const;
+ private:
+ // Overwritten from HtmlFactory_Idl:
+ virtual void produce_SummaryDeclaration(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+
+ // Locals
+ DYN HF_NaviSubRow & make_Navibar(
+ const client & i_ce ) const;
+
+ void produce_Link(
+ Xml::Element & o_row,
+ type_id i_type ) const;
+ void produce_LinkSummary(
+ const client & i_ce,
+ Xml::Element & o_row,
+ const comref & i_commentedRef ) const;
+
+ void produce_MemberDetails( /// of property
+ HF_SubTitleTable & o_table,
+ const client & i_ce ) const;
+
+ void produce_CommentedRelations(
+ const client & i_ce,
+ comref_list & it_list,
+ const String & i_summaryTitle,
+ const String & i_summaryLabel,
+ const String & i_detailsTitle,
+ const String & i_detailsLabel,
+ const E_DocType i_docType ) const;
+
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Service;
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_singleton.cxx b/autodoc/source/display/idl/hfi_singleton.cxx
new file mode 100644
index 000000000000..04f87e78b8d9
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_singleton.cxx
@@ -0,0 +1,136 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_singleton.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_singleton.hxx>
+#include <ary/idl/ik_sisingleton.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");
+
+const String
+ C_sAssociatedService("Associated Service");
+const String
+ C_sImplementedInterface("Supported Interface");
+
+
+
+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;
+typedef ::ary::idl::ifc_sglifcsingleton::attr SglIfcSingletonAttr;
+
+void
+HF_IdlSingleton::Produce_byData_ServiceBased( 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);
+ produce_Title(aTitle, C_sCePrefix_Singleton, i_ce);
+
+ 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::Produce_byData_InterfaceBased( 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);
+ produce_Title(aTitle, C_sCePrefix_Singleton, i_ce);
+
+ HF_DocEntryList
+ aTopList( aTitle.Add_Row() );
+ aTopList.Produce_Term(C_sImplementedInterface);
+
+ HF_IdlTypeText
+ aImplementedInterface( Env(), aTopList.Produce_Definition(), true );
+ aImplementedInterface.Produce_byData( SglIfcSingletonAttr::BaseInterface(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,true); // true := avoid link to Use-page.
+
+ CurOut() << new Html::HorizontalLine();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_singleton.hxx b/autodoc/source/display/idl/hfi_singleton.hxx
new file mode 100644
index 000000000000..2b1c28e63e61
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_singleton.hxx
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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_ServiceBased(
+ const client & i_ce ) const;
+ void Produce_byData_InterfaceBased(
+ const client & i_ce ) const;
+ private:
+ void make_Navibar(
+ const client & i_ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Singleton;
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_siservice.cxx b/autodoc/source/display/idl/hfi_siservice.cxx
new file mode 100644
index 000000000000..1a2c9fa7edfb
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_siservice.cxx
@@ -0,0 +1,178 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_siservice.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/ik_function.hxx>
+#include <ary/idl/ik_siservice.hxx>
+#include <ary/doc/d_oldidldocu.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_method.hxx"
+#include "hfi_navibar.hxx"
+#include "hfi_typetext.hxx"
+#include "hi_env.hxx"
+#include "hi_linkhelper.hxx"
+
+
+
+namespace
+{
+
+const String
+ C_sImplementedInterface("Supported Interface");
+
+const String
+ C_sList_Constructors("Constructors' Summary");
+const String
+ C_sList_Constructors_Label("ConstructorsSummary");
+const String
+ C_sDetails_Constructors("Constructors' Details");
+const String
+ C_sDetails_Constructors_Label("ConstructorsDetails");
+
+
+enum E_SubListIndices
+{
+ sli_ConstructorsSummary = 0,
+ sli_ConstructorsDetails = 1
+};
+
+} //anonymous namespace
+
+
+HF_IdlSglIfcService::HF_IdlSglIfcService( Environment & io_rEnv,
+ Xml::Element & o_rOut )
+ : HtmlFactory_Idl(io_rEnv, &o_rOut)
+{
+}
+
+HF_IdlSglIfcService::~HF_IdlSglIfcService()
+{
+}
+
+typedef ::ary::idl::ifc_sglifcservice::attr SglIfcServiceAttr;
+
+void
+HF_IdlSglIfcService::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);
+ produce_Title(aTitle, C_sCePrefix_Service, i_ce);
+
+ HF_DocEntryList
+ aTopList( aTitle.Add_Row() );
+ aTopList.Produce_Term(C_sImplementedInterface);
+
+ HF_IdlTypeText
+ aImplementedInterface( Env(), aTopList.Produce_Definition(), true, &i_ce);
+ aImplementedInterface.Produce_byData( SglIfcServiceAttr::BaseInterface(i_ce) );
+
+ CurOut() << new Html::HorizontalLine;
+
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ dyn_ce_list
+ dpConstructors;
+ SglIfcServiceAttr::Get_Constructors(dpConstructors, i_ce);
+ if ( (*dpConstructors).operator bool() )
+ {
+ produce_Members( *dpConstructors,
+ C_sList_Constructors,
+ C_sList_Constructors_Label,
+ C_sDetails_Constructors,
+ C_sDetails_Constructors_Label );
+ pNaviSubRow->SwitchOn(sli_ConstructorsSummary);
+ pNaviSubRow->SwitchOn(sli_ConstructorsDetails);
+ }
+
+ pNaviSubRow->Produce_Row();
+ CurOut() << new Xml::XmlCode("<br>&nbsp;");
+}
+
+DYN HF_NaviSubRow &
+HF_IdlSglIfcService::make_Navibar( const client & i_ce ) const
+{
+ HF_IdlNavigationBar
+ aNaviBar(Env(), CurOut());
+ aNaviBar.Produce_CeMainRow(i_ce, true);
+
+ DYN HF_NaviSubRow &
+ ret = aNaviBar.Add_SubRow();
+ ret.AddItem(C_sList_Constructors, C_sList_Constructors_Label, false);
+ ret.AddItem(C_sDetails_Constructors, C_sDetails_Constructors_Label, false);
+
+ CurOut() << new Html::HorizontalLine();
+ return ret;
+}
+
+typedef ary::idl::ifc_function::attr funcAttr;
+
+void
+HF_IdlSglIfcService::produce_MemberDetails( HF_SubTitleTable & o_table,
+ const client & i_ce ) const
+{
+ HF_IdlMethod
+ aConstructor( 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);
+
+ aConstructor.Produce_byData( i_ce.LocalName(),
+ funcAttr::ReturnType(i_ce),
+ *pParameters,
+ *pExceptions,
+ funcAttr::IsOneway(i_ce),
+ funcAttr::HasEllipse(i_ce),
+ i_ce );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_siservice.hxx b/autodoc/source/display/idl/hfi_siservice.hxx
new file mode 100644
index 000000000000..03fef81d2e06
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_siservice.hxx
@@ -0,0 +1,74 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_SISERVICE_HXX
+#define ADC_DISPLAY_HFI_SISERVICE_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+#include <ary/idl/i_comrela.hxx>
+
+class HF_NaviSubRow;
+class HF_SubTitleTable;
+
+class HF_IdlSglIfcService : public HtmlFactory_Idl
+{
+ public:
+ HF_IdlSglIfcService(
+ Environment & io_rEnv,
+ Xml::Element & o_rOut );
+ virtual ~HF_IdlSglIfcService();
+
+ void Produce_byData(
+ const client & i_ce ) const;
+ private:
+ DYN HF_NaviSubRow & make_Navibar(
+ const client & i_ce ) const;
+
+ void produce_MemberDetails(
+ HF_SubTitleTable & o_table,
+ const client & i_ce ) const;
+};
+
+
+
+// IMPLEMENTATION
+
+extern const String
+ C_sCePrefix_Service;
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_struct.cxx b/autodoc/source/display/idl/hfi_struct.cxx
new file mode 100644
index 000000000000..37fab0fa2e75
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_struct.cxx
@@ -0,0 +1,206 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_struct.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_struct.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
+{
+ const ary::idl::Struct *
+ pStruct =
+ bIsException
+ ? 0
+ : static_cast< const ary::idl::Struct* >(&i_ce);
+ bool bIsTemplate =
+ pStruct != 0
+ ? pStruct->TemplateParameterType().IsValid()
+ : false;
+
+ Dyn<HF_NaviSubRow>
+ pNaviSubRow( &make_Navibar(i_ce) );
+
+ HF_TitleTable
+ aTitle(CurOut());
+ HF_LinkedNameChain
+ aNameChain(aTitle.Add_Row());
+
+ aNameChain.Produce_CompleteChain(Env().CurPosition(), nameChainLinker);
+
+ // Title:
+ StreamLock
+ slAnnotations(200);
+ get_Annotations(slAnnotations(), i_ce);
+
+ StreamLock rTitle(200);
+ if (bIsTemplate)
+ rTitle() << "template ";
+ rTitle()
+ << (bIsException
+ ? C_sCePrefix_Exception
+ : C_sCePrefix_Struct)
+ << " "
+ << i_ce.LocalName();
+ if (bIsTemplate)
+ {
+ csv_assert(pStruct != 0);
+ rTitle()
+ << "<"
+ << pStruct->TemplateParameter()
+ << ">";
+ }
+ aTitle.Produce_Title(slAnnotations().c_str(), rTitle().c_str());
+
+ // Bases:
+ produce_Bases( aTitle.Add_Row(),
+ i_ce,
+ bIsException
+ ? C_sBaseException
+ : C_sBaseStruct );
+
+ // Docu:
+ write_Docu(aTitle.Add_Row(), i_ce);
+ CurOut() << new Html::HorizontalLine();
+
+ // Elements:
+ 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).operator bool() )
+ {
+ 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);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_struct.hxx b/autodoc/source/display/idl/hfi_struct.hxx
new file mode 100644
index 000000000000..c56439fcf8d8
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_struct.hxx
@@ -0,0 +1,81 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_STRUCT_HXX
+#define ADC_DISPLAY_HFI_STRUCT_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include "hi_factory.hxx"
+ // COMPONENTS
+ // PARAMETERS
+
+/** Is used to display ->ary::idl::Exception s as well as ->ary::idl::Struct s.
+*/
+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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_tag.cxx b/autodoc/source/display/idl/hfi_tag.cxx
new file mode 100644
index 000000000000..b75e8683d07c
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_tag.cxx
@@ -0,0 +1,357 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_tag.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary_i/ci_text2.hxx>
+#include <ary_i/d_token.hxx>
+#include <toolkit/out_tree.hxx>
+#include <adc_cl.hxx>
+#include <adc_msg.hxx>
+#include "hfi_typetext.hxx"
+#include "hi_ary.hxx"
+#include "hi_env.hxx"
+#include "hi_linkhelper.hxx"
+
+
+using ary::inf::DocuTex2;
+
+
+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::inf::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::inf::AtTag2 & i_rTag ) const
+{
+ pTitleOut = &o_rTitle;
+ Enter_TextOut(o_rText);
+ i_rTag.DisplayAt( const_cast< HF_IdlTag& >(*this) );
+ Leave_TextOut();
+}
+
+void
+HF_IdlTag::Produce_byData( Xml::Element & o_rTitle,
+ Xml::Element & o_rText,
+ const std::vector< csi::dsapi::DT_SeeAlsoAtTag* > &
+ i_seeAlsoVector ) const
+{
+ o_rTitle << "See also";
+ for ( std::vector< csi::dsapi::DT_SeeAlsoAtTag* >::const_iterator
+ it = i_seeAlsoVector.begin();
+ it != i_seeAlsoVector.end();
+ ++it )
+ {
+ if (it != i_seeAlsoVector.begin())
+ {
+ o_rText << ", ";
+ }
+ HF_IdlTypeText
+ aLinkText(Env(), o_rText, true, &aTextOut.ScopeGivingCe());
+ aLinkText.Produce_byData( (*it)->LinkText() );
+ }
+}
+
+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, &aTextOut.ScopeGivingCe());
+ aLinkText.Produce_byData( i_rTag.LinkText() );
+
+ 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 );
+ StreamLock sl(100);
+ *pTitleOut
+ << ( sl() << "Parameter " << i_rTag.Title() << c_str );
+ PutText_Out( i_rTag.Text() );
+}
+
+void
+HF_IdlTag::Display_SinceAtTag( const csi::dsapi::DT_SinceAtTag & i_rTag )
+{
+ csv_assert(pTitleOut != 0);
+
+ if ( i_rTag.Text().IsEmpty() )
+ {
+ return;
+ }
+
+ // Transform the value of the @since tag into the text to be displayed.
+ String sDisplay =
+ autodoc::CommandLine::Get_().DisplayOf_SinceTagValue(
+ i_rTag.Text().TextOfFirstToken() );
+ if (sDisplay.empty())
+ return;
+
+ *pTitleOut << "Since ";
+ DocuTex2 aHelp;
+ aHelp.AddToken(* new csi::dsapi::DT_TextToken(sDisplay));
+ PutText_Out(aHelp);
+}
+
+
+//******************** 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 )
+{
+ const ce_info *
+ pDocu = Get_IdlDocu(i_rCe.Docu());
+ if (pDocu == 0)
+ return;
+
+ const ce_info &
+ rDocu = *pDocu;
+ 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
+ {
+ if ( pScopeGivingCe == 0 )
+ { // only in original file
+ TheMessages().Out_TypeVsMemberMisuse(sLinkToken, Env().CurPageCe_AsText(), 0);
+ }
+
+ StopLinkGathering();
+ }
+ } // endif (bGatherLink)
+
+ CurOut() << new Xml::XmlCode( i_rToken.GetText() );
+}
+
+void
+HF_IdlDocuTextDisplay::Display_White()
+{
+ CurOut() << " ";
+}
+
+void
+HF_IdlDocuTextDisplay::Display_MupType( const csi::dsapi::DT_MupType & i_rToken )
+{
+ if (i_rToken.IsBegin())
+ {
+ StartLinkGathering(i_rToken.Scope());
+ }
+ else
+ {
+ if (bGatherLink)
+ {
+ 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)
+ {
+ 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()
+{
+ if (strchr(sLinkToken,':') != 0)
+ {
+ TheMessages().Out_TypeVsMemberMisuse(sLinkToken, Env().CurPageCe_AsFile(".idl"), 0);
+ CurOut() << sLinkToken;
+ return;
+ }
+ 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 = strchr(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);
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_tag.hxx b/autodoc/source/display/idl/hfi_tag.hxx
new file mode 100644
index 000000000000..cde541eeed13
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_tag.hxx
@@ -0,0 +1,180 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFI_TAG_HXX
+#define ADC_DISPLAY_HFI_TAG_HXX
+
+// BASE CLASSES
+#include "hi_factory.hxx"
+#include <ary_i/disdocum.hxx>
+// USED SERVICES
+#include <ary/idl/i_types4idl.hxx>
+#include <ary_i/ci_atag2.hxx>
+#include <ary_i/ci_text2.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+
+#include <toolkit/hf_docentry.hxx>
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+}
+}
+
+
+
+
+/** This class is an implementation of ary::inf::DocuText_Display
+ and will be used by that interface.
+*/
+class HF_IdlDocuTextDisplay : public HtmlFactory_Idl,
+ public ary::inf::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_White();
+
+ 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::inf::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::inf::AtTag2 &
+ i_rTag ) const;
+ void Produce_byData(
+ Xml::Element & o_rTitle,
+ Xml::Element & o_rText,
+ const std::vector< csi::dsapi::DT_SeeAlsoAtTag* > &
+ i_seeAlsoVector ) 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 );
+ virtual void Display_SinceAtTag(
+ const csi::dsapi::DT_SinceAtTag &
+ i_rToken );
+
+ void Enter_TextOut(
+ Xml::Element & o_rText ) const;
+ void Leave_TextOut() const;
+ void PutText_Out(
+ const ary::inf::DocuTex2 &
+ i_rText ) const;
+ // DATA
+ mutable Xml::Element *
+ pTitleOut;
+ mutable HF_IdlDocuTextDisplay
+ aTextOut;
+};
+
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typedef.cxx b/autodoc/source/display/idl/hfi_typedef.cxx
new file mode 100644
index 000000000000..67bb685a9d00
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typedef.cxx
@@ -0,0 +1,95 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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);
+ produce_Title(aTitle, C_sCePrefix_Typedef, i_ce);
+
+ 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();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typedef.hxx b/autodoc/source/display/idl/hfi_typedef.hxx
new file mode 100644
index 000000000000..d1fcbb9dd1e5
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typedef.hxx
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typetext.cxx b/autodoc/source/display/idl/hfi_typetext.cxx
new file mode 100644
index 000000000000..fd96d0a89a0c
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typetext.cxx
@@ -0,0 +1,760 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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/i_module.hxx>
+#include <ary/idl/ik_ce.hxx>
+#include <adc_cl.hxx>
+#include <adc_msg.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 )
+ : 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
+{
+ 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),
+ rType.FirstEnclosedNonSequenceType(Env().Gate()).TemplateParameters() );
+ }
+}
+
+void
+HF_IdlTypeText::Produce_byData( ary::idl::Ce_id i_idCe ) const
+{
+ 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
+{
+ if ( strncmp(i_sFullName,"http://", 7) == 0 )
+ {
+ CurOut()
+ >> *new Html::Link(i_sFullName)
+ << i_sFullName;
+ return;
+ }
+
+ 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;
+ // KORR_FUTURE
+ // How to put a message about this?
+ // errorOut_UnresolvedLink(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;
+ // KORR_FUTURE
+ // How to put a message about this?
+ // errorOut_UnresolvedLink(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, if it is a member?
+ Env().Data().Search_Ce( aModule_,
+ sCe,sMember,
+ sTypeText,
+ *pScopeModule );
+ if (NOT bFound)
+ {
+ if ( strchr(sTypeText,':') == 0
+ AND
+ *sTypeText.c_str() != 'X' ) // This is a HACK, make this correct!
+ {
+ Produce_LocalLinkInDocu(sTypeText);
+ return;
+ }
+ CurOut() << i_sFullName;
+ // KORR
+ // How to put a message about this?
+ // errorOut_UnresolvedLink(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
+{
+ StringVector aModule_;
+ String sName;
+ 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
+{
+ StringVector aModule_;
+ String sName;
+ csv::erase_container(aModule_);
+
+ csv_assert(referingCe() != 0);
+ if ( referingModule() == Env().Linker().Search_CurModule() )
+ {
+ StreamLock slLink(200);
+ if (referingCe()->SightLevel() == ary::idl::sl_Member)
+ {
+ slLink() << "#" << i_member;
+ }
+ else
+ {
+ slLink() << referingCe()->LocalName()
+ << ".html#"
+ << i_member;
+ }
+ CurOut()
+ >> *new Html::Link(slLink().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
+{
+ 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_owner ) const
+{
+ StringVector aModule_;
+ String sCe;
+ String sMember;
+ csv::erase_container(aModule_);
+
+ Out().Enter(o_out);
+
+ if (i_owner.Owner().IsValid())
+ {
+ Env().Data().Get_CeText(aModule_, sCe, sMember, i_owner);
+ produce_IndexLink(aModule_, sCe, sMember, true);
+ }
+ else
+ { // global namespace:
+
+ CurOut()
+ << "."
+ >> *new Html::Link("../module-ix.html")
+ << "global namespace";
+ }
+
+
+ Out().Leave();
+}
+
+void
+HF_IdlTypeText::Produce_IndexSecondEntryLink( Xml::Element & o_out,
+ const client & i_ce ) const
+{
+ 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, true);
+ 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 std::vector<ary::idl::Type_id> *
+ i_templateParameters ) const
+{
+ if (i_ceExists == exists_no)
+ {
+ if ( is_ExternLink(i_module) )
+ {
+ produce_ExternLink(i_module,i_ce,i_member,i_sequenceCount,i_templateParameters);
+ return;
+ }
+ errorOut_UnresolvedLink(i_module, i_ce, i_member);
+ }
+
+ output::Node &
+ rCeNode = Env().OutputTree().Provide_Node(i_module);
+ output::Position
+ aTargetPos(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)
+ {
+ aTargetPos.Set_File(output::ModuleFileName());
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ CurOut()
+ >> *new Html::Link( rLink.c_str() )
+ << *itm;
+ rLink.reset();
+ }
+ else
+ {
+ CurOut() << *itm;
+ }
+
+ if (bHasCeOrName)
+ CurOut() << "::";
+ } // end if (bShowModule)
+
+ // CodeEntity and member:
+ aTargetPos.Set_File( rLink << i_ce << ".html" << c_str );
+ rLink.reset();
+
+ if (bHasCeOrName)
+ {
+ if (bLink2Ce)
+ {
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_ce;
+ rLink.reset();
+ }
+ else
+ {
+ CurOut() << i_ce;
+ }
+
+ if (i_templateParameters != 0)
+ write_TemplateParameterList(*i_templateParameters);
+
+ if (bUseMember)
+ {
+ CurOut() << "::";
+
+ 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, aTargetPos, sMember);
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_member;
+ rLink.reset();
+ }
+ else
+ {
+ CurOut()
+ << i_member;
+ }
+ } // endif (bUseMember)
+ } // 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
+ aTargetPos(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)
+ {
+ aTargetPos.Set_File(output::ModuleFileName());
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ CurOut()
+ >> *new Html::Link( rLink.c_str() )
+ >> *new Html::Bold
+ << i_module.back();
+ rLink.reset();
+ }
+ } // end if (bShowModule)
+
+ if (bShowNonModule)
+ {
+ aTargetPos.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, aTargetPos, sMember);
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ >> *new Html::Bold
+ << i_member;
+ rLink.reset();
+ }
+ else
+ {
+ Env().Linker().Get_Link2Position(rLink, aTargetPos);
+ 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;
+ }
+ rLink.reset();
+ }
+ } // 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() << " >";
+ }
+}
+
+void
+HF_IdlTypeText::errorOut_UnresolvedLink( const char * i_name ) const
+{
+ StreamLock slFile(1000);
+
+ // KORR
+ // Handle links in cited documentation from other entities.
+ slFile() << Env().CurPageCe_AsText();
+ slFile().pop_back(5);
+ slFile() << ".idl";
+
+ // KORR
+ // Retrieve, correct line number.
+ TheMessages().Out_UnresolvedLink( i_name,
+ slFile().c_str(),
+ 0 );
+}
+
+void
+HF_IdlTypeText::errorOut_UnresolvedLink( const StringVector & i_module,
+ const String & i_ce,
+ const String & i_member ) const
+{
+ StreamLock slName(500);
+
+ if (i_module.size() > 0)
+ {
+ slName().operator_join(i_module.begin(), i_module.end(), "::");
+ if (NOT i_ce.empty())
+ slName() << "::";
+ }
+ if (NOT i_ce.empty())
+ {
+ slName() << i_ce;
+ if (NOT i_member.empty())
+ slName() << "::" << i_member;
+ }
+ errorOut_UnresolvedLink(slName().c_str());
+}
+
+bool
+HF_IdlTypeText::is_ExternLink( const StringVector & i_module ) const
+{
+ const autodoc::CommandLine &
+ rCmdLine = autodoc::CommandLine::Get_();
+ uintt nExtNspLength = rCmdLine.ExternNamespace().length();
+ if (nExtNspLength == 0)
+ return false;
+
+ StreamStr s(1000);
+ s << "::";
+ s.operator_join( i_module.begin(),
+ i_module.end(),
+ "::" );
+
+ if (s.length() < nExtNspLength)
+ return false;
+ return ( strncmp( rCmdLine.ExternNamespace().c_str(),
+ s.c_str(),
+ nExtNspLength ) == 0 );
+}
+
+void
+HF_IdlTypeText::produce_ExternLink( const StringVector & i_module,
+ const String & i_ce,
+ const String & i_member,
+ int i_sequenceCount,
+ const std::vector<ary::idl::Type_id> *
+ i_templateParameters ) const
+{
+ // KORR
+ // Look again at this code and take some time.
+
+ StreamLock aLink(1000);
+ StreamStr & rLink = aLink();
+
+ rLink << autodoc::CommandLine::Get_().ExternRoot();
+ rLink.operator_join( i_module.begin(),
+ i_module.end(),
+ "/" );
+ rLink << '/'
+ << i_ce
+ << ".html";
+ if (i_member.length() > 0)
+ rLink << "/#" << i_member;
+
+ if (i_sequenceCount > 0)
+ start_Sequence(i_sequenceCount);
+
+ // module
+ int nMax = i_module.size();
+ int nCount = 0;
+ StringVector::const_iterator
+ itm = i_module.begin();
+ for ( ;
+ nCount < nMax;
+ ++itm, ++nCount )
+ {
+ CurOut() << "::" << *itm;
+ }
+ CurOut() << "::";
+
+
+ // CodeEntity
+ if (i_member.length() == 0)
+ {
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_ce;
+ }
+ else
+ {
+ CurOut()
+ << i_ce;
+ }
+
+ if (i_templateParameters != 0)
+ write_TemplateParameterList(*i_templateParameters);
+
+ // Member
+ if (i_member.length() > 0)
+ {
+ CurOut()
+ >> *new Html::Link(rLink.c_str())
+ << i_member;
+ }
+
+ if (i_sequenceCount > 0)
+ finish_Sequence(i_sequenceCount);
+}
+
+void
+HF_IdlTypeText::write_TemplateParameterList(
+ const std::vector<ary::idl::Type_id> & i_templateParameters ) const
+{
+ if (i_templateParameters.size() == 0)
+ return;
+
+ HF_IdlTypeText
+ aTemplateParamWriter(Env(), CurOut(), true, pReferingCe);
+ CurOut() << "< ";
+ std::vector<ary::idl::Type_id>::const_iterator
+ it = i_templateParameters.begin();
+ aTemplateParamWriter.Produce_byData(*it);
+ for ( ++it; it != i_templateParameters.end(); ++it )
+ {
+ CurOut() << ", ";
+ aTemplateParamWriter.Produce_byData(*it);
+ }
+ CurOut() << " >";
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_typetext.hxx b/autodoc/source/display/idl/hfi_typetext.hxx
new file mode 100644
index 000000000000..e7ec21d639d8
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_typetext.hxx
@@ -0,0 +1,160 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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;
+
+ /// Produce the first link for Java-help understood index entries.
+ void Produce_IndexLink(
+ Xml::Element & o_out,
+ const client & i_ce ) const;
+ /** Produce the second link for Java-help understood index entries.
+ For members this will be a link to their owner (this function is
+ used), else see @->Produce_IndexSecondEntryLink();
+ */
+ void Produce_IndexOwnerLink(
+ Xml::Element & o_out,
+ const client & i_owner ) const;
+ /** Produce the second link for Java-help understood index entries.
+ For non- members this will again be a link to to the entry itself
+ (this function is used), else see @->Produce_IndexOwnerLink();
+ */
+ void Produce_IndexSecondEntryLink(
+ 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 std::vector<ary::idl::Type_id> *
+ i_templateParameters = 0 ) 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;
+ void errorOut_UnresolvedLink(
+ const char * i_name ) const;
+ void errorOut_UnresolvedLink(
+ const StringVector &
+ i_module,
+ const String & i_ce,
+ const String & i_member ) const;
+ bool is_ExternLink(
+ const StringVector &
+ i_module ) const;
+ void produce_ExternLink(
+ const StringVector &
+ i_module,
+ const String & i_ce,
+ const String & i_member,
+ int i_sequenceCount,
+ const std::vector<ary::idl::Type_id> *
+ i_templateParameters ) const;
+ void write_TemplateParameterList(
+ const std::vector<ary::idl::Type_id> &
+ i_templateParameters ) const;
+ const ary::idl::Module *
+ referingModule() const;
+ const client * referingCe() const;
+
+ // DATA
+ mutable const client *
+ pReferingCe;
+ bool bWithLink;
+};
+
+
+
+// IMPLEMENTATION
+
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_xrefpage.cxx b/autodoc/source/display/idl/hfi_xrefpage.cxx
new file mode 100644
index 000000000000..4afea859db49
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_xrefpage.cxx
@@ -0,0 +1,276 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "hfi_xrefpage.hxx"
+
+
+// NOT FULLY DEFINED SERVICES
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_gate.hxx>
+#include <ary/idl/ip_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");
+const String
+ C_sDevMan("References in Developers Guide");
+
+} // 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
+ << C_sDevMan
+ << new Html::LineBreak
+ << C_sCRLF;
+ return;
+ }
+
+
+ rContentDirectory
+ >> *new Html::Link("#devmanrefs")
+ << C_sDevMan
+ << new Html::LineBreak
+ << C_sCRLF;
+
+ HF_SubTitleTable
+ aList(CurOut(), "devmanrefs", C_sDevMan, 1);
+ Xml::Element &
+ rOutCell = aList.Add_Row() >>* new Html::TableCell;
+
+ csv_assert(rLinks2Refs.size() % 2 == 0);
+ for ( StringVector::const_iterator it = rLinks2Refs.begin();
+ it != rLinks2Refs.end();
+ ++it )
+ {
+ Xml::Element &
+ rLink = rOutCell >> *new Html::Link( Env().Link2Manual(*it));
+ if ( (*(it+1)).empty() )
+
+ // HACK KORR_FUTURE
+ // Research what happens with manual links which contain normal characters
+ // in non-utf-8 texts. And research, why utfF-8 does not work here.
+ rLink << new Xml::XmlCode(*it);
+ else
+ // HACK KORR_FUTURE, see above.
+ rLink << new Xml::XmlCode( *(it+1) );
+ rOutCell
+ << new Html::LineBreak
+ << C_sCRLF;
+ ++it;
+ } // end for
+}
+
+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
+}
+
+void
+HF_IdlXrefs::Produce_Tree( const char * i_title,
+ const char * i_label,
+ const client & i_ce,
+ F_GET_SUBLIST i_sublistcreator ) const
+{
+ dyn_ce_list pResult;
+ (*i_sublistcreator)(pResult, i_ce);
+
+ if (NOT (*pResult).operator bool())
+ {
+ 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 &
+ rOut = aList.Add_Row()
+ >>* new Html::TableCell
+ >> *new csi::xml::AnElement("pre")
+ << new csi::html::StyleAttr("font-family:monospace;");
+
+ recursive_make_ListInTree( rOut,
+ 0,
+ i_ce,
+ *pResult,
+ i_sublistcreator );
+}
+
+void
+HF_IdlXrefs::produce_Main( const String & i_prefix,
+ const client & i_ce ) const
+{
+ make_Navibar(i_ce);
+
+ HF_TitleTable
+ aTitle(CurOut());
+ StreamLock sl(200);
+ aTitle.Produce_Title( sl()
+ << C_sTitleStart
+ << i_prefix
+ << " "
+ << i_ce.LocalName()
+ << c_str );
+
+ aTitle.Add_Row() << &rContentDirectory;
+ sl().reset();
+ rContentDirectory
+ >> *new Html::Link( sl() << 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();
+}
+
+void
+HF_IdlXrefs::recursive_make_ListInTree( Xml::Element & o_rDisplay,
+ uintt i_level,
+ const client & i_ce,
+ ce_list & i_iterator,
+ F_GET_SUBLIST i_sublistcreator ) const
+{
+ const char * sLevelIndentation = " ";
+
+ HF_IdlTypeText
+ aTypeWriter(Env(), o_rDisplay, true, &i_ce);
+ for ( ; i_iterator.operator bool(); ++i_iterator )
+ {
+ for (uintt i = 0; i < i_level; ++i)
+ {
+ o_rDisplay << sLevelIndentation;
+ } // end for
+
+ aTypeWriter.Produce_byData(*i_iterator);
+ o_rDisplay << C_sCRLF;
+
+ dyn_ce_list pResult;
+ const client & rCe = Env().Gate().Ces().Find_Ce(*i_iterator);
+ (*i_sublistcreator)(pResult, rCe);
+ if ( (*pResult).operator bool() )
+ {
+ recursive_make_ListInTree( o_rDisplay,
+ i_level + 1,
+ rCe,
+ *pResult,
+ i_sublistcreator );
+ }
+ } // end for
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hfi_xrefpage.hxx b/autodoc/source/display/idl/hfi_xrefpage.hxx
new file mode 100644
index 000000000000..0f0ca26c3998
--- /dev/null
+++ b/autodoc/source/display/idl/hfi_xrefpage.hxx
@@ -0,0 +1,107 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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:
+ typedef void (*F_GET_SUBLIST)(dyn_ce_list&, const client&);
+
+ 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 Produce_List() or
+ Produce_Tree(), will occur in the content directory of the page.
+ They will have links, if the list or tree has at least one element,
+ else the list is mentioned in the directory without link.
+
+ @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;
+ /** @descr
+ Only lists which are tried to be produced by Produce_List() or
+ Produce_Tree(), will occur in the content directory of the page.
+ They will have links, if the list or tree has at least one element,
+ else the list is mentioned in the directory without link.
+
+ @param i_label [*i_label == '#']
+ */
+ void Produce_Tree(
+ const char * i_title,
+ const char * i_label,
+ const client & i_ce,
+ F_GET_SUBLIST i_sublistcreator ) const;
+
+ private:
+ // Locals
+ void produce_Main(
+ const String & i_prefix,
+ const client & i_ce ) const;
+ void make_Navibar(
+ const client & i_ce ) const;
+ /// @return true if there are any elements in sub lists.
+ void recursive_make_ListInTree(
+ Xml::Element & o_rDisplay,
+ uintt i_level, /// 0 is highest
+ const client & i_ce,
+ ce_list & i_iterator,
+ F_GET_SUBLIST i_sublistcreator ) const;
+
+ // DATA
+ Xml::Element & rContentDirectory;
+ const client * pClient;
+};
+
+
+
+// IMPLEMENTATION
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_ary.cxx b/autodoc/source/display/idl/hi_ary.cxx
new file mode 100644
index 000000000000..fa789cac13c8
--- /dev/null
+++ b/autodoc/source/display/idl/hi_ary.cxx
@@ -0,0 +1,273 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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;
+ const 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;
+ nextName(pNext, o_memberEntity);
+ if (strchr(o_memberEntity,':') != 0)
+ return false; // This must not happen in IDL
+
+ 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.Ces().Get_AlphabeticalIndex(o_data, i_letter);
+}
+
+
+const ary::idl::CePilot &
+AryAccess::Ces() const
+{
+ return rGate.Ces();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_ary.hxx b/autodoc/source/display/idl/hi_ary.hxx
new file mode 100644
index 000000000000..99ae6372f379
--- /dev/null
+++ b/autodoc/source/display/idl/hi_ary.hxx
@@ -0,0 +1,164 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HI_ARY_HXX
+#define ADC_DISPLAY_HI_ARY_HXX
+
+
+// USED SERVICES
+ // BASE CLASSES
+ // COMPONENTS
+#include <ary/idl/i_types4idl.hxx>
+ // PARAMETERS
+#include <ary/idl/i_gate.hxx>
+#include <ary/doc/d_docu.hxx>
+#include <ary/doc/d_oldidldocu.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+ class Gate;
+ class CePilot;
+ class TypePilot;
+}
+}
+namespace output
+{
+ class Position;
+}
+
+
+
+
+inline const ary::doc::OldIdlDocu *
+Get_IdlDocu(const ary::doc::Documentation & i_doc)
+{
+ return dynamic_cast< const ary::doc::OldIdlDocu* >(i_doc.Data());
+}
+
+
+
+
+
+/** A helper class to wrap the access to data in the Autodoc Repository.
+*/
+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;
+ 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
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_display.cxx b/autodoc/source/display/idl/hi_display.cxx
new file mode 100644
index 000000000000..170450e92a72
--- /dev/null
+++ b/autodoc/source/display/idl/hi_display.cxx
@@ -0,0 +1,200 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include <idl/hi_display.hxx>
+
+
+// NOT FULLY DEFINED SERVICES
+#include <cosv/file.hxx>
+#include <ary/idl/i_ce.hxx>
+#include <ary/idl/i_module.hxx>
+#include <ary/getncast.hxx>
+#include <toolkit/out_tree.hxx>
+#include <cfrstd.hxx>
+#include "hi_ary.hxx"
+#include "hi_env.hxx"
+#include "hi_main.hxx"
+
+
+extern const String C_sCssFilename_Idl;
+
+
+inline bool
+HtmlDisplay_Idl::IsModule( const ary::idl::CodeEntity & i_ce ) const
+{
+ return ary::is_type<ary::idl::Module>(i_ce);
+}
+
+inline const ary::idl::Module &
+HtmlDisplay_Idl::Module_Cast( const ary::idl::CodeEntity & i_ce ) const
+{
+ return ary::ary_cast<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_CssFile();
+ 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.Accept(*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.Accept(*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()
+{
+}
+
+void
+HtmlDisplay_Idl::Create_HelpFile()
+{
+}
+
+void
+HtmlDisplay_Idl::Create_CssFile()
+{
+ Cout() << "\nCreate css file ..." << Endl();
+
+ pCurPageEnv->Goto_Directory( pCurPageEnv->OutputTree().Root(), true );
+ pCurPageEnv->Set_CurFile( C_sCssFilename_Idl );
+
+ StreamLock
+ slCurFilePath(700);
+ pCurPageEnv->Get_CurFilePath(slCurFilePath());
+
+ csv::File
+ aCssFile(slCurFilePath().c_str(), csv::CFM_CREATE);
+ csv::OpenCloseGuard
+ aOpenGuard(aCssFile);
+ if (NOT aOpenGuard)
+ {
+ Cerr() << "Can't create file " << slCurFilePath().c_str() << "." << Endl();
+ return;
+ }
+
+ aCssFile.write("/* Autodoc css file for IDL documentation */\n\n\n");
+ aCssFile.write(pCurPageEnv->Layout().CssStyle());
+ aCssFile.write("\n\n\n");
+ aCssFile.write(pCurPageEnv->Layout().CssStylesExplanation());
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_env.cxx b/autodoc/source/display/idl/hi_env.cxx
new file mode 100644
index 000000000000..668e85328f65
--- /dev/null
+++ b/autodoc/source/display/idl/hi_env.cxx
@@ -0,0 +1,202 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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)),
+ pGate(&i_rGate),
+ pOutputTree(new output::Tree),
+ aCurPosition(pOutputTree->Root()),
+ pCurPageCe(0),
+ 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();
+}
+
+inline bool
+IsAbsoluteLink(const char * i_link)
+{
+ const char
+ shttp[] = "http://";
+ const char
+ sfile[] = "file://";
+ const int
+ csize = sizeof shttp - 1;
+ csv_assert(csize == sizeof sfile - 1);
+
+ return strncmp(i_link,shttp,csize) == 0
+ OR strncmp(i_link,sfile,csize) == 0;
+}
+
+
+const char *
+HtmlEnvironment_Idl::Link2Manual( const String & i_link ) const
+{
+ if ( IsAbsoluteLink(i_link.c_str()) )
+ return i_link;
+
+ static StreamStr aLink_(200);
+ aLink_.reset();
+ String
+ sDvgRoot(pLayout->DevelopersGuideHtmlRoot());
+ if (sDvgRoot.empty())
+ sDvgRoot = "../DevelopersGuide";
+
+ // KORR_FUTURE
+ // Enhance performance by calculating this only one time:
+ if ( NOT IsAbsoluteLink(sDvgRoot.c_str()) )
+ aCurPosition.Get_LinkToRoot(aLink_);
+ aLink_ << sDvgRoot
+ << "/"
+ << i_link;
+ return aLink_.c_str();
+}
+
+String
+HtmlEnvironment_Idl::CurPageCe_AsText() const
+{
+ return CurPageCe_AsFile(".html");
+}
+
+String
+HtmlEnvironment_Idl::CurPageCe_AsFile(const char * i_sEnding) const
+{
+ if (pCurPageCe == 0)
+ return String::Null_();
+
+ static StringVector aModule_;
+ String sCe;
+ String sDummy;
+ Data().Get_CeText(aModule_, sCe, sDummy, *pCurPageCe);
+ StreamLock slCe(500);
+ if (aModule_.size() > 0)
+ slCe().operator_join(aModule_.begin(), aModule_.end(), "/");
+ if (NOT sCe.empty())
+ slCe() << "/" << sCe << i_sEnding;
+ return String(slCe().c_str());
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_env.hxx b/autodoc/source/display/idl/hi_env.hxx
new file mode 100644
index 000000000000..a081e07fe974
--- /dev/null
+++ b/autodoc/source/display/idl/hi_env.hxx
@@ -0,0 +1,163 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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;
+ class CodeEntity;
+}
+}
+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 );
+ void Set_CurPageCe(
+ const ary::idl::CodeEntity *
+ i_ce )
+ { pCurPageCe = i_ce; }
+ // INQUIRY
+ const ary::idl::Gate &
+ Gate() const { return *pGate; }
+ 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); }
+ String CurPageCe_AsText() const;
+ String CurPageCe_AsFile(
+ const char * i_sEnding) const;
+ const ary::idl::CodeEntity *
+ CurPageCe() const { return pCurPageCe; }
+
+ // 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; /// @invariant *pData is valid.
+ const ary::idl::Gate *
+ pGate; /// @invariant pGate != 0.
+ Dyn<output::Tree> pOutputTree; /// @invariant *pOutputTree is valid.
+ mutable output::Position
+ aCurPosition;
+ const ary::idl::CodeEntity *
+ pCurPageCe;
+
+ const display::CorporateFrame *
+ pLayout;
+
+ Dyn<LinkHelper> pLinker;
+};
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_factory.cxx b/autodoc/source/display/idl/hi_factory.cxx
new file mode 100644
index 000000000000..1e9c091b40c7
--- /dev/null
+++ b/autodoc/source/display/idl/hi_factory.cxx
@@ -0,0 +1,323 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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_SummaryDeclaration( Xml::Element & o_row,
+ const client & i_ce ) const
+{
+ produce_InternalLink(o_row, i_ce);
+}
+
+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 );
+
+ rDetailsRowCell << new Xml::XmlCode("&nbsp;");
+}
+
+// KORR_FUTURE: Does not belong here (implementation inheritance)!
+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);
+ 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;");
+ rBaseList
+ >> *new Html::Strong
+ << i_ce.LocalName();
+ rBaseList
+ << "\n";
+ recursive_ShowBases( rBaseList,
+ nBaseT,
+ nDepth );
+ }
+}
+
+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 E_MemberViewType i_viewType ) const
+{
+ csv_assert( it_list );
+
+ Dyn< HF_SubTitleTable > pSummary;
+ if ( ( i_viewType == viewtype_summary )
+ || ( i_viewType == viewtype_complete )
+ )
+ {
+ pSummary = new HF_SubTitleTable(
+ CurOut(),
+ i_summaryLabel,
+ i_summaryTitle,
+ 2 );
+ }
+
+ Dyn< HF_SubTitleTable > pDetails;
+ if ( ( i_viewType == viewtype_details )
+ || ( i_viewType == viewtype_complete )
+ )
+ {
+ pDetails = new HF_SubTitleTable(
+ CurOut(),
+ i_detailsLabel,
+ i_detailsTitle,
+ 1 );
+ }
+
+ for ( ; it_list.operator bool(); ++it_list )
+ {
+ const ary::idl::CodeEntity &
+ rCe = Env().Data().Find_Ce(*it_list);
+
+ if ( pSummary )
+ {
+ Xml::Element &
+ rSummaryRow = pSummary->Add_Row();
+ produce_SummaryDeclaration(rSummaryRow, rCe);
+// produce_InternalLink(rSummaryRow, rCe);
+ produce_ShortDoc(rSummaryRow, rCe);
+ }
+
+ if ( pDetails )
+ produce_MemberDetails(*pDetails, rCe);
+ }
+}
+
+void
+HtmlFactory_Idl::produce_Title( HF_TitleTable & o_title,
+ const String & i_label,
+ const client & i_ce ) const
+{
+ StreamLock
+ slAnnotations(200);
+ get_Annotations(slAnnotations(), i_ce);
+ StreamLock
+ slTitle(200);
+ slTitle() << i_label << " " << i_ce.LocalName();
+ o_title.Produce_Title( slAnnotations().c_str(),
+ slTitle().c_str() );
+}
+
+void
+HtmlFactory_Idl::get_Annotations( StreamStr & o_out,
+ const client & i_ce ) const
+{
+ const ary::doc::OldIdlDocu *
+ doc = Get_IdlDocu(i_ce.Docu());
+ if (doc != 0)
+ {
+ if (doc->IsDeprecated())
+ o_out << "deprecated ";
+ if (NOT doc->IsPublished())
+ o_out << "unpublished ";
+ }
+
+ // KORR
+ // Need to display "unpublished", if there is no docu.
+}
+
+void
+HtmlFactory_Idl::write_Docu( Xml::Element & o_screen,
+ const client & i_ce ) const
+{
+ const ary::doc::OldIdlDocu *
+ doc = Get_IdlDocu(i_ce.Docu());
+ if (doc != 0)
+ {
+ HF_DocEntryList
+ aDocuList( o_screen );
+ HF_IdlDocu
+ aDocu( Env(), aDocuList );
+ aDocu.Produce_fromCodeEntity(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("Developers Guide");
+ csv_assert(rLinks2Descrs.size() % 2 == 0);
+ for ( StringVector::const_iterator it = rLinks2Descrs.begin();
+ it != rLinks2Descrs.end();
+ ++it )
+ {
+ Xml::Element &
+ rLink = aDocuList.Produce_Definition() >> *new Html::Link( Env().Link2Manual(*it));
+ if ( (*(it+1)).empty() )
+ // HACK KORR_FUTURE
+ // Research what happens with manual links which contain normal characters
+ // in non-utf-8 texts. And research, why utfF-8 does not work here.
+ rLink << new Xml::XmlCode(*it);
+ else
+ rLink << new Xml::XmlCode( *(it+1) );
+ ++it;
+ } // end for
+}
+
+void
+HtmlFactory_Idl::produce_MemberDetails( HF_SubTitleTable & ,
+ const client & ) 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
+{
+ // Show this base
+ ++io_nDepth;
+ const ary::idl::CodeEntity *
+ pCe = Env().Linker().Search_CeFromType(i_baseType);
+
+ csv_assert(io_nDepth > 0);
+ if (io_nDepth > 30)
+ io_nDepth = 30;
+ o_screen
+ << (C_sSpace + 93 - 3*io_nDepth)
+ << new csi::xml::XmlCode("&#x2517")
+ << " ";
+
+ if (pCe == 0)
+ {
+ HF_IdlTypeText
+ aText( Env(), o_screen, false );
+ aText.Produce_byData( i_baseType );
+ o_screen
+ << "\n";
+ --io_nDepth;
+ return;
+ }
+
+ HF_IdlTypeText
+ aBaseLink( Env(), o_screen, true );
+ aBaseLink.Produce_byData(pCe->CeId());
+ o_screen
+ << "\n";
+
+ // Bases
+ ary::idl::Type_id
+ nBaseT = baseOf(*pCe);
+ if (nBaseT.IsValid())
+ recursive_ShowBases(o_screen,nBaseT,io_nDepth);
+
+ --io_nDepth;
+ return;
+}
+
+HtmlFactory_Idl::type_id
+HtmlFactory_Idl::inq_BaseOf( const client & ) const
+{
+ // Unused dummy.
+ return type_id(0);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_factory.hxx b/autodoc/source/display/idl/hi_factory.hxx
new file mode 100644
index 000000000000..2ff41228149e
--- /dev/null
+++ b/autodoc/source/display/idl/hi_factory.hxx
@@ -0,0 +1,172 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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_types4idl.hxx>
+#include <toolkit/out_position.hxx>
+
+
+namespace ary
+{
+namespace idl
+{
+ class Module;
+}
+namespace doc
+{
+ class OldIdlDocu;
+}
+}
+
+
+class HtmlEnvironment_Idl;
+class LinkHelper;
+class HF_NaviSubRow;
+class HF_TitleTable;
+class HF_SubTitleTable;
+
+
+class HtmlFactory_Idl : public HtmlFactory<HtmlEnvironment_Idl>
+{
+ public:
+ enum E_MemberViewType
+ {
+ viewtype_summary, // the summary of the members
+ viewtype_details, // the details of the members
+ viewtype_complete // everything
+ };
+
+ enum E_DocType
+ {
+ doctype_summaryOnly, // only the summary
+ doctype_complete // the complete documentation
+ };
+
+ public:
+ typedef ary::idl::CodeEntity client;
+ typedef ary::idl::Ce_id ce_id;
+ typedef ary::idl::Type_id type_id;
+ typedef ary::doc::OldIdlDocu 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)
+ { }
+ virtual ~HtmlFactory_Idl() {}
+
+ /** The default version only calls ->produce_InternalLink().
+ This may be overwritten by derived classes.
+ */
+ virtual void produce_SummaryDeclaration(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+ void produce_InternalLink(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+ void produce_ShortDoc(
+ Xml::Element & o_row,
+ const client & i_ce ) const;
+
+ // KORR_FUTURE: Does not belong here (implementation inheritance)!
+ 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 E_MemberViewType i_viewType = viewtype_complete ) const;
+
+ void produce_Title(
+ HF_TitleTable & o_title,
+ const String & i_label,
+ const client & i_ce ) const;
+ void get_Annotations(
+ StreamStr & o_out,
+ const client & i_ce ) 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_linkhelper.cxx b/autodoc/source/display/idl/hi_linkhelper.cxx
new file mode 100644
index 000000000000..4d5f5d9d13d4
--- /dev/null
+++ b/autodoc/source/display/idl/hi_linkhelper.cxx
@@ -0,0 +1,99 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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( ary::idl::Ce_id(nId) );
+}
+
+namespace
+{
+ const String C_sXrefsSuffix("-xref");
+}
+
+
+LinkHelper::OutPosition
+LinkHelper::PositionOf_CurXRefs( const String & i_ceName ) const
+{
+ StreamLock sl(100);
+ return OutPosition( rEnv.CurPosition(),
+ sl() << 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_;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_linkhelper.hxx b/autodoc/source/display/idl/hi_linkhelper.hxx
new file mode 100644
index 000000000000..c08be5519f70
--- /dev/null
+++ b/autodoc/source/display/idl/hi_linkhelper.hxx
@@ -0,0 +1,110 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_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_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;
+
+ 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_main.cxx b/autodoc/source/display/idl/hi_main.cxx
new file mode 100644
index 000000000000..4217c93bccd8
--- /dev/null
+++ b/autodoc/source/display/idl/hi_main.cxx
@@ -0,0 +1,766 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <precomp.h>
+#include "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_typedef.hxx>
+#include <ary/idl/ik_interface.hxx>
+#include <ary/idl/ik_struct.hxx>
+#include <ary/idl/ik_exception.hxx>
+#include <ary/idl/i_constant.hxx>
+#include <ary/idl/i_constgroup.hxx>
+#include <ary/idl/i_enum.hxx>
+#include <ary/idl/i_singleton.hxx>
+#include <ary/idl/i_sisingleton.hxx>
+#include <ary/idl/i_exception.hxx>
+#include <ary/idl/i_interface.hxx>
+#include <ary/idl/i_service.hxx>
+#include <ary/idl/i_siservice.hxx>
+#include <ary/idl/i_struct.hxx>
+#include <ary/idl/i_typedef.hxx>
+#include <ary/idl/i_module.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_siservice.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;
+
+
+
+extern const String C_sCssFilename_Idl("idl.css");
+
+/*
+typedef ::ary::Dyn_StdConstIterator< ::ary::idl::CommentedRelation>
+ 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 ary::idl::CodeEntity &
+ i_ce,
+ const String & i_titlePrefix );
+ Guard_CurFile( /// For Use pages
+ DocuFile_Html & io_client,
+ HtmlEnvironment_Idl &
+ io_env,
+ const String & i_fileName,
+ const String & i_titlePrefix );
+ Guard_CurFile( /// For Modules
+ DocuFile_Html & io_client,
+ HtmlEnvironment_Idl &
+ io_env,
+ const ary::idl::CodeEntity &
+ i_ce );
+ Guard_CurFile( /// For Indices
+ DocuFile_Html & io_client,
+ HtmlEnvironment_Idl &
+ io_env,
+ char i_letter );
+ ~Guard_CurFile();
+ private:
+ DocuFile_Html & rClient;
+ HtmlEnvironment_Idl &
+ rEnv;
+
+};
+
+/** @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 ary::idl::CodeEntity & i_ce,
+ const String & i_titlePrefix )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Ces
+ StreamLock sl(300);
+ io_env.Set_CurFile( sl() << i_ce.LocalName()
+ << ".html"
+ << c_str );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+
+ rClient.EmptyBody();
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+ rClient.SetLocation(aLocation);
+ sl().reset();
+ rClient.SetTitle( sl() << i_titlePrefix
+ << " "
+ << i_ce.LocalName()
+ << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << io_env.CurPosition().LinkToRoot()
+ << C_sCssFilename_Idl
+ << c_str );
+
+ io_env.Set_CurPageCe(&i_ce);
+}
+
+Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client,
+ HtmlEnvironment_Idl & io_env,
+ const String & i_fileName,
+ const String & i_titlePrefix )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Use pages
+ StreamLock sl(300);
+ io_env.Set_CurFile( sl() << i_fileName
+ << ".html"
+ << c_str );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+
+ rClient.EmptyBody();
+ rClient.SetLocation(aLocation);
+ sl().reset();
+ rClient.SetTitle( sl() << i_titlePrefix << " " << i_fileName << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << io_env.CurPosition().LinkToRoot()
+ << C_sCssFilename_Idl
+ << c_str );
+
+ io_env.Set_CurPageCe(0);
+}
+
+Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client,
+ HtmlEnvironment_Idl & io_env,
+ const ary::idl::CodeEntity & i_ce )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Modules
+ io_env.Set_CurFile( output::ModuleFileName() );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+
+ rClient.EmptyBody();
+ rClient.SetLocation(aLocation);
+ StreamLock sl(300);
+ rClient.SetTitle( sl() << "Module " << io_env.CurPosition().Name() << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << io_env.CurPosition().LinkToRoot()
+ << C_sCssFilename_Idl
+ << c_str );
+
+ io_env.Set_CurPageCe(&i_ce);
+}
+
+Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client,
+ HtmlEnvironment_Idl & io_env,
+ char i_letter )
+ : rClient(io_client),
+ rEnv(io_env)
+{ // For Index pages
+ StreamLock sl(300);
+ io_env.Set_CurFile( sl() << "index-"
+ << ( i_letter != '_'
+ ? int(i_letter)-'a'+1
+ : 27 )
+ << ".html"
+ << c_str );
+ StreamLock aCurFilePath(700);
+ io_env.Get_CurFilePath(aCurFilePath());
+ csv::ploc::Path
+ aLocation(aCurFilePath().c_str());
+
+ rClient.EmptyBody();
+ rClient.SetLocation(aLocation);
+ sl().reset();
+ rClient.SetTitle( sl() << "Global Index "
+ << ( i_letter != '_'
+ ? char(i_letter-'a'+'A')
+ : '_' )
+ << c_str );
+ sl().reset();
+ rClient.SetRelativeCssPath(
+ sl() << "../"
+ << C_sCssFilename_Idl
+ << c_str );
+}
+
+Guard_CurFile::~Guard_CurFile()
+{
+ rClient.CreateFile();
+ rEnv.Set_CurPageCe(0);
+}
+
+
+} // 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_Process( const ary::idl::Module & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce );
+ HF_IdlModule aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Interface & i_ce )
+{
+ do_InterfaceDescr(i_ce);
+ do_Interface2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Service & i_ce )
+{
+ do_ServiceDescr(i_ce);
+ do_Service2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::SglIfcService & i_ce )
+{
+ do_SglIfcServiceDescr(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Struct & i_ce )
+{
+ do_StructDescr(i_ce);
+ do_Struct2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Exception & i_ce )
+{
+ do_ExceptionDescr(i_ce);
+ do_Exception2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Enum & i_ce )
+{
+ do_EnumDescr(i_ce);
+ do_Enum2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Typedef & i_ce )
+{
+ do_TypedefDescr(i_ce);
+ do_Typedef2s(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::ConstantsGroup & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Constants' Group" );
+ HF_IdlConstGroup aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::Singleton & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Singleton" );
+ HF_IdlSingleton aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData_ServiceBased(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Process( const ary::idl::SglIfcSingleton & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Singleton" );
+ HF_IdlSingleton aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData_InterfaceBased(i_ce);
+}
+
+void
+MainDisplay_Idl::do_InterfaceDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "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,
+ "Service" );
+ HF_IdlService aFactory( *pEnv, pMyFile->Body() );
+ Guard_CurFactoryPtr gFactory(pCurFactory,aFactory);
+
+ aFactory.Produce_byData(i_ce);
+}
+
+void
+MainDisplay_Idl::do_SglIfcServiceDescr( const ary::idl::CodeEntity & i_ce )
+{
+ Guard_CurFile gFile( *pMyFile,
+ Env(),
+ i_ce,
+ "Service" );
+ HF_IdlSglIfcService 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,
+ "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,
+ "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,
+ "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,
+ "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 )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << 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 );
+
+
+ aUses.Produce_Tree(
+ "Derived Interfaces",
+ "#Deriveds",
+ i_ce,
+ &ary::idl::ifc_interface::xref::Get_Derivations );
+
+ Dyn_CeIterator 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_ExportingSingletons(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Singletons which Support this Interface",
+ "#SupportingSingletons",
+ *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 );
+ ary::idl::ifc_interface::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Service2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << 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 )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << 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 );
+
+ aUses.Produce_Tree(
+ "Derived Structs",
+ "#Deriveds",
+ i_ce,
+ &ary::idl::ifc_struct::xref::Get_Derivations );
+
+ Dyn_CeIterator 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 );
+ ary::idl::ifc_struct::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Exception2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << 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 );
+
+ aUses.Produce_Tree(
+ "Derived Exceptions",
+ "#Deriveds",
+ i_ce,
+ &ary::idl::ifc_exception::xref::Get_Derivations );
+
+ Dyn_CeIterator 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 )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl()
+ << 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 );
+ ary::idl::ifc_enum::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+void
+MainDisplay_Idl::do_Typedef2s( const ary::idl::CodeEntity & i_ce )
+{
+ StreamLock sl(100);
+ String sUsesFileName(
+ sl() << 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 );
+ ary::idl::ifc_typedef::xref::Get_AsDataTypes(pXrefList,i_ce);
+ aUses.Produce_List(
+ "Uses as Data Type",
+ "#DataTypes",
+ *pXrefList );
+ aUses.Write_ManualLinks(i_ce);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/hi_main.hxx b/autodoc/source/display/idl/hi_main.hxx
new file mode 100644
index 000000000000..2e52def89e92
--- /dev/null
+++ b/autodoc/source/display/idl/hi_main.hxx
@@ -0,0 +1,181 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef ADC_DISPLAY_HFIDMAIN_HXX
+#define ADC_DISPLAY_HFIDMAIN_HXX
+
+
+
+// USED SERVICES
+ // BASE CLASSES
+#include <cosv/tpl/processor.hxx>
+ // COMPONENTS
+#include "hi_factory.hxx"
+ // PARAMETERS
+
+
+class HtmlEnvironment_Idl;
+class HtmlFactory_Idl;
+class DocuFile_Html;
+
+namespace ary
+{
+namespace idl
+{
+
+ class Module;
+ class Service;
+ class SglIfcService;
+ class Interface;
+ class Struct;
+ class Exception;
+ class Enum;
+ class Typedef;
+ class ConstantsGroup;
+ class Singleton;
+ class SglIfcSingleton;
+
+} // namespace idl
+} // namespace ary
+
+
+class MainDisplay_Idl : public csv::ProcessorIfc,
+ public csv::ConstProcessor<ary::idl::Module>,
+ public csv::ConstProcessor<ary::idl::Service>,
+ public csv::ConstProcessor<ary::idl::SglIfcService>,
+ public csv::ConstProcessor<ary::idl::Interface>,
+ public csv::ConstProcessor<ary::idl::Struct>,
+ public csv::ConstProcessor<ary::idl::Exception>,
+ public csv::ConstProcessor<ary::idl::Enum>,
+ public csv::ConstProcessor<ary::idl::Typedef>,
+ public csv::ConstProcessor<ary::idl::ConstantsGroup>,
+ public csv::ConstProcessor<ary::idl::Singleton>,
+ public csv::ConstProcessor<ary::idl::SglIfcSingleton>
+{
+ public:
+ MainDisplay_Idl(
+ HtmlEnvironment_Idl &
+ io_rEnv );
+ virtual ~MainDisplay_Idl();
+
+ void WriteGlobalIndices();
+
+ void Display_NamedEntityHierarchy();
+
+ private:
+ // Interface csv::ProcessorIfc:
+ virtual void do_Process(
+ const ary::idl::Module & i_client );
+ virtual void do_Process(
+ const ary::idl::Service & i_client );
+ virtual void do_Process(
+ const ary::idl::SglIfcService &
+ i_client );
+ virtual void do_Process(
+ const ary::idl::Interface & i_client );
+ virtual void do_Process(
+ const ary::idl::Struct & i_client );
+ virtual void do_Process(
+ const ary::idl::Exception & i_client );
+ virtual void do_Process(
+ const ary::idl::Enum & i_client );
+ virtual void do_Process(
+ const ary::idl::Typedef & i_client );
+ virtual void do_Process(
+ const ary::idl::ConstantsGroup &
+ i_client );
+ virtual void do_Process(
+ const ary::idl::Singleton & i_client );
+ virtual void do_Process(
+ const ary::idl::SglIfcSingleton &
+ i_client );
+ // Locals
+ void do_ServiceDescr(
+ const ary::idl::CodeEntity &
+ i_rData );
+ void do_SglIfcServiceDescr(
+ 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/autodoc/source/display/idl/makefile.mk b/autodoc/source/display/idl/makefile.mk
new file mode 100644
index 000000000000..383983a1fb22
--- /dev/null
+++ b/autodoc/source/display/idl/makefile.mk
@@ -0,0 +1,77 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+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_hierarchy.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_siservice.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
+
+
+