Adaptive Framework  0.9.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
afw_adaptor_impl_index.h
Go to the documentation of this file.
1 // See the 'COPYING' file in the project root for licensing information.
2 /*
3  * Helpers for afw_adaptor implementation index development
4  *
5  * Copyright (c) 2010-2023 Clemson University
6  *
7  */
8 
9 #ifndef __AFW_ADAPTOR_IMPL_INDEX_H__
10 #define __AFW_ADAPTOR_IMPL_INDEX_H__
11 
12 #include "afw_interface.h"
13 
26 
27 /* definition for an individual index */
28 typedef struct {
29  const afw_utf8_t * object_type_id;
30  const afw_utf8_t * property_name;
32 
33 /* context to hold data for our callback routine */
34 typedef struct {
35  const afw_adaptor_impl_index_t * instance;
36  const afw_utf8_t *object_type_id;
37  const afw_utf8_t *property_name;
38  const afw_utf8_t *index_type;
39  int mode;
40  int num_indexed;
42 
43 typedef enum afw_adaptor_impl_index_mode_e {
44  afw_adaptor_impl_index_mode_add,
45  afw_adaptor_impl_index_mode_delete,
46  afw_adaptor_impl_index_mode_replace,
47  afw_adaptor_impl_index_mode_repair
48 } afw_adaptor_impl_index_mode_t;
49 
50 /* context to hold data for our callback routine */
51 typedef struct {
52  const afw_adaptor_impl_index_t * instance;
53  const afw_utf8_t * key;
54  const afw_object_t * indexDefinition;
55  afw_adaptor_impl_index_mode_t mode;
56  size_t num_processed;
57  size_t num_indexed;
58  afw_boolean_t test;
60 
61 /* common index routines, helpful for adaptors and utilities */
62 AFW_DECLARE(const afw_object_t *) afw_adaptor_impl_index_create(
63  const afw_utf8_t * adaptorId,
64  const afw_utf8_t * key,
65  const afw_utf8_t * value,
66  const afw_list_t * objectType,
67  const afw_utf8_t * filter,
68  const afw_list_t * options,
69  afw_boolean_t retroactive,
70  afw_boolean_t test,
71  const afw_pool_t * pool,
72  afw_xctx_t * xctx);
73 
74 AFW_DECLARE(const afw_object_t *) afw_adaptor_impl_index_remove(
75  const afw_utf8_t * adaptorId,
76  const afw_utf8_t * key,
77  const afw_pool_t * pool,
78  afw_xctx_t * xctx);
79 
80 AFW_DECLARE(const afw_object_t *) afw_adaptor_impl_index_list(
81  const afw_utf8_t * adaptorId,
82  const afw_utf8_t * object_type_id,
83  const afw_pool_t * pool,
84  afw_xctx_t *xctx);
85 
86 AFW_DECLARE(void) afw_adaptor_impl_index_reindex_object(
87  const afw_adaptor_impl_index_t * instance,
88  const afw_utf8_t * object_type_id,
89  const afw_object_t * old_object,
90  const afw_object_t * new_object,
91  const afw_utf8_t * object_id,
92  afw_xctx_t *xctx);
93 
94 AFW_DECLARE(void) afw_adaptor_impl_index_unindex_object(
95  const afw_adaptor_impl_index_t * instance,
96  const afw_utf8_t * object_type_id,
97  const afw_object_t * object,
98  const afw_utf8_t * object_id,
99  afw_xctx_t *xctx);
100 
101 AFW_DECLARE(void) afw_adaptor_impl_index_object(
102  const afw_adaptor_impl_index_t * instance,
103  const afw_utf8_t * object_type_id,
104  const afw_object_t * object,
105  const afw_utf8_t * object_id,
106  afw_xctx_t *xctx);
107 
108 AFW_DECLARE(afw_boolean_t) afw_adaptor_impl_index_sargable(
109  const afw_adaptor_impl_index_t * instance,
110  const afw_utf8_t * object_type_id,
111  const afw_query_criteria_t * criteria,
112  afw_xctx_t *xctx);
113 
114 AFW_DECLARE(void) afw_adaptor_impl_index_query(
115  const afw_adaptor_impl_index_t * instance,
116  const afw_utf8_t * object_type_id,
117  const afw_query_criteria_t * criteria,
118  afw_object_cb_t callback,
119  void * context,
120  const afw_pool_t * pool,
121  afw_xctx_t *xctx);
122 
123 AFW_DECLARE(void) afw_adaptor_impl_index_open_definitions(
124  const afw_adaptor_impl_index_t * indexer,
125  const afw_object_t * indexDefinitions,
126  const afw_pool_t * pool,
127  afw_xctx_t * xctx);
128 
129 
130 AFW_END_DECLARES
131 
134 #endif /* __AFW_ADAPTOR_IMPL_INDEX_H__ */
#define AFW_BEGIN_DECLARES
#define AFW_DECLARE(type)
Declare a public afw function.
Interfaceafw_interface header.
afw_boolean_t(* afw_object_cb_t)(const afw_object_t *object, void *context, afw_xctx_t *xctx)
Typedef for afw_adaptor_session_object callback.
Definition: afw_common.h:1176
_Bool afw_boolean_t
Definition: afw_common.h:373
Interface afw_adaptor_impl_index public struct.
Interface afw_list public struct.
Interface afw_object public struct.
Interface afw_pool public struct.
Parsed query criteria.
NFC normalized UTF-8 string.
Definition: afw_common.h:545
Interface afw_xctx public struct.