cstlcompilerif.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. Copyright 2017 Herik Lima de Castro and Marcelo Medeiros Eler
  3. Distributed under MIT license, or public domain if desired and
  4. recognized in your jurisdiction.
  5. See file LICENSE for detail.
  6. */
  7. #include "cstlcompilerif.h"
  8. #include "constants.h"
  9. CWF_BEGIN_NAMESPACE
  10. CSTLCompilerIf::CSTLCompilerIf(const QXmlStreamAttributes &attr)
  11. {
  12. int size = attr.size();
  13. if (size == 0 || size == 1) {
  14. relationalOperator = RelationalOperator::ERROR;
  15. attributes.insert(CSTL::TAG::PROPERTY::ERROR,
  16. "***ERROR IF TAG - IF TAG NEEDS TWO ATTRIBUTES ***");
  17. } else if (size == 2) {
  18. for (int i = 0; i < size; ++i) {
  19. QString name(attr[i].name().toString().toLower());
  20. QString value(attr[i].value().toString());
  21. if (name == CSTL::TAG::PROPERTY::VAR) {
  22. attributes.insert(CSTL::TAG::PROPERTY::VAR, value);
  23. } else {
  24. if (name == CSTL::TAG::PROPERTY::IF::EQUAL) {
  25. relationalOperator = RelationalOperator::EQUAL;
  26. } else if (name == CSTL::TAG::PROPERTY::IF::DIFFERENT) {
  27. relationalOperator = RelationalOperator::DIFFERENT;
  28. } else if (name == CSTL::TAG::PROPERTY::IF::GREATER) {
  29. relationalOperator = RelationalOperator::GREATER;
  30. } else if (name == CSTL::TAG::PROPERTY::IF::GREATER_EQUAL) {
  31. relationalOperator = RelationalOperator::GREATER_EQUAL;
  32. } else if (name == CSTL::TAG::PROPERTY::IF::LESS) {
  33. relationalOperator = RelationalOperator::LESS;
  34. } else if (name == CSTL::TAG::PROPERTY::IF::LESS_EQUAL) {
  35. relationalOperator = RelationalOperator::LESS_EQUAL;
  36. } else {
  37. relationalOperator = RelationalOperator::ERROR;
  38. attributes
  39. .insert(CSTL::TAG::PROPERTY::ERROR,
  40. "***ERROR IF TAG - IF TAG DOESN'T PERMITS AN ATTRIBUTE CALLED \""
  41. + name + "\"***");
  42. break;
  43. }
  44. value.toDouble(&isNumber);
  45. attributes.insert(CSTL::TAG::PROPERTY::CONDITION, value);
  46. }
  47. }
  48. } else if (size > 2) {
  49. relationalOperator = RelationalOperator::ERROR;
  50. attributes.insert(CSTL::TAG::PROPERTY::ERROR,
  51. "***ERROR IF TAG - IF TAG DOESN'T PERMITS MORE THAN ONE ATTRIBUTE ***");
  52. }
  53. }
  54. CWF_END_NAMESPACE