diff options
author | valmat <ufabiz@gmail.com> | 2014-03-28 00:42:09 +0600 |
---|---|---|
committer | valmat <ufabiz@gmail.com> | 2014-03-28 00:42:09 +0600 |
commit | 28152192b85cbe9bf5ea08ebe8c706d12e2e13e5 (patch) | |
tree | d8a5cbee7e39f6b21c0e698d1ac10ac764b00193 /tests/cpp/include/Classes_and_objects.h | |
parent | f56cff9e4f67a949e6f0ae35ca63aaaea16d9a41 (diff) |
add test: class_obj/003-comparable.phpt
Diffstat (limited to 'tests/cpp/include/Classes_and_objects.h')
-rw-r--r-- | tests/cpp/include/Classes_and_objects.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/tests/cpp/include/Classes_and_objects.h b/tests/cpp/include/Classes_and_objects.h new file mode 100644 index 0000000..e9b7434 --- /dev/null +++ b/tests/cpp/include/Classes_and_objects.h @@ -0,0 +1,122 @@ +/** + * + * + * Classes_and_objects.h + * + */ + + +/** + * Set up namespace + */ +namespace TestBaseClass { + + + + class MyCustomClass : public Php::Base, public Php::Countable + { + private: + int _x = 3; + + public: + MyCustomClass() + { + std::cerr << "MyCustomClass::MyCustomClass()" << std::endl; + } + + MyCustomClass(int value) : _x(value) + { + std::cerr << "MyCustomClass::MyCustomClass(" << value << ")" << std::endl; + } + + MyCustomClass(const MyCustomClass &that) + { + //std::cerr << "MyCustomClass::MyCustomClass copy constructor" << std::endl; + } + + virtual ~MyCustomClass() + { + std::cerr << "MyCustomClass::~MyCustomClass" << std::endl; + } + + virtual long int count() override + { + return 33; + } + + Php::Value myMethod(Php::Parameters ¶ms) + { + // check number of parameters + //if (params.size() != 1) throw Php::Exception("Invalid number of parameters supplied"); + + std::cout << "myMethod is called for object " << _x << std::endl; + + return 5; + + } + }; + + + /** + * custom comparison operator + */ + class Comparable : public Php::Base + { + private: + /** + * Internal value of the class + * @var int + */ + static int count; + int _nom; + int _value; + + public: + /** + * C++ constructor + */ + Comparable() + { + // start with random value + //_value = rand(); + _nom = ++count; + _value = _nom%2+1; + } + + /** + * C++ destructor + */ + virtual ~Comparable() {} + + /** + * Cast the object to a string + * @return std::string + */ + std::string __toString() + { + return "Obj#" + std::to_string(_nom) + "(" + std::to_string(_value) + ")"; + } + + /** + * Compare with a different object + * @param that + * @return int + */ + int __compare(const Comparable &that) const + { + return _value - that._value; + } + }; + int Comparable::count = 0; + + + + + + +/** + * End of namespace + */ +} + +
\ No newline at end of file |