/* */
/* */
/* */
-/* (C) 1998-2001 Ullrich von Bassewitz */
-/* Wacholderweg 14 */
-/* D-70597 Stuttgart */
-/* EMail: uz@cc65.org */
+/* (C) 1998-2011, Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
/* common */
#include "exprdefs.h"
-#include "filepos.h"
+#include "coll.h"
-
-
-/*****************************************************************************/
-/* Forwards */
-/*****************************************************************************/
-
-
-
-struct LineInfo;
+/* ca65 */
+#include "lineinfo.h"
/*****************************************************************************/
-/* struct Fragment */
+/* struct Fragment */
/*****************************************************************************/
typedef struct Fragment Fragment;
struct Fragment {
- Fragment* List; /* List of all fragments */
- Fragment* Next; /* Fragment list in one segment */
- Fragment* LineList; /* List of fragments for one src line */
- FilePos Pos; /* File position for this fragment */
- struct LineInfo* LI; /* Extra line info */
- unsigned short Len; /* Length for this fragment */
- unsigned char Type; /* Fragment type */
+ Fragment* Next; /* Pointer to next fragment in segment */
+ Fragment* LineList; /* List of fragments for one src line */
+ Collection LI; /* Line info for this fragment */
+ unsigned short Len; /* Length for this fragment */
+ unsigned char Type; /* Fragment type */
union {
- unsigned char Data [4]; /* Literal values */
- ExprNode* Expr; /* Expression */
+ unsigned char Data[sizeof (ExprNode*)]; /* Literal values */
+ ExprNode* Expr; /* Expression */
} V;
};
-/* List of all fragments */
-extern Fragment* FragList;
-extern Fragment* FragLast;
+/*****************************************************************************/
+/* Code */
+/*****************************************************************************/
+
+
+
+Fragment* NewFragment (unsigned char Type, unsigned short Len);
+/* Create, initialize and return a new fragment. The fragment will be inserted
+ * into the current segment.
+ */