@@ -402,39 +402,39 @@ macro lcmtypesetup(lcmt, dimensioninfos...)
402
402
dims = dimensioninfo. args[3 ]. args
403
403
quote
404
404
let dimtuple = tuple ($ (LCMCore. makedim .(dims)... ))
405
- LCMCore. dimensions (:: Type{$lcmt} , :: Val{$(QuoteNode(vecfieldname))} ) = dimtuple
405
+ LCMCore. dimensions (:: Type{$(esc( lcmt)) } , :: Val{$(QuoteNode(vecfieldname))} ) = dimtuple
406
406
end
407
407
end
408
408
end
409
409
410
410
# LCMCore.dimensions methods for constant dimensions
411
- makeconstdimmethods = :(LCMCore. make_fixed_dimensions_methods ($ lcmt))
411
+ makeconstdimmethods = quote
412
+ let T = $ (esc (lcmt))
413
+ for field in fieldnames (T)
414
+ F = fieldtype (T, field)
415
+ if F <: Array
416
+ # skip
417
+ elseif F <: StaticArray
418
+ let dimtuple = LCMCore. makedim .(size (F))
419
+ LCMCore. dimensions (:: Type{T} , :: Val{field} ) = dimtuple
420
+ end
421
+ else
422
+ LCMCore. dimensions (:: Type{T} , :: Val{field} ) = ()
423
+ end
424
+ end
425
+ end
426
+ end
412
427
413
428
# LCMCore.fingerprint method
414
429
fingerprint = quote
415
- let hash = reinterpret (Int64, LCMCore. computehash ($ lcmt, DataType[]))
416
- LCMCore. fingerprint (:: Type{$lcmt} ) = hash
430
+ let hash = reinterpret (Int64, LCMCore. computehash ($ ( esc ( lcmt)) , DataType[]))
431
+ LCMCore. fingerprint (:: Type{$(esc( lcmt)) } ) = hash
417
432
end
418
433
end
419
434
420
- esc ( quote
435
+ quote
421
436
$ (vardimmethods... )
422
437
$ makeconstdimmethods
423
438
$ fingerprint
424
- end )
425
- end
426
-
427
- function make_fixed_dimensions_methods (:: Type{T} ) where T<: LCMType
428
- for field in fieldnames (T)
429
- F = fieldtype (T, field)
430
- if F <: Array
431
- # skip
432
- elseif F <: StaticArray
433
- @eval let dimtuple = LCMCore. makedim .(size ($ F))
434
- LCMCore. dimensions (:: Type{$T} , :: Val{$(QuoteNode(field))} ) = dimtuple
435
- end
436
- else
437
- @eval LCMCore. dimensions (:: Type{$T} , :: Val{$(QuoteNode(field))} ) = ()
438
- end
439
439
end
440
440
end
0 commit comments