Beispiel #1
0
  void SymbolClassName::countNavNodesInClassInstances(u32& ncnt, u32& hcnt, u32& nocnt)
  {
    assert(!isClassTemplate());
    u32 navCounter = ncnt;
    u32 hzyCounter = hcnt;
    u32 unsetCounter = nocnt;

    NodeBlockClass * classNode = getClassBlockNode();
    assert(classNode);
    m_state.pushClassContext(getUlamTypeIdx(), classNode, classNode, false, NULL);

    classNode->countNavHzyNoutiNodes(ncnt, hcnt, nocnt);
    if((ncnt - navCounter) > 0)
      {
	std::ostringstream msg;
	msg << navCounter << " data member nodes with erroneous types remain in class '";
	msg << m_state.getUlamTypeNameBriefByIndex(getUlamTypeIdx()).c_str();
	msg << "'";
	MSG(classNode->getNodeLocationAsString().c_str(), msg.str().c_str(), INFO);
      }

    if((hcnt - hzyCounter) > 0)
      {
	std::ostringstream msg;
	msg << hzyCounter << " data member nodes with unresolved types remain in class '";
	msg << m_state.getUlamTypeNameBriefByIndex(getUlamTypeIdx()).c_str();
	msg << "'";
	MSG(classNode->getNodeLocationAsString().c_str(), msg.str().c_str(), INFO);
      }

    if((nocnt - unsetCounter) > 0)
      {
	std::ostringstream msg;
	msg << unsetCounter << " data member nodes with unset types remain in class '";
	msg << m_state.getUlamTypeNameBriefByIndex(getUlamTypeIdx()).c_str();
	msg << "'";
	MSG(classNode->getNodeLocationAsString().c_str(), msg.str().c_str(), INFO);
      }

    SymbolClass::countNavNodesInClassResolver(ncnt, hcnt, nocnt);

    m_state.popClassContext(); //restore

    return;
  } //countNavNodesInClassInstances
  u32 SymbolClassName::countNavNodesInClassInstances()
  {
    assert(!isClassTemplate());
    u32 navCounter = 0;
    NodeBlockClass * classNode = getClassBlockNode();
    assert(classNode);
    m_state.pushClassContext(getUlamTypeIdx(), classNode, classNode, false, NULL);

    classNode->countNavNodes(navCounter);
    if(navCounter > 0)
      {
	std::ostringstream msg;
	msg << navCounter << " data member nodes with unresolved types remain in class '";
	msg << m_state.getUlamTypeNameBriefByIndex(getUlamTypeIdx()).c_str();
	msg << "'";
	MSG(classNode->getNodeLocationAsString().c_str(), msg.str().c_str(), WARN);
      }
    m_state.popClassContext(); //restore
    return navCounter;
  } //countNavNodesInClassInstances