因此,我正在研究一種文件格式,用於存儲在某種範圍內定義的結構化數據。最簡單的例子是隨着時間的推移浮動值,但我設計它允許在每個點上有多個維度和任意數據。我想將數據的結構存儲在文件頭中,因爲它會考慮到一些整潔的功能。在C++中內省結構體定義?
起初我還以爲我有用戶使用的類層次建立自己的數據結構,所以你可以做這樣的事情:
pf_type data = record(PF_DOUBLE) (
record("position")(
field("xp") &
field("yp") &
field("zp")) &
record("velocity")(
field("xv") &
field("yv") &
field("zv")) &
record("acceleration")(
field("xa") &
field("ya") &
field("za")));
這將等價於C這樣的事情:
struct {
struct position {
double xp,yp,zp;
}
struct velocity {
double xv,yv,zv;
}
struct acceleration {
double xa,ya,za;
}
}
這並不可怕,但它仍然需要用戶單獨定義AC結構來當讀/寫數據實際使用。
我認爲它會很整潔,如果他們可以定義一個常規的c-struct,它們傳遞給我的庫,並且我對它進行了內省以獲取寫入該文件的信息。雖然我不知道在C++中是否可以遠程執行此類操作。我的想法是,它可能使用了一些模板元編程魔法,但它會非常混亂。所以我想我會從那些對C++有更多瞭解的人那裏尋求一些想法。
你基本上建立一個DSL,而且也沒有圍繞着需要努力獲得。 – wheaties
我同意小麥的做法,但讓我更積極地提出它:你正在做的是一個好主意 - 即它是一個合理的設計,不要讓我們勸阻你。但是你自己在這裏,C++對這類工作幾乎沒有任何幫助。 –
這就是我的想法,我想我基本上必須使用模板編寫一個結構解析器,ick。 –