ScmClass
以下な記述が gauche.h のコメントにあります。
/* * An opaque pointer. All Scheme objects are represented by * this type. */ typedef struct ScmHeaderRec *ScmObj; /* * The class structure. ScmClass is actually a subclass of ScmObj. */ typedef struct ScmClassRec ScmClass;
ScmClass は ScmObj のサブクラス、との事。
その所以は ScmClassRec 構造体の以下の定義。
# コメント略してます
struct ScmClassRec { union { SCM_INSTANCE_HEADER; double align_dummy; } classHdr;
SCM_INSTANCE_HEADER マクロの定義が以下で
#define SCM_INSTANCE_HEADER ScmInstance hdr /* for declaration */
直上に ScmInstance 型の定義があります。
/* A common header for objects whose class is defined in Scheme */ typedef struct ScmInstanceRec { ScmByte *tag; /* private */ ScmObj *slots; /* private */ } ScmInstance;
成程。
で
ScmClassRec 構造体は 0.8.11 な記述と相違ない事は確認。もう少し_調べるもの_を掘ってみる方向で。