dump1090-fa/starch/templates/starch.h.template

69 lines
1.9 KiB
Plaintext

### Copyright (c) 2020, FlightAware LLC.
### All rights reserved.
### See the LICENSE file for licensing terms.
/* starch generated code. Do not edit. */
% for include in gen.includes:
#include ${include}
% endfor
/* mixes */
% for mix in gen.mixes.values():
/* ${mix.description} */
#ifdef ${mix.macro}
% for flavor in mix.flavors:
#define ${flavor.macro}
% endfor
#define STARCH_MIX_ALIGNMENT ${max((flavor.alignment) for flavor in mix.flavors)}
#endif /* ${mix.macro} */
% endfor
#ifdef STARCH_MIX_ALIGNMENT
#define STARCH_ALIGNMENT STARCH_MIX_ALIGNMENT
#define STARCH_IS_ALIGNED(_ptr) (((uintptr_t)(_ptr) & (STARCH_MIX_ALIGNMENT-1)) == 0)
#else
/* mix not defined, alignment is unknown, treat everything as unaligned */
#define STARCH_IS_ALIGNED(_ptr) (0)
#endif
/* entry points and registries */
% for function in gen.functions.values():
typedef ${function.returntype} (* ${function.pointer_type}) ( ${function.declaration_arglist} );
extern ${function.pointer_type} ${function.callable_symbol};
typedef struct {
int rank;
const char *name;
const char *flavor;
${function.pointer_type} callable;
int (*flavor_supported)();
} ${function.regentry_type};
extern ${function.regentry_type} ${function.registry_symbol}[];
${function.regentry_type} * ${function.select_symbol}();
void ${function.set_wisdom_symbol}( const char * const * received_wisdom );
% endfor
/* flavors and prototypes */
% for flavor in gen.flavors.values():
#ifdef ${flavor.macro}
% if flavor.test_function is not None:
int ${flavor.test_function} (void);
% endif
% for impl in gen.function_impls.values():
% if (flavor.alignment > 1 or not impl.function.aligned) and (impl.feature is None or impl.feature in flavor.features):
${impl.function.returntype} ${impl.impl_symbol(flavor)} ( ${impl.function.declaration_arglist} );
% endif
% endfor
#endif /* ${flavor.macro} */
int ${gen.sym("read_wisdom")} (const char * path);
% endfor