예제 #1
0
파일: toString.c 프로젝트: blickly/ptii
/*** 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;
}
예제 #2
0
/*** one_Token() ***/
Token* one_Token(Token *a) {
        return $tokenFunc(a::one());
}
예제 #3
0
파일: toString.c 프로젝트: blickly/ptii
/*** toString_Token() ***/
char* toString_Token(Token a) {
        return $tokenFunc(a::toString()).payload.String;
}
예제 #4
0
파일: zero.c 프로젝트: blickly/ptii
/*** zero_Token() ***/
Token zero_Token(Token a) {
        return $tokenFunc(a::zero());
}