当前位置: 首页>>代码示例>>C++>>正文


C++ SubstitutionList::add方法代码示例

本文整理汇总了C++中SubstitutionList::add方法的典型用法代码示例。如果您正苦于以下问题:C++ SubstitutionList::add方法的具体用法?C++ SubstitutionList::add怎么用?C++ SubstitutionList::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SubstitutionList的用法示例。


在下文中一共展示了SubstitutionList::add方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: matches

// @brief Returns true if the PredicateEnry matches with other PredicateEntry
// @return bool 		
bool PredicateEntry::matches(shared_ptr<SymbolTableEntry> other, SubstitutionList & substitution_list) const {
	if (!other->is_predicate()) {
		return false;
	}
	shared_ptr<PredicateEntry> otherp = dynamic_pointer_cast<PredicateEntry>(other);

	if (_name != otherp->_name || _symbols.size() != otherp->_symbols.size()) {
		return false;
	}

	for (unsigned int i = 0; i < _symbols.size(); ++i) {
		shared_ptr<SymbolTableEntry> ci_value = substitution_list.find_value(_symbols[i]);
		shared_ptr<SymbolTableEntry> oi_value = substitution_list.find_value(otherp->_symbols[i]);
		shared_ptr<SymbolTableEntry> ci = substitution_list.find_non_null(_symbols[i]);
		shared_ptr<SymbolTableEntry> oi = substitution_list.find_non_null(otherp->_symbols[i]);
		if (!ci_value || !oi_value) {
			//semantic error
			return false;
		}

		if (!(*ci_value == *oi_value)) {
			if (ci_value->is_constant() && oi_value->is_constant()) {
				return false;
			} 

			if (!ci_value->is_constant()) {
				substitution_list.add(ci, oi);
			} else { //!oi->is_constant()
				substitution_list.add(oi, ci);
			}
		} 
	}
	return true;
}
开发者ID:JoaoFelipe,项目名称:hcmgr,代码行数:36,代码来源:PredicateEntry.cpp


注:本文中的SubstitutionList::add方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。