私は単純な Lisp スタイルのプリプロセッサ言語に取り組んでいます。API では、ユーザーが任意の次元とサイズの配列を、言語を使用して操作できるプリプロセッサに渡すことができるようにしたいと考えています。現在、私はタイプの列挙型を持っています。
typedef enum LISP_TYPE
{
LT_UINT,
LT_FLOAT,
LT_ARRAY
...,
...
} _LISP_TYPE;
配列を格納し、それらにアクセスするための効率的で使いやすい方法を見つけるのに苦労しています。特に配列に使用する別の構造があります。
typedef struct _lisp_array
{
LISP_TYPE type;
unsigned int length;
void* data;
} lisp_array;
プリプロセッサが LT_ARRAY 型のリスト アトムを参照すると、そのvoid*
(Lisp 用語では cdr) を上記の構造に変換します。私が問題を抱えているのは、多次元配列にアクセスする方法を考え出すことです。配列をトラバースするステップ値を計算することを考えましたが、渡されたすべての配列が連続して割り当てられることを保証できますか?
どんな助けでも大歓迎です。