123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- {
- $Id$
- Copyright (c) 1998-2000 by Florian Klaempfl, Pierre Muller
- Global types
- This program 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 2 of the License, or
- (at your option) any later version.
- This program 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 this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- ****************************************************************************
- }
- unit globtype;
- {$i defines.inc}
- interface
- const
- maxidlen = 64;
- type
- { System independent float names }
- {$ifdef i386}
- bestreal = extended;
- ts32real = single;
- ts64real = double;
- ts80real = extended;
- ts64comp = extended;
- {$endif}
- {$ifdef m68k}
- bestreal = real;
- ts32real = single;
- ts64real = double;
- ts80real = extended;
- ts64comp = comp;
- {$endif}
- {$ifdef alpha}
- bestreal = extended;
- ts32real = single;
- ts64real = double;
- ts80real = extended;
- ts64comp = comp;
- {$endif}
- {$ifdef powerpc}
- bestreal = double;
- ts32real = single;
- ts64real = double;
- ts80real = extended;
- ts64comp = comp;
- {$endif powerpc}
- {$ifdef ia64}
- bestreal = extended;
- ts32real = single;
- ts64real = double;
- ts80real = extended;
- { on the ia64 comp will be mapped to int64 }
- ts64comp = comp;
- {$endif}
- pbestreal=^bestreal;
- { Switches which can be changed locally }
- tlocalswitch = (cs_localnone,
- { codegen }
- cs_check_overflow,cs_check_range,cs_check_object_ext,
- cs_check_io,cs_check_stack,
- cs_omitstackframe,cs_do_assertion,cs_generate_rtti,
- cs_full_boolean_eval,
- { mmx }
- cs_mmx,cs_mmx_saturation,
- { parser }
- cs_typed_addresses,cs_strict_var_strings,cs_ansistrings
- );
- tlocalswitches = set of tlocalswitch;
- { Switches which can be changed only at the beginning of a new module }
- tmoduleswitch = (cs_modulenone,
- { parser }
- cs_fp_emulation,cs_extsyntax,cs_openstring,
- { support }
- cs_support_inline,cs_support_goto,cs_support_macro,
- cs_support_c_operators,cs_static_keyword,
- cs_typed_const_not_changeable,
- { generation }
- cs_profile,cs_debuginfo,cs_browser,cs_local_browser,cs_compilesystem,
- cs_lineinfo,
- { linking }
- cs_create_smart,cs_create_dynamic
- );
- tmoduleswitches = set of tmoduleswitch;
- { Switches which can be changed only for a whole program/compilation,
- mostly set with commandline }
- tglobalswitch = (cs_globalnone,
- { parameter switches }
- cs_check_unit_name,cs_constructor_name,
- { units }
- cs_load_objpas_unit,
- cs_load_gpc_unit,
- { optimizer }
- cs_regalloc,cs_uncertainopts,cs_littlesize,cs_optimize,
- cs_fastoptimize, cs_slowoptimize,
- { browser }
- cs_browser_log,
- { debugger }
- cs_gdb_dbx,cs_gdb_gsym,cs_gdb_heaptrc,cs_gdb_lineinfo,cs_checkpointer,
- { assembling }
- cs_asm_leave,cs_asm_extern,cs_asm_pipe,cs_asm_source,
- cs_asm_regalloc,cs_asm_tempalloc,
- { linking }
- cs_link_extern,cs_link_static,cs_link_smart,cs_link_shared,cs_link_deffile,
- cs_link_strip,cs_link_staticflag
- );
- tglobalswitches = set of tglobalswitch;
- { Switches which can be changed by a mode (fpc,tp7,delphi) }
- tmodeswitch = (m_none,m_all, { needed for keyword }
- { generic }
- m_fpc,m_objfpc,m_delphi,m_tp,m_tp7,m_gpc,
- { more specific }
- m_class, { delphi class model }
- m_objpas, { load objpas unit }
- m_result, { result in functions }
- m_string_pchar, { pchar 2 string conversion }
- m_cvar_support, { cvar variable directive }
- m_nested_comment, { nested comments }
- m_tp_procvar, { tp style procvars (no @ needed) }
- m_repeat_forward, { repeating forward declarations is needed }
- m_pointer_2_procedure, { allows the assignement of pointers to
- procedure variables }
- m_autoderef, { does auto dereferencing of struct. vars }
- m_initfinal, { initialization/finalization for units }
- m_add_pointer, { allow pointer add/sub operations }
- m_default_ansistring, { ansistring turned on by default }
- m_out, { support the calling convention OUT }
- m_default_para, { support default parameters }
- m_hintdirective { support hint directives }
- );
- tmodeswitches = set of tmodeswitch;
- { win32 & OS/2 application types }
- tapptype = (app_none,
- app_gui,app_cui,app_fs
- );
- { interface types }
- tinterfacetypes = (
- it_interfacecom,
- it_interfacecorba
- );
- { currently parsed block type }
- tblock_type = (bt_none,
- bt_general,bt_type,bt_const,bt_except
- );
- type
- stringid = string[maxidlen];
- tnormalset = set of byte; { 256 elements set }
- pnormalset = ^tnormalset;
- pdouble = ^double;
- pbyte = ^byte;
- pword = ^word;
- plongint = ^longint;
- Tconstant=record
- case signed:boolean of
- false:
- (valueu:cardinal);
- true:
- (values:longint);
- end;
- {$ifndef Delphi}
- {$ifndef xFPC}
- type
- tguid = packed record
- D1: LongWord;
- D2: Word;
- D3: Word;
- D4: array[0..7] of Byte;
- end;
- {$endif}
- {$endif}
- const
- { link options }
- link_none = $0;
- link_allways = $1;
- link_static = $2;
- link_smart = $4;
- link_shared = $8;
- implementation
- end.
- {
- $Log$
- Revision 1.13 2001-07-01 20:16:15 peter
- * alignmentinfo record added
- * -Oa argument supports more alignment settings that can be specified
- per type: PROC,LOOP,VARMIN,VARMAX,CONSTMIN,CONSTMAX,RECORDMIN
- RECORDMAX,LOCALMIN,LOCALMAX. It is possible to set the mimimum
- required alignment and the maximum usefull alignment. The final
- alignment will be choosen per variable size dependent on these
- settings
- Revision 1.12 2001/06/03 21:57:35 peter
- + hint directive parsing support
- Revision 1.11 2001/01/20 18:32:52 hajny
- + APPTYPE support under OS/2, app_fs, GetEnvPChar for OS/2
- Revision 1.10 2000/11/29 00:30:30 florian
- * unused units removed from uses clause
- * some changes for widestrings
- Revision 1.9 2000/11/12 22:20:37 peter
- * create generic toutputsection for binary writers
- Revision 1.8 2000/11/04 14:25:19 florian
- + merged Attila's changes for interfaces, not tested yet
- Revision 1.7 2000/09/24 15:06:16 peter
- * use defines.inc
- Revision 1.6 2000/09/21 11:30:49 jonas
- + support for full boolean evaluation (b+/b-), default remains short
- circuit boolean evaluation
- Revision 1.5 2000/08/05 13:25:06 peter
- * packenum 1 fixes (merged)
- Revision 1.4 2000/08/02 19:49:59 peter
- * first things for default parameters
- Revision 1.3 2000/07/13 12:08:25 michael
- + patched to 1.1.0 with former 1.09patch from peter
- Revision 1.2 2000/07/13 11:32:41 michael
- + removed logs
- }
|