From 15fa5d5714ce286323f25468284be0b28136a3c8 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Wed, 29 May 2019 23:19:23 -0700 Subject: 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. --- src/stage.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/stage.h') 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); -- cgit v1.2.3