36 lines
976 B
C++
36 lines
976 B
C++
/* @file Integer.hpp
|
|
*
|
|
* author: Roland Conybeare, Aug 2025
|
|
*/
|
|
|
|
#include "Number.hpp"
|
|
|
|
namespace xo {
|
|
namespace obj {
|
|
class Integer : public Number {
|
|
public:
|
|
using int_type = long long;
|
|
|
|
public:
|
|
Integer() = default;
|
|
explicit Integer(int_type x);
|
|
|
|
/** create instance holding integer value @p x **/
|
|
static gp<Integer> make(int_type x);
|
|
/** downcast from @p x iff x is actually an Integer. Otherwise nullptr **/
|
|
static gp<Integer> from(gp<Object> x);
|
|
|
|
int_type value() const { return value_; }
|
|
|
|
// inherited from Object..
|
|
virtual std::size_t _shallow_size() const override;
|
|
virtual Object * _shallow_copy() const override;
|
|
virtual std::size_t _forward_children() override;
|
|
|
|
private:
|
|
int_type value_ = 0;
|
|
};
|
|
} /*namespace obj*/
|
|
} /*namespace xo*/
|
|
|
|
/* end Integer.hpp */
|