CMind.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "CMind.h"
  2. bool CNodeData::isValid() const
  3. {
  4. return projectId >= 0 && evalType > 0 && number >= 0;
  5. }
  6. bool CNodeData::isCached() const
  7. {
  8. return id >= 0;
  9. }
  10. bool CNodeData::hasParent() const
  11. {
  12. return pNumber >= 0;
  13. }
  14. CMind::CMind(int projId, int evalType, QObject *parent) : QObject(parent), m_projectId(projId), m_evalType(evalType) { }
  15. QList<CNodeData> CMind::nodeList() const
  16. {
  17. return m_nodeList;
  18. }
  19. void CMind::setNodeList(QList<CNodeData> list)
  20. {
  21. m_nodeList.clear();
  22. m_numberList.clear();
  23. for (CNodeData n : list) {
  24. addNode(n);
  25. }
  26. }
  27. bool CMind::isNodeValid(CNodeData n) const
  28. {
  29. bool v = n.isValid() && n.projectId == m_projectId && n.evalType == m_evalType;
  30. return v;
  31. }
  32. CNodeData CMind::node(int number) const
  33. {
  34. int i = m_numberList.indexOf(number);
  35. return m_nodeList[i];
  36. }
  37. bool CMind::containsNode(CNodeData n) const
  38. {
  39. return isNodeValid(n) && node(n.number).isValid();
  40. }
  41. void CMind::addNode(CNodeData n)
  42. {
  43. if (isNodeValid(n) == false) {
  44. return;
  45. }
  46. if (m_numberList.contains(n.number)) {
  47. return;
  48. }
  49. m_nodeList.append(n);
  50. m_numberList.append(n.number);
  51. }
  52. void CMind::removeNode(int number, bool removeChildren)
  53. {
  54. for (int i = 0; i < m_nodeList.count(); i++) {
  55. CNodeData n = m_nodeList[i];
  56. if (n.number == number || (removeChildren && n.pNumber == number)) {
  57. m_nodeList.removeAt(i);
  58. m_numberList.removeAt(i);
  59. }
  60. }
  61. }