switch (N->Op & EXPR_TYPEMASK) {
case EXPR_LEAFNODE:
- switch (N->Op) {
-
- case EXPR_SYMBOL:
- if (SymIsZP (N->V.Sym)) {
- *IsByte = 1;
- } else if (SymHasExpr (N->V.Sym)) {
- /* Check if this expression is a byte expression */
- *IsByte = IsByteExpr (GetSymExpr (N->V.Sym));
- }
- break;
-
- case EXPR_SECTION:
- if (GetSegAddrSize (N->V.SegNum) == ADDR_SIZE_ZP) {
- *IsByte = 1;
- }
- break;
-
- }
- break;
+ switch (N->Op) {
+
+ case EXPR_SYMBOL:
+ if (SymIsZP (N->V.Sym)) {
+ *IsByte = 1;
+ } else if (SymHasExpr (N->V.Sym)) {
+ /* Check if this expression is a byte expression */
+ CheckByteExpr (GetSymExpr (N->V.Sym), IsByte);
+ }
+ break;
+
+ case EXPR_SECTION:
+ if (GetSegAddrSize (N->V.SegNum) == ADDR_SIZE_ZP) {
+ *IsByte = 1;
+ }
+ break;
+
+ }
+ break;
case EXPR_UNARYNODE:
- CheckByteExpr (N->Left, IsByte);
- break;
+ CheckByteExpr (N->Left, IsByte);
+ break;
case EXPR_BINARYNODE:
- CheckByteExpr (N->Left, IsByte);
- CheckByteExpr (N->Right, IsByte);
- break;
+ CheckByteExpr (N->Left, IsByte);
+ CheckByteExpr (N->Right, IsByte);
+ break;
default:
- Internal ("Unknown expression op: %02X", N->Op);
+ Internal ("Unknown expression op: %02X", N->Op);
}
}
}
-const char* GetSymName (SymEntry* S)
+const char* GetSymName (const SymEntry* S)
/* Return the name of the symbol */
{
/* Resolve trampoline entries */
-unsigned GetSymIndex (SymEntry* S)
+unsigned GetSymAddrSize (const SymEntry* S)
+/* Return the address size of the symbol. Beware: This function will just
+ * return the AddrSize member, it will not look at the expression!
+ */
+{
+ if (S->Flags & SF_TRAMPOLINE) {
+ S = S->V.Sym;
+ }
+ return S->AddrSize;
+}
+
+
+
+unsigned GetSymIndex (const SymEntry* S)
/* Return the symbol index for the given symbol */
{
/* Resolve trampoline entries */
-const FilePos* GetSymPos (SymEntry* S)
+const FilePos* GetSymPos (const SymEntry* S)
/* Return the position of first occurence in the source for the given symbol */
{
/* Resolve trampoline entries */
* NULL. Do not call in other contexts!
*/
-const char* GetSymName (SymEntry* Sym);
+const char* GetSymName (const SymEntry* Sym);
/* Return the name of the symbol */
-unsigned GetSymIndex (SymEntry* Sym);
+unsigned GetSymAddrSize (const SymEntry* Sym);
+/* Return the address size of the symbol. Beware: This function will just
+ * return the AddrSize member, it will not look at the expression!
+ */
+
+unsigned GetSymIndex (const SymEntry* Sym);
/* Return the symbol index for the given symbol */
-const FilePos* GetSymPos (SymEntry* Sym);
+const FilePos* GetSymPos (const SymEntry* Sym);
/* Return the position of first occurence in the source for the given symbol */