size_t SymbolTable::add(std::string str) { bytes_used_ += (str.size() + sizeof(str)); strings.push_back(str); kinds.push_back(detect_kind(str.c_str(), str.size())); return strings.size() - 1; }
size_t SymbolTable::add(std::string str, int enc) { bytes_used_ += (str.size() + sizeof(std::string) + sizeof(int) + sizeof(Kind)); strings.push_back(str); encodings.push_back(enc); kinds.push_back(detect_kind(str.data(), str.size())); return strings.size() - 1; }
SymbolTable::Kind SymbolTable::kind(STATE, const Symbol* sym) { utilities::thread::SpinLock::LockGuard guard(lock_); Kind k = kinds[sym->index()]; if(k == eUnknown) { k = kinds[sym->index()] = detect_kind(state, sym); } return k; }
size_t SymbolTable::add(std::string str) { strings.push_back(str); kinds.push_back(detect_kind(str.c_str(), str.size())); return strings.size() - 1; }