HklString* hkl_string_new_from_stream(FILE* stream) { // initialize an 8 character input buffer HklString* string = hkl_string_new_from_utf8(" "); size_t input = 0; int c; while (true) { c = fgetc(stdin); if (c == EOF || c == '\n') break; // if we are about to overflow if (input == string->size) { // double the buffer string->size *= 2; string->utf8_data = realloc(string->utf8_data, string->size); } string->utf8_data[input] = c; input++; } // write a null character string->utf8_data[input] = '\0'; string->length = utf8_length(string->utf8_data); return string; }
HklString* hkl_string_new_from_real(double real) { HklString* string = hkl_string_new_from_utf8(" "); sprintf(string->utf8_data, "%lg", real); string->length = utf8_length(string->utf8_data); return string; }
HklString* hkl_string_new_from_integer(int integer) { // create a buffer to store the integer HklString* string = hkl_string_new_from_utf8(" "); sprintf(string->utf8_data,"%d", integer); string->length = utf8_length(string->utf8_data); return string; }
HklPair* hkl_pair_new_from_utf8(const char* key, void* value) { assert(key != NULL); HklPair* pair = hkl_alloc_object(HklPair); pair->key = hkl_string_new_from_utf8(key); pair->value = value; return pair; }