10 #include <gnumber.hpp>
14 class GInt :
public GNumber_<int> {
16 using Super = GNumber_<int> ;
20 GInt(
int value,
int min,
int max = highest());
22 GInt(GString
const& value);
23 GInt*
clone(
bool copy_value)
const override;
25 GInt* toInt()
override {
return this;}
28 auto operator~() {
return GNumPropRef_<GInt>(*this);}
34 GInt&
setRange(
int min,
int max) {Super::setRange(min,max);
return *
this;}
35 GInt& setRangeF(
float min,
float max)
override {Super::setRangeF(min,max);
return *
this;}
42 GInt& operator=(
int value) {set(value,
false);
return *
this;}
43 GInt& operator=(GInt
const& value) {set(value,
false);
return *
this;}
44 GInt& operator=(GString
const& value) {set(value);
return *
this;}
46 GInt& operator++() {increase();
return *
this;}
47 GInt& operator++(
int) {increase();
return *
this;}
48 GInt& operator--() {decrease();
return *
this;}
49 GInt& operator--(
int) {decrease();
return *
this;}
50 GInt& operator+=(
int delta) {increase(delta);
return *
this;}
51 GInt& operator-=(
int delta) {increase(-delta);
return *
this;}
53 void increase(
int const& delta)
override;
54 void increase()
override {increase(+1);}
55 void decrease()
override {increase(-1);}
57 using GType = GPropType_<GInt,GProp>;
59 GType& type()
const override {
return Type();}
66 inline GInt& Int(
int value) {
return *
new GInt(value);}
67 GInt& Int(
int value,
int min,
int max = GInt::highest());
68 GInt& Int(GString
const& value);