Loading...
Searching...
No Matches
Comparison.h File Reference
`#include <Zycore/Defines.h>`
`#include <Zycore/Types.h>`
Include dependency graph for Comparison.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## 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

## Detailed Description

Defines prototypes of general-purpose comparison functions.

## Macro Definition Documentation

## ZYAN_DECLARE_COMPARISON

#define ZYAN_DECLARE_COMPARISON | ( |  | name,
|  |  | type )

Value:
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.

Parameters

  name | The name of the function.
  type | The name of the integral data-type.

## ZYAN_DECLARE_COMPARISON_FOR_FIELD

#define ZYAN_DECLARE_COMPARISON_FOR_FIELD | ( |  | name,
|  |  | type,
|  |  | field_name )

Value:
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.

Parameters

  name | The name of the function.
  type | The name of the integral data-type.
  field_name | The name of the struct field.

## ZYAN_DECLARE_EQUALITY_COMPARISON

#define ZYAN_DECLARE_EQUALITY_COMPARISON | ( |  | name,
|  |  | type )

Value:
ZyanBool name(const type* left, const type* right) \
{ \
ZYAN_ASSERT(left); \
ZYAN_ASSERT(right); \
\
return (*left == *right) ? ZYAN_TRUE : ZYAN_FALSE; \
}
ZyanBool
ZyanU8 ZyanBool
Definition Types.h:296

Declares a generic equality comparison function for an integral data-type.

Parameters

  name | The name of the function.
  type | The name of the integral data-type.

## ZYAN_DECLARE_EQUALITY_COMPARISON_FOR_FIELD

#define ZYAN_DECLARE_EQUALITY_COMPARISON_FOR_FIELD | ( |  | name,
|  |  | type,
|  |  | field_name )

Value:
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.

Parameters

  name | The name of the function.
  type | The name of the integral data-type.
  field_name | The name of the struct field.

## Typedef Documentation

## ZyanComparison

typedef ZyanI32(* ZyanComparison) (const void *left, const void *right)

Defines the ZyanComparison function prototype.

Parameters

  left | 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

## ZyanEqualityComparison

typedef ZyanBool(* ZyanEqualityComparison) (const void *left, const void *right)

Defines the ZyanEqualityComparison function prototype.

Parameters

  left | 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.

## Function Documentation

## ZYAN_DECLARE_COMPARISON() [1/3]

ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZyanU64 ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZYAN_DECLARE_COMPARISON | ( | ZyanCompareNumeric32 | ,
|  | ZyanU32 | )

Defines a default comparison function for 32-bit numeric values.

Parameters

  left | 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.

Parameters

  left | 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_DECLARE_COMPARISON() [2/3]

ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZyanU64 ZYAN_INLINE ZyanBool ZYAN_INLINE ZYAN_DECLARE_COMPARISON | ( | ZyanCompareNumeric8 | ,
|  | ZyanU8 | )

Defines a default comparison function for 8-bit numeric values.

Parameters

  left | 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.

Parameters

  left | 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_DECLARE_COMPARISON() [3/3]

ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZyanU64 ZYAN_INLINE ZYAN_DECLARE_COMPARISON | ( | ZyanComparePointer | ,
|  | void * const | )

Defines a default comparison function for pointer values.

Parameters

  left | 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.

Parameters

  left | 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_DECLARE_EQUALITY_COMPARISON() [1/3]

ZYAN_INLINE ZyanBool ZYAN_INLINE ZyanU16 ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON | ( | ZyanEqualsNumeric32 | ,
|  | ZyanU32 | )

Defines a default equality comparison function for 32-bit numeric values.

Parameters

  left | 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.

Parameters

  left | 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_DECLARE_EQUALITY_COMPARISON() [2/3]

ZYAN_INLINE ZyanBool ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON | ( | ZyanEqualsNumeric8 | ,
|  | ZyanU8 | )

Defines a default equality comparison function for 8-bit numeric values.

Parameters

  left | 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.

Parameters

  left | 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_DECLARE_EQUALITY_COMPARISON() [3/3]

ZYAN_INLINE ZYAN_DECLARE_EQUALITY_COMPARISON | ( | ZyanEqualsPointer | ,
|  | void * const | )

Defines a default equality comparison function for pointer values.

Parameters

  left | 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.

Parameters

  left | 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.