mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 03:28:20 +02:00
36 lines
729 B
C++
36 lines
729 B
C++
#include "BlSymTable.h"
|
|
#include "BlContext.h"
|
|
|
|
USING_NS_BF;
|
|
|
|
BlSymTable::BlSymTable()
|
|
{
|
|
#ifdef BL_USE_DENSEMAP_SYMTAB
|
|
mMap.set_empty_key(Val128(-1));
|
|
//mMap.set_empty_key("");
|
|
mMap.min_load_factor(0);
|
|
mMap.resize(100000);
|
|
#endif
|
|
}
|
|
|
|
BlSymbol* BlSymTable::Add(const char* name, bool* isNew)
|
|
{
|
|
Val128 val128 = Hash128(name, (int)strlen(name));
|
|
auto itr = mMap.insert(std::make_pair(val128, (BlSymbol*)NULL));
|
|
if (!itr.second)
|
|
{
|
|
if (isNew != NULL)
|
|
*isNew = false;
|
|
return itr.first->second;
|
|
}
|
|
|
|
if (isNew != NULL)
|
|
*isNew = true;
|
|
auto blSymbol = new BlSymbol();
|
|
itr.first->second = blSymbol;
|
|
blSymbol->mName = name;
|
|
blSymbol->mKind = BlSymKind_Undefined;
|
|
blSymbol->mObjectDataIdx = -1;
|
|
return blSymbol;
|
|
}
|
|
|