blob: 6f17a207a77d4033fd0c14a210df2307f78f2fee [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.
*
*************************************************************/
#include <precomp.h>
#include <ary/idl/i_module.hxx>
#include <ary/idl/ik_module.hxx>
// NOT FULLY DECLARED SERVICES
#include <cosv/tpl/processor.hxx>
#include <ary/idl/i_gate.hxx>
#include <ary/idl/i_module.hxx>
#include <ary/idl/i_service.hxx>
#include <ary/idl/i_interface.hxx>
#include <ary/idl/i_struct.hxx>
#include <ary/idl/i_exception.hxx>
#include <ary/idl/i_enum.hxx>
#include <ary/idl/i_typedef.hxx>
#include <ary/idl/i_constgroup.hxx>
#include <ary/idl/i_singleton.hxx>
#include <ary/idl/i_siservice.hxx>
#include <ary/idl/i_sisingleton.hxx>
#include <ary/idl/ip_ce.hxx>
#include <nametreenode.hxx>
namespace ary
{
namespace idl
{
Module::Module()
: pImpl( new NameTreeNode<Ce_id> )
{
}
Module::Module( const String & i_sName,
const Module & i_rParent )
: pImpl( new NameTreeNode<Ce_id>( i_sName,
*i_rParent.pImpl,
i_rParent.CeId() ) )
{
}
Module::~Module()
{
}
void
Module::Add_Name( const String & i_sName,
Ce_id i_nCodeEntity )
{
pImpl->Add_Name(i_sName, i_nCodeEntity);
}
Ce_id
Module::Search_Name( const String & i_sName ) const
{
return pImpl->Search_Name(i_sName);
}
void
Module::Get_Names( Dyn_StdConstIterator<Ce_id> & o_rResult ) const
{
pImpl->Get_Names( o_rResult );
}
void
Module::do_Accept( csv::ProcessorIfc & io_processor ) const
{
csv::CheckedCall(io_processor, *this);
}
ClassId
Module::get_AryClass() const
{
return class_id;
}
const String &
Module::inq_LocalName() const
{
return pImpl->Name();
}
Ce_id
Module::inq_NameRoom() const
{
return pImpl->Parent();
}
Ce_id
Module::inq_Owner() const
{
return pImpl->Parent();
}
E_SightLevel
Module::inq_SightLevel() const
{
return sl_Module;
}
namespace ifc_module
{
inline const Module &
module_cast( const CodeEntity & i_ce )
{
csv_assert( i_ce.AryClass() == Module::class_id );
return static_cast< const Module& >(i_ce);
}
typedef NameTreeNode<Ce_id>::Map_LocalNames NameMap;
void
attr::Get_AllChildrenSeparated( std::vector< const CodeEntity* > & o_nestedModules,
std::vector< const CodeEntity* > & o_services,
std::vector< const CodeEntity* > & o_interfaces,
std::vector< const CodeEntity* > & o_structs,
std::vector< const CodeEntity* > & o_exceptions,
std::vector< const CodeEntity* > & o_enums,
std::vector< const CodeEntity* > & o_typedefs,
std::vector< const CodeEntity* > & o_constantGroups,
std::vector< const CodeEntity* > & o_singletons,
const CePilot & i_pilot,
const CodeEntity & i_ce )
{
const CodeEntity *
pCe = 0;
NameMap::const_iterator
itEnd = module_cast(i_ce).pImpl->LocalNames().end();
for ( NameMap::const_iterator
it = module_cast(i_ce).pImpl->LocalNames().begin();
it != itEnd;
++it )
{
pCe = &i_pilot.Find_Ce( (*it).second );
switch (pCe->AryClass())
{
case Module::class_id:
o_nestedModules.push_back(pCe);
break;
case SglIfcService::class_id:
case Service::class_id:
o_services.push_back(pCe);
break;
case Interface::class_id:
o_interfaces.push_back(pCe);
break;
case Struct::class_id:
o_structs.push_back(pCe);
break;
case Exception::class_id:
o_exceptions.push_back(pCe);
break;
case Enum::class_id:
o_enums.push_back(pCe);
break;
case Typedef::class_id:
o_typedefs.push_back(pCe);
break;
case ConstantsGroup::class_id:
o_constantGroups.push_back(pCe);
break;
case SglIfcSingleton::class_id:
case Singleton::class_id:
o_singletons.push_back(pCe);
break;
}
} // end for
}
} // namespace ifc_module
} // namespace idl
} // namespace ary