Loading...
Searching...
No Matches
as_util.h
Go to the documentation of this file.
1/*
2 * Copyright 2008-2022 Aerospike, Inc.
3 *
4 * Portions may be licensed to Aerospike, Inc. under one or more contributor
5 * license agreements.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
8 * use this file except in compliance with the License. You may obtain a copy of
9 * the License at http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations under
15 * the License.
16 */
17
18#pragma once
19
20#include <stddef.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26/******************************************************************************
27 * MACROS
28 ******************************************************************************/
29
30/**
31 * Calls a hook on a object.
32 * If hook not found, then return the default value.
33 */
34#define as_util_hook(hook,default,object,...) \
35 (object && object->hooks && object->hooks->hook ? object->hooks->hook(object, ##__VA_ARGS__) : default)
36
37#define as_util_hook_ret_void(hook,object,...) \
38 if (object && object->hooks && object->hooks->hook) object->hooks->hook(object, ##__VA_ARGS__)
39
40/**
41 * Converts from an as_val.
42 */
43#define as_util_fromval(object,type_id,type) \
44 (object && as_val_type(object) == type_id ? (type *) object : NULL)
45
46#ifdef __cplusplus
47} // end extern "C"
48#endif