Skip to content

Instantly share code, notes, and snippets.

@dhh1128
dhh1128 / fancier-eprintf
Created Aug 4, 2020
fancier version of eprintf
View fancier-eprintf
#define eprintf(fmt, ...) \
fprintf(stderr, fmt, ##__VA_ARGS__)
@dhh1128
dhh1128 / for_each_macro
Last active Oct 5, 2019
"for each"-style macro
View for_each_macro
// Accept any number of args >= N, but expand to just the Nth one.
// Here, N == 6.
#define _GET_NTH_ARG(_1, _2, _3, _4, _5, N, ...) N
// Define some macros to help us create overrides based on the
// arity of a for-each-style macro.
#define _fe_0(_call, ...)
#define _fe_1(_call, x) _call(x)
#define _fe_2(_call, x, ...) _call(x) _fe_1(_call, __VA_ARGS__)
#define _fe_3(_call, x, ...) _call(x) _fe_2(_call, __VA_ARGS__)
@dhh1128
dhh1128 / macros_overridden_by_arg_count
Last active Oct 5, 2019
macros overridden by arg count
View macros_overridden_by_arg_count
// Define two overrides that can be used by the expansion of
// our main macro.
#define _MY_CONCAT3(a, b, c) a b c
#define _MY_CONCAT2(a, b) a b
// Define a macro that uses the "paired, sliding arg list"
// technique to select the appropriate override. You should
// recognize this as similar to the GET_NTH_ARG() macro in
// previous examples.
#define _GET_OVERRIDE(_1, _2, _3, NAME, ...) NAME
@dhh1128
dhh1128 / paired_sliding_arg_list_macro_trick_2
Last active Oct 5, 2019
"paired, sliding arg list" that handles zero args
View paired_sliding_arg_list_macro_trick_2
// Accept any number of args >= N, but expand to just the Nth one. The macro
// that calls us still only supports 4 args, but the set of values we might
// need to return is 1 larger, so we increase N to 6.
#define _GET_NTH_ARG(_1, _2, _3, _4, _5, N, ...) N
// Count how many args are in a variadic macro. We now use GCC/Clang's extension to
// handle the case where ... expands to nothing. We must add a placeholder arg before
// ##__VA_ARGS__ (its value is totally irrelevant, but it's necessary to preserve
// the shifting offset we want). In addition, we must add 0 as a valid value to be in
// the N position.
@dhh1128
dhh1128 / paired_sliding_arg_list_macro_trick_1
Last active Oct 5, 2019
the "paired, sliding arg list" macro trick
View paired_sliding_arg_list_macro_trick_1
// Accept any number of args >= N, but expand to just the Nth one. In this case,
// we have settled on 5 as N. We could pick a different number by adjusting
// the count of throwaway args before N. Note that this macro is preceded by
// an underscore--it's an implementation detail, not something we expect people
// to call directly.
#define _GET_NTH_ARG(_1, _2, _3, _4, N, ...) N
// Count how many args are in a variadic macro. Only works for up to N-1 args.
#define COUNT_VARARGS(...) _GET_NTH_ARG(__VA_ARGS__, 4, 3, 2, 1)
@dhh1128
dhh1128 / fancier_variadic_macro
Created Nov 21, 2014
fancier variadic macro using GCC's ##__VA_ARGS__ extension
View fancier_variadic_macro
#define eprintf(fmt, ...) \
fprintf(stderr, fmt, ##__VA_ARGS)
@dhh1128
dhh1128 / variadic_macro_1
Created Nov 21, 2014
simple variadic macro
View variadic_macro_1
#define eprintf(fmt, ...) \
fprintf(stderr, fmt, __VA_ARGS__)
@dhh1128
dhh1128 / evasive_action.cpp
Last active Aug 29, 2015
evasive action snippet
View evasive_action.cpp
void spaceship::take_evasive_action(list<threat> threats_by_proximity) {
course escape_vector = nullptr;
list<threat> weighted_threats = order_by_evasion_priority(
threats_by_proximity, multiply_by_threat_severity);
if (this->has_warp()) {
bool warp_is_practical = true;
double max_safe_warp = 1.0;
// do a bunch of calculations about whether warp is
@dhh1128
dhh1128 / id_validator_mark
Last active Aug 29, 2015
id validator mark
View id_validator_mark
id_validator: mark
propagation: propagation_types.package | propagation_types.viral
# Override mark.infect() -- define what parts of code should acquire this mark
# automatically. Return a list of (site, mark_type) tuples.
def infect(site):
infected = []
for module in site.package.modules:
for function in module.functions:
for param in function.parameters:
@dhh1128
dhh1128 / gpl_example_pseudocode
Last active Aug 29, 2015
python-like pseudocode for marks that implement
View gpl_example_pseudocode
# Implementation of a mark that precludes gpl license
class no_gpl: mark
propagation = propagation_types.called_code or propagation_types.contained_code
# Override mark.can_bind(). Return reason why binding is
# impossible, or None on success.
def can_bind(site, attachment):
if attachment == mark_types.explicit_affirmative:
if site.type.scope >= scope_types.code_block:
if site.get_call_tree().is_marked('gpl', mark_types.explicit_affirmative):