Same as a C int32_t
core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
core :: Numeric :: defaultinit
core :: Discrete :: defaultinit
core :: Object :: defaultinit
core :: Comparable :: defaultinit
core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
core :: Object :: output_class_name
Display class name on stdout (debug only).
# Native 32-bit signed integer.
# Same as a C `int32_t`
universal Int32
super Discrete
super Numeric
redef type OTHER: Int32
redef fun successor(i) do return self + i.to_i32
redef fun predecessor(i) do return self - i.to_i32
redef fun object_id is intern
redef fun hash do return self.to_i
redef fun ==(i) is intern
redef fun !=(i) is intern
redef fun output is intern
redef fun <=(i) is intern
redef fun <(i) is intern
redef fun >=(i) is intern
redef fun >(i) is intern
redef fun +(i) is intern
# assert -1i32 == 0xFFFFFFFFi32
# assert -0i32 == 0x00i32
redef fun - is intern
redef fun -(i) is intern
redef fun *(i) is intern
redef fun /(i) is intern
# Modulo of `self` with `i`.
#
# Returns the remainder of division of `self` by `i`.
#
# assert 5i32 % 2i32 == 1i32
# assert 10i32 % 2i32 == 0i32
fun %(i: Int32): Int32 is intern
redef fun zero do return 0.to_i32
redef fun value_of(val) do return val.to_i32
# `i` bits shift to the left
#
# assert 5i32 << 1 == 10i32
fun <<(i: Int): Int32 is intern
# `i` bits shift to the right
#
# assert 5i32 >> 1 == 2i32
fun >>(i: Int): Int32 is intern
redef fun to_i is intern
redef fun to_f is intern
redef fun to_b is intern
redef fun to_i8 is intern
redef fun to_i16 is intern
redef fun to_u16 is intern
redef fun to_i32 do return self
redef fun to_u32 is intern
redef fun distance(i) do return (self - i).to_i
redef fun <=>(other)
do
if self < other then
return -1
else if other < self then
return 1
else
return 0
end
end
redef fun is_between(c, d)
do
if self < c or d < self then
return false
else
return true
end
end
redef fun max(other)
do
if self < other then
return other
else
return self
end
end
redef fun min(c)
do
if c < self then
return c
else
return self
end
end
# Returns the result of a binary AND operation on `self` and `i`
#
# assert 0x10i32 & 0x01i32 == 0i32
fun &(i: Int32): Int32 is intern
# Returns the result of a binary OR operation on `self` and `i`
#
# assert 0x10i32 | 0x01i32 == 0x11i32
fun |(i: Int32): Int32 is intern
# Returns the result of a binary XOR operation on `self` and `i`
#
# assert 0x101i32 ^ 0x110i32 == 0x11i32
fun ^(i: Int32): Int32 is intern
# Returns the 1's complement of `self`
#
# assert ~0x2Fi32 == 0xFFFFFFD0i32
fun ~: Int32 is intern
end
lib/core/fixed_ints.nit:464,1--583,3
redef class Int32
# C function to calculate the length of the `CString` to receive `self`
private fun to_s_len: Int `{
return snprintf(NULL, 0, "%"PRIi32, self);
`}
# C function to convert a nit Int to a CString (char*)
private fun native_to_s(nstr: CString, strlen: Int) `{
snprintf(nstr, strlen, "%"PRIi32, self);
`}
# Displayable Int32
#
# assert 1i32.to_s == "1"
# assert (-123i32).to_s == "-123"
redef fun to_s do
var nslen = to_s_len
var ns = new CString(nslen + 1)
ns[nslen] = 0
native_to_s(ns, nslen + 1)
return ns.to_s_unsafe(nslen, copy=false)
end
end
lib/core/text/fixed_ints_text.nit:96,1--118,3