mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 14:54:07 +10:00
String literals are being parsed, compiled and printed, read more
Strings, due to their potentially large size, are stored outside of a routine's code section, in the data section. To access the correct string, you must read the jump index, then the real address from the jump table - and extra layer of indirection will result in more flexible data down the road, I hope. Other changes include: * Added string concat operator .. * Added TOY_STRING_MAX_LENGTH * Strings can't be created or concatenated longer than the max length * The parser will display a warning if the bucket is too small for a string at max length, but it will continue * Added TOY_BUCKET_IDEAL to correspend with max string length * The bucket now allocates an address that is 4-byte aligned * Fixed missing entries in the parser rule table * Corrected some failing TOY_BITNESS tests
This commit is contained in:
@@ -69,33 +69,6 @@ int test_buckets() {
|
||||
Toy_freeBucket(&bucket);
|
||||
}
|
||||
|
||||
//test partitioning a bucket, several times, with an internal expansion, and awkward sizes
|
||||
{
|
||||
//init
|
||||
Toy_Bucket* bucket = Toy_allocateBucket(32);
|
||||
|
||||
//grab some memory
|
||||
void* a = Toy_partitionBucket(&bucket, 16);
|
||||
void* b = Toy_partitionBucket(&bucket, 10);
|
||||
void* c = Toy_partitionBucket(&bucket, 10);
|
||||
void* d = Toy_partitionBucket(&bucket, 10);
|
||||
|
||||
//checks - awkward and mismatched sizes is not officially supported, but it should work
|
||||
if (
|
||||
bucket->capacity != 32 ||
|
||||
bucket->count != 20 ||
|
||||
bucket->next == NULL ||
|
||||
bucket->next->capacity != 32 ||
|
||||
bucket->next->count != 26)
|
||||
{
|
||||
fprintf(stderr, TOY_CC_ERROR "ERROR: failed to expand 'Toy_Bucket' with awkward/mismatched sizes correctly\n" TOY_CC_RESET);
|
||||
return -1;
|
||||
}
|
||||
|
||||
//cleanup
|
||||
Toy_freeBucket(&bucket);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user