1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import macros 

type
    Test_Type = object of RootObj
        Name_HIDDEN: string

macro Name_Macro*(vType: untyped): untyped =
    let setterName = nnkAccQuoted.newTree("Name".ident, "=".ident)
    quote do:
        proc Name*(self: var `vType`): string =
            return self.Name_HIDDEN

        proc `setterName`*(self: var `vType`,  vIndex: string) =
            self.Name_HIDDEN = vIndex

Name_Macro(Test_Type)

var tTest: Test_Type
tTest.Name = "Hello"
echo tTest.Name