| (* M2System.def defines the SYSTEM builtin types. |
| |
| Copyright (C) 2001-2025 Free Software Foundation, Inc. |
| Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. |
| |
| This file is part of GNU Modula-2. |
| |
| GNU Modula-2 is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3, or (at your option) |
| any later version. |
| |
| GNU Modula-2 is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GNU Modula-2; see the file COPYING3. If not see |
| <http://www.gnu.org/licenses/>. *) |
| |
| DEFINITION MODULE M2System ; |
| |
| (* |
| Title : M2System |
| Author : Gaius Mulley |
| System : UNIX (gm2) |
| Date : Tue Jul 11 08:39:17 2000 |
| Description: Implements the base types of the module SYSTEM |
| for the GNU Modula-2 compiler. Note that the base types |
| are mapped onto their equivalents in the gcc backend. |
| *) |
| |
| FROM gcctypes IMPORT location_t ; |
| |
| EXPORT QUALIFIED |
| System, (* The SYSTEM module symbol. *) |
| Loc, (* ISO specific System Type. *) |
| |
| Word, (* System Type *) |
| Byte, (* System Type *) |
| Address, (* System Type *) |
| CSizeT, (* System Type *) |
| CSSizeT, (* System Type *) |
| COffT, (* System Type *) |
| |
| Adr, (* System Function *) |
| TSize, (* System Function *) |
| |
| AddAdr, (* ISO specific System Function *) |
| SubAdr, (* ISO specific System Function *) |
| DifAdr, (* ISO specific System Function *) |
| MakeAdr, (* ISO specific System Function *) |
| Rotate, (* ISO specific System Function *) |
| Shift, (* ISO specific System Function *) |
| Cast, (* ISO specific System Function *) |
| Throw, (* GNU Modula-2 extension *) |
| TBitSize, (* GNU Modula-2 extension *) |
| |
| GetSystemTypeMinMax, |
| IsPseudoSystemFunction, IsPseudoSystemProcedure, |
| IsSystemType, |
| IsPseudoSystemFunctionConstExpression, |
| |
| IntegerN, CardinalN, WordN, RealN, SetN, ComplexN, |
| IsIntegerN, IsCardinalN, IsWordN, |
| IsRealN, IsSetN, IsComplexN, |
| IsGenericSystemType, |
| IsSameSizePervasiveType, IsSameSize, |
| InitSystem ; |
| |
| |
| VAR |
| System, |
| Loc, |
| Word, Byte, |
| Address, |
| CSizeT, CSSizeT, |
| COffT, |
| |
| Adr, |
| TSize, TBitSize, |
| AddAdr, SubAdr, |
| DifAdr, MakeAdr, |
| Rotate, Shift, |
| Cast, Throw : CARDINAL ; |
| |
| |
| (* |
| InitSystem - initializes the base types Word and Byte in the module |
| SYSTEM. |
| *) |
| |
| PROCEDURE InitSystem ; |
| |
| |
| (* |
| GetSystemTypeMinMax - returns the minimum and maximum values for a given system type. |
| *) |
| |
| PROCEDURE GetSystemTypeMinMax (type: CARDINAL; VAR min, max: CARDINAL) ; |
| |
| |
| (* |
| IsPseudoSystemFunction - returns true if Sym is a SYSTEM pseudo function. |
| *) |
| |
| PROCEDURE IsPseudoSystemFunction (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsPseudoSystemProcedure - returns true if Sym is a SYSTEM pseudo procedure. |
| *) |
| |
| PROCEDURE IsPseudoSystemProcedure (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsPseudoSystemFunctionConstExpression - returns TRUE if this procedure |
| is legal in a constant expression. |
| *) |
| |
| PROCEDURE IsPseudoSystemFunctionConstExpression (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsSystemType - returns TRUE if Sym is a SYSTEM (inbuilt) type. |
| It does not search your SYSTEM implementation module. |
| *) |
| |
| PROCEDURE IsSystemType (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IntegerN - returns the symbol associated with INTEGER[N]. |
| NulSym is returned if the type does not exist. |
| *) |
| |
| PROCEDURE IntegerN (bitlength: CARDINAL) : CARDINAL ; |
| |
| |
| (* |
| CardinalN - returns the symbol associated with CARDINAL[N]. |
| NulSym is returned if the type does not exist. |
| *) |
| |
| PROCEDURE CardinalN (bitlength: CARDINAL) : CARDINAL ; |
| |
| |
| (* |
| WordN - returns the symbol associated with WORD[N]. |
| NulSym is returned if the type does not exist. |
| *) |
| |
| PROCEDURE WordN (bitlength: CARDINAL) : CARDINAL ; |
| |
| |
| (* |
| SetN - returns the symbol associated with SET[N]. |
| NulSym is returned if the type does not exist. |
| *) |
| |
| PROCEDURE SetN (bitlength: CARDINAL) : CARDINAL ; |
| |
| |
| (* |
| RealN - returns the symbol associated with REAL[N]. |
| NulSym is returned if the type does not exist. |
| *) |
| |
| PROCEDURE RealN (bitlength: CARDINAL) : CARDINAL ; |
| |
| |
| (* |
| ComplexN - returns the symbol associated with COMPLEX[N]. |
| NulSym is returned if the type does not exist. |
| *) |
| |
| PROCEDURE ComplexN (bitlength: CARDINAL) : CARDINAL ; |
| |
| |
| (* |
| IsIntegerN - returns the TRUE if, sym, is one of the SYSTEM |
| INTEGER types (not the base INTEGER type). |
| *) |
| |
| PROCEDURE IsIntegerN (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsCardinalN - returns the TRUE if, sym, is one of the SYSTEM |
| CARDINAL types (not the base CARDINAL type). |
| *) |
| |
| PROCEDURE IsCardinalN (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsWordN - returns the TRUE if, sym, is one of the SYSTEM |
| WORD[n] types (not the default SYSTEM WORD type). |
| *) |
| |
| PROCEDURE IsWordN (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsSetN - returns the TRUE if, sym, is one of the SYSTEM |
| SET[n] types (not the default SYSTEM BITSET type). |
| *) |
| |
| PROCEDURE IsSetN (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsRealN - returns the TRUE if, sym, is one of the SYSTEM |
| REAL[n] types (not the default base REAL type). |
| *) |
| |
| PROCEDURE IsRealN (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsComplexN - returns the TRUE if, sym, is one of the SYSTEM |
| COMPLEX[n] types (not the default base COMPLEX, |
| LONGCOMPLEX or SHORTCOMPLEX types). |
| *) |
| |
| PROCEDURE IsComplexN (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsGenericSystemType - returns TRUE if, sym, is of type |
| BYTE, WORD or any other length. |
| *) |
| |
| PROCEDURE IsGenericSystemType (sym: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsSameSizePervasiveType - returns TRUE if a or b are CARDINAL, INTEGER, REAL, |
| LONGREAL, SHORTREAL and the other type is the same |
| size and of the same type. |
| *) |
| |
| PROCEDURE IsSameSizePervasiveType (a, b: CARDINAL) : BOOLEAN ; |
| |
| |
| (* |
| IsSameSize - return TRUE if SIZE(a)=SIZE(b) |
| *) |
| |
| PROCEDURE IsSameSize (a, b: CARDINAL) : BOOLEAN ; |
| |
| |
| END M2System. |