diff options
Diffstat (limited to 'autodoc/source/ary/idl/i2s_calculator.hxx')
-rw-r--r-- | autodoc/source/ary/idl/i2s_calculator.hxx | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/autodoc/source/ary/idl/i2s_calculator.hxx b/autodoc/source/ary/idl/i2s_calculator.hxx new file mode 100644 index 000000000000..2ebde4d9400c --- /dev/null +++ b/autodoc/source/ary/idl/i2s_calculator.hxx @@ -0,0 +1,295 @@ +/************************************************************************* + * + * 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 ARY_IDL_I2S_CALCULATOR_HXX +#define ARY_IDL_I2S_CALCULATOR_HXX + + +// USED SERVICES + // BASE CLASSES +#include <cosv/tpl/processor.hxx> + // PARAMETERS +#include <ary/idl/i_types4idl.hxx> + + +namespace ary +{ +namespace idl +{ + class CeAdmin; + class Ce_Storage; + class TypeAdmin; + class Type_Storage; + class Module; + class ExplicitType; + class Function; + class Interface; + class Property; + class Typedef; + class Service; + class Singleton; + class SglIfcService; + class SglIfcSingleton; + class Struct; + class StructElement; + class Exception; + class Ce_2s; +} +} + + + + + + +namespace ary +{ +namespace idl +{ + + +enum E_2s_of_Service +{ + service_2s_IncludingServices, + service_2s_InstantiatingSingletons +}; + +enum E_2s_of_Interface +{ + interface_2s_Derivations, + interface_2s_ExportingServices, + interface_2s_ExportingSingletons, + interface_2s_SynonymTypedefs, +// interface_2s_UsingTypedefs, + interface_2s_AsReturns, +// interface_2s_AsIndirectReturns, + interface_2s_AsParameters, +// interface_2s_AsIndirectParameters, + interface_2s_AsDataTypes +}; + +enum E_2s_of_Struct +{ + struct_2s_Derivations, + struct_2s_SynonymTypedefs, +// struct_2s_UsingTypedefs, + struct_2s_AsReturns, +// struct_2s_AsIndirectReturns, + struct_2s_AsParameters, +// struct_2s_AsIndirectParameters, + struct_2s_AsDataTypes +}; + +enum E_2s_of_Enum +{ + enum_2s_SynonymTypedefs, +// enum_2s_UsingTypedefs, + enum_2s_AsReturns, +// enum_2s_AsIndirectReturns, + enum_2s_AsParameters, +// enum_2s_AsIndirectParameters, + enum_2s_AsDataTypes +}; + +enum E_2s_of_Typedef +{ + typedef_2s_SynonymTypedefs, +// typedef_2s_UsingTypedefs, + typedef_2s_AsReturns, +// typedef_2s_AsIndirectReturns, + typedef_2s_AsParameters, +// typedef_2s_AsIndirectParameters, + typedef_2s_AsDataTypes +}; + +enum E_2s_of_Exceptions +{ + exception_2s_Derivations, + exception_2s_RaisingFunctions +}; + + + +class SPInst_asHost : public csv::ProcessorIfc, + public csv::ConstProcessor<Service>, + public csv::ConstProcessor<Interface>, + public csv::ConstProcessor<Struct>, + public csv::ConstProcessor<Exception>, + public csv::ConstProcessor<Typedef>, + public csv::ConstProcessor<Singleton>, + public csv::ConstProcessor<Function>, + public csv::ConstProcessor<StructElement>, + public csv::ConstProcessor<Property>, + public csv::ConstProcessor<SglIfcService>, + public csv::ConstProcessor<SglIfcSingleton> +{ +}; + + + + +/** This class scans the parsed data and produces several + secondary data like cross references and alphabetical indices. + + In this declaration "Secondaries" or "2s" mean those secondary data. + + @see Ce_2s +*/ +class SecondariesCalculator : public SPInst_asHost +{ + public: + // LIFECYCLE + SecondariesCalculator( + CeAdmin & i_ces, + TypeAdmin & i_types ); + virtual ~SecondariesCalculator(); + + // OPERATIONS + void CheckAllInterfaceBases(); + void Connect_Types2Ces(); + void Gather_CrossReferences(); + void Make_Links2DeveloperManual( + const String & i_devman_reffilepath ); + + private: + // Interface CeHost These are the points to gather cross + // references: + virtual void do_Process( + const Service & i_rData ); + virtual void do_Process( + const Interface & i_rData ); + virtual void do_Process( + const Struct & i_rData ); + virtual void do_Process( + const Exception & i_rData ); + virtual void do_Process( + const Typedef & i_rData ); + virtual void do_Process( + const Singleton & i_rData ); + virtual void do_Process( + const Function & i_rData ); + virtual void do_Process( + const StructElement & + i_rData ); + virtual void do_Process( + const Property & i_rData ); + virtual void do_Process( + const SglIfcService & + i_rData ); + virtual void do_Process( + const SglIfcSingleton & + i_rData ); + + // Locals + const Ce_Storage & my_CeStorage() const; + const Type_Storage & + my_TypeStorage() const; + Ce_Storage & my_CeStorage(); + Type_Storage & my_TypeStorage(); + + template <class DEST> + DEST * SearchCe4Type( + Type_id i_type ); + Ce_id lhf_Search_CeForType( + const ExplicitType & + i_rType ) const; + Ce_id lhf_Search_CeFromTypeId( + Type_id i_nType ) const; + Service * lhf_SearchService( + Type_id i_nServ ); + Interface * lhf_SearchInterface( + Type_id i_nIfc ); + Struct * lhf_SearchStruct( + Type_id i_nIfc ); + Exception * lhf_SearchException( + Type_id i_nIfc ); + void assign_CurLink( + char * i_text, + const String & i_link, + const String & i_linkUI, + bool i_isDescr, /// @descr true: description, false: reference. + int i_lineCount ); + void gather_Synonyms(); + void recursive_AssignAsSynonym( + Ce_id i_synonymousTypedefsId, + const Typedef & i_TypedefToCheck ); + void recursive_AssignIncludingService( + Ce_id i_includingServicesId, + const Service & i_ServiceToCheckItsIncludes ); + void assign_AsDerivedInterface( + const Interface & i_rDerived ); + void assign_AsDerivedStruct( + const Struct & i_rDerived ); + void assign_AsDerivedException( + const Exception & i_rDerived ); + void assignImplementation_toAServicesInterfaces( + Ce_id i_nImpl, + Ce_id i_nService, + E_2s_of_Interface i_eList ); + void recursive_AssignImplementation_toExportedInterface( + Ce_id i_nService, + Type_id i_nExportedInterface, + E_2s_of_Interface i_eList ); + void recursive_AssignFunction_toCeAsReturn( + Ce_id i_nFunction, + Type_id i_nReturnType ); + void recursive_AssignFunction_toCeAsParameter( + Ce_id i_nFunction, + Type_id i_nParameterType ); + + /** @param i_nDataElement + May be the ID of an struct element as well as an exception element + or a property. + */ + void recursive_AssignStructElement_toCeAsDataType( + Ce_id i_nDataElement, + Type_id i_nDataType ); + void insert_into2sList( + CodeEntity & o_out, + int i_listIndex, + Ce_id i_nCe ); + void insert_into2sUnique( + CodeEntity & o_out, + int i_listIndex, + Ce_id i_nCe ); + /// Sorts secondary production lists alphabetical. + void sort_All2s(); + + void Read_Links2DevManual( + csv::bstream & i_file ); + + // DATA + CeAdmin * pCes; + TypeAdmin * pTypes; +}; + + + + +} // namespace idl +} // namespace ary +#endif |