source: Sophya/trunk/SophyaLib/NTools/datatypes.h

Last change on this file was 3572, checked in by cmv, 17 years ago

char* -> const char* pour regler les problemes de deprecated string const... + comparaison unsigned signed + suppression EVOL_PLANCK rz+cmv 07/02/2009

File size: 5.3 KB
Line 
1/* Manipulation et conversion des types de bases */
2/* E. Aubourg, E. Lesquoy */
3
4// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
5
6#ifndef DATATYPES_H_SEEN
7#define DATATYPES_H_SEEN
8
9#include "machdefs.h"
10
11
12enum PBaseDataTypes {kpbdt_unknown=-1, kuint_1=1, kint_1=2,
13 kuint_2=3, kint_2=4, kuint_4=5, kint_4=6,
14 kr_4=7, kr_8=8};
15
16inline PBaseDataTypes DataType(uint_1) {return kuint_1;}
17inline PBaseDataTypes DataType(int_1) {return kint_1;}
18inline PBaseDataTypes DataType(uint_2) {return kuint_2;}
19inline PBaseDataTypes DataType(int_2) {return kint_2;}
20inline PBaseDataTypes DataType(uint_4) {return kuint_4;}
21inline PBaseDataTypes DataType(int_4) {return kint_4;}
22inline PBaseDataTypes DataType(r_4) {return kr_4;}
23inline PBaseDataTypes DataType(r_8) {return kr_8;}
24
25const char * DataName(PBaseDataTypes);
26const char * DataLongName(PBaseDataTypes);
27int DataSize(PBaseDataTypes);
28
29// Limites des types
30
31inline double MinRange(uint_1) {return 0.0;}
32inline double MaxRange(uint_1) {return 255.0;}
33inline double MinRange(uint_2) {return 0.0;}
34inline double MaxRange(uint_2) {return 65535.0;}
35inline double MinRange(int_2) {return -32768.0;}
36inline double MaxRange(int_2) {return 32767.0;}
37inline double MinRange(int_4) {return -2147483648.0;}
38inline double MaxRange(int_4) {return 2147483647.0;}
39inline double MinRange(r_4) {return -3.40282347e+38f;}
40inline double MaxRange(r_4) {return 3.40282347e+38f;}
41
42// reduction range donnee si on va du type 1 au type 2 (y/n)
43// ReducRange(type 1 , type 2 )
44// retour:
45
46enum {t_same,t_up,t_spe,t_down};
47// t_same: meme type
48// t_up : ascendant (I,U2)->(I4,R4), I4->R4
49// t_spe: speciaux I2->U2 , U2->I2
50// t_down: descendants R4->I4, (R4,I4)->(U2,I2)
51
52inline int ConvType(uint_1 , uint_1 ) {return t_same;}
53inline int ConvType(uint_1 , uint_2 ) {return t_up;}
54inline int ConvType(uint_1 , int_2 ) {return t_up;}
55inline int ConvType(uint_1 , int_4 ) {return t_up;}
56inline int ConvType(uint_1 , r_4 ) {return t_up;}
57inline int ConvType(uint_2 , uint_1 ) {return t_down;}
58inline int ConvType(uint_2 , uint_2 ) {return t_same;}
59inline int ConvType(uint_2 , int_2 ) {return t_spe;}
60inline int ConvType(uint_2 , int_4 ) {return t_up;}
61inline int ConvType(uint_2 , r_4 ) {return t_up;}
62inline int ConvType(int_2 , uint_1 ) {return t_down;}
63inline int ConvType(int_2 , uint_2 ) {return t_spe;}
64inline int ConvType(int_2 , int_2 ) {return t_same;}
65inline int ConvType(int_2 , int_4 ) {return t_up;}
66inline int ConvType(int_2 , r_4 ) {return t_up;}
67inline int ConvType(int_4 , uint_1 ) {return t_down;}
68inline int ConvType(int_4 , uint_2 ) {return t_down;}
69inline int ConvType(int_4 , int_2 ) {return t_down;}
70inline int ConvType(int_4 , int_4 ) {return t_same;}
71inline int ConvType(int_4 , r_4 ) {return t_up;}
72inline int ConvType(r_4 , uint_1 ) {return t_down;}
73inline int ConvType(r_4 , uint_2 ) {return t_down;}
74inline int ConvType(r_4 , int_2 ) {return t_down;}
75inline int ConvType(r_4 , int_4 ) {return t_down;}
76inline int ConvType(r_4 , r_4 ) {return t_same;}
77
78/*
79template <class T>
80inline T PutInRange(double x,T t) {
81 return (T)( x < MinRange(t) ? MinRange(t) : \
82 (x > MaxRange(t) ? MaxRange(t) : x));
83 }
84// BUG GCC 2.6.1. Unresolved: xxx..ng
85*/
86
87inline uint_1 PutInRange(double x, uint_1 t) {
88 return (uint_1)( x < MinRange(t) ? MinRange(t) : \
89 (x > MaxRange(t) ? MaxRange(t) : x));
90 }
91inline uint_2 PutInRange(double x, uint_2 t) {
92 return (uint_2)( x < MinRange(t) ? MinRange(t) : \
93 (x > MaxRange(t) ? MaxRange(t) : x));
94 }
95inline int_2 PutInRange(double x, int_2 t) {
96 return (int_2)( x < MinRange(t) ? MinRange(t) : \
97 (x > MaxRange(t) ? MaxRange(t) : x));
98 }
99inline int_4 PutInRange(double x, int_4 t) {
100 return (int_4)( x < MinRange(t) ? MinRange(t) : \
101 (x > MaxRange(t) ? MaxRange(t) : x));
102 }
103inline r_4 PutInRange(double x , r_4) {return x;}
104
105/*
106template <class T>
107inline T SharePix(double x, T t, double cutmin, double cutmax)
108 { double tmp = (((x - cutmin)/(cutmax-cutmin))* \
109 ( MaxRange(t)-MinRange(t)))+MinRange(t);
110 return PutInRange(tmp, t);
111 }
112// BUG GCC 2.6.1. Unresolved: xxx..ng
113*/
114inline double SharePix(double x, uint_1 t, double cutmin, double cutmax)
115 { double tmp = (((x - cutmin)/(cutmax-cutmin))* \
116 ( MaxRange(t)-MinRange(t)))+MinRange(t);
117 return PutInRange(tmp, t);
118 }
119inline double SharePix(double x, uint_2 t, double cutmin, double cutmax)
120 { double tmp = (((x - cutmin)/(cutmax-cutmin))* \
121 ( MaxRange(t)-MinRange(t)))+MinRange(t);
122 return PutInRange(tmp, t);
123 }
124inline double SharePix(double x, int_2 t, double cutmin, double cutmax)
125 { double tmp = (((x - cutmin)/(cutmax-cutmin))* \
126 ( MaxRange(t)-MinRange(t)))+MinRange(t);
127 return PutInRange(tmp, t);
128 }
129inline double SharePix(double x, int_4 t, double cutmin, double cutmax)
130 { double tmp = (((x - cutmin)/(cutmax-cutmin))* \
131 ( MaxRange(t)-MinRange(t)))+MinRange(t);
132 return PutInRange(tmp, t);
133 }
134inline double SharePix(double x, r_4 t, double cutmin, double cutmax)
135 { double tmp = (((x - cutmin)/(cutmax-cutmin))* \
136 ( MaxRange(t)-MinRange(t)))+ MinRange(t);
137 return PutInRange(tmp, t);
138 }
139
140#endif
Note: See TracBrowser for help on using the repository browser.