HEADER
/* for ccode type */
enum {
	A_CCODE,
	AT_CCODE,
	C_CCODE,
	H_CCODE,
	HT_CCODE,
	PH_CCODE
};

/* check type */
enum {
	NULL_CHECK,
	TYPE_CHECK,
	LT_CHECK,
	GT_CHECK,
	LE_CHECK,
	GE_CHECK,
	EQ_CHECK,
	NE_CHECK
};

/* scope type */
enum {
	NO_SCOPE,
	PUBLIC_SCOPE,
	PRIVATE_SCOPE,
	PROTECTED_SCOPE,
	CLASS_SCOPE
};

/* method type */
enum {
	REGULAR_METHOD,
	INIT_METHOD,
	CLASS_INIT_METHOD,
	VIRTUAL_METHOD,
	SIGNAL_LAST_METHOD,
	SIGNAL_FIRST_METHOD,
	OVERRIDE_METHOD
};
ENDHEADER

CLASS Class
  STRING	otype   # this object class type
  STRING	ptype   # parent class type
  NODELIST	nodes
ENDCLASS

CLASS Type
  INT		stars
  STRING	name
  STRING	postfix
ENDCLASS

CLASS CCode
  INT		cctype
  STRING	cbuf
  INT		line_no
ENDCLASS

CLASS Check
  INT		chtype
  STRING	number
ENDCLASS

CLASS FuncArg
  TYPE		atype
  STRING	name
  NODELIST	checks
ENDCLASS

CLASS Argument
  STRING	gtktype
  TYPE		atype
  STRINGLIST	flags
  STRING	name
  STRING	get
  INT		get_line
  STRING	set
  INT		set_line
  INT		line_no
ENDCLASS

CLASS Method
  INT		scope		# scope type
  INT		method		# method type
  TYPE		mtype
  STRING	otype		# for override methods
  STRINGLIST	gtktypes	# GTK types for a signal
  STRINGLIST	flags		# GTK_RUN_* flags for a signal
  STRING	id
  NODELIST	args
  STRING	onerror
  STRING	defreturn
  STRING	cbuf
  INT		line_no
  INT		ccode_line
  BOOL		vararg
ENDCLASS

CLASS Variable
  INT		scope
  TYPE		vtype
  STRING	id
  INT		line_no
  STRING	destructor
  INT		destructor_line
  BOOL		destructor_simple
  STRING	initializer
  INT		initializer_line
ENDCLASS
