1 #ifndef _ATTR_H_INCLUDED_
2 #define _ATTR_H_INCLUDED_
39 #define ATTR_TYPE_END 0
40 #define ATTR_TYPE_INT 1
41 #define ATTR_TYPE_NUM ATTR_TYPE_INT
42 #define ATTR_TYPE_STR 2
43 #define ATTR_TYPE_HASH 3
44 #define ATTR_TYPE_NV 3
45 #define ATTR_TYPE_LONG 4
46 #define ATTR_TYPE_DATA 5
47 #define ATTR_TYPE_FUNC 6
52 #define ATTR_TYPE_OPEN '{'
53 #define ATTR_TYPE_CLOSE '}'
54 #define ATTR_NAME_OPEN "{"
55 #define ATTR_NAME_CLOSE "}"
57 #define ATTR_HASH_LIMIT 1024
63 #define SEND_ATTR_INT(name, val) ATTR_TYPE_INT, CHECK_CPTR(ATTR, char, (name)), CHECK_VAL(ATTR, int, (val))
64 #define SEND_ATTR_STR(name, val) ATTR_TYPE_STR, CHECK_CPTR(ATTR, char, (name)), CHECK_CPTR(ATTR, char, (val))
65 #define SEND_ATTR_HASH(val) ATTR_TYPE_HASH, CHECK_CPTR(ATTR, HTABLE, (val))
66 #define SEND_ATTR_NV(val) ATTR_TYPE_NV, CHECK_CPTR(ATTR, NVTABLE, (val))
67 #define SEND_ATTR_LONG(name, val) ATTR_TYPE_LONG, CHECK_CPTR(ATTR, char, (name)), CHECK_VAL(ATTR, long, (val))
68 #define SEND_ATTR_DATA(name, len, val) ATTR_TYPE_DATA, CHECK_CPTR(ATTR, char, (name)), CHECK_VAL(ATTR, ssize_t, (len)), CHECK_CPTR(ATTR, void, (val))
69 #define SEND_ATTR_FUNC(func, val) ATTR_TYPE_FUNC, CHECK_VAL(ATTR, ATTR_PRINT_SLAVE_FN, (func)), CHECK_CPTR(ATTR, void, (val))
71 #define RECV_ATTR_INT(name, val) ATTR_TYPE_INT, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, int, (val))
72 #define RECV_ATTR_STR(name, val) ATTR_TYPE_STR, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, VSTRING, (val))
73 #define RECV_ATTR_HASH(val) ATTR_TYPE_HASH, CHECK_PTR(ATTR, HTABLE, (val))
74 #define RECV_ATTR_NV(val) ATTR_TYPE_NV, CHECK_PTR(ATTR, NVTABLE, (val))
75 #define RECV_ATTR_LONG(name, val) ATTR_TYPE_LONG, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, long, (val))
76 #define RECV_ATTR_DATA(name, val) ATTR_TYPE_DATA, CHECK_CPTR(ATTR, char, (name)), CHECK_PTR(ATTR, VSTRING, (val))
77 #define RECV_ATTR_FUNC(func, val) ATTR_TYPE_FUNC, CHECK_VAL(ATTR, ATTR_SCAN_SLAVE_FN, (func)), CHECK_PTR(ATTR, void, (val))
98 #define ATTR_FLAG_NONE 0
99 #define ATTR_FLAG_MISSING (1<<0)
100 #define ATTR_FLAG_EXTRA (1<<1)
101 #define ATTR_FLAG_MORE (1<<2)
103 #define ATTR_FLAG_STRICT (ATTR_FLAG_MISSING | ATTR_FLAG_EXTRA)
104 #define ATTR_FLAG_ALL (07)
109 #define attr_print attr_print0
110 #define attr_vprint attr_vprint0
111 #define attr_scan attr_scan0
112 #define attr_vscan attr_vscan0
113 #define attr_scan_more attr_scan_more0
159 #define ATTR_NAME_INT "number"
160 #define ATTR_NAME_STR "string"
161 #define ATTR_NAME_LONG "long_number"
162 #define ATTR_NAME_DATA "data"
int(* ATTR_PRINT_MASTER_FN)(VSTREAM *, int,...)
int attr_print64(VSTREAM *, int,...)
CHECK_VAL_HELPER_DCL(ATTR, ssize_t)
int WARN_UNUSED_RESULT attr_vscan_plain(VSTREAM *, int, va_list)
int(* ATTR_PRINT_SLAVE_FN)(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *)
int attr_vprint64(VSTREAM *, int, va_list)
int WARN_UNUSED_RESULT attr_vscan64(VSTREAM *, int, va_list)
int attr_vprint0(VSTREAM *, int, va_list)
int(* ATTR_SCAN_MASTER_FN)(VSTREAM *, int,...)
#define WARN_UNUSED_RESULT
CHECK_CPTR_HELPER_DCL(ATTR, void)
int WARN_UNUSED_RESULT attr_scan64(VSTREAM *, int,...)
int WARN_UNUSED_RESULT attr_scan0(VSTREAM *, int,...)
int attr_print0(VSTREAM *, int,...)
int attr_print_plain(VSTREAM *, int,...)
int WARN_UNUSED_RESULT attr_scan_more0(VSTREAM *)
int WARN_UNUSED_RESULT attr_vscan0(VSTREAM *, int, va_list)
int attr_scan_more_plain(VSTREAM *)
int WARN_UNUSED_RESULT attr_scan_plain(VSTREAM *, int,...)
CHECK_PTR_HELPER_DCL(ATTR, void)
int(* ATTR_SCAN_SLAVE_FN)(ATTR_SCAN_MASTER_FN, VSTREAM *, int, void *)
int WARN_UNUSED_RESULT attr_scan_more64(VSTREAM *)
int attr_vprint_plain(VSTREAM *, int, va_list)