12 #ifndef __SAS_INDEXKEY_H 13 #define __SAS_INDEXKEY_H 41 const unsigned long double_mask = (0xffffffffffffffff);
103 rc = memcmp (&op_a->
data[0], &op_b->
data[0], len);
184 #if __BYTE_ORDER == __BIG_ENDIAN 193 unsigned long long uint64_key;
210 key_val.uint64_key = value;
213 dest->
copy_size =
sizeof (
void *) +
sizeof (
unsigned long long);
214 dest->
data[0] = key_val.key_element;
217 dest->
copy_size =
sizeof (
void *) +
sizeof (
unsigned long long);
218 dest->
data[0] = key_val.key_element.data_0;
219 dest->
data[1] = key_val.key_element.data_1;
230 static inline unsigned long long 236 key_val.key_element = dest->
data[0];
238 key_val.key_element.data_0 = dest->
data[0];
239 key_val.key_element.data_1 = dest->
data[1];
241 return key_val.uint64_key;
259 key_val.int64_key = value;
262 dest->
copy_size =
sizeof (
void *) +
sizeof (
unsigned long long);
266 dest->
copy_size =
sizeof (
void *) +
sizeof (
unsigned long long);
268 dest->
data[1] = key_val.key_element.data_1;
279 static inline long long 288 key_val.key_element.data_1 = dest->
data[1];
290 return key_val.int64_key;
308 key_val.double_key = value;
311 dest->
copy_size =
sizeof (
void *) +
sizeof (
unsigned long long);
318 dest->
copy_size =
sizeof (
void *) +
sizeof (
unsigned long long);
327 dest->
data[1] = key_val.key_element.data_1;
354 key_val.key_element.data_1 = dest->
data[1];
362 return key_val.double_key;
struct SASIndexKey_t SASIndexKey_t
Index Key Handle structure for binary index B-trees.
const unsigned long double_exp_mask
mask use to invert the exponent.
Definition: sasindexkey.h:50
const unsigned long machine_sign_mask
mask use to invert the signbit.
Definition: sasindexkey.h:48
static void SASIndexKeyInitRef(SASIndexKey_t *dest, void *value)
Initial a binary key @ destination with a address value.
Definition: sasindexkey.h:169
machine_uint_t data[15]
Definition: sasindexkey.h:66
static void SASIndexKeyInitInt64(SASIndexKey_t *dest, signed long long value)
Initial a binary key @ destination with a signed 64-bit integer value.
Definition: sasindexkey.h:255
static double SASIndexKeyReturn1stDouble(SASIndexKey_t *dest)
Return the value of the 1st binary key as a signed 64-bit integer value.
Definition: sasindexkey.h:341
static int SASIndexKeyCompare(SASIndexKey_t *op_a, SASIndexKey_t *op_b)
binary key compare logic for Index B-Tree keys.
Definition: sasindexkey.h:83
static void SASIndexKeyInitDouble(SASIndexKey_t *dest, double value)
Initial a binary key @ destination with a signed 64-bit integer value.
Definition: sasindexkey.h:304
machine_uhalf_t copy_size
Definition: sasindexkey.h:62
static void SASIndexKeyInitUInt64(SASIndexKey_t *dest, unsigned long long value)
Initial a binary key @ destination with a unsigned 64-bit integer value.
Definition: sasindexkey.h:206
static size_t SASIndexKeySize(SASIndexKey_t *key)
Return the binary index key copy_size.
Definition: sasindexkey.h:157
Index Key Handle structure for binary index B-trees.
Definition: sasindexkey.h:59
static long long SASIndexKeyReturn1stInt64(SASIndexKey_t *dest)
Return the value of the 1st binary key as a signed 64-bit integer value.
Definition: sasindexkey.h:280
unsigned short machine_uhalf_t
data unit used to store copy and compare lengths.
Definition: sasindexkey.h:46
machine_uhalf_t compare_size
Definition: sasindexkey.h:64
const unsigned long double_mask
mask use to invert the sign and exponent.
Definition: sasindexkey.h:52
unsigned long machine_uint_t
word size data unit used for binary keys.
Definition: sasindexkey.h:44
static unsigned long long SASIndexKeyReturn1stUInt64(SASIndexKey_t *dest)
Return the value of the 1st binary key as a unsigned 64-bit integer value.
Definition: sasindexkey.h:231
Union of value types and key machine integer types.
Definition: sasindexkey.h:179
static void SASIndexKeyCopy(SASIndexKey_t *dest, SASIndexKey_t *src)
Copy a binary key from source to destination.
Definition: sasindexkey.h:142