Mercurial > octave-nkf
comparison liboctave/oct-inttypes.h @ 5828:22e23bee74c8
[project @ 2006-05-23 06:05:14 by jwe]
author | jwe |
---|---|
date | Tue, 23 May 2006 06:05:14 +0000 |
parents | 667ad2becb63 |
children | da843f35775c |
comparison
equal
deleted
inserted
replaced
5827:1fe78adb91bc | 5828:22e23bee74c8 |
---|---|
25 #define octave_inttypes_h 1 | 25 #define octave_inttypes_h 1 |
26 | 26 |
27 #include <limits> | 27 #include <limits> |
28 #include <iostream> | 28 #include <iostream> |
29 | 29 |
30 #include "data-conv.h" | 30 #include "oct-types.h" |
31 #include "lo-ieee.h" | 31 #include "lo-ieee.h" |
32 #include "lo-mappers.h" | 32 #include "lo-mappers.h" |
33 | |
34 typedef signed char octave_int8_t; | |
35 typedef TWO_BYTE_INT octave_int16_t; | |
36 typedef FOUR_BYTE_INT octave_int32_t; | |
37 typedef EIGHT_BYTE_INT octave_int64_t; | |
38 | |
39 typedef unsigned char octave_uint8_t; | |
40 typedef unsigned TWO_BYTE_INT octave_uint16_t; | |
41 typedef unsigned FOUR_BYTE_INT octave_uint32_t; | |
42 typedef unsigned EIGHT_BYTE_INT octave_uint64_t; | |
43 | 33 |
44 template <class T1, class T2> | 34 template <class T1, class T2> |
45 class | 35 class |
46 octave_int_binop_traits | 36 octave_int_binop_traits |
47 { | 37 { |
56 { \ | 46 { \ |
57 public: \ | 47 public: \ |
58 typedef T3 TR; \ | 48 typedef T3 TR; \ |
59 } | 49 } |
60 | 50 |
61 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_int8_t, octave_int8_t); | 51 OCTAVE_INT_BINOP_TRAIT (int8_t, int8_t, int8_t); |
62 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_int16_t, octave_int8_t); | 52 OCTAVE_INT_BINOP_TRAIT (int8_t, int16_t, int8_t); |
63 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_int32_t, octave_int8_t); | 53 OCTAVE_INT_BINOP_TRAIT (int8_t, int32_t, int8_t); |
64 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_int64_t, octave_int8_t); | 54 OCTAVE_INT_BINOP_TRAIT (int8_t, int64_t, int8_t); |
65 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_uint8_t, octave_int8_t); | 55 OCTAVE_INT_BINOP_TRAIT (int8_t, uint8_t, int8_t); |
66 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_uint16_t, octave_int8_t); | 56 OCTAVE_INT_BINOP_TRAIT (int8_t, uint16_t, int8_t); |
67 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_uint32_t, octave_int8_t); | 57 OCTAVE_INT_BINOP_TRAIT (int8_t, uint32_t, int8_t); |
68 OCTAVE_INT_BINOP_TRAIT (octave_int8_t, octave_uint64_t, octave_int8_t); | 58 OCTAVE_INT_BINOP_TRAIT (int8_t, uint64_t, int8_t); |
69 | 59 |
70 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_int8_t, octave_int16_t); | 60 OCTAVE_INT_BINOP_TRAIT (int16_t, int8_t, int16_t); |
71 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_int16_t, octave_int16_t); | 61 OCTAVE_INT_BINOP_TRAIT (int16_t, int16_t, int16_t); |
72 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_int32_t, octave_int16_t); | 62 OCTAVE_INT_BINOP_TRAIT (int16_t, int32_t, int16_t); |
73 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_int64_t, octave_int16_t); | 63 OCTAVE_INT_BINOP_TRAIT (int16_t, int64_t, int16_t); |
74 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_uint8_t, octave_int16_t); | 64 OCTAVE_INT_BINOP_TRAIT (int16_t, uint8_t, int16_t); |
75 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_uint16_t, octave_int16_t); | 65 OCTAVE_INT_BINOP_TRAIT (int16_t, uint16_t, int16_t); |
76 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_uint32_t, octave_int16_t); | 66 OCTAVE_INT_BINOP_TRAIT (int16_t, uint32_t, int16_t); |
77 OCTAVE_INT_BINOP_TRAIT (octave_int16_t, octave_uint64_t, octave_int16_t); | 67 OCTAVE_INT_BINOP_TRAIT (int16_t, uint64_t, int16_t); |
78 | 68 |
79 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_int8_t, octave_int32_t); | 69 OCTAVE_INT_BINOP_TRAIT (int32_t, int8_t, int32_t); |
80 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_int16_t, octave_int32_t); | 70 OCTAVE_INT_BINOP_TRAIT (int32_t, int16_t, int32_t); |
81 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_int32_t, octave_int32_t); | 71 OCTAVE_INT_BINOP_TRAIT (int32_t, int32_t, int32_t); |
82 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_int64_t, octave_int32_t); | 72 OCTAVE_INT_BINOP_TRAIT (int32_t, int64_t, int32_t); |
83 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_uint8_t, octave_int32_t); | 73 OCTAVE_INT_BINOP_TRAIT (int32_t, uint8_t, int32_t); |
84 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_uint16_t, octave_int32_t); | 74 OCTAVE_INT_BINOP_TRAIT (int32_t, uint16_t, int32_t); |
85 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_uint32_t, octave_int32_t); | 75 OCTAVE_INT_BINOP_TRAIT (int32_t, uint32_t, int32_t); |
86 OCTAVE_INT_BINOP_TRAIT (octave_int32_t, octave_uint64_t, octave_int32_t); | 76 OCTAVE_INT_BINOP_TRAIT (int32_t, uint64_t, int32_t); |
87 | 77 |
88 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_int8_t, octave_int64_t); | 78 OCTAVE_INT_BINOP_TRAIT (int64_t, int8_t, int64_t); |
89 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_int16_t, octave_int64_t); | 79 OCTAVE_INT_BINOP_TRAIT (int64_t, int16_t, int64_t); |
90 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_int32_t, octave_int64_t); | 80 OCTAVE_INT_BINOP_TRAIT (int64_t, int32_t, int64_t); |
91 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_int64_t, octave_int64_t); | 81 OCTAVE_INT_BINOP_TRAIT (int64_t, int64_t, int64_t); |
92 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_uint8_t, octave_int64_t); | 82 OCTAVE_INT_BINOP_TRAIT (int64_t, uint8_t, int64_t); |
93 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_uint16_t, octave_int64_t); | 83 OCTAVE_INT_BINOP_TRAIT (int64_t, uint16_t, int64_t); |
94 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_uint32_t, octave_int64_t); | 84 OCTAVE_INT_BINOP_TRAIT (int64_t, uint32_t, int64_t); |
95 OCTAVE_INT_BINOP_TRAIT (octave_int64_t, octave_uint64_t, octave_int64_t); | 85 OCTAVE_INT_BINOP_TRAIT (int64_t, uint64_t, int64_t); |
96 | 86 |
97 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_int8_t, octave_int8_t); | 87 OCTAVE_INT_BINOP_TRAIT (uint8_t, int8_t, int8_t); |
98 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_int16_t, octave_int8_t); | 88 OCTAVE_INT_BINOP_TRAIT (uint8_t, int16_t, int8_t); |
99 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_int32_t, octave_int8_t); | 89 OCTAVE_INT_BINOP_TRAIT (uint8_t, int32_t, int8_t); |
100 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_int64_t, octave_int8_t); | 90 OCTAVE_INT_BINOP_TRAIT (uint8_t, int64_t, int8_t); |
101 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_uint8_t, octave_uint8_t); | 91 OCTAVE_INT_BINOP_TRAIT (uint8_t, uint8_t, uint8_t); |
102 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_uint16_t, octave_uint8_t); | 92 OCTAVE_INT_BINOP_TRAIT (uint8_t, uint16_t, uint8_t); |
103 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_uint32_t, octave_uint8_t); | 93 OCTAVE_INT_BINOP_TRAIT (uint8_t, uint32_t, uint8_t); |
104 OCTAVE_INT_BINOP_TRAIT (octave_uint8_t, octave_uint64_t, octave_uint8_t); | 94 OCTAVE_INT_BINOP_TRAIT (uint8_t, uint64_t, uint8_t); |
105 | 95 |
106 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_int8_t, octave_int16_t); | 96 OCTAVE_INT_BINOP_TRAIT (uint16_t, int8_t, int16_t); |
107 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_int16_t, octave_int16_t); | 97 OCTAVE_INT_BINOP_TRAIT (uint16_t, int16_t, int16_t); |
108 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_int32_t, octave_int16_t); | 98 OCTAVE_INT_BINOP_TRAIT (uint16_t, int32_t, int16_t); |
109 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_int64_t, octave_int16_t); | 99 OCTAVE_INT_BINOP_TRAIT (uint16_t, int64_t, int16_t); |
110 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_uint8_t, octave_uint16_t); | 100 OCTAVE_INT_BINOP_TRAIT (uint16_t, uint8_t, uint16_t); |
111 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_uint16_t, octave_uint16_t); | 101 OCTAVE_INT_BINOP_TRAIT (uint16_t, uint16_t, uint16_t); |
112 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_uint32_t, octave_uint16_t); | 102 OCTAVE_INT_BINOP_TRAIT (uint16_t, uint32_t, uint16_t); |
113 OCTAVE_INT_BINOP_TRAIT (octave_uint16_t, octave_uint64_t, octave_uint16_t); | 103 OCTAVE_INT_BINOP_TRAIT (uint16_t, uint64_t, uint16_t); |
114 | 104 |
115 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_int8_t, octave_int32_t); | 105 OCTAVE_INT_BINOP_TRAIT (uint32_t, int8_t, int32_t); |
116 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_int16_t, octave_int32_t); | 106 OCTAVE_INT_BINOP_TRAIT (uint32_t, int16_t, int32_t); |
117 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_int32_t, octave_int32_t); | 107 OCTAVE_INT_BINOP_TRAIT (uint32_t, int32_t, int32_t); |
118 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_int64_t, octave_int32_t); | 108 OCTAVE_INT_BINOP_TRAIT (uint32_t, int64_t, int32_t); |
119 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_uint8_t, octave_uint32_t); | 109 OCTAVE_INT_BINOP_TRAIT (uint32_t, uint8_t, uint32_t); |
120 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_uint16_t, octave_uint32_t); | 110 OCTAVE_INT_BINOP_TRAIT (uint32_t, uint16_t, uint32_t); |
121 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_uint32_t, octave_uint32_t); | 111 OCTAVE_INT_BINOP_TRAIT (uint32_t, uint32_t, uint32_t); |
122 OCTAVE_INT_BINOP_TRAIT (octave_uint32_t, octave_uint64_t, octave_uint32_t); | 112 OCTAVE_INT_BINOP_TRAIT (uint32_t, uint64_t, uint32_t); |
123 | 113 |
124 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_int8_t, octave_int64_t); | 114 OCTAVE_INT_BINOP_TRAIT (uint64_t, int8_t, int64_t); |
125 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_int16_t, octave_int64_t); | 115 OCTAVE_INT_BINOP_TRAIT (uint64_t, int16_t, int64_t); |
126 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_int32_t, octave_int64_t); | 116 OCTAVE_INT_BINOP_TRAIT (uint64_t, int32_t, int64_t); |
127 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_int64_t, octave_int64_t); | 117 OCTAVE_INT_BINOP_TRAIT (uint64_t, int64_t, int64_t); |
128 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_uint8_t, octave_uint64_t); | 118 OCTAVE_INT_BINOP_TRAIT (uint64_t, uint8_t, uint64_t); |
129 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_uint16_t, octave_uint64_t); | 119 OCTAVE_INT_BINOP_TRAIT (uint64_t, uint16_t, uint64_t); |
130 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_uint32_t, octave_uint64_t); | 120 OCTAVE_INT_BINOP_TRAIT (uint64_t, uint32_t, uint64_t); |
131 OCTAVE_INT_BINOP_TRAIT (octave_uint64_t, octave_uint64_t, octave_uint64_t); | 121 OCTAVE_INT_BINOP_TRAIT (uint64_t, uint64_t, uint64_t); |
132 | 122 |
133 template <class T1, class T2> | 123 template <class T1, class T2> |
134 inline T2 | 124 inline T2 |
135 octave_int_fit_to_range (const T1& x, const T2& mn, const T2& mx) | 125 octave_int_fit_to_range (const T1& x, const T2& mn, const T2& mx) |
136 { | 126 { |
395 is >> tmp; | 385 is >> tmp; |
396 ival = tmp; | 386 ival = tmp; |
397 return is; | 387 return is; |
398 } | 388 } |
399 | 389 |
400 typedef octave_int<octave_int8_t> octave_int8; | 390 typedef octave_int<int8_t> octave_int8; |
401 typedef octave_int<octave_int16_t> octave_int16; | 391 typedef octave_int<int16_t> octave_int16; |
402 typedef octave_int<octave_int32_t> octave_int32; | 392 typedef octave_int<int32_t> octave_int32; |
403 typedef octave_int<octave_int64_t> octave_int64; | 393 typedef octave_int<int64_t> octave_int64; |
404 | 394 |
405 typedef octave_int<octave_uint8_t> octave_uint8; | 395 typedef octave_int<uint8_t> octave_uint8; |
406 typedef octave_int<octave_uint16_t> octave_uint16; | 396 typedef octave_int<uint16_t> octave_uint16; |
407 typedef octave_int<octave_uint32_t> octave_uint32; | 397 typedef octave_int<uint32_t> octave_uint32; |
408 typedef octave_int<octave_uint64_t> octave_uint64; | 398 typedef octave_int<uint64_t> octave_uint64; |
409 | 399 |
410 #define OCTAVE_INT_BIN_OP(OP) \ | 400 #define OCTAVE_INT_BIN_OP(OP) \ |
411 template <class T1, class T2> \ | 401 template <class T1, class T2> \ |
412 octave_int<typename octave_int_binop_traits<T1, T2>::TR> \ | 402 octave_int<typename octave_int_binop_traits<T1, T2>::TR> \ |
413 operator OP (const octave_int<T1>& x, const octave_int<T2>& y) \ | 403 operator OP (const octave_int<T1>& x, const octave_int<T2>& y) \ |
580 | 570 |
581 #define OCTAVE_TYPE1_CMP_OP_DECLS(UT, ST) \ | 571 #define OCTAVE_TYPE1_CMP_OP_DECLS(UT, ST) \ |
582 OCTAVE_US_TYPE1_CMP_OP_DECLS (UT, ST) \ | 572 OCTAVE_US_TYPE1_CMP_OP_DECLS (UT, ST) \ |
583 OCTAVE_SU_TYPE1_CMP_OP_DECLS (ST, UT) | 573 OCTAVE_SU_TYPE1_CMP_OP_DECLS (ST, UT) |
584 | 574 |
585 OCTAVE_TYPE1_CMP_OP_DECLS (octave_uint32_t, octave_int8_t) | 575 OCTAVE_TYPE1_CMP_OP_DECLS (uint32_t, int8_t) |
586 OCTAVE_TYPE1_CMP_OP_DECLS (octave_uint32_t, octave_int16_t) | 576 OCTAVE_TYPE1_CMP_OP_DECLS (uint32_t, int16_t) |
587 OCTAVE_TYPE1_CMP_OP_DECLS (octave_uint32_t, octave_int32_t) | 577 OCTAVE_TYPE1_CMP_OP_DECLS (uint32_t, int32_t) |
588 | 578 |
589 OCTAVE_TYPE1_CMP_OP_DECLS (octave_uint64_t, octave_int8_t) | 579 OCTAVE_TYPE1_CMP_OP_DECLS (uint64_t, int8_t) |
590 OCTAVE_TYPE1_CMP_OP_DECLS (octave_uint64_t, octave_int16_t) | 580 OCTAVE_TYPE1_CMP_OP_DECLS (uint64_t, int16_t) |
591 OCTAVE_TYPE1_CMP_OP_DECLS (octave_uint64_t, octave_int32_t) | 581 OCTAVE_TYPE1_CMP_OP_DECLS (uint64_t, int32_t) |
592 OCTAVE_TYPE1_CMP_OP_DECLS (octave_uint64_t, octave_int64_t) | 582 OCTAVE_TYPE1_CMP_OP_DECLS (uint64_t, int64_t) |
593 | 583 |
594 // The following apply if the signed type is wider than the unsigned | 584 // The following apply if the signed type is wider than the unsigned |
595 // type (then we can cast unsigned values to the signed type and | 585 // type (then we can cast unsigned values to the signed type and |
596 // compare if the signed value is positive). | 586 // compare if the signed value is positive). |
597 | 587 |
619 | 609 |
620 #define OCTAVE_TYPE2_CMP_OP_DECLS(UT, ST) \ | 610 #define OCTAVE_TYPE2_CMP_OP_DECLS(UT, ST) \ |
621 OCTAVE_US_TYPE2_CMP_OP_DECLS (UT, ST) \ | 611 OCTAVE_US_TYPE2_CMP_OP_DECLS (UT, ST) \ |
622 OCTAVE_SU_TYPE2_CMP_OP_DECLS (ST, UT) | 612 OCTAVE_SU_TYPE2_CMP_OP_DECLS (ST, UT) |
623 | 613 |
624 OCTAVE_TYPE2_CMP_OP_DECLS (octave_uint32_t, octave_int64_t) | 614 OCTAVE_TYPE2_CMP_OP_DECLS (uint32_t, int64_t) |
625 | 615 |
626 #undef OCTAVE_INT_BINOP_TRAIT | 616 #undef OCTAVE_INT_BINOP_TRAIT |
627 #undef OCTAVE_US_S_FTR | 617 #undef OCTAVE_US_S_FTR |
628 #undef OCTAVE_US_S_FTR_FCNS | 618 #undef OCTAVE_US_S_FTR_FCNS |
629 #undef OCTAVE_S_US_FTR | 619 #undef OCTAVE_S_US_FTR |