1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// Defines \c llcas_functions_t, the table of function pointers that is
11/// populated by looking up the \c llcas_* symbols of a loaded CAS plugin.
12///
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_LIB_CAS_PLUGINAPI_H
16#define LLVM_LIB_CAS_PLUGINAPI_H
17
18#include "llvm-c/CAS/PluginAPI_types.h"
19
20/// See documentation in \c "llvm-c/CAS/PluginAPI_functions.h" for how these
21/// functions are used.
22struct llcas_functions_t {
23 void (*get_plugin_version)(unsigned *major, unsigned *minor);
24
25 void (*string_dispose)(char *);
26
27 void (*cancellable_cancel)(llcas_cancellable_t);
28
29 void (*cancellable_dispose)(llcas_cancellable_t);
30
31 llcas_cas_options_t (*cas_options_create)(void);
32
33 void (*cas_options_dispose)(llcas_cas_options_t);
34
35 void (*cas_options_set_client_version)(llcas_cas_options_t, unsigned major,
36 unsigned minor);
37
38 void (*cas_options_set_ondisk_path)(llcas_cas_options_t, const char *path);
39
40 bool (*cas_options_set_option)(llcas_cas_options_t, const char *name,
41 const char *value, char **error);
42
43 llcas_cas_t (*cas_create)(llcas_cas_options_t, char **error);
44
45 void (*cas_dispose)(llcas_cas_t);
46
47 int64_t (*cas_get_ondisk_size)(llcas_cas_t, char **error);
48
49 bool (*cas_set_ondisk_size_limit)(llcas_cas_t, int64_t size_limit,
50 char **error);
51
52 bool (*cas_prune_ondisk_data)(llcas_cas_t, char **error);
53
54 bool (*cas_validate)(llcas_cas_t, bool check_hash, char **error);
55
56 unsigned (*digest_parse)(llcas_cas_t, const char *printed_digest,
57 uint8_t *bytes, size_t bytes_size, char **error);
58
59 bool (*digest_print)(llcas_cas_t, llcas_digest_t, char **printed_id,
60 char **error);
61
62 char *(*cas_get_hash_schema_name)(llcas_cas_t);
63
64 bool (*cas_get_objectid)(llcas_cas_t, llcas_digest_t, llcas_objectid_t *,
65 char **error);
66
67 llcas_digest_t (*objectid_get_digest)(llcas_cas_t, llcas_objectid_t);
68
69 llcas_lookup_result_t (*cas_contains_object)(llcas_cas_t, llcas_objectid_t,
70 bool globally, char **error);
71
72 llcas_lookup_result_t (*cas_load_object)(llcas_cas_t, llcas_objectid_t,
73 llcas_loaded_object_t *,
74 char **error);
75 void (*cas_load_object_async)(llcas_cas_t, llcas_objectid_t, void *ctx_cb,
76 llcas_cas_load_object_cb,
77 llcas_cancellable_t *);
78
79 bool (*cas_store_object)(llcas_cas_t, llcas_data_t,
80 const llcas_objectid_t *refs, size_t refs_count,
81 llcas_objectid_t *, char **error);
82
83 bool (*cas_store_from_filepath)(llcas_cas_t, const char *filepath,
84 llcas_objectid_t *, char **error);
85
86 llcas_data_t (*loaded_object_get_data)(llcas_cas_t, llcas_loaded_object_t);
87
88 llcas_object_refs_t (*loaded_object_get_refs)(llcas_cas_t,
89 llcas_loaded_object_t);
90
91 llcas_data_t (*loaded_object_get_standalone_data)(llcas_cas_t,
92 llcas_loaded_object_t);
93
94 void (*standalone_data_dispose)(llcas_data_t);
95
96 size_t (*object_refs_get_count)(llcas_cas_t, llcas_object_refs_t);
97
98 llcas_objectid_t (*object_refs_get_id)(llcas_cas_t, llcas_object_refs_t,
99 size_t index);
100
101 bool (*loaded_object_export_data_to_filepath)(llcas_cas_t,
102 llcas_loaded_object_t,
103 const char *filepath,
104 char **error);
105
106 /*===--------------------------------------------------------------------===*\
107 |* Action cache API
108 \*===--------------------------------------------------------------------===*/
109
110 llcas_lookup_result_t (*actioncache_get_for_digest)(llcas_cas_t,
111 llcas_digest_t key,
112 llcas_objectid_t *p_value,
113 bool globally,
114 char **error);
115
116 void (*actioncache_get_for_digest_async)(llcas_cas_t, llcas_digest_t key,
117 bool globally, void *ctx_cb,
118 llcas_actioncache_get_cb,
119 llcas_cancellable_t *);
120
121 bool (*actioncache_put_for_digest)(llcas_cas_t, llcas_digest_t key,
122 llcas_objectid_t value, bool globally,
123 char **error);
124
125 void (*actioncache_put_for_digest_async)(llcas_cas_t, llcas_digest_t key,
126 llcas_objectid_t value,
127 bool globally, void *ctx_cb,
128 llcas_actioncache_put_cb,
129 llcas_cancellable_t *);
130
131 bool (*actioncache_validate)(llcas_cas_t, char **error);
132};
133
134#endif // LLVM_LIB_CAS_PLUGINAPI_H
135