diff --git a/day2/include/result.h b/day2/include/result.h index 5c0a41b..5fb5e72 100644 --- a/day2/include/result.h +++ b/day2/include/result.h @@ -9,10 +9,12 @@ extern "C" { typedef int64_t result_t; +#define SUM_FIELDS 3 + struct psum { union { struct { result_t forward, up, down; }; - result_t _fields[3]; + result_t _fields[SUM_FIELDS]; }; }; diff --git a/day2/src/p1.c b/day2/src/p1.c index d9f5105..ff44597 100644 --- a/day2/src/p1.c +++ b/day2/src/p1.c @@ -32,26 +32,17 @@ static const unsigned char DIGITS[255] = { ['0' ... '9'] = 1, }; -inline static void _fresolv(result_t f[restrict 3], off_t field, result_t v) +inline static void _fresolv(result_t f[restrict SUM_FIELDS], off_t field, result_t v) { - f[field & 3] += v; + f[field & SUM_FIELDS] += v; } -inline static void fresolv(result_t f[restrict 3], const struct proc* restrict p, result_t v) +inline static void fresolv(result_t f[restrict SUM_FIELDS], const struct proc* restrict p, result_t v) { _fresolv(f, p->field, v); //f[p->field] += v; } -inline static void mresolv(struct psum* restrict add, const struct proc* p, result_t v) -{ - _fresolv((result_t* restrict)add, p->field, v); - //_fresolv((result_t(*)[3])add, p->field, v); - //*(((result_t*restrict)add)+p->field) += v; -} - - - inline static __attribute__((const, always_inline, artificial, gnu_inline)) bool is_digit(char c) { return !!c[DIGITS];