q intmax_t or uintmax_t , respectively .
p 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: l -bullet t Signed numbers that are greater than or equal to 0 can be compared to unsigned numbers. t Unsigned numbers that are less than or equal to the largest signed integer value
q Dv INTMAX_MAX can be compared to signed numbers. .El
p Number objects have a different externalized representation depending on their sign: l -bullet t Signed numbers are externalized in base-10
q decimal . t Unsigned numbers are externalized in base-16
q hexadecimal . .El
p When numbers are internalized, the sign of the resulting number object
q and thus its valid range
is determined by a set of rules evaluated in the following order:
l -bullet t If the first character of the number is a
.Sq -
then the number is signed.
t If the first two characters of the number are
.Sq 0x
then the number is unsigned.
t If the number value fits into the range of a signed number then the
number is signed.
t In all other cases, the number is unsigned.
.El
l -tag -width "xxxxx" t Fn prop_number_create_signed "intmax_t val" Create a numeric value object with the signed value
.Fa val .
Returns
.Dv NULL
on failure.
t Fn prop_number_create_unsigned "uintmax_t val" Create a numeric value object with the unsigned value
.Fa val .
Returns
.Dv NULL
on failure.
t Fn prop_number_copy "prop_number_t number" Copy a numeric value object.
If the supplied object isn't a numeric value,
.Dv NULL
is returned.
t Fn 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, 0 is returned.
t Fn prop_number_unsigned "prop_number_t number" Returns
.Dv true
if the numeric value object has an unsigned value.
t Fn prop_number_signed_value "prop_number_t number" Returns the signed 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
.Dq not a prop_number_t
and
.Dq prop_number_t has a value of 0 .
t Fn prop_number_unsigned_value "prop_number_t number" Returns the unsigned 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
.Dq not a prop_number_t
and
.Dq prop_number_t has a value of 0 .
t Fn prop_number_schar_value "prop_number_t number" "signed char *valp" t Fn prop_number_short_value "prop_number_t number" "short *valp" t Fn prop_number_int_value "prop_number_t number" "int *valp" t Fn prop_number_long_value "prop_number_t number" "long *valp" t Fn prop_number_longlong_value "prop_number_t number" "long long *valp" t Fn prop_number_intptr_value "prop_number_t number" "intptr_t *valp" t Fn prop_number_int8_value "prop_number_t number" "int8_t *valp" t Fn prop_number_int16_value "prop_number_t number" "int16_t *valp" t Fn prop_number_int32_value "prop_number_t number" "int32_t *valp" t Fn prop_number_int64_value "prop_number_t number" "int64_t *valp" t Fn prop_number_uchar_value "prop_number_t number" "unsigned char *valp" t Fn prop_number_ushort_value "prop_number_t number" "unsigned short *valp" t Fn prop_number_uint_value "prop_number_t number" "unsigned int *valp" t Fn prop_number_ulong_value "prop_number_t number" "unsigned long *valp" t Fn prop_number_ulonglong_value "prop_number_t number" "unsigned long long *valp" t Fn prop_number_uintptr_value "prop_number_t number" "uintptr_t *valp" t Fn prop_number_uint8_value "prop_number_t number" "uint8_t *valp" t Fn prop_number_uint16_value "prop_number_t number" "uint16_t *valp" t Fn prop_number_uint32_value "prop_number_t number" "uint32_t *valp" t Fn prop_number_uint64_value "prop_number_t number" "uint64_t *valp" These functions extract the numeric value as the specified type and
store it in
.Fa valp .
The value is bounds-checked against the minimum and maximum values of
the type.
If the value can be represented in the specified type, these functions
return
.Dv true .
Otherwise, they return
.Dv false .
t Fn prop_number_equals "prop_number_t num1" "prop_number_t num2" Returns
.Dv true
if the two numeric value objects are equivalent.
If at least one of the supplied objects isn't a numeric value,
.Dv false
is returned.
t Fn prop_number_equals_signed "prop_number_t number" "intmax_t val" Returns
.Dv true
if the object's value is equivalent to the signed value
.Fa val .
If the supplied object isn't a numerical value,
.Dv false
is returned.
t Fn prop_number_equals_unsigned "prop_number_t number" \ "uintmax_t val"
Returns
.Dv true
if the object's value is equivalent to the unsigned value
.Fa val .
If the supplied object isn't a numerical value,
.Dv false
is returned.
.El
.Sh SEE ALSO
.Xr prop_array 3 ,
.Xr prop_bool 3 ,
.Xr prop_data 3 ,
.Xr prop_dictionary 3 ,
.Xr prop_object 3 ,
.Xr prop_string 3 ,
.Xr proplib 3
.Sh HISTORY
The
.Xr proplib 3
property container object library first appeared in
.Nx 4.0 .