a68g-types.h

     
   1  //! @file a68g-types.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-2025 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  //! Internal type definitions.
  25  
  26  #if !defined (__A68G_TYPES_H__)
  27  #define __A68G_TYPES_H__
  28  
  29  #include "a68g-nil.h"
  30  
  31  // Type definitions
  32  
  33  #define COMPLEX_T double complex
  34  
  35  typedef unt char BYTE_T;
  36  typedef BYTE_T *A68G_STRUCT;
  37  
  38  typedef char BUFFER[BUFFER_SIZE + 1];
  39  typedef int CHAR_T;
  40  typedef int LEAP_T;
  41  typedef MP_T A68G_LONG[DEFAULT_DOUBLE_DIGITS + 2];
  42  typedef struct A68G_ARRAY A68G_ARRAY;
  43  typedef struct A68G_BITS A68G_BITS;
  44  typedef struct A68G_BOOL A68G_BOOL;
  45  typedef struct A68G_BYTES A68G_BYTES;
  46  typedef struct A68G_CHANNEL A68G_CHANNEL;
  47  typedef struct A68G_CHAR A68G_CHAR;
  48  typedef struct A68G_COLLITEM A68G_COLLITEM;
  49  typedef struct A68G_FILE A68G_FILE;
  50  typedef struct A68G_FORMAT A68G_FORMAT;
  51  typedef struct A68G_HANDLE A68G_HANDLE;
  52  typedef struct A68G_INT A68G_INT;
  53  typedef struct A68G_LONG_BYTES A68G_LONG_BYTES;
  54  typedef struct A68G_PROCEDURE A68G_PROCEDURE;
  55  typedef struct A68G_REAL A68G_REAL;
  56  typedef struct A68G_REF A68G_REF, A68G_ROW;
  57  typedef struct A68G_SOUND A68G_SOUND;
  58  typedef struct A68G_STREAM A68G_STREAM;
  59  typedef struct A68G_TUPLE A68G_TUPLE;
  60  typedef struct A68G_UNION A68G_UNION;
  61  typedef struct ACTIVATION_RECORD ACTIVATION_RECORD;
  62  typedef struct DEC_T DEC_T;
  63  typedef struct DIAGNOSTIC_T DIAGNOSTIC_T;
  64  typedef struct FILES_T FILES_T;
  65  typedef struct GINFO_T GINFO_T;
  66  typedef struct KEYWORD_T KEYWORD_T;
  67  typedef struct LINE_T LINE_T;
  68  typedef struct MODES_T MODES_T;
  69  typedef struct MOID_T MOID_T;
  70  typedef struct NODE_INFO_T NODE_INFO_T;
  71  typedef struct OPTION_LIST_T OPTION_LIST_T;
  72  typedef struct OPTIONS_T OPTIONS_T;
  73  typedef struct PACK_T PACK_T;
  74  typedef struct POSTULATE_T POSTULATE_T;
  75  typedef struct PROP_T PROP_T;
  76  typedef struct REFINEMENT_T REFINEMENT_T;
  77  typedef struct SOID_T SOID_T;
  78  typedef struct TABLE_T TABLE_T;
  79  typedef struct TAG_T TAG_T;
  80  typedef struct TOKEN_T TOKEN_T;
  81  typedef unt FILE_T, MOOD_T;
  82  typedef void GPROC (NODE_T *);
  83  
  84  typedef PROP_T PROP_PROC (NODE_T *);
  85  
  86  struct A68G_REAL
  87  {
  88    STATUS_MASK_T status;
  89    REAL_T value;
  90  } ALIGNED;
  91  
  92  struct DEC_T
  93  {
  94    char *text;
  95    DEC_T *sub, *less, *more;
  96    int level;
  97  };
  98  
  99  struct ACTIVATION_RECORD
 100  {
 101    ADDR_T static_link, dynamic_link, dynamic_scope, parameters;
 102    BOOL_T proc_frame;
 103    int frame_no, frame_level, parameter_level;
 104    jmp_buf *jump_stat;
 105    NODE_T *node;
 106  #if defined (BUILD_PARALLEL_CLAUSE)
 107    pthread_t thread_id;
 108  #endif
 109  };
 110  
 111  struct PROP_T
 112  {
 113    NODE_T *source;
 114    PROP_PROC *unit;
 115  };
 116  
 117  struct A68G_STREAM
 118  {
 119    BOOL_T opened, writemood;
 120    char *name;
 121    FILE_T fd;
 122  } ALIGNED;
 123  
 124  struct DIAGNOSTIC_T
 125  {
 126    char *text, *symbol;
 127    DIAGNOSTIC_T *next;
 128    int attribute, number;
 129    LINE_T *line;
 130    NODE_T *where;
 131  };
 132  
 133  struct FILES_T
 134  {
 135    char *path, *initial_name, *generic_name;
 136    struct A68G_STREAM binary, diags, plugin, script, object, source, listing, pretty;
 137  };
 138  
 139  struct KEYWORD_T
 140  {
 141    char *text;
 142    int attribute;
 143    KEYWORD_T *less, *more;
 144  };
 145  
 146  struct MODES_T
 147  {
 148    MOID_T *BITS, *BOOL, *BYTES, *CHANNEL, *CHAR, *COLLITEM, *COMPL, *COMPLEX,
 149      *C_STRING, *ERROR, *FILE, *FORMAT, *HEX_NUMBER, *HIP, *INT, *LONG_BITS, *LONG_BYTES,
 150      *LONG_COMPL, *LONG_COMPLEX, *LONG_INT, *LONG_LONG_BITS, *LONG_LONG_COMPL,
 151      *LONG_LONG_COMPLEX, *LONG_LONG_INT, *LONG_LONG_REAL, *LONG_REAL, *NUMBER, *PIPE,
 152      *PROC_REAL_REAL, *PROC_LONG_REAL_LONG_REAL, *PROC_REF_FILE_BOOL, *PROC_REF_FILE_VOID, *PROC_ROW_CHAR,
 153      *PROC_STRING, *PROC_VOID, *REAL, *REF_BITS, *REF_BOOL, *REF_BYTES,
 154      *REF_CHAR, *REF_COMPL, *REF_COMPLEX, *REF_FILE, *REF_FORMAT, *REF_INT,
 155      *REF_LONG_BITS, *REF_LONG_BYTES, *REF_LONG_COMPL, *REF_LONG_COMPLEX,
 156      *REF_LONG_INT, *REF_LONG_LONG_BITS, *REF_LONG_LONG_COMPL,
 157      *REF_LONG_LONG_COMPLEX, *REF_LONG_LONG_INT, *REF_LONG_LONG_REAL, *REF_LONG_REAL, 
 158      *REF_PIPE, *REF_REAL, *REF_REF_FILE, *REF_ROW_CHAR, *REF_ROW_COMPLEX, *REF_ROW_INT, 
 159      *REF_ROW_REAL, *REF_ROW_ROW_COMPLEX, *REF_ROW_ROW_REAL, *REF_SOUND, *REF_STRING,
 160      *ROW_BITS, *ROW_BOOL, *ROW_CHAR, *ROW_COMPLEX, *ROW_INT, *ROW_LONG_BITS, *ROW_LONG_LONG_BITS, 
 161      *ROW_REAL, *ROW_ROW_CHAR, *ROW_ROW_COMPLEX, *ROW_ROW_REAL, *ROWS, *ROW_SIMPLIN, *ROW_SIMPLOUT, 
 162      *ROW_STRING, *SEMA, *SIMPLIN, *SIMPLOUT, *SOUND, *SOUND_DATA, *STRING, *FLEX_ROW_CHAR, 
 163      *FLEX_ROW_BOOL, *UNDEFINED, *VACUUM, *VOID;
 164  };
 165  
 166  struct OPTIONS_T
 167  {
 168    BOOL_T backtrace, brackets, check_only, clock, compile, compile_check, conservative_gc, 
 169      cross_reference, debug, fold, keep, license, moid_listing, no_notices, no_warnings, object_listing, 
 170      portcheck, pragmat_sema, pretty, quiet, reductions, regression_test, rerun, run, run_script, 
 171      source_listing, standard_prelude_listing, statistics_listing, strict, stropping, trace, 
 172      tree_listing, unused, verbose, version; 
 173    int time_limit, opt_level, indent;
 174    OPTION_LIST_T *list;
 175    STATUS_MASK_T nodemask;
 176  };
 177  
 178  struct MOID_T
 179  {
 180    BOOL_T has_rows, use, portable, derivate;
 181    int attribute, dim, number, short_id, digits, size_compl, digits_compl;
 182    MOID_T *sub, *equivalent_mode, *slice, *deflexed_mode, *name, *multiple_mode, *next, *rowed, *trim;
 183    NODE_T *node;
 184    PACK_T *pack;
 185    size_t size;
 186  };
 187  #define NO_MOID ((MOID_T *) NULL)
 188  
 189  struct NODE_T
 190  {
 191    GINFO_T *genie;
 192    int number, attribute, annotation;
 193    MOID_T *type;
 194    NODE_INFO_T *info;
 195    NODE_T *next, *previous, *sub, *sequence, *nest;
 196    PACK_T *pack;
 197    STATUS_MASK_T status, codex;
 198    TABLE_T *symbol_table, *non_local;
 199    TAG_T *tag, *tag_gc;
 200  };
 201  #define NO_NODE ((NODE_T *) NULL)
 202  
 203  struct NODE_INFO_T
 204  {
 205    char *char_in_line, *symbol, *pragment, *expr;
 206    int procedure_level, priority, pragment_type;
 207    LINE_T *line;
 208  };
 209  
 210  struct GINFO_T
 211  {
 212    BOOL_T is_coercion, is_new_lexical_level, need_dns;
 213    BYTE_T *offset;
 214    char *compile_name;
 215    int level, argsize, size, compile_node;
 216    MOID_T *partial_proc, *partial_locale;
 217    NODE_T *parent;
 218    PROP_T propagator;
 219    void *constant;
 220  };
 221  
 222  struct OPTION_LIST_T
 223  {
 224    BOOL_T processed;
 225    char *str;
 226    int scan;
 227    LINE_T *line;
 228    OPTION_LIST_T *next;
 229  };
 230  
 231  struct PACK_T
 232  {
 233    ADDR_T offset;
 234    char *text;
 235    MOID_T *type;
 236    NODE_T *node;
 237    PACK_T *next, *previous;
 238    size_t size;
 239  };
 240  
 241  struct POSTULATE_T
 242  {
 243    MOID_T *a, *b;
 244    POSTULATE_T *next;
 245  };
 246  
 247  struct REFINEMENT_T
 248  {
 249    char *name;
 250    int applications;
 251    LINE_T *line_defined, *line_applied;
 252    NODE_T *node_defined, *begin, *end;
 253    REFINEMENT_T *next;
 254  };
 255  
 256  struct SOID_T
 257  {
 258    int attribute, sort, cast;
 259    MOID_T *type;
 260    NODE_T *node;
 261    SOID_T *next;
 262  };
 263  
 264  struct LINE_T
 265  {
 266    BOOL_T list;
 267    char marker[6], *string, *filename;
 268    DIAGNOSTIC_T *diagnostics;
 269    int number, print_status;
 270    LINE_T *next, *previous;
 271  };
 272  #define NO_LINE ((LINE_T *) NULL)
 273  
 274  struct TABLE_T
 275  {
 276    ADDR_T ap_increment;
 277    BOOL_T initialise_frame, initialise_anon, proc_ops;
 278    int num, level, nest, attribute;
 279    NODE_T *jump_to, *sequence;
 280    TABLE_T *previous, *outer;
 281    TAG_T *identifiers, *operators, *priority, *indicants, *labels, *anonymous;
 282  };
 283  #define NO_TABLE ((TABLE_T *) NULL)
 284  
 285  struct TAG_T
 286  {
 287    STATUS_MASK_T status, codex;
 288    ADDR_T offset;
 289    BOOL_T scope_assigned, use, in_proc, a68g_standenv_proc, loc_assigned, portable;
 290    char *value;
 291    GPROC *procedure;
 292    int priority, heap, scope, size, youngest_environ, number;
 293    MOID_T *type;
 294    NODE_T *node, *unit;
 295    TABLE_T *symbol_table;
 296    TAG_T *next, *body;
 297  };
 298  #define NO_TAG ((TAG_T *) NULL)
 299  
 300  struct TOKEN_T
 301  {
 302    char *text;
 303    TOKEN_T *less, *more;
 304  };
 305  
 306  //! @struct A68G_HANDLE
 307  //! @brief Handle for REF into the HEAP.
 308  //! @details
 309  //! A REF into the HEAP points at a HANDLE.
 310  //! The HANDLE points at the actual object in the HEAP.
 311  //! Garbage collection modifies HANDLEs, but not REFs.
 312  
 313  struct A68G_HANDLE
 314  {
 315    STATUS_MASK_T status;
 316    A68G_HANDLE *next, *previous;
 317    BYTE_T *pointer;
 318    MOID_T *type;
 319    size_t size;
 320  } ALIGNED;
 321  
 322  static const A68G_HANDLE nil_handle = {INIT_MASK, NO_HANDLE, NO_HANDLE, NO_BYTE, NO_MOID, 0};
 323  
 324  //! @struct A68G_REF
 325  //! @brief Fat A68 pointer.
 326  //! Records dynamic scope.
 327  
 328  struct A68G_REF
 329  {
 330    STATUS_MASK_T status;
 331    ADDR_T offset, scope;
 332    A68G_HANDLE *handle;
 333  } ALIGNED;
 334  
 335  static const A68G_REF nil_ref = {(STATUS_MASK_T) (INIT_MASK | NIL_MASK), 0, 0, NO_HANDLE};
 336  
 337  //! @struct A68G_ARRAY
 338  //! @brief A68 array descriptor. 
 339  //! @details
 340  //! A row is an A68G_REF to an A68G_ARRAY.
 341  //! 
 342  //! An A68G_ARRAY is followed by one A68G_TUPLE per dimension.
 343  //! 
 344  //! @verbatim
 345  //! A68G_REF row -> A68G_ARRAY ----+   ARRAY: Description of row, ref to elements.
 346  //!                A68G_TUPLE 1   |   TUPLE: Bounds, one for every dimension.
 347  //!                ...           |
 348  //!                A68G_TUPLE dim |
 349  //!                ...           |
 350  //!                ...           |
 351  //!                Element 1 <---+   Sequential row elements in the heap.
 352  //!                ... 
 353  //!                Element n
 354  //! @endverbatim
 355  
 356  struct A68G_ARRAY
 357  {
 358    A68G_REF array;
 359    ADDR_T slice_offset, field_offset;
 360    int dim, elem_size;
 361    MOID_T *type;
 362  } ALIGNED;
 363  
 364  struct A68G_BITS
 365  {
 366    STATUS_MASK_T status;
 367    UNSIGNED_T value;
 368  } ALIGNED;
 369  
 370  struct A68G_BYTES
 371  {
 372    STATUS_MASK_T status;
 373    char value[A68G_BYTES_WIDTH + 1];
 374  } ALIGNED;
 375  
 376  struct A68G_CHANNEL
 377  {
 378    STATUS_MASK_T status;
 379    BOOL_T reset, set, get, put, bin, draw, compress;
 380  } ALIGNED;
 381  
 382  struct A68G_BOOL
 383  {
 384    STATUS_MASK_T status;
 385    BOOL_T value;
 386  } ALIGNED;
 387  
 388  struct A68G_CHAR
 389  {
 390    STATUS_MASK_T status;
 391    CHAR_T value;
 392  } ALIGNED;
 393  
 394  struct A68G_COLLITEM
 395  {
 396    STATUS_MASK_T status;
 397    int count;
 398  };
 399  
 400  struct A68G_INT
 401  {
 402    STATUS_MASK_T status;
 403    INT_T value;
 404  } ALIGNED;
 405  
 406  //! @struct A68G_FORMAT
 407  //! @brief A68 format descriptor.
 408  //! @details
 409  //! A format behaves very much like a procedure.
 410  
 411  struct A68G_FORMAT
 412  {
 413    STATUS_MASK_T status;
 414    ADDR_T fp_environ; // Frame pointer to environ.
 415    NODE_T *body;      // Entry point in syntax tree.
 416  } ALIGNED;
 417  
 418  static const A68G_FORMAT nil_format = {INIT_MASK, 0, NULL};
 419  
 420  struct A68G_LONG_BYTES
 421  {
 422    STATUS_MASK_T status;
 423    char value[A68G_LONG_BYTES_WIDTH + 1];
 424  } ALIGNED;
 425  
 426  //! @struct A68G_PROCEDURE
 427  //! @brief A68 procedure descriptor.
 428  
 429  struct A68G_PROCEDURE
 430  {
 431    STATUS_MASK_T status;
 432    A68G_HANDLE *locale; // Locale for partial parametrisation.
 433    ADDR_T fp_environ;   // Frame pointer to environ.
 434    MOID_T *type;
 435    union
 436    {
 437      NODE_T *node;
 438      GPROC *procedure;
 439    } body;             // Entry point in syntax tree or precompiled C procedure.
 440  } ALIGNED;
 441  
 442  typedef A68G_REAL A68G_COMPLEX[2];
 443  
 444  //! @struct A68G_TUPLE
 445  //! @brief A tuple containing bounds etcetera for one dimension.
 446  
 447  struct A68G_TUPLE
 448  {
 449    INT_T upper_bound, lower_bound, shift, span, k;
 450  } ALIGNED;
 451  
 452  struct A68G_UNION
 453  {
 454    STATUS_MASK_T status;
 455    void *value;
 456  } ALIGNED;
 457  
 458  struct A68G_SOUND
 459  {
 460    STATUS_MASK_T status;
 461    INT_T num_channels, sample_rate, bits_per_sample, num_samples, data_size;
 462    A68G_REF data;
 463  };
 464  
 465  struct A68G_FILE
 466  {
 467    STATUS_MASK_T status;
 468    A68G_CHANNEL channel;
 469    A68G_FORMAT format;
 470    A68G_PROCEDURE file_end_mended, page_end_mended, line_end_mended, value_error_mended, open_error_mended, transput_error_mended, format_end_mended, format_error_mended;
 471    A68G_REF identification, terminator, string;
 472    ADDR_T frame_pointer, stack_pointer;  // Since formats open frames
 473    BOOL_T read_mood, write_mood, char_mood, draw_mood, opened, open_exclusive, end_of_file, tmp_file;
 474    FILE_T fd;
 475    int transput_buffer, strpos, file_entry;
 476    struct
 477    {
 478      FILE *stream;
 479  #if defined (HAVE_GNU_PLOTUTILS)
 480      plPlotter *plotter;
 481      plPlotterParams *plotter_params;
 482  #endif
 483      BOOL_T device_made, device_opened;
 484      A68G_REF device, page_size;
 485      int device_handle /* deprecated */ , window_x_size, window_y_size;
 486      REAL_T x_coord, y_coord, red, green, blue;
 487    }
 488    device;
 489  #if defined (HAVE_POSTGRESQL)
 490  # if ! defined (A68G_OPTIMISE)
 491    PGconn *connection;
 492    PGresult *result;
 493  # endif
 494  #endif
 495  };
 496  
 497  #define M_BITS (MODE (BITS))
 498  #define M_BOOL (MODE (BOOL))
 499  #define M_BYTES (MODE (BYTES))
 500  #define M_CHANNEL (MODE (CHANNEL))
 501  #define M_CHAR (MODE (CHAR))
 502  #define M_COLLITEM (MODE (COLLITEM))
 503  #define M_COMPLEX (MODE (COMPLEX))
 504  #define M_COMPL (MODE (COMPL))
 505  #define M_C_STRING (MODE (C_STRING))
 506  #define M_ERROR (MODE (ERROR))
 507  #define M_FILE (MODE (FILE))
 508  #define M_FLEX_ROW_BOOL (MODE (FLEX_ROW_BOOL))
 509  #define M_FLEX_ROW_CHAR (MODE (FLEX_ROW_CHAR))
 510  #define M_FORMAT (MODE (FORMAT))
 511  #define M_HEX_NUMBER (MODE (HEX_NUMBER))
 512  #define M_HIP (MODE (HIP))
 513  #define M_INT (MODE (INT))
 514  #define M_LONG_BITS (MODE (LONG_BITS))
 515  #define M_LONG_BYTES (MODE (LONG_BYTES))
 516  #define M_LONG_COMPLEX (MODE (LONG_COMPLEX))
 517  #define M_LONG_COMPL (MODE (LONG_COMPL))
 518  #define M_LONG_INT (MODE (LONG_INT))
 519  #define M_LONG_LONG_BITS (MODE (LONG_LONG_BITS))
 520  #define M_LONG_LONG_COMPLEX (MODE (LONG_LONG_COMPLEX))
 521  #define M_LONG_LONG_COMPL (MODE (LONG_LONG_COMPL))
 522  #define M_LONG_LONG_INT (MODE (LONG_LONG_INT))
 523  #define M_LONG_LONG_REAL (MODE (LONG_LONG_REAL))
 524  #define M_LONG_REAL (MODE (LONG_REAL))
 525  #define M_NIL (MODE (NIL))
 526  #define M_NUMBER (MODE (NUMBER))
 527  #define M_PIPE (MODE (PIPE))
 528  #define M_PROC_LONG_REAL_LONG_REAL (MODE (PROC_LONG_REAL_LONG_REAL))
 529  #define M_PROC_REAL_REAL (MODE (PROC_REAL_REAL))
 530  #define M_PROC_REF_FILE_BOOL (MODE (PROC_REF_FILE_BOOL))
 531  #define M_PROC_REF_FILE_VOID (MODE (PROC_REF_FILE_VOID))
 532  #define M_PROC_ROW_CHAR (MODE (PROC_ROW_CHAR))
 533  #define M_PROC_STRING (MODE (PROC_STRING))
 534  #define M_PROC_VOID (MODE (PROC_VOID))
 535  #define M_REAL (MODE (REAL))
 536  #define M_REF_BITS (MODE (REF_BITS))
 537  #define M_REF_BOOL (MODE (REF_BOOL))
 538  #define M_REF_BYTES (MODE (REF_BYTES))
 539  #define M_REF_CHAR (MODE (REF_CHAR))
 540  #define M_REF_COMPLEX (MODE (REF_COMPLEX))
 541  #define M_REF_COMPL (MODE (REF_COMPL))
 542  #define M_REF_FILE (MODE (REF_FILE))
 543  #define M_REF_FORMAT (MODE (REF_FORMAT))
 544  #define M_REF_INT (MODE (REF_INT))
 545  #define M_REF_LONG_BITS (MODE (REF_LONG_BITS))
 546  #define M_REF_LONG_BYTES (MODE (REF_LONG_BYTES))
 547  #define M_REF_LONG_COMPLEX (MODE (REF_LONG_COMPLEX))
 548  #define M_REF_LONG_COMPL (MODE (REF_LONG_COMPL))
 549  #define M_REF_LONG_INT (MODE (REF_LONG_INT))
 550  #define M_REF_LONG_LONG_BITS (MODE (REF_LONG_LONG_BITS))
 551  #define M_REF_LONG_LONG_COMPLEX (MODE (REF_LONG_LONG_COMPLEX))
 552  #define M_REF_LONG_LONG_COMPL (MODE (REF_LONG_LONG_COMPL))
 553  #define M_REF_LONG_LONG_INT (MODE (REF_LONG_LONG_INT))
 554  #define M_REF_LONG_LONG_REAL (MODE (REF_LONG_LONG_REAL))
 555  #define M_REF_LONG_REAL (MODE (REF_LONG_REAL))
 556  #define M_REF_PIPE (MODE (REF_PIPE))
 557  #define M_REF_REAL (MODE (REF_REAL))
 558  #define M_REF_REF_FILE (MODE (REF_REF_FILE))
 559  #define M_REF_ROW_CHAR (MODE (REF_ROW_CHAR))
 560  #define M_REF_ROW_COMPLEX (MODE (REF_ROW_COMPLEX))
 561  #define M_REF_ROW_INT (MODE (REF_ROW_INT))
 562  #define M_REF_ROW_REAL (MODE (REF_ROW_REAL))
 563  #define M_REF_ROW_ROW_COMPLEX (MODE (REF_ROW_ROW_COMPLEX))
 564  #define M_REF_ROW_ROW_REAL (MODE (REF_ROW_ROW_REAL))
 565  #define M_REF_SOUND (MODE (REF_SOUND))
 566  #define M_REF_STRING (MODE (REF_STRING))
 567  #define M_ROW_BITS (MODE (ROW_BITS))
 568  #define M_ROW_BOOL (MODE (ROW_BOOL))
 569  #define M_ROW_CHAR (MODE (ROW_CHAR))
 570  #define M_ROW_COMPLEX (MODE (ROW_COMPLEX))
 571  #define M_ROW_INT (MODE (ROW_INT))
 572  #define M_ROW_LONG_BITS (MODE (ROW_LONG_BITS))
 573  #define M_ROW_LONG_LONG_BITS (MODE (ROW_LONG_LONG_BITS))
 574  #define M_ROW_REAL (MODE (ROW_REAL))
 575  #define M_ROW_ROW_CHAR (MODE (ROW_ROW_CHAR))
 576  #define M_ROW_ROW_COMPLEX (MODE (ROW_ROW_COMPLEX))
 577  #define M_ROW_ROW_REAL (MODE (ROW_ROW_REAL))
 578  #define M_ROW_SIMPLIN (MODE (ROW_SIMPLIN))
 579  #define M_ROW_SIMPLOUT (MODE (ROW_SIMPLOUT))
 580  #define M_ROWS (MODE (ROWS))
 581  #define M_ROW_STRING (MODE (ROW_STRING))
 582  #define M_SEMA (MODE (SEMA))
 583  #define M_SIMPLIN (MODE (SIMPLIN))
 584  #define M_SIMPLOUT (MODE (SIMPLOUT))
 585  #define M_SOUND_DATA (MODE (SOUND_DATA))
 586  #define M_SOUND (MODE (SOUND))
 587  #define M_STRING (MODE (STRING))
 588  #define M_UNDEFINED (MODE (UNDEFINED))
 589  #define M_VACUUM (MODE (VACUUM))
 590  #define M_VOID (MODE (VOID))
 591  
 592  #endif
     


© 2002-2025 J.M. van der Veer (jmvdveer@xs4all.nl)