]> git.saurik.com Git - apple/syslog.git/blob - libsystem_asl.tproj/include/asl_object.h
syslog-323.50.1.tar.gz
[apple/syslog.git] / libsystem_asl.tproj / include / asl_object.h
1 #ifndef __ASL_OBJECT_H__
2 #define __ASL_OBJECT_H__
3
4 /*
5 * Copyright (c) 2007-2012 Apple Inc. All rights reserved.
6 *
7 * @APPLE_LICENSE_HEADER_START@
8 *
9 * This file contains Original Code and/or Modifications of Original Code
10 * as defined in and that are subject to the Apple Public Source License
11 * Version 2.0 (the 'License'). You may not use this file except in
12 * compliance with the License. Please obtain a copy of the License at
13 * http://www.opensource.apple.com/apsl/ and read it before using this
14 * file.
15 *
16 * The Original Code and all software distributed under the License are
17 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
18 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
19 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
21 * Please see the License for the specific language governing rights and
22 * limitations under the License.
23 *
24 * @APPLE_LICENSE_HEADER_END@
25 */
26
27 #include <stdlib.h>
28 #include <stdint.h>
29
30 /* generic object pointer */
31 typedef struct _asl_object_s
32 {
33 uint32_t asl_type; //ASL OBJECT HEADER
34 int32_t refcount; //ASL OBJECT HEADER
35 char asl_data[];
36 } asl_object_private_t;
37
38 #define ASL_OBJECT_HEADER_SIZE 8
39
40 typedef struct asl_jump_table_s
41 {
42 asl_object_private_t * (*alloc)(uint32_t type);
43 void (*dealloc)(asl_object_private_t *obj);
44 int (*set_key_val_op)(asl_object_private_t *obj, const char *key, const char *val, uint16_t op);
45 void (*unset_key)(asl_object_private_t *obj, const char *key);
46 int (*get_val_op_for_key)(asl_object_private_t *obj, const char *key, const char **val, uint16_t *op);
47 int (*get_key_val_op_at_index)(asl_object_private_t *obj, size_t n, const char **key, const char **val, uint16_t *op);
48 size_t (*count)(asl_object_private_t *obj);
49 asl_object_private_t *(*next)(asl_object_private_t *obj);
50 asl_object_private_t *(*prev)(asl_object_private_t *obj);
51 asl_object_private_t *(*get_object_at_index)(asl_object_private_t *obj, size_t n);
52 void (*set_iteration_index)(asl_object_private_t *obj, size_t n);
53 void (*remove_object_at_index)(asl_object_private_t *obj, size_t n);
54 void (*append)(asl_object_private_t *obj, asl_object_private_t *newobj);
55 void (*prepend)(asl_object_private_t *obj, asl_object_private_t *newobj);
56 asl_object_private_t *(*search)(asl_object_private_t *obj, asl_object_private_t *query);
57 asl_object_private_t *(*match)(asl_object_private_t *obj, asl_object_private_t *querylist, size_t *last, size_t start, size_t count, uint32_t duration, int32_t dir);
58 } asl_jump_table_t;
59
60 __BEGIN_DECLS
61
62 int asl_object_set_key_val_op(asl_object_private_t *obj, const char *key, const char *val, uint16_t op);
63 void asl_object_unset_key(asl_object_private_t *obj, const char *key);
64 int asl_object_get_key_value_op(asl_object_private_t *obj, const char *key, const char **val, uint16_t *op);
65 size_t asl_object_count(asl_object_private_t *obj);
66 asl_object_private_t *asl_object_next(asl_object_private_t *obj);
67 asl_object_private_t *asl_object_prev(asl_object_private_t *obj);
68 asl_object_private_t *asl_object_get_object_at_index(asl_object_private_t *obj, size_t n);
69 void asl_object_set_iteration_index(asl_object_private_t *obj, size_t n);
70 void asl_object_remove_object_at_index(asl_object_private_t *obj, size_t n);
71 void asl_object_append(asl_object_private_t *obj, asl_object_private_t *newobj);
72 void asl_object_prepend(asl_object_private_t *obj, asl_object_private_t *newobj);
73 asl_object_private_t *asl_object_search(asl_object_private_t *obj, asl_object_private_t *query);
74 asl_object_private_t *asl_object_match(asl_object_private_t *obj, asl_object_private_t *querylist, size_t *last, size_t start, size_t count, uint32_t duration, int32_t dir);
75
76 __END_DECLS
77
78 #endif /* __ASL_OBJECT_H__ */