/*** toString_Array() ***/ char* toString_Array(Token thisToken) { int i; int currentSize, allocatedSize; char* string; Token elementString; allocatedSize = 256; string = (char*) malloc(allocatedSize); string[0] = '{'; string[1] = '\0'; // Space for '{', '}', and '\0' characters. currentSize = 3; for (i = 0; i < thisToken.payload.Array->size; i++) { // Calculate the require storage size. elementString = $tokenFunc(Array_get(thisToken, i)::toString()); //functionTable[(int)thisToken.payload.Array->elements[i].type][FUNC_toString](thisToken.payload.Array->elements[i]); currentSize += strlen(elementString.payload.String); if (i != 0) { currentSize += 2; } // Re-allocate storage. if (currentSize > allocatedSize) { allocatedSize *= 2; string = (char*) realloc(string, allocatedSize); } // Concat the element strings and separators. if (i != 0) { strcat(string, ", "); } strcat(string, elementString.payload.String); free(elementString.payload.String); } strcat(string, "}"); return string; }
/*** one_Token() ***/ Token* one_Token(Token *a) { return $tokenFunc(a::one()); }
/*** toString_Token() ***/ char* toString_Token(Token a) { return $tokenFunc(a::toString()).payload.String; }
/*** zero_Token() ***/ Token zero_Token(Token a) { return $tokenFunc(a::zero()); }