f
Size: a a a
f
f
f
f
{.push requiresinit.}
type A = object
var a: A
f
import std/macros
macro reqi(a: untyped): untyped = echo a.treeRepr()
{.push reqi.}
type
A = object
f: string
var a: A
/usercode/in.nim(3, 7) Hint: 'reqi' is declared but not used [XDeclaredButNotUsed]
(т.е. ни разу не использовано, и ничего не печатало при работе), при попытке приписать свою прагму на поле дает ошибку /usercode/in.nim(4, 8) Error: invalid pragma: reqi
G
G
g
f
G
{.derive(Serialize).}
, впихнуть его перед type нельзя, остается только к типу, но из такой прагмы ты не можешь вернуть например список новых функцийf
proc loadXml*[T: not enum](reader: var HXmlParser, obj: var T, tag: string) =
mixin loadXml
genXmlLoader(T, obj, reader, tag)
genXmlLoader
получает все через тип обхекта (typedesc)f
.Attr.
и так далееf
genXmlLoader
уже такая логикаfor field in iterateFields(impl):
if not(field.isExported) or
field.isMarkedWith("Skip", "IO") or
field.name in ignored:
discard
f
Serialize
, и это плохоG
f
.Attr.
и так далееf
XmlLoader
в прагме для типа и выдавать ошибку если этого нет, просто потомучто я не очень люблю совершенно неявный кодогенG
.Attr.
, впервые вижу?f
G
{.des, ser.}
, потом решил перейти на концепты, а они не работают, и уже месяц ничего не делаю