コンパイル時に、型のフィールドタイプに反映:「シンプル」オブジェクト・タイプなどを与えられた、ニムは、私は次のように定義されたタイプがあるとし
type TMyStruct = object
foo: int32
bar: int16
私の目標は、マクロ(またはそれ以外)を構築することであるが上の例では、sizeof
に基づいて、型の各フィールドのサイズの合計を計算できます。この場合int32
は、サイズ4を有するとint16
のでアイデアが
myMacro(TMyStruct) # or, in the worst case, myMacro(x) where x is a TMyStruct
が定数式として6に評価すべきであるということであるサイズ2を有します。後でネストされたオブジェクトに拡張したいが、基本バージョンが動作したら再帰を介して簡単にする必要があります。
私は多くのことを試みましたが恐ろしく失敗しました。私が得ることができた最も遠いのは、ASNのフィールド名 "foo"と "bar"をnnkSymNodesとして取り出すことでしたが、その型に関する情報を取得することができませんでした。意味のある文書化(私のNimの専門知識レベルで)は、存在しないことにはまばらです。
私は可能なことを聞いていますか、それを達成するためにNimの機能は何が必要ですか?
おかげ
非常に良い!ありがとう。私はちょうどASTの詳細を自分自身に熟達してマクロを書くのに慣れる必要があると思います:) – Thomas