@kv  0.0.4
Library for graph problems in C and Python
type.h
1 
18 #if !defined(AT_CORE_H_INSIDE)
19 #error "Only <at/core.h> can be included directly."
20 #endif
21 #ifndef AT_TYPE_H
22 #define AT_TYPE_H
23 #include <stdint.h>
24 typedef enum{
25  AT_SCC_TARJAN,
26  AT_SCC_KOSARAJU,
27  AT_SCC_DIJKSTRA,
28 }AtSCCAlgorithm;
29 
30 typedef enum{
31  AT_TOP,
32  AT_BOTTOM,
33  AT_LEFT,
34  AT_RIGHT,
35  AT_CENTER,
36 }AtAlignment;
37 
38 typedef int8_t (*AtCompareFunc) (void* data1, void* data2);
39 typedef int8_t (*AtCompareDataFunc)(void* data1, void* data2, void* user_data);
40 typedef void (*AtDataFunc) (void* data1, void* user_data);
41 
42 #define INT8_TO_POINTER(i) ((void*)(int64_t)(i))
43 #define INT16_TO_POINTER(i) ((void*)(int64_t)(i))
44 #define INT32_TO_POINTER(i) ((void*)(int64_t)(i))
45 #define INT64_TO_POINTER(i) ((void*)(int64_t)(i))
46 #define UINT8_TO_POINTER(i) ((void*)(uint64_t)(i))
47 #define UINT16_TO_POINTER(i) ((void*)(uint64_t)(i))
48 #define UINT32_TO_POINTER(i) ((void*)(uint64_t)(i))
49 #define UINT64_TO_POINTER(i) ((void*)(uint64_t)(i))
50 
51 #define POINTER_TO_INT8(i) ((int8_t) (int64_t)(i))
52 #define POINTER_TO_INT16(i) ((int16_t) (int64_t)(i))
53 #define POINTER_TO_INT32(i) ((int32_t) (int64_t)(i))
54 #define POINTER_TO_INT64(i) ((int64_t) (int64_t)(i))
55 #define POINTER_TO_UINT8(i) ((uint8_t) (uint64_t)(i))
56 #define POINTER_TO_UINT16(i) ((uint16_t)(uint64_t)(i))
57 #define POINTER_TO_UINT32(i) ((uint32_t)(uint64_t)(i))
58 #define POINTER_TO_UINT64(i) ((uint64_t)(uint64_t)(i))
59 
60 #endif