X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=src%2Fmodel.c;h=4cf2609c7059ac899f722c361512493efcf9a879;hb=01a1cad6cfa515cef48436f26dcfa5c67238187b;hp=ce844bcb63e72ff1d911e5789b4563a093ec35a4;hpb=3bcfb092671765e3ece0c4225c4e69ad960b31cc;p=rodin%2Fchimara.git diff --git a/src/model.c b/src/model.c index ce844bc..4cf2609 100644 --- a/src/model.c +++ b/src/model.c @@ -1,7 +1,13 @@ +#include "stdio.h" #include "glk.h" static winid_t mainwin = NULL; +void sayit(void) +{ + fprintf(stderr, "I'm the interrupt handler!\n"); +} + void glk_main(void) { /* Open the main window. */ @@ -11,43 +17,64 @@ void glk_main(void) nothing we can do without it, so exit. */ return; } - - char buffer[256]; + + glui32 buffer[1024]; int i; - for(i = 0; i < 256; i++) - buffer[i] = (char)glk_char_to_upper(i); + for(i = 0; i < 512; i++) { + buffer[i * 2] = i + 33; + buffer[i * 2 + 1] = 32; + } - /*frefid_t f = glk_fileref_create_temp(fileusage_BinaryMode, 0); +/* frefid_t f = glk_fileref_create_temp(fileusage_BinaryMode, 0); if(f) - {*/ - - char memorybuffer[100]; - - strid_t s = glk_stream_open_memory(memorybuffer, 100, - filemode_ReadWrite, 0); - glk_stream_set_current(s); - glk_put_char('X'); - glk_put_string("Philip en Marijn zijn vet goed.\n"); - glk_put_buffer(buffer, 256); + { + strid_t s = glk_stream_open_file(f, filemode_ReadWrite, 0);*/ + glui32 membuf[512]; + strid_t s = glk_stream_open_memory_uni(membuf, 512, filemode_ReadWrite, 0); + glk_stream_set_current(s); + + glk_put_char_uni('X'); + glk_put_string("Philip en Marijn zijn vet goed.\n"); + glk_put_buffer_uni(buffer, 1024); - glk_stream_set_position(s, 0, seekmode_Start); - glk_set_window(mainwin); - glk_put_char( glk_get_char_stream(s) ); - glk_put_char('\n'); - g_printerr("Line read: %d\n", glk_get_line_stream(s, buffer, 256)); - glk_put_string(buffer); - int count = glk_get_buffer_stream(s, buffer, 256); - g_printerr("Buffer read: %d\n", count); - glk_put_buffer(buffer, count); - - stream_result_t result; - glk_stream_close(s, &result); - - g_printerr("Read count: %d\nWrite count: %d\n", result.readcount, - result.writecount); -/* - glk_fileref_destroy(f); + glk_stream_set_position(s, 0, seekmode_Start); + glk_set_window(mainwin); + glk_put_char_uni( glk_get_char_stream_uni(s) ); + glk_put_char('\n'); + g_printerr( "Line read: %d\n", glk_get_line_stream_uni(s, buffer, 1024) ); + g_printerr("string[5] = %X\n", buffer[5]); + glk_put_string_uni(buffer); + int count = glk_get_buffer_stream_uni(s, buffer, 1024); + g_printerr("Buffer read: %d\n", count); + glk_put_string("\n---SOME CHARACTERS---\n"); + glk_put_buffer_uni(buffer, count); + glk_put_string("\n---THE SAME CHARACTERS IN UPPERCASE---\n"); + int newcount = glk_buffer_to_upper_case_uni(buffer, 1024, 1024); + glk_put_buffer_uni(buffer, newcount); + + stream_result_t result; + glk_stream_close(s, &result); + + g_printerr("Read count: %d\nWrite count: %d\n", result.readcount, result.writecount); +/* glk_fileref_destroy(f); }*/ + + glk_set_interrupt_handler(&sayit); + + event_t ev; + while(1) { + glk_put_string("\nprompt> "); + glk_request_line_event_uni(mainwin, buffer, 1024, 0); + glk_select(&ev); + switch(ev.type) { + default: + printf("Received event:\n"); + printf("Type: %d\n", ev.type); + printf("Win: %d\n", glk_window_get_rock(ev.win) ); + printf("Var1: %d\n", ev.val1); + printf("Var2: %d\n", ev.val2); + } + } /* Bye bye */ glk_exit();