69 lines
1.9 KiB
Plaintext
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 sorted(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 sorted(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
|