本文整理汇总了C++中udm::Object::GetParent方法的典型用法代码示例。如果您正苦于以下问题:C++ Object::GetParent方法的具体用法?C++ Object::GetParent怎么用?C++ Object::GetParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类udm::Object
的用法示例。
在下文中一共展示了Object::GetParent方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getContainingFunctionScope
std::string SFManager::getContainingFunctionScope( Udm::Object object ) {
while( !Udm::IsDerivedFrom( object.type(), SFC::Program::meta ) ) {
if ( Udm::IsDerivedFrom( object.type(), SFC::Function::meta ) ) {
return SFC::Function::Cast( object ).scope();
}
object = object.GetParent();
}
return "";
}
示例2: getTopLevelInstance
Udm::Object SFUtils::getTopLevelInstance( Udm::Object object ) {
if ( object == Udm::null ) return Udm::null;
Udm::Object parent = object.GetParent();
Udm::Object archetype = parent.archetype();
while( archetype != Udm::null ) {
if ( ( object = object.archetype() ) == Udm::null ) return Udm::null;
parent = archetype;
archetype = parent.archetype();
}
return object;
}
示例3: isFromSameSignalFlowModel
bool SFUtils::isFromSameSignalFlowModel(Udm::Object obj)
{
Udm::Object obj_parent = obj.GetParent();
while(obj_parent.type()!=SLSF_ROOT::RootFolder::meta)
{
if(obj_parent.type()==SLSF_ROOT::SimulinkWrapper::meta)
{
SLSF_ROOT::SimulinkWrapper sfmodel = SLSF_ROOT::SimulinkWrapper::Cast(obj_parent);
if(sfmodel==rootSFModel)
return true;
else
return false;
}
obj_parent = obj_parent.GetParent();
}
return false;
}
示例4: getNameUmlAttributeMap
std::string UdmComparator::ObjectName::operator()( Udm::Object udmObject ) {
static StringSet reportedClassNameSet;
Uml::Class umlClass = udmObject.type();
Uml::Attribute umlNameAttribute;
UmlClassNameAttributeMap::iterator cnmItr = _umlClassNameAttributeMap.find( umlClass );
if ( cnmItr != _umlClassNameAttributeMap.end() ) {
umlNameAttribute = cnmItr->second;
} else {
NameUmlAttributeMap nameUmlAttributeMap = getNameUmlAttributeMap( umlClass );
NameUmlAttributeMap::iterator numItr = nameUmlAttributeMap.find( "name" );
if ( numItr != nameUmlAttributeMap.end() ) {
umlNameAttribute = numItr->second;
} else {
numItr = nameUmlAttributeMap.find( "Name" );
if ( numItr != nameUmlAttributeMap.end() ) {
umlNameAttribute = numItr->second;
} else if ( static_cast< std::string >( umlClass.stereotype() ) != "Connection" ) {
std::string className = umlClass.name();
if ( reportedClassNameSet.find( className ) == reportedClassNameSet.end() ) {
std::cerr << "WARNING: Class \"" << className << "\" has no \"[Nn]ame\" attribute." << std::endl << std::endl;
reportedClassNameSet.insert( className );
}
return "";
}
}
_umlClassNameAttributeMap.insert( std::make_pair( umlClass, umlNameAttribute ) );
}
std::string udmObjectName = "";
if ( umlNameAttribute != Udm::null ) {
udmObjectName = udmObject.getStringAttr( umlNameAttribute );
if ( umlClass.stereotype() == "Connection" && udmObjectName == static_cast< std::string >( umlClass.name() ) ) {
udmObjectName = "";
}
}
if ( udmObjectName == "" && umlClass.stereotype() == "Connection" ) {
UmlAssociationRoleSet umlAssociationRoleSet = getAllUmlAssociationRoles( umlClass );
for( UmlAssociationRoleSet::iterator arsItr = umlAssociationRoleSet.begin() ; arsItr != umlAssociationRoleSet.end() ; ++arsItr ) {
UdmObjectSet udmObjectSet = udmObject.getAssociation( *arsItr, Udm::TARGETFROMCLASS );
for( UdmObjectSet::iterator uosItr = udmObjectSet.begin() ; uosItr != udmObjectSet.end() ; ++uosItr ) {
if ( !udmObjectName.empty() ) udmObjectName += ":";
udmObjectName += (*this)(*uosItr);
}
}
if ( umlNameAttribute != Udm::null ) {
udmObject.setStringAttr( umlNameAttribute, udmObjectName );
}
}
Udm::Object udmObjectParent = udmObject.GetParent();
if ( udmObjectParent != Udm::null ) {
const auto& it = ObjectNameCache.find(udmObjectParent);
if (it != ObjectNameCache.end())
{
udmObjectName = it->second + "/" + udmObjectName;
}
else
{
udmObjectName = operator()( udmObjectParent ) + "/" + udmObjectName;
}
}
return udmObjectName;
}
示例5: copyDataflows
void copyDataflows( ESMoL::ModelsFolder inputModelsFolder, ESMoL::ModelsFolder outputModelsFolder ) {
getPortList().clear();
getPortMap().clear();
DataflowVector dataflowVector = inputModelsFolder.Dataflow_kind_children();
for( DataflowVector::iterator dfvItr = dataflowVector.begin() ; dfvItr != dataflowVector.end() ; ++dfvItr ) {
ESMoL::Dataflow inputDataflow = *dfvItr;
ESMoL::Dataflow outputDataflow = ESMoL::Dataflow::Create( outputModelsFolder );
outputDataflow.name() = inputDataflow.name();
copySubsystems_flatten( inputDataflow, outputDataflow );
}
for( PortList::iterator ptlItr = getPortList().begin() ; ptlItr != getPortList().end() ; ++ptlItr ) {
ESMoL::Port inputDstPort = *ptlItr;
LineSet lineSet = inputDstPort.srcLine();
if ( lineSet.empty() ) continue;
ESMoL::Line line = *lineSet.begin();
ESMoL::Port inputSrcPort = line.srcLine_end();
lineSet = inputSrcPort.srcLine();
while( getPortMap().find( inputSrcPort ) == getPortMap().end() && !lineSet.empty() ) {
line = *lineSet.begin();
inputSrcPort = line.srcLine_end();
lineSet = inputSrcPort.srcLine();
}
PortMap::iterator ptmItr = getPortMap().find( inputDstPort );
if ( ptmItr == getPortMap().end() ) {
std::cerr << "Warning: port not in PortMap" << std::endl;
continue;
}
ESMoL::Port outputDstPort = ptmItr->second;
ptmItr = getPortMap().find( inputSrcPort );
if ( ptmItr == getPortMap().end() ) {
std::cerr << "Warning: port not in PortMap" << std::endl;
continue;
}
ESMoL::Port outputSrcPort = ptmItr->second;
Udm::Object lineParent = outputSrcPort.GetParent();
if ( Udm::IsDerivedFrom( outputSrcPort.type(), ESMoL::OutPort::meta ) ) lineParent = lineParent.GetParent();
ESMoL::Line outputLine = ESMoL::Line::Create( lineParent );
outputLine.srcLine_end() = outputSrcPort;
outputLine.dstLine_end() = outputDstPort;
}
}