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