summaryrefslogtreecommitdiff
path: root/src/stage.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2019-05-29 23:19:23 -0700
committerVito Caputo <vcaputo@pengaru.com>2019-05-29 23:19:23 -0700
commit15fa5d5714ce286323f25468284be0b28136a3c8 (patch)
tree07caa9755fd5172d2d99781a4a25b49949c93f6c /src/stage.h
parent7eceed2d2f8b99d8300ae828cb942f44f6351b03 (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.h6
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);
© All Rights Reserved