1
- import . Units: UNIT_SYMBOLS, UNIT_MAPPING, UNIT_VALUES
1
+ import . Units: UNIT_SYMBOLS, UNIT_MAPPING, UNIT_VALUES, DEFAULT_UNIT_BASE_TYPE
2
2
import . Constants: CONSTANT_SYMBOLS, CONSTANT_MAPPING, CONSTANT_VALUES
3
+ import .. DEFAULT_DIM_BASE_TYPE
3
4
4
5
const SYMBOL_CONFLICTS = intersect (UNIT_SYMBOLS, CONSTANT_SYMBOLS)
5
6
@@ -93,6 +94,8 @@ function Base.convert(::Type{Quantity{T,D}}, q::Quantity{<:Any,<:SymbolicDimensi
93
94
return result
94
95
end
95
96
97
+ const DEFAULT_SYMBOLIC_UNIT_TYPE = Quantity{DEFAULT_UNIT_BASE_TYPE,SymbolicDimensions{DEFAULT_DIM_BASE_TYPE}}
98
+
96
99
"""
97
100
uexpand(q::Quantity{<:Any,<:SymbolicDimensions})
98
101
@@ -269,20 +272,22 @@ module SymbolicUnitsParse
269
272
import .. CONSTANT_SYMBOLS
270
273
import .. SYMBOL_CONFLICTS
271
274
import .. SymbolicDimensions
275
+ import .. DEFAULT_SYMBOLIC_UNIT_TYPE
276
+ import .. DEFAULT_UNIT_BASE_TYPE
277
+ import .. DEFAULT_DIM_BASE_TYPE
272
278
273
279
import ... Quantity
274
- import ... DEFAULT_VALUE_TYPE
275
- import ... DEFAULT_DIM_BASE_TYPE
276
280
277
281
# Lazily create unit symbols (since there are so many)
278
282
module Constants
279
283
import .. CONSTANT_SYMBOLS
280
284
import .. SYMBOL_CONFLICTS
281
285
import .. SymbolicDimensions
286
+ import .. DEFAULT_SYMBOLIC_UNIT_TYPE
287
+ import .. DEFAULT_UNIT_BASE_TYPE
288
+ import .. DEFAULT_DIM_BASE_TYPE
282
289
283
290
import .. Quantity
284
- import .. DEFAULT_VALUE_TYPE
285
- import .. DEFAULT_DIM_BASE_TYPE
286
291
287
292
import ... Constants as EagerConstants
288
293
@@ -292,11 +297,11 @@ module SymbolicUnitsParse
292
297
CONSTANT_SYMBOLS_EXIST[] || lock (CONSTANT_SYMBOLS_LOCK) do
293
298
CONSTANT_SYMBOLS_EXIST[] && return nothing
294
299
for unit in setdiff (CONSTANT_SYMBOLS, SYMBOL_CONFLICTS)
295
- @eval const $ unit = Quantity (DEFAULT_VALUE_TYPE (1.0 ), SymbolicDimensions{DEFAULT_DIM_BASE_TYPE}; $ (unit)= 1 )
300
+ @eval const $ unit = Quantity (DEFAULT_UNIT_BASE_TYPE (1.0 ), SymbolicDimensions{DEFAULT_DIM_BASE_TYPE}; $ (unit)= 1 )
296
301
end
297
302
# Evaluate conflicting symbols to non-symbolic form:
298
303
for unit in SYMBOL_CONFLICTS
299
- @eval const $ unit = convert (Quantity{DEFAULT_VALUE_TYPE,SymbolicDimensions} , EagerConstants.$ unit)
304
+ @eval const $ unit = convert (DEFAULT_SYMBOLIC_UNIT_TYPE , EagerConstants.$ unit)
300
305
end
301
306
CONSTANT_SYMBOLS_EXIST[] = true
302
307
end
@@ -311,7 +316,7 @@ module SymbolicUnitsParse
311
316
UNIT_SYMBOLS_EXIST[] || lock (UNIT_SYMBOLS_LOCK) do
312
317
UNIT_SYMBOLS_EXIST[] && return nothing
313
318
for unit in UNIT_SYMBOLS
314
- @eval const $ unit = Quantity (DEFAULT_VALUE_TYPE (1.0 ), SymbolicDimensions{DEFAULT_DIM_BASE_TYPE}; $ (unit)= 1 )
319
+ @eval const $ unit = Quantity (DEFAULT_UNIT_BASE_TYPE (1.0 ), SymbolicDimensions{DEFAULT_DIM_BASE_TYPE}; $ (unit)= 1 )
315
320
end
316
321
UNIT_SYMBOLS_EXIST[] = true
317
322
end
@@ -338,11 +343,11 @@ module SymbolicUnitsParse
338
343
_generate_unit_symbols ()
339
344
Constants. _generate_unit_symbols ()
340
345
raw_result = eval (Meta. parse (raw_string))
341
- return copy (as_quantity (raw_result)):: Quantity{DEFAULT_VALUE_TYPE,SymbolicDimensions{DEFAULT_DIM_BASE_TYPE}}
346
+ return copy (as_quantity (raw_result)):: DEFAULT_SYMBOLIC_UNIT_TYPE
342
347
end
343
348
344
- as_quantity (q:: Quantity ) = q
345
- as_quantity (x:: Number ) = Quantity ( convert (DEFAULT_VALUE_TYPE, x), SymbolicDimensions{DEFAULT_DIM_BASE_TYPE} )
349
+ as_quantity (q:: Quantity ) = convert (DEFAULT_SYMBOLIC_UNIT_TYPE, q)
350
+ as_quantity (x:: Number ) = DEFAULT_SYMBOLIC_UNIT_TYPE (x )
346
351
as_quantity (x) = error (" Unexpected type evaluated: $(typeof (x)) " )
347
352
end
348
353
0 commit comments