Advertisement
Guest User

cpp

a guest
Nov 25th, 2015
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. #include "Variant.h"
  2.  
  3. Variant::Variant()
  4. {
  5. }
  6.  
  7. Variant::Variant(int value)
  8. {
  9.     intValue = value;
  10.     type = integ;
  11. }
  12.  
  13. Variant::Variant(std::string value)
  14. {
  15.     stringValue = value;
  16.     type = string;
  17. }
  18.  
  19. Type Variant::getType() const
  20. {
  21.     return type;
  22. }
  23.  
  24. int Variant::getInt() const
  25. {
  26.     return intValue;
  27. }
  28.  
  29. std::string Variant::getString() const
  30. {
  31.     return stringValue;
  32. }
  33.  
  34. void Variant::setInt(int value)
  35. {
  36.     intValue = value;
  37. }
  38.  
  39. void Variant::setString(std::string value)
  40. {
  41.     stringValue = value;
  42. }
  43.  
  44. Variant Variant::operator+(const Variant &b) const
  45. {
  46.     if (this->getType() == integ && b.getType() == integ)
  47.     {
  48.         Variant v(*this);  
  49.         v.setInt(v.getInt()+b.getInt());
  50.         return v;
  51.     }else if (this->getType() == string && b.getType() == string) {
  52.         Variant v(*this);
  53.         v.setString(v.getString() + b.getString());
  54.         return v;
  55.     }else if (this->getType() == string && b.getType() == integ){
  56.         Variant v(*this);
  57.         v.setString(v.getString() + std::to_string(b.getInt()));
  58.         return v;
  59.     }else if (this->getType() == integ && b.getType() == string){
  60.         Variant v(b);
  61.         v.setString(std::to_string(this->getInt()) + b.getString());
  62.         return v;
  63.     }else{
  64.         Variant v("#Calculation Error");
  65.         return v;
  66.     }
  67. }
  68.  
  69. Variant Variant::operator-(const Variant &b) const
  70. {
  71.     Variant v(*this);
  72.     if (v.getType() == integ && b.getType() == integ){
  73.         v.setInt(v.getInt() - b.getInt());
  74.     }
  75.     //TODO:add exceptions handling here
  76.     return v;
  77. }
  78.  
  79. Variant Variant::operator*(const Variant &b) const
  80. {
  81.     if (this->getType() == integ && b.getType() == string){
  82.         Variant v(b);
  83.         int n = this->getInt();
  84.         std::string strPart = v.getString();
  85.         v.setString("");
  86.         while (n--)
  87.         {
  88.             v.setString(v.getString() + strPart);
  89.         }
  90.         return v;
  91.     }else if (this->getType() == string && b.getType() == integ){
  92.         Variant v(*this);
  93.         int n = b.getInt();
  94.         std::string strPart = v.getString();
  95.         v.setString("");
  96.         while (n--)
  97.         {
  98.             v.setString(v.getString() + strPart);
  99.         }
  100.         return v;
  101.     }else if (this->getType() == integ && b.getType() == integ){
  102.         Variant v(*this);
  103.         v.setInt(v.getInt() * b.getInt());
  104.         return v;
  105.     }else{
  106.         Variant v("#Calculation Error");
  107.         return v;
  108.     }
  109.     //TODO:add exceptions handling
  110. }
  111.  
  112. Variant Variant::operator/(const Variant &b) const
  113. {
  114.     Variant v(*this);
  115.     if (v.getType() == integ && b.getType() == integ)
  116.     {
  117.         v.setInt(v.getInt() / b.getInt());
  118.     }
  119.     return v;
  120. }
  121.  
  122. Variant::~Variant()
  123. {
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement