Skip to main content

c_src/libwrouter/src/builder.h

#pragma once
#include "symbol.h"
#include "router.h"
#include "wrouter.h"
#include "token.h"
#include "segment.h"
#include <stdint.h>
#include <stdbool.h>

typedef struct {
    token_t *tokens;
    size_t token_count;
} preroute_t;

typedef struct {
    preroute_t *base;
    size_t count;
    size_t capacity;
} preroute_table_t;

struct wrouter_builder {
    segment_t *root;
    preroute_table_t routes;
    arena_t arena;
    symbol_table_t literals;
    symbol_table_t params;
    wrouter_route_t fallback;
    wrouter_reference_fn retain;
    wrouter_reference_fn release;
    wrouter_param_syntax_t param_syntax;
    bool corrupted;
};