inline int isContained_DBSizeEqual(struct PROJ_DB *pDB, TreeNode *currentLevel, TreeNode *candidate) { int myItem = pDB->Item; bool myItemIsIntra = pDB->ItemIsIntra; int dir; bool isContained; TreeNode *supNode; TreeNode *subNode; if ((myItem != candidate->Item) || (candidate->Items == (currentLevel->Items+1))) return 0; if ( candidate->Items > (currentLevel->Items + 1)) dir=1; else dir=-1; if (candidate->ItemIsIntra) { if (myItemIsIntra) { candidate=candidate->Parent; } else { //in this case, supNode must be candidate, subNode must be currentLevel while (candidate->ItemIsIntra && candidate->Items >0) candidate = candidate ->Parent; candidate=candidate->Parent; if ((candidate->Items < currentLevel->Items) || (candidate->ItemsetNumber < currentLevel->ItemsetNumber)) return 0; } } else { if (myItemIsIntra) { //in this case, supNode must be currentLevel, subNode must be candidate while (currentLevel->ItemIsIntra && currentLevel->Items >0) currentLevel = currentLevel ->Parent; currentLevel=currentLevel->Parent; if ((candidate->Items > currentLevel->Items) || (candidate->ItemsetNumber > currentLevel->ItemsetNumber)) return 0; } else { candidate=candidate->Parent; } } if (currentLevel->Items == 0) { return 1; } if (candidate->Items == 0) { return -1; } if ( dir == 1) { supNode=candidate; subNode=currentLevel; } else { supNode=currentLevel; subNode=candidate; } isContained=false; supNode=GetLastItemSet(supNode, &supSet); subNode=GetLastItemSet(subNode, &subSet); while (1) { if (subSet.IsSubsetOf(&supSet)) { if (subNode->Items == 0) { isContained=true; break; } if ((supNode->Items >= subNode->Items) && (supNode->ItemsetNumber >= subNode->ItemsetNumber)) { supNode=GetLastItemSet(supNode, &supSet); subNode=GetLastItemSet(subNode, &subSet); } else break; } else { if (supNode->Items == 0) // unnecessary to check any more. break; if ((supNode->Items >= subNode->Items) && (supNode->ItemsetNumber >= subNode->ItemsetNumber)) { supNode=GetLastItemSet(supNode, &supSet); } else break; } } if (isContained) return dir; else return 0; }