include/Zycore/Comparison.h
Contents
Detailed Description
Defines prototypes of general-purpose comparison functions.
Function Documentation
ZYAN_INLINEZyanBoolZYAN_INLINEZyanU16ZYAN_INLINEZyanU64ZYAN_INLINEZyanBoolZYAN_INLINEZyanU16ZYAN_INLINEZYAN_DECLARE_COMPARISON(ZyanCompareNumeric32,ZyanU32)
Defines a default comparison function for 32-bit numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns 0 if the left value equals the right one, -1 if the left value is less than the right one, or
1 if the left value is greater than the right one. Defines a default comparison function for 64-bit
numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns 0 if the left value equals the right one, -1 if the left value is less than the right one, or
1 if the left value is greater than the right one.
ZYAN_INLINEZyanBoolZYAN_INLINEZyanU16ZYAN_INLINEZyanU64ZYAN_INLINEZyanBoolZYAN_INLINEZYAN_DECLARE_COMPARISON(ZyanCompareNumeric8,ZyanU8)
Defines a default comparison function for 8-bit numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns 0 if the left value equals the right one, -1 if the left value is less than the right one, or
1 if the left value is greater than the right one. Defines a default comparison function for 16-bit
numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns 0 if the left value equals the right one, -1 if the left value is less than the right one, or
1 if the left value is greater than the right one.
ZYAN_INLINEZyanBoolZYAN_INLINEZyanU16ZYAN_INLINEZyanU64ZYAN_INLINEZYAN_DECLARE_COMPARISON(ZyanComparePointer,void*const)
Defines a default comparison function for pointer values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns 0 if the left value equals the right one, -1 if the left value is less than the right one, or
1 if the left value is greater than the right one. Defines a default comparison function for ZyanBool
values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns 0 if the left value equals the right one, -1 if the left value is less than the right one, or
1 if the left value is greater than the right one.
ZYAN_INLINEZyanBoolZYAN_INLINEZyanU16ZYAN_INLINEZYAN_DECLARE_EQUALITY_COMPARISON(ZyanEqualsNumeric32,ZyanU32)
Defines a default equality comparison function for 32-bit numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns ZYAN_TRUE if the left value equals the right one or ZYAN_FALSE, if not. Defines a default
equality comparison function for 64-bit numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns ZYAN_TRUE if the left value equals the right one or ZYAN_FALSE, if not.
ZYAN_INLINEZyanBoolZYAN_INLINEZYAN_DECLARE_EQUALITY_COMPARISON(ZyanEqualsNumeric8,ZyanU8)
Defines a default equality comparison function for 8-bit numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns ZYAN_TRUE if the left value equals the right one or ZYAN_FALSE, if not. Defines a default
equality comparison function for 16-bit numeric values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns ZYAN_TRUE if the left value equals the right one or ZYAN_FALSE, if not.
ZYAN_INLINEZYAN_DECLARE_EQUALITY_COMPARISON(ZyanEqualsPointer,void*const)
Defines a default equality comparison function for pointer values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns ZYAN_TRUE if the left value equals the right one or ZYAN_FALSE, if not. Defines a default
equality comparison function for ZyanBool values.
Parametersleft A pointer to the first value.
right A pointer to the second value.
Returns
Returns ZYAN_TRUE if the left value equals the right one or ZYAN_FALSE, if not.
Macro Definition Documentation
#defineZYAN_DECLARE_COMPARISON(name,type)Value:.PP
ZyanI32 name(const type* left, const type* right) \
{ \
ZYAN_ASSERT(left); \
ZYAN_ASSERT(right); \
\
if (*left < *right) \
{ \
return -1; \
} \
if (*left > *right) \
{ \
return 1; \
} \
return 0; \
}
Declares a generic comparison function for an integral data-type.
Parametersname The name of the function.
type The name of the integral data-type.
#defineZYAN_DECLARE_COMPARISON_FOR_FIELD(name,type,field_name)Value:.PP
ZyanI32 name(const type* left, const type* right) \
{ \
ZYAN_ASSERT(left); \
ZYAN_ASSERT(right); \
\
if (left->field_name < right->field_name) \
{ \
return -1; \
} \
if (left->field_name > right->field_name) \
{ \
return 1; \
} \
return 0; \
}
Declares a generic comparison function that compares a single integral data-type field of a struct.
Parametersname The name of the function.
type The name of the integral data-type.
field_name The name of the struct field.
#defineZYAN_DECLARE_EQUALITY_COMPARISON(name,type)Value:.PP
ZyanBool name(const type* left, const type* right) \
{ \
ZYAN_ASSERT(left); \
ZYAN_ASSERT(right); \
\
return (*left == *right) ? ZYAN_TRUE : ZYAN_FALSE; \
}
Declares a generic equality comparison function for an integral data-type.
Parametersname The name of the function.
type The name of the integral data-type.
#defineZYAN_DECLARE_EQUALITY_COMPARISON_FOR_FIELD(name,type,field_name)Value:.PP
ZyanBool name(const type* left, const type* right) \
{ \
ZYAN_ASSERT(left); \
ZYAN_ASSERT(right); \
\
return (left->field_name == right->field_name) ? ZYAN_TRUE : ZYAN_FALSE; \
}
Declares a generic equality comparison function that compares a single integral data-type field of a
struct.
Parametersname The name of the function.
type The name of the integral data-type.
field_name The name of the struct field.
Name
include/Zycore/Comparison.h
Synopsis
#include <Zycore/Defines.h>
#include <Zycore/Types.h>
Macros
#define ZYAN_DECLARE_EQUALITY_COMPARISON(name, type)
#define ZYAN_DECLARE_EQUALITY_COMPARISON_FOR_FIELD(name, type, field_name)
#define ZYAN_DECLARE_COMPARISON(name, type)
#define ZYAN_DECLARE_COMPARISON_FOR_FIELD(name, type, field_name)
Typedefs
typedef ZyanBool(* ZyanEqualityComparison) (const void *left, const void *right)
typedef ZyanI32(* ZyanComparison) (const void *left, const void *right)
Functions
ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON (ZyanEqualsPointer, void *const) ZYAN_INLINE
ZYAN_DECLARE_EQUALITY_COMPARISON(ZyanEqualsBool
ZYAN_INLINE ZyanBool ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON (ZyanEqualsNumeric8, ZyanU8)
ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON(ZyanEqualsNumeric16
ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON
(ZyanEqualsNumeric32, ZyanU32) ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON(ZyanEqualsNumeric64
ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZyanU64 ZYAN_INLINE ZYAN_DECLARE_COMPARISON
(ZyanComparePointer, void *const) ZYAN_INLINE ZYAN_DECLARE_COMPARISON(ZyanCompareBool
ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZyanU64 ZYAN_INLINE ZyanBool ZYAN_INLINE
ZYAN_DECLARE_COMPARISON (ZyanCompareNumeric8, ZyanU8) ZYAN_INLINE
ZYAN_DECLARE_COMPARISON(ZyanCompareNumeric16
ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZyanU64 ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16
ZYAN_INLINE ZYAN_DECLARE_COMPARISON (ZyanCompareNumeric32, ZyanU32) ZYAN_INLINE
ZYAN_DECLARE_COMPARISON(ZyanCompareNumeric64
Typedef Documentation
typedefZyanI32(*ZyanComparison)(constvoid*left,constvoid*right)
Defines the ZyanComparison function prototype.
Parametersleft A pointer to the first element.
right A pointer to the second element.
Returns
This function should return values in the following range: left == right -> result == 0 left < right
-> result < 0 left > right -> result > 0
typedefZyanBool(*ZyanEqualityComparison)(constvoid*left,constvoid*right)
Defines the ZyanEqualityComparison function prototype.
Parametersleft A pointer to the first element.
right A pointer to the second element.
Returns
This function should return ZYAN_TRUE if the left element equals the right one or ZYAN_FALSE, if not.
