]> git.sur5r.net Git - cc65/blobdiff - src/ca65/lineinfo.h
Finished implemenation of commands to delete macros. Added the new commands to
[cc65] / src / ca65 / lineinfo.h
index 2e4cb3c225c97233bb387c52c2f23a401889ade4..7aa4d1a2fc385f6789448efb4de7b2f6fa7e1961 100644 (file)
@@ -41,6 +41,7 @@
 /* common */
 #include "coll.h"
 #include "filepos.h"
+#include "lidefs.h"
 
 
 
@@ -59,18 +60,6 @@ enum {
     LI_SLOT_EXT         = 1,            /* Externally supplied line info */
 };
 
-/* Types of line infos. The low byte may be used for some sort of depth
- * counter.
- */
-enum {
-    LI_MASK_COUNT       = 0x00FF,       /* Mask to extract the count */
-
-    LI_TYPE_ASM         = 0x0100,       /* Normal assembler source */
-    LI_TYPE_EXT         = 0x0200,       /* Externally supplied line info */
-    LI_TYPE_MACRO       = 0x0300,       /* Macro expansion */
-    LI_MASK_TYPE        = 0x7F00,       /* Mask to extract the type */
-};
-
 /* The LineInfo structure is shared between several fragments, so we need a
  * reference counter.
  */
@@ -93,7 +82,7 @@ struct LineInfo {
 void InitLineInfo (void);
 /* Initialize the line infos */
 
-unsigned AllocLineInfoSlot (unsigned Type);
+unsigned AllocLineInfoSlot (unsigned Type, unsigned Count);
 /* Allocate a line info slot of the given type and return the slot index */
 
 void FreeLineInfoSlot (unsigned Slot);
@@ -107,9 +96,10 @@ void GenLineInfo (unsigned Slot, const FilePos* Pos);
 void ClearLineInfo (unsigned Slot);
 /* Clear the line info in the given slot */
 
-void GetFullLineInfo (Collection* LineInfos);
+void GetFullLineInfo (Collection* LineInfos, unsigned IncUsage);
 /* Return full line infos, that is line infos for all slots in LineInfos. The
- * function does also increase the usage counter for all line infos returned.
+ * function will clear LineInfos before usage and will increment the usage
+ * counter by IncUsage for all line infos returned.
  */
 
 LineInfo* UseLineInfo (LineInfo* LI);
@@ -136,10 +126,10 @@ INLINE const FilePos* GetSourcePos (const LineInfo* LI)
 INLINE unsigned GetLineInfoType (const LineInfo* LI)
 /* Return the type of a line info */
 {
-    return (LI->Type & LI_MASK_TYPE);
+    return LI_GET_TYPE (LI->Type);
 }
 #else
-#  define GetLineInfoType(LI)     ((LI)->Type & LI_MASK_TYPE)
+#  define GetLineInfoType(LI)     LI_GET_TYPE ((LI)->Type)
 #endif
 
 void WriteLineInfo (const Collection* LineInfos);