Mercurial > hg > CbC > CbC_gcc
comparison gcc/ada/libgnat/s-dimmks.ads @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
4 -- -- | 4 -- -- |
5 -- S Y S T E M . D I M . M K S -- | 5 -- S Y S T E M . D I M . M K S -- |
6 -- -- | 6 -- -- |
7 -- S p e c -- | 7 -- S p e c -- |
8 -- -- | 8 -- -- |
9 -- Copyright (C) 2011-2017, Free Software Foundation, Inc. -- | 9 -- Copyright (C) 2011-2018, Free Software Foundation, Inc. -- |
10 -- -- | 10 -- -- |
11 -- GNAT is free software; you can redistribute it and/or modify it under -- | 11 -- GNAT is free software; you can redistribute it and/or modify it under -- |
12 -- terms of the GNU General Public License as published by the Free Soft- -- | 12 -- terms of the GNU General Public License as published by the Free Soft- -- |
13 -- ware Foundation; either version 3, or (at your option) any later ver- -- | 13 -- ware Foundation; either version 3, or (at your option) any later ver- -- |
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- | 14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- |
27 -- GNAT was originally developed by the GNAT team at New York University. -- | 27 -- GNAT was originally developed by the GNAT team at New York University. -- |
28 -- Extensive contributions were provided by Ada Core Technologies Inc. -- | 28 -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
29 -- -- | 29 -- -- |
30 ------------------------------------------------------------------------------ | 30 ------------------------------------------------------------------------------ |
31 | 31 |
32 -- Defines the MKS dimension system which is the SI system of units | 32 with System.Dim.Generic_Mks; |
33 | 33 |
34 -- Some other prefixes of this system are defined in a child package (see | 34 package System.Dim.Mks is new System.Dim.Generic_Mks (Long_Long_Float); |
35 -- System.Dim_Mks.Other_Prefixes) in order to avoid too many constant | |
36 -- declarations in this package. | |
37 | |
38 -- The dimension terminology is defined in System.Dim_IO package | |
39 | |
40 with Ada.Numerics; | |
41 | |
42 package System.Dim.Mks is | |
43 | |
44 e : constant := Ada.Numerics.e; | |
45 Pi : constant := Ada.Numerics.Pi; | |
46 | |
47 -- Dimensioned type Mks_Type | |
48 | |
49 type Mks_Type is new Long_Long_Float | |
50 with | |
51 Dimension_System => ( | |
52 (Unit_Name => Meter, Unit_Symbol => 'm', Dim_Symbol => 'L'), | |
53 (Unit_Name => Kilogram, Unit_Symbol => "kg", Dim_Symbol => 'M'), | |
54 (Unit_Name => Second, Unit_Symbol => 's', Dim_Symbol => 'T'), | |
55 (Unit_Name => Ampere, Unit_Symbol => 'A', Dim_Symbol => 'I'), | |
56 (Unit_Name => Kelvin, Unit_Symbol => 'K', Dim_Symbol => '@'), | |
57 (Unit_Name => Mole, Unit_Symbol => "mol", Dim_Symbol => 'N'), | |
58 (Unit_Name => Candela, Unit_Symbol => "cd", Dim_Symbol => 'J')); | |
59 | |
60 -- SI Base dimensioned subtypes | |
61 | |
62 subtype Length is Mks_Type | |
63 with | |
64 Dimension => (Symbol => 'm', | |
65 Meter => 1, | |
66 others => 0); | |
67 | |
68 subtype Mass is Mks_Type | |
69 with | |
70 Dimension => (Symbol => "kg", | |
71 Kilogram => 1, | |
72 others => 0); | |
73 | |
74 subtype Time is Mks_Type | |
75 with | |
76 Dimension => (Symbol => 's', | |
77 Second => 1, | |
78 others => 0); | |
79 | |
80 subtype Electric_Current is Mks_Type | |
81 with | |
82 Dimension => (Symbol => 'A', | |
83 Ampere => 1, | |
84 others => 0); | |
85 | |
86 subtype Thermodynamic_Temperature is Mks_Type | |
87 with | |
88 Dimension => (Symbol => 'K', | |
89 Kelvin => 1, | |
90 others => 0); | |
91 | |
92 subtype Amount_Of_Substance is Mks_Type | |
93 with | |
94 Dimension => (Symbol => "mol", | |
95 Mole => 1, | |
96 others => 0); | |
97 | |
98 subtype Luminous_Intensity is Mks_Type | |
99 with | |
100 Dimension => (Symbol => "cd", | |
101 Candela => 1, | |
102 others => 0); | |
103 | |
104 -- Initialize SI Base unit values | |
105 | |
106 -- Turn off the all the dimension warnings for these basic assignments | |
107 -- since otherwise we would get complaints about assigning dimensionless | |
108 -- values to dimensioned subtypes (we can't assign 1.0*m to m). | |
109 | |
110 pragma Warnings (Off, "*assumed to be*"); | |
111 | |
112 m : constant Length := 1.0; | |
113 kg : constant Mass := 1.0; | |
114 s : constant Time := 1.0; | |
115 A : constant Electric_Current := 1.0; | |
116 K : constant Thermodynamic_Temperature := 1.0; | |
117 mol : constant Amount_Of_Substance := 1.0; | |
118 cd : constant Luminous_Intensity := 1.0; | |
119 | |
120 pragma Warnings (On, "*assumed to be*"); | |
121 | |
122 -- SI Derived dimensioned subtypes | |
123 | |
124 subtype Absorbed_Dose is Mks_Type | |
125 with | |
126 Dimension => (Symbol => "Gy", | |
127 Meter => 2, | |
128 Second => -2, | |
129 others => 0); | |
130 | |
131 subtype Angle is Mks_Type | |
132 with | |
133 Dimension => (Symbol => "rad", | |
134 others => 0); | |
135 | |
136 subtype Area is Mks_Type | |
137 with | |
138 Dimension => ( | |
139 Meter => 2, | |
140 others => 0); | |
141 | |
142 subtype Catalytic_Activity is Mks_Type | |
143 with | |
144 Dimension => (Symbol => "kat", | |
145 Second => -1, | |
146 Mole => 1, | |
147 others => 0); | |
148 | |
149 subtype Celsius_Temperature is Mks_Type | |
150 with | |
151 Dimension => (Symbol => "°C", | |
152 Kelvin => 1, | |
153 others => 0); | |
154 | |
155 subtype Electric_Capacitance is Mks_Type | |
156 with | |
157 Dimension => (Symbol => 'F', | |
158 Meter => -2, | |
159 Kilogram => -1, | |
160 Second => 4, | |
161 Ampere => 2, | |
162 others => 0); | |
163 | |
164 subtype Electric_Charge is Mks_Type | |
165 with | |
166 Dimension => (Symbol => 'C', | |
167 Second => 1, | |
168 Ampere => 1, | |
169 others => 0); | |
170 | |
171 subtype Electric_Conductance is Mks_Type | |
172 with | |
173 Dimension => (Symbol => 'S', | |
174 Meter => -2, | |
175 Kilogram => -1, | |
176 Second => 3, | |
177 Ampere => 2, | |
178 others => 0); | |
179 | |
180 subtype Electric_Potential_Difference is Mks_Type | |
181 with | |
182 Dimension => (Symbol => 'V', | |
183 Meter => 2, | |
184 Kilogram => 1, | |
185 Second => -3, | |
186 Ampere => -1, | |
187 others => 0); | |
188 | |
189 -- Note the type punning below. The Symbol is a single "ohm" character | |
190 -- encoded in UTF-8 (ce a9 in hexadecimal), but this file is not compiled | |
191 -- with -gnatW8, so we're treating the string literal as a two-character | |
192 -- String. | |
193 | |
194 subtype Electric_Resistance is Mks_Type | |
195 with | |
196 Dimension => (Symbol => "Ω", | |
197 Meter => 2, | |
198 Kilogram => 1, | |
199 Second => -3, | |
200 Ampere => -2, | |
201 others => 0); | |
202 | |
203 subtype Energy is Mks_Type | |
204 with | |
205 Dimension => (Symbol => 'J', | |
206 Meter => 2, | |
207 Kilogram => 1, | |
208 Second => -2, | |
209 others => 0); | |
210 | |
211 subtype Equivalent_Dose is Mks_Type | |
212 with | |
213 Dimension => (Symbol => "Sv", | |
214 Meter => 2, | |
215 Second => -2, | |
216 others => 0); | |
217 | |
218 subtype Force is Mks_Type | |
219 with | |
220 Dimension => (Symbol => 'N', | |
221 Meter => 1, | |
222 Kilogram => 1, | |
223 Second => -2, | |
224 others => 0); | |
225 | |
226 subtype Frequency is Mks_Type | |
227 with | |
228 Dimension => (Symbol => "Hz", | |
229 Second => -1, | |
230 others => 0); | |
231 | |
232 subtype Illuminance is Mks_Type | |
233 with | |
234 Dimension => (Symbol => "lx", | |
235 Meter => -2, | |
236 Candela => 1, | |
237 others => 0); | |
238 | |
239 subtype Inductance is Mks_Type | |
240 with | |
241 Dimension => (Symbol => 'H', | |
242 Meter => 2, | |
243 Kilogram => 1, | |
244 Second => -2, | |
245 Ampere => -2, | |
246 others => 0); | |
247 | |
248 subtype Luminous_Flux is Mks_Type | |
249 with | |
250 Dimension => (Symbol => "lm", | |
251 Candela => 1, | |
252 others => 0); | |
253 | |
254 subtype Magnetic_Flux is Mks_Type | |
255 with | |
256 Dimension => (Symbol => "Wb", | |
257 Meter => 2, | |
258 Kilogram => 1, | |
259 Second => -2, | |
260 Ampere => -1, | |
261 others => 0); | |
262 | |
263 subtype Magnetic_Flux_Density is Mks_Type | |
264 with | |
265 Dimension => (Symbol => 'T', | |
266 Kilogram => 1, | |
267 Second => -2, | |
268 Ampere => -1, | |
269 others => 0); | |
270 | |
271 subtype Power is Mks_Type | |
272 with | |
273 Dimension => (Symbol => 'W', | |
274 Meter => 2, | |
275 Kilogram => 1, | |
276 Second => -3, | |
277 others => 0); | |
278 | |
279 subtype Pressure is Mks_Type | |
280 with | |
281 Dimension => (Symbol => "Pa", | |
282 Meter => -1, | |
283 Kilogram => 1, | |
284 Second => -2, | |
285 others => 0); | |
286 | |
287 subtype Radioactivity is Mks_Type | |
288 with | |
289 Dimension => (Symbol => "Bq", | |
290 Second => -1, | |
291 others => 0); | |
292 | |
293 subtype Solid_Angle is Mks_Type | |
294 with | |
295 Dimension => (Symbol => "sr", | |
296 others => 0); | |
297 | |
298 subtype Speed is Mks_Type | |
299 with | |
300 Dimension => ( | |
301 Meter => 1, | |
302 Second => -1, | |
303 others => 0); | |
304 | |
305 subtype Volume is Mks_Type | |
306 with | |
307 Dimension => ( | |
308 Meter => 3, | |
309 others => 0); | |
310 | |
311 -- Initialize derived dimension values | |
312 | |
313 -- Turn off the all the dimension warnings for these basic assignments | |
314 -- since otherwise we would get complaints about assigning dimensionless | |
315 -- values to dimensioned subtypes. | |
316 | |
317 pragma Warnings (Off, "*assumed to be*"); | |
318 | |
319 rad : constant Angle := 1.0; | |
320 sr : constant Solid_Angle := 1.0; | |
321 Hz : constant Frequency := 1.0; | |
322 N : constant Force := 1.0; | |
323 Pa : constant Pressure := 1.0; | |
324 J : constant Energy := 1.0; | |
325 W : constant Power := 1.0; | |
326 C : constant Electric_Charge := 1.0; | |
327 V : constant Electric_Potential_Difference := 1.0; | |
328 F : constant Electric_Capacitance := 1.0; | |
329 Ohm : constant Electric_Resistance := 1.0; | |
330 Si : constant Electric_Conductance := 1.0; | |
331 Wb : constant Magnetic_Flux := 1.0; | |
332 T : constant Magnetic_Flux_Density := 1.0; | |
333 H : constant Inductance := 1.0; | |
334 dC : constant Celsius_Temperature := 273.15; | |
335 lm : constant Luminous_Flux := 1.0; | |
336 lx : constant Illuminance := 1.0; | |
337 Bq : constant Radioactivity := 1.0; | |
338 Gy : constant Absorbed_Dose := 1.0; | |
339 Sv : constant Equivalent_Dose := 1.0; | |
340 kat : constant Catalytic_Activity := 1.0; | |
341 | |
342 -- SI prefixes for Meter | |
343 | |
344 um : constant Length := 1.0E-06; -- micro (u) | |
345 mm : constant Length := 1.0E-03; -- milli | |
346 cm : constant Length := 1.0E-02; -- centi | |
347 dm : constant Length := 1.0E-01; -- deci | |
348 dam : constant Length := 1.0E+01; -- deka | |
349 hm : constant Length := 1.0E+02; -- hecto | |
350 km : constant Length := 1.0E+03; -- kilo | |
351 Mem : constant Length := 1.0E+06; -- mega | |
352 | |
353 -- SI prefixes for Kilogram | |
354 | |
355 ug : constant Mass := 1.0E-09; -- micro (u) | |
356 mg : constant Mass := 1.0E-06; -- milli | |
357 cg : constant Mass := 1.0E-05; -- centi | |
358 dg : constant Mass := 1.0E-04; -- deci | |
359 g : constant Mass := 1.0E-03; -- gram | |
360 dag : constant Mass := 1.0E-02; -- deka | |
361 hg : constant Mass := 1.0E-01; -- hecto | |
362 Meg : constant Mass := 1.0E+03; -- mega | |
363 | |
364 -- SI prefixes for Second | |
365 | |
366 us : constant Time := 1.0E-06; -- micro (u) | |
367 ms : constant Time := 1.0E-03; -- milli | |
368 cs : constant Time := 1.0E-02; -- centi | |
369 ds : constant Time := 1.0E-01; -- deci | |
370 das : constant Time := 1.0E+01; -- deka | |
371 hs : constant Time := 1.0E+02; -- hecto | |
372 ks : constant Time := 1.0E+03; -- kilo | |
373 Mes : constant Time := 1.0E+06; -- mega | |
374 | |
375 -- Other constants for Second | |
376 | |
377 min : constant Time := 60.0 * s; | |
378 hour : constant Time := 60.0 * min; | |
379 day : constant Time := 24.0 * hour; | |
380 year : constant Time := 365.25 * day; | |
381 | |
382 -- SI prefixes for Ampere | |
383 | |
384 mA : constant Electric_Current := 1.0E-03; -- milli | |
385 cA : constant Electric_Current := 1.0E-02; -- centi | |
386 dA : constant Electric_Current := 1.0E-01; -- deci | |
387 daA : constant Electric_Current := 1.0E+01; -- deka | |
388 hA : constant Electric_Current := 1.0E+02; -- hecto | |
389 kA : constant Electric_Current := 1.0E+03; -- kilo | |
390 MeA : constant Electric_Current := 1.0E+06; -- mega | |
391 | |
392 pragma Warnings (On, "*assumed to be*"); | |
393 end System.Dim.Mks; |