/*************************************************************** * by:gannon * * this file is the methods relating to a psudo string list * ***************************************************************/ #define list_delimiter "~" #define PsudoList string #define dummyString "NULL" int psudoListIndex; string setToken(string source, string delimiters, int index, string token){ //returns the string with the token set //only works with one delimiter for now string buffer = ""; int i; int begining_length; for(i = 0; i < index; i++){ buffer = buffer + GetToken(source, delimiters, i) + delimiters; } begining_length = len(buffer) + len(GetToken(source, delimiters, index)); buffer = buffer + token + right(source, len(source) - begining_length); return buffer; } int numberOfElements(PsudoList source){ return TokenCount(source,list_delimiter); } string addAt(PsudoList source,string element, int index){ psudoListIndex = index + 1; string buffer = GetToken(source, list_delimiter, index); string overbuffer; if(index < numberOfElements(source)){ buffer = buffer + list_delimiter + element; } else { overBuffer = source; while(index < numberOfElements(overBuffer)){ overBuffer = addToEnd(overBuffer,dummyString); } return addToEnd(overBuffer,element); } return setToken(source, list_delimiter, index, buffer); } string removeAt(PsudoList source,int index){ //returns a string with the index removed, returns source if index is not valid if(index >= numberOfElements(source)){ return source; } psudoListIndex = index; string buffer = ""; int i; int begining_length; for(i = 0; i < index; i++){ buffer = buffer + GetToken(source, list_delimiter, i) + list_delimiter; } begining_length = len(buffer) + len(GetToken(source, list_delimiter, index)) + 1; buffer = buffer + right(source, len(source) - begining_length); return buffer; } string getElementAt(PsudoList source,int index){ psudoListIndex = index; return GetToken(source,list_delimiter,index); } string getElement(PsudoList source){ string buffer = getElementAt(source,psudoListIndex); psudoListIndex++; return buffer; } string addElement(PsudoList source, string token){ return addAt(source, token, psudoListIndex); } string removeElement(PsudoList source){ return removeAt(source , psudoListIndex); } string addToEnd(PsudoList source, string element){ if(numberOfElements(source) == 0){ return element; } return source + list_delimiter + element; } string addToBegining(PsudoList source, string element){ if(numberOfElements(source) == 0){ return element; } return element + list_delimiter + source; } string removeFromEnd(PsudoList source){ return left(source, len(source) - len(GetToken(source, list_delimiter, numberOfElements(source) - 1)) - 1); } string removeFromBegining(PsudoList source){ return right(source, len(source) - len(GetToken(source, list_delimiter, 0)) - 1); }