C:\Users\brock\Documents\CSCI 255\NetBeans\RL Assign\RLvartab.c |
#include "RLvartab.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
RLVariableTable RLVTcreate(void) {
int i ;
RLVariableTable r = (RLVariableTable)malloc(sizeof *r) ;
r->numberItems = 0 ;
for(i=0; i<26; ++i) {
r->Heads[i].next = &r->Heads[i] ;
r->Heads[i].variable = (struct RLAssignmentNode *) NULL ;
r->Heads[i].value = - 255 * 209 ;
}
return r ;
}
struct RLVariableNode *RLVTinsert(
RLVariableTable t,
struct RLAssignmentNode *p) {
int lastCmp ;
char *SearchVar ;
struct RLVariableNode *dummyNode, *prevNode, *newNode ;
SearchVar = p->value.Target ;
dummyNode = &t->Heads[SearchVar[0]-'A'] ;
prevNode = dummyNode ;
while (prevNode->next != dummyNode
&& (lastCmp=(strncmp(SearchVar,
prevNode->next->variable->value.Target,
RLVARSIZE)))<0) {
prevNode = prevNode->next ;
}
if (prevNode->next != dummyNode && lastCmp == 0)
return prevNode->next ;
else {
newNode = (struct RLVariableNode *)malloc(sizeof *newNode) ;
newNode->variable = p ;
++(t->numberItems) ;
return newNode;
}
}
struct RLVariableNode *RLVTlookup(RLVariableTable t, char *SearchVar) {
struct RLVariableNode *dummyNode, *presNode ;
int lastCmp ;
dummyNode = &t->Heads[SearchVar[0]-'A'] ;
presNode = dummyNode->next ;
return (struct RLVariableNode *)NULL ;
}
int RLVTgetItemCount (RLVariableTable t) {
return t->numberItems ;
}