Skip to content

Instantly share code, notes, and snippets.

@dhh1128
dhh1128 / hello.i
Created February 17, 2014 18:45
hello world in intent
hello: application
Main:
does:
Print("Hello, World!")
int DoSomething(
Foo * foo, /* might be null; call GetDefaultFoo() if so */
Bar ** bar /* if non-null, contains foo's associated Bar upon return */ )
{
... // body of function
}
// mocking variant 1
mock(1, int, Allocator::Run,(mjob_t *J, candidate_t * candidates[MAX_CAND_PER_ALLOC],
int *minTPN, int *maxTPN, char *attrMap, int *jobIndex, candidate_t **bestList,
int *taskCount, int *userCount));
// mocking variant 2
MOCK_CMETHOD4(int, IterateEvents, event_list_t const *, char **, mgevent_obj_t **,
event_iter_t);
// mocking variant 3
@dhh1128
dhh1128 / gpl_example_pseudocode
Last active August 29, 2015 14:04
python-like pseudocode for marks that implement
# 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):
@dhh1128
dhh1128 / id_validator_mark
Last active August 29, 2015 14:04
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 / evasive_action.cpp
Last active August 29, 2015 14:06
evasive action snippet
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 / variadic_macro_1
Created November 21, 2014 20:38
simple variadic macro
#define eprintf(fmt, ...) \
fprintf(stderr, fmt, __VA_ARGS__)
@dhh1128
dhh1128 / fancier_variadic_macro
Created November 21, 2014 20:45
fancier variadic macro using GCC's ##__VA_ARGS__ extension
#define eprintf(fmt, ...) \
fprintf(stderr, fmt, ##__VA_ARGS)
@dhh1128
dhh1128 / paired_sliding_arg_list_macro_trick_1
Last active October 5, 2019 11:46
the "paired, sliding arg list" macro trick
// 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 / paired_sliding_arg_list_macro_trick_2
Last active October 5, 2019 11:45
"paired, sliding arg list" that handles zero args
// 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.