こういうのを自動生成したい。

生成するクラスを分類してみる。

  • Paramsの様に特定の規則に従った記述になるクラス
    • メンバ変数の定義
    • メンバ変数のゲッター・セッター
    • コンストラクタにメンバ変数の初期化リスト
    • doxygenコメント
      • brief
      • detail
      • params
      • pre
  • 特に記述規則が無いクラス
    • 実装がC++側にあったりヘッダ側だったり
    • staticメソッドだったりconstexprメソッドだったり
  • 仕様書から型やセッター・ゲッターの自動生成

仕様書から型やセッター・ゲッターの自動生成

簡単そうな型定義とゲッター・セッターの自動生成から手を付けてみる。

自動生成したいもの

    • メンバ変数
    • ゲッター・セッター
    • ダンプログ出力関数

自動生成に必要な情報

  • 必須
    • 型名
    • メンバ変数名
    • メンバ変数型
    • HWの制約=アサート
      • 変数名のエイリアスを”val”として表現する
      • LE, LEQ, NOTNULL等の文字列で挿入するアサートマクロを選択できるようにする
      • eg. “LE:16″、”RANGE:0:15” の書式にする
  • オプション
    • 格納先の32bitワード位置とビットマスク

xmlでも何でもいいけど上記をリスト化する。取り敢えず,区切りの物を用意する

自動生成物の内容

自動生成されるコードは下記とする。

テキストテンプレートで実装

TODO: