20std::vector<Entry>& table() {
21 static std::vector<Entry> t;
30 if (existing >= 0)
return existing;
34 Entry& e = table().back();
35 e.ops.kind = e.name.c_str();
36 return int(table().size()) - 1;
41 const auto& t = table();
42 for (
size_t i = 0; i < t.size(); ++i)
43 if (t[i].
name ==
kind)
return int(i);
48 const auto& t = table();
49 if (kindId < 0 ||
size_t(kindId) >= t.size())
return nullptr;
50 return &t[size_t(kindId)].ops;
const LinkOps * linkOps(int kindId)
const char * linkKindName(int kindId)
int registerLinkKind(const LinkOps &ops)
int findLinkKind(const char *kind)
void(* pushWorld)(const SceneNode &node, void *target)