NAME
prop_number,
prop_number_create_integer,
prop_number_create_unsigned_integer,
prop_number_copy,
prop_number_size,
prop_number_unsigned,
prop_number_integer_value,
prop_number_unsigned_integer_value,
prop_number_equals,
prop_number_equals_integer,
prop_number_equals_unsigned_integer —
numeric value property object
LIBRARY
Property Container Object Library (libprop, -lprop)
SYNOPSIS
#include <prop/proplib.h>
prop_number_t
prop_number_create_integer(
int64_t
val);
prop_number_t
prop_number_create_unsigned_integer(
uint64_t
val);
prop_number_t
prop_number_copy(
prop_number_t
number);
int
prop_number_size(
prop_number_t
number);
bool
prop_number_unsigned(
prop_number_t
number);
int64_t
prop_number_integer_value(
prop_number_t
number);
uint64_t
prop_number_unsigned_integer_value(
prop_number_t
number);
bool
prop_number_equals(
prop_number_t
num1,
prop_number_t
num2);
bool
prop_number_equals_integer(
prop_number_t
number,
int64_t val);
bool
prop_number_equals_unsigned_integer(
prop_number_t
number,
uint64_t
val);
DESCRIPTION
The
prop_number() family of functions operate on a numeric
value property object type. Values are either signed or unsigned, and promoted
to a 64-bit type (int64_t or uint64_t, respectively).
It is possible to compare number objects that differ in sign. Such comparisons
first test to see if each object is within the valid number range of the
other:
- Signed numbers that are greater than or equal to 0 can
be compared to unsigned numbers.
- Unsigned numbers that are less than or equal to the
largest signed 64-bit value (
INT64_MAX
) can be
compared to signed numbers.
Number objects have a different externalized representation depending on their
sign:
- Signed numbers are externalized in base-10
(decimal).
- Unsigned numbers are externalized in base-16
(hexadecimal).
When numbers are internalized, the sign of the resulting number object (and thus
its valid range) is determined by a set of rules evaluated in the following
order:
- If the first character of the number is a
‘-’ then the number is signed.
- If the first two characters of the number are
‘0x’ then the number is unsigned.
- If the number value fits into the range of a signed
number then the number is signed.
- In all other cases, the number is unsigned.
-
-
- prop_number_create_integer(int64_t
val)
- Create a numeric value object with the signed value
val. Returns
NULL
on
failure.
-
-
- prop_number_create_unsigned_integer(uint64_t
val)
- Create a numeric value object with the unsigned value
val. Returns
NULL
on
failure.
-
-
- prop_number_copy(prop_number_t
number)
- Copy a numeric value object. If the supplied object isn't a
numeric value,
NULL
is returned.
-
-
- prop_number_size(prop_number_t
number)
- Returns 8, 16, 32, or 64, representing the number of bits
required to hold the value of the object. If the supplied object isn't a
numeric value,
NULL
is returned.
-
-
- prop_number_unsigned(prop_number_t
number)
- Returns
true
if the numeric value
object has an unsigned value.
-
-
- prop_number_integer_value(prop_number_t
number)
- Returns the signed integer value of the numeric value
object. If the supplied object isn't a numeric value, zero is returned.
Thus, it is not possible to distinguish between “not a
prop_number_t” and “prop_number_t has a value of
0”.
-
-
- prop_number_unsigned_integer_value(prop_number_t
number)
- Returns the unsigned integer value of the numeric value
object. If the supplied object isn't a numeric value, zero is returned.
Thus, it is not possible to distinguish between “not a
prop_number_t” and “prop_number_t has a value of
0”.
-
-
- prop_number_equals(prop_number_t
num1, prop_number_t num2)
- Returns
true
if the two numeric
value objects are equivalent. If at least one of the supplied objects
isn't a numeric value, false
is returned.
-
-
- prop_number_equals_integer(prop_number_t
number, int64_t val)
- Returns
true
if the object's value
is equivalent to the signed value val. If the
supplied object isn't a numerical value or if val
exceeds INT64_MAX
, false
is returned.
-
-
- prop_number_equals_unsigned_integer(prop_number_t
number, uint64_t val)
- Returns
true
if the object's value
is equivalent to the unsigned value val. If the
supplied object isn't a numerical value or if val
exceeds INT64_MAX
, false
is returned.
SEE ALSO
prop_array(3),
prop_bool(3),
prop_data(3),
prop_dictionary(3),
prop_object(3),
prop_string(3),
proplib(3)
HISTORY
The
proplib(3) property container
object library first appeared in
NetBSD 4.0.