diff --git a/src/common/symdefs.h b/src/common/symdefs.h index 7576b4b7d..ede76d63e 100644 --- a/src/common/symdefs.h +++ b/src/common/symdefs.h @@ -33,6 +33,10 @@ +/* Object file tags for imports and exports */ + + + #ifndef SYMDEFS_H #define SYMDEFS_H @@ -44,22 +48,35 @@ -/* Object file tags for imports and exports */ +/* Import size */ #define IMP_ABS 0x00 /* Import as normal value */ -#define IMP_ZP 0x01 /* Import as zero page symbol */ +#define IMP_ZP 0x01 /* Import as zero page symbol */ +#define IMP_MASK_SIZE 0x01 /* Size mask */ -/* Size */ -#define EXP_ABS 0x00 /* Export as normal value */ -#define EXP_ZP 0x01 /* Export as zero page value */ +#define IS_IMP_ABS(x) (((x) & IMP_MASK_SIZE) == IMP_ABS) +#define IS_IMP_ZP(x) (((x) & IMP_MASK_SIZE) == IMP_ZP) + +/* Export size */ +#define EXP_ABS 0x00 /* Export as normal value */ +#define EXP_ZP 0x01 /* Export as zero page value */ #define EXP_MASK_SIZE 0x01 /* Size mask */ - -/* Type of value */ -#define EXP_CONST 0x00 /* Mask bit for const values */ -#define EXP_EXPR 0x02 /* Mask bit for expr values */ -#define EXP_MASK_VAL 0x02 /* Value mask */ -/* Initializer bit */ -#define EXP_INITIALIZER 0x04 /* Mask bit for initializer export */ +#define IS_EXP_ABS(x) (((x) & EXP_MASK_SIZE) == EXP_ABS) +#define IS_EXP_ZP(x) (((x) & EXP_MASK_SIZE) == EXP_ZP) + +/* Export value type */ +#define EXP_CONST 0x00 /* Mask bit for const values */ +#define EXP_EXPR 0x02 /* Mask bit for expr values */ +#define EXP_MASK_VAL 0x02 /* Value mask */ + +#define IS_EXP_CONST(x) (((x) & EXP_MASK_VAL) == EXP_CONST) +#define IS_EXP_EXPR(x) (((x) & EXP_MASK_VAL) == EXP_EXPR) + +/* Export initializer flag */ +#define EXP_INIT 0x04 /* Mask bit for initializer export */ +#define EXP_MASK_INIT 0x04 /* Value mask */ + +#define IS_EXP_INIT (((x) & EXP_MASK_INIT) == EXP_INIT)