nim-ethers/ethers/fields.nim

13 lines
310 B
Nim
Raw Normal View History

import std/macros
macro fieldValues*(obj: object): tuple =
result = newNimNode(nnkTupleConstr)
let typ = getTypeImpl(obj)
let fields = typ[2]
for field in fields:
let name = field[0]
result.add newDotExpr(obj, name)
template fieldTypes*(T: type): type tuple =
typeof fieldValues(T.default)