diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2019-05-29 23:19:23 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2019-05-29 23:19:23 -0700 |
commit | 15fa5d5714ce286323f25468284be0b28136a3c8 (patch) | |
tree | 07caa9755fd5172d2d99781a4a25b49949c93f6c /src/stage.h | |
parent | 7eceed2d2f8b99d8300ae828cb942f44f6351b03 (diff) |
libstage: s/match/lookup/g
Rather than having a per-node match function to facilitate stage
lookups by opaque keys returning a boolean result, make it a
more general lookup returning a stage_t *.
It's still basically a boolean, where NULL is a miss. But by
returning the stage_t *, it enables things like encapsulated
stages for caching purposes where a node might represent an
isolated stage it can propagate lookups down to and return
the results out of.
When the match function only returned a 1/0, and the outer
lookup machinery returned the current stage node on a hit,
there was no way to hand out arbitrary stage pointers.
Diffstat (limited to 'src/stage.h')
-rw-r--r-- | src/stage.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/stage.h b/src/stage.h index 5416af6..c5d0173 100644 --- a/src/stage.h +++ b/src/stage.h @@ -24,10 +24,10 @@ typedef struct stage_t stage_t; typedef void (stage_render_func_t)(const stage_t *stage, void *object, float alpha, void *render_ctxt); typedef void (stage_free_func_t)(const stage_t *stage, void *object); -typedef int (stage_match_func_t)(const stage_t *stage, void *object, void *key); +typedef stage_t * (stage_lookup_func_t)(const stage_t *stage, void *object, void *key); -stage_t * stage_new(stage_t *parent, int layer, const char *name, void *object, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_match_func_t *match_func); -void stage_replace(stage_t *stage, const char *name, void *object, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_match_func_t *match_func); +stage_t * stage_new(stage_t *parent, int layer, const char *name, void *object, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_lookup_func_t *lookup_func); +void stage_replace(stage_t *stage, const char *name, void *object, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_lookup_func_t *lookup_func); stage_t * stage_free(stage_t *stage); void stage_render(const stage_t *stage, void *render_ctxt); void stage_clear(stage_t *stage); |