Annotation of OpenXM/src/ox_math/bconv.c, Revision 1.4
1.1 ohara 1: /* -*- mode: C; coding: euc-japan -*- */
1.4 ! ohara 2: /* $OpenXM: OpenXM/src/ox_math/bconv.c,v 1.3 1999/11/02 21:15:02 ohara Exp $ */
! 3:
1.1 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:
1.3 ohara 15: static int display(ox *m)
1.1 ohara 16: {
17: int i;
18: int len = 0;
1.3 ohara 19: unsigned char* d_buff;
20:
1.1 ohara 21: switch(m->tag) {
22: case OX_DATA:
23: len = sizeof(int) + sizeof(int) + cmolen_cmo(((ox_data *)m)->cmo);
1.3 ohara 24: d_buff = malloc(len);
1.4 ! ohara 25: init_dump_buffer(d_buff);
1.3 ohara 26: dump_ox_data((ox_data *)m);
1.1 ohara 27: break;
28: case OX_COMMAND:
29: len = sizeof(int) + sizeof(int) + sizeof(int);
1.3 ohara 30: d_buff = malloc(len);
1.4 ! ohara 31: init_dump_buffer(d_buff);
1.3 ohara 32: dump_ox_command((ox_command *)m);
1.1 ohara 33: break;
34: default:
1.3 ohara 35: len = cmolen_cmo((cmo *)m);
36: d_buff = malloc(len);
1.4 ! ohara 37: init_dump_buffer(d_buff);
1.3 ohara 38: dump_cmo((cmo *)m);
1.1 ohara 39: }
40:
41: for(i=0; i<len; i++) {
1.3 ohara 42: fprintf(stdout, "%02x ", d_buff[i]);
43: if(i%20 == 19) {
1.1 ohara 44: fprintf(stdout, "\n");
45: }
46: }
1.4 ! ohara 47: if(i%20 != 19) {
! 48: fprintf(stdout, "\n");
! 49: }
! 50: free(d_buff);
1.1 ohara 51: }
52:
1.3 ohara 53: #define SIZE_CMDLINE 8192
1.1 ohara 54:
1.3 ohara 55: static int size = SIZE_CMDLINE;
56: static char cmdline[SIZE_CMDLINE];
1.1 ohara 57:
1.3 ohara 58: static int prompt()
1.1 ohara 59: {
60: fprintf(stdout, "> ");
1.3 ohara 61: fgets(cmdline, size, stdin);
62: setmode_mygetc(cmdline, size);
1.1 ohara 63: }
64:
65: int main()
66: {
67: cmo *m;
68: setbuf(stderr, NULL);
69: setbuf(stdout, NULL);
70:
1.4 ! ohara 71: setflag_parse(PFLAG_ADDREV);
1.1 ohara 72: setgetc(mygetc);
73:
1.3 ohara 74: for(prompt(); (m = parse()) != NULL; prompt()) {
1.1 ohara 75: display(m);
76: }
77: return 0;
78: }
79:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>