summaryrefslogtreecommitdiff
path: root/support/dktools/test-dk4maami.c
blob: dc7bed5797c3c7be84e5186c7115c3828164420b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
	WARNING: This file was generated by dkct.
	Changes you make here will be lost if dkct is run again!
	You should modify the original source and run dkct on it.
	Original source: test-dk4maami.ctr
*/

/**	@file test-dk4maami.c The test-dk4maami module.
*/


#line 1 "test-dk4maami.ctr"
#include "dk4conf.h"

#include <stdio.h>

#include "dk4error.h"
#include "dk4maami.h"



#line 9 "test-dk4maami.ctr"


static
void
show_error(dk4_er_t *erp)
{
  if (DK4_E_NONE != erp->ec) {
    switch(erp->ec) {
      case DK4_E_MATH_OVERFLOW: {
        printf(" overflow");
      } break;
      case DK4_E_MATH_DIVZERO: {
        printf(" divzero");
      } break;
      default: {
        printf(" %d", erp->ec);
      } break;
    }
  }
}



int main(void)
{
  char		buffer[128];	/* Input line buffer */
  dk4_er_t	er;		/* Error report */
  intmax_t		i1;		/* First operand */
  intmax_t		i2;		/* Second operand */
  int		exc;		/* Exit code */
  int		cc;		/* Flag: Can continue */
  intmax_t		c1;		/* First operand as char */
  intmax_t		c2;		/* Second operand as char */
  intmax_t		c3;		/* Result as char */

  

#line 45 "test-dk4maami.ctr"
  

#line 46 "test-dk4maami.ctr"
  exc = 0;
  cc = 1;
  while((1 == cc) && (fgets(buffer, sizeof(buffer), stdin))) {
    if (sscanf(buffer, "%jd %jd", &i1, &i2) == 2) {
      c1 = i1;
      c2 = i2;
      printf("%jd %jd\n", c1, c2);
      dk4error_init(&er);
      c3 = dk4ma_intmax_t_add(c1, c2, &er);
      printf("\t+ %jd", c3);
      show_error(&er);
      printf("\n");

      dk4error_init(&er);
      c3 = dk4ma_intmax_t_sub(c1, c2, &er);
      printf("\t- %jd", c3);
      show_error(&er);
      printf("\n");

      dk4error_init(&er);
      c3 = dk4ma_intmax_t_mul(c1, c2, &er);
      printf("\t* %jd", c3);
      show_error(&er);
      printf("\n");

      dk4error_init(&er);
      c3 = dk4ma_intmax_t_div(c1, c2, &er);
      printf("\t/ %jd", c3);
      show_error(&er);
      printf("\n");
    } else {
      exc = 1;
      fprintf(stderr, "test-dk4maac:ERROR: Invalid input line!\n");
      fflush(stderr);
      cc = 0;
    }
  }
  

#line 84 "test-dk4maami.ctr"
  

#line 85 "test-dk4maami.ctr"
  return exc;
}