xref: /php-src/ext/dom/lexbor/lexbor/core/plog.c (revision bffab33a)
1 /*
2  * Copyright (C) 2019 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #include "lexbor/core/plog.h"
8 
9 
10 lxb_status_t
lexbor_plog_init(lexbor_plog_t * plog,size_t init_size,size_t struct_size)11 lexbor_plog_init(lexbor_plog_t *plog, size_t init_size, size_t struct_size)
12 {
13     lxb_status_t status;
14 
15     if (plog == NULL) {
16         return LXB_STATUS_ERROR_OBJECT_IS_NULL;
17     }
18 
19     if (struct_size < sizeof(lexbor_plog_entry_t)) {
20         struct_size = sizeof(lexbor_plog_entry_t);
21     }
22 
23     status = lexbor_array_obj_init(&plog->list, init_size, struct_size);
24     if (status != LXB_STATUS_OK) {
25         return status;
26     }
27 
28     return LXB_STATUS_OK;
29 }
30 
31 lexbor_plog_t *
lexbor_plog_destroy(lexbor_plog_t * plog,bool self_destroy)32 lexbor_plog_destroy(lexbor_plog_t *plog, bool self_destroy)
33 {
34     if (plog == NULL) {
35         return NULL;
36     }
37 
38     lexbor_array_obj_destroy(&plog->list, false);
39 
40     if (self_destroy) {
41         return lexbor_free(plog);
42     }
43 
44     return plog;
45 }
46 
47 /*
48  * No inline functions.
49  */
50 lexbor_plog_t *
lexbor_plog_create_noi(void)51 lexbor_plog_create_noi(void)
52 {
53     return lexbor_plog_create();
54 }
55 
56 void
lexbor_plog_clean_noi(lexbor_plog_t * plog)57 lexbor_plog_clean_noi(lexbor_plog_t *plog)
58 {
59     lexbor_plog_clean(plog);
60 }
61 
62 void *
lexbor_plog_push_noi(lexbor_plog_t * plog,const lxb_char_t * data,void * ctx,unsigned id)63 lexbor_plog_push_noi(lexbor_plog_t *plog, const lxb_char_t *data, void *ctx,
64                      unsigned id)
65 {
66     return lexbor_plog_push(plog, data, ctx, id);
67 }
68 
69 size_t
lexbor_plog_length_noi(lexbor_plog_t * plog)70 lexbor_plog_length_noi(lexbor_plog_t *plog)
71 {
72     return lexbor_plog_length(plog);
73 }
74