Types: Added SilcCompare generic comparison function
[runtime.git] / lib / silcutil / silctypes.h
index bd93559bbb53f33fb655e33c69b6227af54bbc19..5d768d819ab70828b844996265ef97ce2befddc3 100644 (file)
@@ -238,6 +238,32 @@ typedef SilcInt32 SilcInt64;
  *
  ***/
 
+/****d* silcutil/SilcFloat32
+ *
+ * NAME
+ *
+ *    typedef float SilcFloat32;
+ *
+ * DESCRIPTION
+ *
+ *    32-bit floating point number.
+ *
+ ***/
+typedef float SilcFloat32;
+
+/****d* silcutil/SilcFloat64
+ *
+ * NAME
+ *
+ *    typedef double SilcFloat64;
+ *
+ * DESCRIPTION
+ *
+ *    64-bit floating point number.
+ *
+ ***/
+typedef double SilcFloat64;
+
 #if SILC_SIZEOF_VOID_P < 4
 typedef SilcUInt32 * void *;
 #endif
@@ -315,6 +341,44 @@ typedef SilcUInt32 SilcParam;
 #define SILC_PARAM_ALLOC         0x00010000     /* Allocate, bitmask */
 #define SILC_PARAM_REPLACE       0x00020000    /* Replace, bitmask */
 
+/****d* silcutil/SilcCompareValue
+ *
+ * NAME
+ *
+ *    typedef enum { ... } SilcCompareValue
+ *
+ * DESCRIPTION
+ *
+ *    Values that can be returned by the SilcCompare function.  Note that
+ *    not all routines may respect all of the return values.
+ *
+ * SOURCE
+ */
+typedef enum {
+  SILC_COMPARE_LESS_THAN_EQUAL_TO    = -2,  /* Value 1 <= value 2 */
+  SILC_COMPARE_LESS_THAN             = -1,  /* Value 1 < value 2 */
+  SILC_COMPARE_EQUAL_TO              = 0,   /* Value 1 == value 2 */
+  SILC_COMPARE_GREATER_THAN          = 1,   /* Value 1 > value 2 */
+  SILC_COMPARE_GREATER_THAN_EQUAL_TO = 2,   /* Value 1 >= value 2 */
+  SILC_COMPARE_STOP                  = 3,   /* Stop comparison */
+} SilcCompareValue;
+/***/
+
+/****f* silcutil/SilcCompare
+ *
+ * SYNOPSIS
+ *
+ *    typedef SilcCompareValue (*SilcCompare)(void *value1, void *value2,
+ *                                            void *context);
+ *
+ * DESCRIPTION
+ *
+ *   A comparison function used by many routines in SILC Runtime Toolkit.
+ *
+ ***/
+typedef SilcCompareValue (*SilcCompare)(void *value1, void *value2,
+                                       void *context);
+
 /* Macros */
 
 #if (defined(SILC_I486) || defined(SILC_X86_64)) && defined(__GNUC__)
@@ -332,6 +396,32 @@ typedef SilcUInt32 SilcParam;
                    | ((SilcUInt32)(SilcUInt8)(cp)[3])
 #endif /* (SILC_I486 || SILC_X86_64) && __GNUC__ */
 
+/****d* silcutil/SILC_MAX
+ *
+ * NAME
+ *
+ *    #define SILC_MAX(a, b)
+ *
+ * DESCRIPTION
+ *
+ *    Return `a' if it is bigger than `b', otherwise return `b'.
+ *
+ ***/
+#define SILC_MAX(a, b) ((a) > (b) ? (a) : (b))
+
+/****d* silcutil/SILC_MIN
+ *
+ * NAME
+ *
+ *    #define SILC_MIN(a, b)
+ *
+ * DESCRIPTION
+ *
+ *    Return `a' if it is smaller than `b', otherwise return `b'.
+ *
+ ***/
+#define SILC_MIN(a, b) ((a) < (b) ? (a) : (b))
+
 /****d* silcutil/SILC_GET16_MSB
  *
  * NAME