blob: 956d3de6082cd32856da3cc700925a0b4bc022ce [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef ARY_IDL_IA_CE_HXX
#define ARY_IDL_IA_CE_HXX
// USED SERVICES
// BASE CLASSES
#include <ary/idl/ip_ce.hxx>
// COMPONENTS
// PARAMETERS
namespace ary
{
namespace idl
{
class Ce_Storage;
class TypeAdmin;
/** @resp
Implements ::ary::idl::CePilot. Provides the access logic for all
IDL code entities.
@collab Ce_Storage
@collab TypeAdmin
@see CodeEntity
*/
class CeAdmin : public CePilot
{
public:
// LIFECYCLE
CeAdmin(
NameLookup & io_rNameDictionary,
TypeAdmin & io_rTypePilot );
virtual ~CeAdmin();
// OPERATIONS
// INQUIRY
const Ce_Storage & Storage() const;
// ACCESS
Ce_Storage & Storage();
// INHERITED
// Interface ::ary::idl::CePilot:
virtual Module & CheckIn_Module(
Ce_id i_nParentId,
const String & i_sName );
virtual Service & Store_Service(
Ce_id i_nOwner,
const String & i_sName );
virtual SglIfcService &
Store_SglIfcService(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nBaseInterface );
virtual Interface & Store_Interface(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nBase );
virtual Struct & Store_Struct(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nBase,
const String & i_sTemplateParam );
virtual Exception & Store_Exception(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nBase );
virtual Enum & Store_Enum(
Ce_id i_nOwner,
const String & i_sName );
virtual Typedef & Store_Typedef(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nDefiningType );
virtual ConstantsGroup &
Store_ConstantsGroup(
Ce_id i_nOwner,
const String & i_sName );
virtual Singleton & Store_Singleton(
Ce_id i_nOwner,
const String & i_sName );
virtual SglIfcSingleton &
Store_SglIfcSingleton(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nBaseInterface );
virtual Constant & Store_Constant(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nType,
const String & i_sValue );
virtual Property & Store_Property(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nType,
Property::Stereotypes
i_stereotypes );
virtual Function & Store_Function(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nReturnType,
bool i_bOneWay );
virtual Function & Store_ServiceConstructor(
Ce_id i_nOwner,
const String & i_sName );
virtual StructElement &
Store_StructMember(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nType );
virtual StructElement &
Store_ExceptionMember(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nType );
virtual EnumValue & Store_EnumValue(
Ce_id i_nOwner,
const String & i_sName,
const String & i_sValue );
virtual Attribute & Store_Attribute(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nType,
bool i_bReadOnly,
bool i_bBound );
virtual const Module &
GlobalNamespace() const;
virtual const CodeEntity &
Find_Ce(
Ce_id i_nId ) const;
virtual const Module &
Find_Module(
Ce_id i_nId ) const;
virtual const Module *
Search_Module(
Ce_id i_nId ) const;
virtual const Function &
Find_Function(
Ce_id i_nId ) const;
virtual const Property &
Find_Property(
Ce_id i_nId ) const;
virtual const EnumValue &
Find_EnumValue(
Ce_id i_nId ) const;
virtual const Constant &
Find_Constant(
Ce_id i_nId ) const;
virtual const StructElement &
Find_StructElement(
Ce_id i_nId ) const;
virtual void Get_Text(
StringVector & o_module,
String & o_ce,
String & o_member,
const CodeEntity & i_ce ) const;
virtual const NameLookup &
NameDictionary() const;
virtual void Get_AlphabeticalIndex(
std::vector<Ce_id> &
o_rResult,
alphabetical_index::E_Letter
i_cLetter) const;
// ACCESS
virtual Module & GlobalNamespace();
virtual CodeEntity &
Find_Ce(
Ce_id i_nId );
private:
// Locals
Module & lhf_Access_Module(
Ce_id i_nId );
void lhf_Put2Storage_and_AssignId(
CodeEntity & pass_io_rCe );
void lhf_Store_NewEntity(
DYN CodeEntity & pass_io_rCe,
Module & i_rOwner );
void lhf_Store_NewEntity(
DYN CodeEntity & pass_io_rCe,
Ce_id i_nOwnerModule );
void get_ModuleText(
StringVector & o_module,
const CodeEntity & i_ce ) const;
Struct & lhf_Store_TplStruct(
Ce_id i_nOwner,
const String & i_sName,
Type_id i_nBase,
const String & i_sTemplateParam );
const Ce_Storage & my_Storage() const;
Ce_Storage & my_Storage();
NameLookup & my_NameDictionary() { return *pNameDictionary; }
// DATA
Dyn<Ce_Storage> pStorage; /// @inv pStorage != 0;
Module * pGlobalNamespace;
NameLookup * pNameDictionary;
TypeAdmin * pTypePilot;
};
// IMPLEMENTATION
inline const Ce_Storage &
CeAdmin::Storage() const
{
return *pStorage;
}
inline Ce_Storage &
CeAdmin::Storage()
{
return *pStorage;
}
} // namespace idl
} // namespace ary
#endif