a68g-masks.h

     
   1  //! @file a68g-masks.h
   2  //! @author J. Marcel van der Veer
   3  
   4  //! @section Copyright
   5  //!
   6  //! This file is part of Algol68G - an Algol 68 compiler-interpreter.
   7  //! Copyright 2001-2024 J. Marcel van der Veer [algol68g@xs4all.nl].
   8  
   9  //! @section License
  10  //!
  11  //! This program is free software; you can redistribute it and/or modify it 
  12  //! under the terms of the GNU General Public License as published by the 
  13  //! Free Software Foundation; either version 3 of the License, or 
  14  //! (at your option) any later version.
  15  //!
  16  //! This program is distributed in the hope that it will be useful, but 
  17  //! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
  18  //! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 
  19  //! more details. You should have received a copy of the GNU General Public 
  20  //! License along with this program. If not, see [http://www.gnu.org/licenses/].
  21  
  22  //! @section Synopsis
  23  //!
  24  //! Bit masks.
  25  
  26  #if !defined (__A68G_MASKS_H__)
  27  #define __A68G_MASKS_H__
  28  
  29  // Status macros
  30  #define STATUS_CLEAR(p, q) {STATUS (p) &= (~(q));}
  31  #define STATUS_SET(p, q) {STATUS (p) |= (q);}
  32  #define STATUS_TEST(p, q) ((STATUS (p) & (q)) != (unt) 0)
  33  
  34  // Status masks
  35  #define NULL_MASK                 ((STATUS_MASK_T) 0x00000000)
  36  #define IN_HEAP_MASK              ((STATUS_MASK_T) 0x00000001)
  37  #define IN_FRAME_MASK             ((STATUS_MASK_T) 0x00000002)
  38  #define IN_STACK_MASK             ((STATUS_MASK_T) 0x00000004)
  39  #define IN_COMMON_MASK            ((STATUS_MASK_T) 0x00000008)
  40  #define INIT_MASK                 ((STATUS_MASK_T) 0x00000010)
  41  #define PLUS_INF_MASK             ((STATUS_MASK_T) 0x00000020)
  42  #define MINUS_INF_MASK            ((STATUS_MASK_T) 0x00000040)
  43  #define CONSTANT_MASK             ((STATUS_MASK_T) 0x00000080)
  44  #define BLOCK_GC_MASK             ((STATUS_MASK_T) 0x00000100)
  45  #define COOKIE_MASK               ((STATUS_MASK_T) 0x00000200)
  46  #define SCOPE_ERROR_MASK          ((STATUS_MASK_T) 0x00000200)
  47  #define ALLOCATED_MASK            ((STATUS_MASK_T) 0x00000400)
  48  #define STANDENV_PROC_MASK        ((STATUS_MASK_T) 0x00000800)
  49  #define COLOUR_MASK               ((STATUS_MASK_T) 0x00001000)
  50  #define MODULAR_MASK              ((STATUS_MASK_T) 0x00002000)
  51  #define OPTIMAL_MASK              ((STATUS_MASK_T) 0x00004000)
  52  #define SERIAL_MASK               ((STATUS_MASK_T) 0x00008000)
  53  #define CROSS_REFERENCE_MASK      ((STATUS_MASK_T) 0x00010000)
  54  #define TREE_MASK                 ((STATUS_MASK_T) 0x00020000)
  55  #define CODE_MASK                 ((STATUS_MASK_T) 0x00040000)
  56  #define NOT_NEEDED_MASK           ((STATUS_MASK_T) 0x00080000)
  57  #define SOURCE_MASK               ((STATUS_MASK_T) 0x00100000)
  58  #define ASSERT_MASK               ((STATUS_MASK_T) 0x00200000)
  59  #define NIL_MASK                  ((STATUS_MASK_T) 0x00400000)
  60  #define SKIP_PROCEDURE_MASK       ((STATUS_MASK_T) 0x00800000)
  61  #define SKIP_FORMAT_MASK          ((STATUS_MASK_T) 0x00800000)
  62  #define SKIP_ROW_MASK                  ((STATUS_MASK_T) 0x00800000)
  63  #define INTERRUPTIBLE_MASK        ((STATUS_MASK_T) 0x01000000)
  64  #define BREAKPOINT_MASK           ((STATUS_MASK_T) 0x02000000)
  65  #define BREAKPOINT_TEMPORARY_MASK ((STATUS_MASK_T) 0x04000000)
  66  #define BREAKPOINT_INTERRUPT_MASK ((STATUS_MASK_T) 0x08000000)
  67  #define BREAKPOINT_WATCH_MASK     ((STATUS_MASK_T) 0x10000000)
  68  #define BREAKPOINT_TRACE_MASK     ((STATUS_MASK_T) 0x20000000)
  69  #define SEQUENCE_MASK             ((STATUS_MASK_T) 0x40000000)
  70  #define BREAKPOINT_ERROR_MASK     ((STATUS_MASK_T) 0xffffffff)
  71  
  72  // CODEX masks
  73  
  74  #define PROC_DECLARATION_MASK ((STATUS_MASK_T) 0x00000001)
  75  
  76  #endif