Files
c-string-test/main.c
T

118 lines
3.1 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "tstring.h"
// #define DEFAULT_STRING_SIZE 32
// typedef struct __string {
// char* Characters;
// int Length;
// int ByteCount;
// int Capacity;
// } TString;
// int GetGlyphByteWidth(const char* glyph);
// void AppendGlyph(const char* glyph, TString* string);
// void GetCharByIndex(int index, char characters[8], const TString* string);
// TString* CreateString(void);
// const unsigned char First = 0x70;
// const unsigned char Teo = 0xE0;
// const unsigned char Three = 0xF0;
// const unsigned char Four = 0xF7;
int main(int argc, char** argv) {
char glyph[10] = { 0 };
char characters[8] = { 0 };
int index = 2;
TString* string = TStringCreate();
//0xF0 0xA0 0xBA 0x8C
char* test = u8"\xE5\x87\x84";
char* test2 = u8"\xE3\x81\x84";
char* test4 = u8"\xF0\xA0\xBA\x8C";
char* test5 = "B";
char* test3 = " Just some\0 extra text";
TStringAppendText(test, string);
TStringAppendText(test2, string);
TStringAppendText(test4, string);
TStringAppendText(test5, string);
//GetCharByIndex(index, characters, string);
//GetCharByIndex(3, glyph, string);
// printf("From string index %d: '%s' (string length is %d)\n", index, characters, string->Length);
// printf("And one English character: '%s'\n", glyph);
printf("Full string: '%s'\n", TStringGetString(string));
//fgets(glyph, 10, stdin);
//glyph[strlen(glyph) - 1] = 0;
//printf("Width %d byte(s).\n", GetGlyphByteWidth(glyph));
}
// TString* CreateString(void) {
// TString* string = malloc(sizeof(TString));
// string->Characters = calloc(DEFAULT_STRING_SIZE, sizeof(char));
// string->Capacity = DEFAULT_STRING_SIZE;
// string->ByteCount = 0;
// string->Length = 0;
// return string;
// }
// void AppendGlyph(const char* glyph, TString* string) {
// int length = strlen(glyph);
// memcpy(&string->Characters[string->ByteCount], glyph, length);
// string->ByteCount += length;
// string->Length++;
// }
// void GetCharByIndex(int index, char characters[8], const TString* string) {
// int glyphCount = 0;
// for(int i = 0; i < string->ByteCount;) {
// if (glyphCount == index) {
// memcpy(characters, &string->Characters[i], GetGlyphByteWidth(&string->Characters[i]));
// return;
// }
// glyphCount++;
// i += GetGlyphByteWidth(&string->Characters[i]);
// }
// }
// int GetGlyphByteWidth(const char* glyph) {
// printf("Bytes for '%s': ", glyph);
// for(size_t i = 0; i < strlen(glyph); i++) {
// printf("%02X ", 0xFF & glyph[i]);
// }
// printf("\n");
// unsigned char result = *glyph & 0xFF;
// if ((*glyph & 0x80) == 0) {
// return 1;
// }
// else if ((*glyph & 0xE0) == 0xC0) {
// return 2;
// }
// else if ((*glyph & 0xF0) == 0xE0) {
// return 3;
// }
// else if ((*glyph & 0xF8) == 0xF0) {
// return 4;
// }
// fprintf(stderr, "Failed to get glyph %02X\n", 0xFF & *glyph);
// exit(-1);
// }