[BACK]Return to bconv.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_math

Annotation of OpenXM/src/ox_math/bconv.c, Revision 1.1

1.1     ! ohara       1: /* -*- mode: C; coding: euc-japan -*- */
        !             2: /* $OpenXM$ */
        !             3: /* $Id: bconv.c,v 1.1 1999/09/30 08:25:31 ohara Exp ohara $ */
        !             4: /*
        !             5: OX  expression -> バイト列
        !             6: CMO expression -> バイト列
        !             7: コンバータ
        !             8: */
        !             9:
        !            10: #include <stdio.h>
        !            11: #include <stdlib.h>
        !            12: #include "ox.h"
        !            13: #include "parse.h"
        !            14:
        !            15: char* dump_ox_data(char* array, ox_data* m);
        !            16: char* dump_ox_command(char* array, ox_command* m);
        !            17:
        !            18: int display(ox *m)
        !            19: {
        !            20:     int i;
        !            21:     int len = 0;
        !            22:     unsigned char* array;
        !            23:
        !            24:     switch(m->tag) {
        !            25:     case OX_DATA:
        !            26:         len = sizeof(int) + sizeof(int) + cmolen_cmo(((ox_data *)m)->cmo);
        !            27:         array = malloc(len);
        !            28:         dump_ox_data(array, (ox_data *)m);
        !            29:         break;
        !            30:     case OX_COMMAND:
        !            31:         len = sizeof(int) + sizeof(int) + sizeof(int);
        !            32:         array = malloc(len);
        !            33:         dump_ox_command(array, (ox_command *)m);
        !            34:         break;
        !            35:     default:
        !            36:         len = cmolen_cmo(m);
        !            37:         array = malloc(len);
        !            38:         dump_cmo(array, m);
        !            39:     }
        !            40:
        !            41:     for(i=0; i<len; i++) {
        !            42:         fprintf(stdout, "%02x ", array[i]);
        !            43:         if(i%20==19) {
        !            44:             fprintf(stdout, "\n");
        !            45:         }
        !            46:     }
        !            47:     fprintf(stdout, "\n");
        !            48: }
        !            49:
        !            50: #define SIZE_CMDLINE  4096
        !            51:
        !            52: char cmdline[SIZE_CMDLINE];
        !            53:
        !            54: int prompt(char* s, int size)
        !            55: {
        !            56:     fprintf(stdout, "> ");
        !            57:     fgets(s, size, stdin);
        !            58:     setmode_mygetc(s, size);
        !            59: }
        !            60:
        !            61: int main()
        !            62: {
        !            63:     cmo *m;
        !            64:     setbuf(stderr, NULL);
        !            65:     setbuf(stdout, NULL);
        !            66:
        !            67:     cmo_addrev = 1;
        !            68:     setgetc(mygetc);
        !            69:
        !            70:     while(1) {
        !            71:         prompt(cmdline, SIZE_CMDLINE);
        !            72:         if ((m = parse()) == NULL) {
        !            73:             break;
        !            74:         }
        !            75:         display(m);
        !            76:     }
        !            77:     return 0;
        !            78: }
        !            79:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>