reuse the namespace Node for the phrasetable

This commit is contained in:
Krasimir Angelov committed 2026-08-04 15:20:51 +02:00
1 parent 6307d37d0f
commit 21c5280908
3 files changed
+57 -308

No files matched your search

+3 -37
View File
@@ -38,14 +38,7 @@ struct PGF_INTERNAL_DECL PgfItem {
ref<PgfConcrRule> rule;
};
struct PgfPhrasetableNode;
typedef ref<PgfPhrasetableNode> PgfPhrasetable;
struct PGF_INTERNAL_DECL PgfPhrasetableNode {
const static size_t DELTA = 3;
const static size_t RATIO = 2;
public:
struct PGF_INTERNAL_DECL PgfPhrasetableValue {
PgfSymbol sym;
// Here n_items tells us how many actual items there are in
@@ -53,37 +46,10 @@ public:
// how big buffer we have allocated.
size_t n_items;
vector<ref<PgfItem>> items;
txn_t txn_id;
size_t sz;
ref<PgfPhrasetableNode> left;
ref<PgfPhrasetableNode> right;
static
ref<PgfPhrasetableNode> new_node(PgfSymbol sym, size_t n_items);
static
ref<PgfPhrasetableNode> upd_node(ref<PgfPhrasetableNode> node, ref<PgfPhrasetableNode> left, ref<PgfPhrasetableNode> right);
static
ref<PgfPhrasetableNode> balanceL(ref<PgfPhrasetableNode> node);
static
ref<PgfPhrasetableNode> balanceR(ref<PgfPhrasetableNode> node);
static
size_t size(ref<PgfPhrasetableNode> node)
{
if (node == 0)
return 0;
return node->sz;
}
static
void release(ref<PgfPhrasetableNode> node);
};
typedef ref<Node<PgfPhrasetableValue>> PgfPhrasetable;
PgfPhrasetable phrasetable_insert(PgfPhrasetable table,
PgfSymbol sym,
ref<PgfItem> item);