本文整理汇总了C++中TABLE::SetHead方法的典型用法代码示例。如果您正苦于以下问题:C++ TABLE::SetHead方法的具体用法?C++ TABLE::SetHead怎么用?C++ TABLE::SetHead使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TABLE
的用法示例。
在下文中一共展示了TABLE::SetHead方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: insert
void TABLE::insert(SYM *sp)
{
int nn;
TypeArray *ta = sp->GetProtoTypes();
TABLE *tab = this;
SYM *p;
int s1,s2,s3;
std::string nm;
// std::string sig;
if (sp == nullptr || this == nullptr ) {
dfs.printf("Null pointer at insert\n");
throw new C64PException(ERR_NULLPOINTER,1);
}
if (this==&tagtable) {
dfs.printf("Insert into tagtable:%s|\n",(char *)sp->name->c_str());
}
else
dfs.printf("Insert %s into %p", (char *)sp->name->c_str(), (char *)this);
dfs.printf("(%s)\n",owner ? (char *)SYM::GetPtr(owner)->name->c_str(): (char *)"");
// sig = sp->BuildSignature();
if (tab==&gsyms[0]) {
dfs.printf("Insert into global table\n");
s1 = hashadd((char *)sp->name->c_str());
s2 = hashadd((char *)sp->name2->c_str());
s3 = hashadd((char *)sp->name3->c_str());
// tab = &gsyms[(s1&s2)|(s1&s3)|(s2&s3)];
tab = &gsyms[s1];
}
nm = *sp->name;
// The symbol may not have a type if it's just a label. Find doens't
// look at the return type parameter anyway, so we just set it to bt_long
// if tp isn't set.
nn = tab->Find(nm,sp->tp ? sp->tp->typeno : bt_long,ta,true);
if(nn == 0) {
if( tab->head == 0) {
tab->SetHead(sp->GetIndex());
tab->SetTail(sp->GetIndex());
}
else {
sp->GetPtr(tab->tail)->next = sp->GetIndex();
tab->SetTail(sp->GetIndex());
}
sp->SetNext(0);
dfs.printf("At insert:\n");
sp->GetProtoTypes()->Print();
}
else
error(ERR_DUPSYM);
if (ta)
delete ta;
// p = tab->GetHead();
// while(p) {
// printf("Xele:%p|%s|\r\n", p, p->name.c_str());
// p = p->GetNext();
// }
}