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
library “libprop”
SYNOPSIS
#include
<libprop/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
Theprop_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 exceedsINT64_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 exceedsINT64_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
property container object
library first appeared in NetBSD 4.0.