123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- {
- This file is part of the Free Pascal run time library.
- Copyright (c) 2007 by contributors of the Free Pascal Compiler
- Pascal system unit for the Symbian OS
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- 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.
- **********************************************************************}
- unit System;
- interface
- {$ifdef SYSTEMDEBUG}
- {$define SYSTEMEXCEPTIONDEBUG}
- {$endif SYSTEMDEBUG}
- {$ifdef cpui386}
- {$define Set_i386_Exception_handler}
- {$endif cpui386}
- { include system-independent routine headers }
- {$I systemh.inc}
- const
- LineEnding = #13#10;
- LFNSupport = true;
- DirectorySeparator = '\';
- DriveSeparator = ':';
- ExtensionSeparator = '.';
- PathSeparator = ';';
- AllowDirectorySeparators : set of char = ['\','/'];
- AllowDriveSeparators : set of char = [':'];
- { FileNameCaseSensitive and FileNameCasePreserving are defined separately below }
- maxExitCode = 65535;
- MaxPathLen = 260;
- AllFilesMask = '*';
- type
- PEXCEPTION_FRAME = ^TEXCEPTION_FRAME;
- TEXCEPTION_FRAME = record
- next : PEXCEPTION_FRAME;
- handler : pointer;
- end;
- const
- { Default filehandles }
- UnusedHandle : THandle = -1;
- StdInputHandle : THandle = 0;
- StdOutputHandle : THandle = 0;
- StdErrorHandle : THandle = 0;
- FileNameCaseSensitive : boolean = false;
- FileNameCasePreserving: boolean = true;
- CtrlZMarksEOF: boolean = true; (* #26 not considered as end of file *)
- sLineBreak = LineEnding;
- DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCRLF;
- System_exception_frame : PEXCEPTION_FRAME =nil;
- type
- TStartupInfo=packed record
- cb : longint;
- lpReserved : Pointer;
- lpDesktop : Pointer;
- lpTitle : Pointer;
- dwX : longint;
- dwY : longint;
- dwXSize : longint;
- dwYSize : longint;
- dwXCountChars : longint;
- dwYCountChars : longint;
- dwFillAttribute : longint;
- dwFlags : longint;
- wShowWindow : Word;
- cbReserved2 : Word;
- lpReserved2 : Pointer;
- hStdInput : longint;
- hStdOutput : longint;
- hStdError : longint;
- end;
- var
- { C compatible arguments }
- argc : longint;
- argv : ppchar;
- { Win32 Info }
- startupinfo : tstartupinfo;
- hprevinst,
- MainInstance,
- cmdshow : longint;
- DLLreason,DLLparam:longint;
- type
- TDLL_Process_Entry_Hook = function (dllparam : longint) : longbool;
- TDLL_Entry_Hook = procedure (dllparam : longint);
- const
- Dll_Process_Attach_Hook : TDLL_Process_Entry_Hook = nil;
- Dll_Process_Detach_Hook : TDLL_Entry_Hook = nil;
- Dll_Thread_Attach_Hook : TDLL_Entry_Hook = nil;
- Dll_Thread_Detach_Hook : TDLL_Entry_Hook = nil;
- implementation
- var
- SysInstance: Longint; public name '_FPC_SysInstance';
- { include system independent routines }
- {$I system.inc}
- {*****************************************************************************
- Minimum Symbian API declarations
- *****************************************************************************}
- const KErrNone=0;
- {*****************************************************************************
- Parameter Handling
- *****************************************************************************}
- var
- ModuleName : array[0..255] of char;
- function GetCommandFile:pchar;
- begin
- end;
- procedure setup_arguments;
- begin
- end;
- function paramcount : longint;
- begin
- paramcount := argc - 1;
- end;
- function paramstr(l : longint) : string;
- begin
- if (l>=0) and (l<argc) then
- paramstr:=strpas(argv[l])
- else
- paramstr:='';
- end;
- procedure randomize;
- begin
- // randseed:=GetTickCount;
- end;
- {*****************************************************************************
- System Dependent Exit code
- *****************************************************************************}
- //procedure PascalMain; external name 'PASCALMAIN';
- //procedure fpc_do_exit; stdcall; external name 'FPC_DO_EXIT';
- Procedure system_exit;
- begin
- end;
- var
- { value of the stack segment
- to check if the call stack can be written on exceptions }
- _SS : Cardinal;
- procedure pascalmain; external name 'PASCALMAIN';
- { Entry point for the pascal code }
- function Pascal_E32Main: Integer; cdecl; [public, alias: '_Pascal_E32Main'];
- var
- ST : pointer;
- begin
- PascalMain;
- { if we pass here there was no error }
- system_exit;
- Result := KErrNone;
- end;
- procedure SysInitStdIO;
- begin
- end;
- (* ProcessID cached to avoid repeated calls to GetCurrentProcess. *)
- var
- ProcessID: SizeUInt;
- function GetProcessID: SizeUInt;
- begin
- GetProcessID := ProcessID;
- end;
- function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;
- begin
- result := stklen;
- end;
- {
- const
- Exe_entry_code : pointer = @Exe_entry;
- Dll_entry_code : pointer = @Dll_entry;
- }
- begin
- end.
|