mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-10-31 22:10:55 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			676 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			676 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| (*
 | |
| Used by:
 | |
| - LazLogger
 | |
| - LazLoggerBase
 | |
| - LazLoggerDummy
 | |
| *)
 | |
| 
 | |
| procedure DebuglnStack(const s: string);
 | |
| begin
 | |
|   {$IFnDEF LazLoggerDummy}
 | |
|   DebugLogger.DebuglnStack(s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(const S: String; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(S, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(const s1, s2: string; const s3: string; const s4: string; const s5: string;
 | |
|   const s6: string; const s7: string; const s8: string; const s9: string; const s10: string;
 | |
|   const s11: string; const s12: string; const s13: string; const s14: string;
 | |
|   const s15: string; const s16: string; const s17: string; const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(const S: String; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(S, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(const s1, s2: string; const s3: string; const s4: string; const s5: string;
 | |
|   const s6: string; const s7: string; const s8: string; const s9: string; const s10: string;
 | |
|   const s11: string; const s12: string; const s13: string; const s14: string;
 | |
|   const s15: string; const s16: string; const s17: string; const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter();
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter();
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(s: string; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(s, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(const s1, s2: string; const s3: string; const s4: string;
 | |
|   const s5: string; const s6: string; const s7: string; const s8: string; const s9: string;
 | |
|   const s10: string; const s11: string; const s12: string; const s13: string;
 | |
|   const s14: string; const s15: string; const s16: string; const s17: string;
 | |
|   const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit();
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit();
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(s: string; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(s, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(const s1, s2: string; const s3: string; const s4: string;
 | |
|   const s5: string; const s6: string; const s7: string; const s8: string; const s9: string;
 | |
|   const s10: string; const s11: string; const s12: string; const s13: string;
 | |
|   const s14: string; const s15: string; const s16: string; const s17: string;
 | |
|   const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebuglnStack(LogEnabled: TLazLoggerLogEnabled; const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebuglnStack(LogEnabled, s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(LogEnabled, s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(LogEnabled, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(LogEnabled, s, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DbgOut(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string;
 | |
|   const s4: string; const s5: string; const s6: string; const s7: string; const s8: string;
 | |
|   const s9: string; const s10: string; const s11: string; const s12: string;
 | |
|   const s13: string; const s14: string; const s15: string; const s16: string;
 | |
|   const s17: string; const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DbgOut(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(LogEnabled, s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(LogEnabled, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const S: String; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(LogEnabled, s, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLn(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string;
 | |
|   const s4: string; const s5: string; const s6: string; const s7: string; const s8: string;
 | |
|   const s9: string; const s10: string; const s11: string; const s12: string;
 | |
|   const s13: string; const s14: string; const s15: string; const s16: string;
 | |
|   const s17: string; const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(LogEnabled);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(LogEnabled, s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(LogEnabled, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(LogEnabled, s, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnEnter(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string;
 | |
|   const s4: string; const s5: string; const s6: string; const s7: string; const s8: string;
 | |
|   const s9: string; const s10: string; const s11: string; const s12: string;
 | |
|   const s13: string; const s14: string; const s15: string; const s16: string;
 | |
|   const s17: string; const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnEnter(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(LogEnabled);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(LogEnabled, s);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(LogEnabled, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; s: string; Args: array of const);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(LogEnabled, s, Args);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| procedure DebugLnExit(LogEnabled: TLazLoggerLogEnabled; const s1, s2: string; const s3: string;
 | |
|   const s4: string; const s5: string; const s6: string; const s7: string; const s8: string;
 | |
|   const s9: string; const s10: string; const s11: string; const s12: string;
 | |
|   const s13: string; const s14: string; const s15: string; const s16: string;
 | |
|   const s17: string; const s18: string);
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLnExit(LogEnabled, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18);
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const c: cardinal): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:=IntToStr(c);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const i: longint): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:=IntToStr(i);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const i: int64): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:=IntToStr(i);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const q: qword): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:=IntToStr(q);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const r: TRect): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='l='+IntToStr(r.Left)+',t='+IntToStr(r.Top)
 | |
|          +',r='+IntToStr(r.Right)+',b='+IntToStr(r.Bottom);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const p: TPoint): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='(x='+IntToStr(p.x)+',y='+IntToStr(p.y)+')';
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const p: pointer): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:=HexStr({%H-}PtrUInt(p),2*sizeof(PtrInt));
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const e: extended; MaxDecimals: integer): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:=copy(FloatToStr(e),1,MaxDecimals);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const b: boolean): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   if b then Result:='True' else Result:='False';
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const m: TMethod): string;
 | |
| {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
| var
 | |
|   o: TObject;
 | |
|   aMethodName: ShortString;
 | |
| {$ENDIF}
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   o:=TObject(m.Data);
 | |
|   Result:=dbgsname(o)+'.'+dbgs(m.Code);
 | |
|   if (o<>nil) and (m.Code<>nil) then begin
 | |
|     aMethodName:=o.MethodName(m.Code);
 | |
|     Result:=Result+'='''+aMethodName+'''';
 | |
|   end;
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgSName(const p: TObject): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   if p=nil then
 | |
|     Result:='nil'
 | |
|   else if p is TComponent then
 | |
|     Result:=TComponent(p).Name+':'+p.ClassName
 | |
|   else
 | |
|     Result:=p.ClassName;
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgSName(const p: TClass): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   if p=nil then
 | |
|     Result:='nil'
 | |
|   else
 | |
|     Result:=p.ClassName;
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const ASize: TSize): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result := 'x=' + DbgS(ASize.cx) + ',y=' + DbgS(ASize.cy);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgSJoin(const s1, s2: string): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   if s1 <> '' then
 | |
|     Result := s1 + ',' + s2
 | |
|   else
 | |
|     Result := s2;
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const s: TComponentState): string;
 | |
| {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
| type
 | |
|   TComponentStateEnum = low(TComponentState)..high(TComponentState);
 | |
|   function DbgSComponentStateEnum(const se: TComponentStateEnum): string;
 | |
|   begin
 | |
|     WriteStr(Result{%H-}, se);
 | |
|   end;
 | |
| var
 | |
|   i: TComponentStateEnum;
 | |
| {$ENDIF}
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='';
 | |
|   for i := low(TComponentState) to high(TComponentState) do
 | |
|     if i in s then
 | |
|       Result := DbgSJoin(Result, dbgsComponentStateEnum(i));
 | |
|   Result:='['+Result+']';
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function dbgObjMem(AnObject: TObject): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='';
 | |
|   if AnObject=nil then exit;
 | |
|   Result:=dbgMemRange(PByte(AnObject),AnObject.InstanceSize);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function dbghex(i: Int64): string;
 | |
| {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
| const
 | |
|   Hex = '0123456789ABCDEF';
 | |
| var
 | |
|   Negated: Boolean;
 | |
| {$ENDIF}
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='';
 | |
|   if i<0 then begin
 | |
|     Negated:=true;
 | |
|     i:=-i;
 | |
|   end else
 | |
|     Negated:=false;
 | |
|   repeat
 | |
|     Result:=Hex[(i mod 16)+1]+Result;
 | |
|     i:=i div 16;
 | |
|   until i=0;
 | |
|   if Negated then
 | |
|     Result:='-'+Result;
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const i1, i2, i3, i4: integer): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:=dbgs(i1)+','+dbgs(i2)+','+dbgs(i3)+','+dbgs(i4);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const Shift: TShiftStateEnum): string;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   WriteStr(Result{%H-}, Shift);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function DbgS(const Shift: TShiftState): string;
 | |
| {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
| var
 | |
|   i: TShiftStateEnum;
 | |
| {$ENDIF}
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='';
 | |
|   for i := low(TShiftStateEnum) to high(TShiftStateEnum) do
 | |
|     if i in Shift then
 | |
|       Result := DbgSJoin(Result, DbgS(i));
 | |
|   Result:='['+Result+']';
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function dbgMemRange(P: Pointer; Count: integer; Width: integer): string;
 | |
| {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
| const
 | |
|   HexChars: array[0..15] of char = '0123456789ABCDEF';
 | |
|   LineEnd: shortstring = LineEnding;
 | |
| var
 | |
|   i: Integer;
 | |
|   NewLen: Integer;
 | |
|   Dest: PChar;
 | |
|   Col: Integer;
 | |
|   j: Integer;
 | |
| {$ENDIF}
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='';
 | |
|   if (p=nil) or (Count<=0) then exit;
 | |
|   NewLen:=Count*2;
 | |
|   if Width>0 then begin
 | |
|     inc(NewLen,(Count div Width)*length(LineEnd));
 | |
|   end;
 | |
|   SetLength(Result,NewLen);
 | |
|   Dest:=PChar(Result);
 | |
|   Col:=1;
 | |
|   for i:=0 to Count-1 do begin
 | |
|     Dest^:=HexChars[PByte(P)[i] shr 4];
 | |
|     inc(Dest);
 | |
|     Dest^:=HexChars[PByte(P)[i] and $f];
 | |
|     inc(Dest);
 | |
|     inc(Col);
 | |
|     if (Width>0) and (Col>Width) then begin
 | |
|       Col:=1;
 | |
|       for j:=1 to length(LineEnd) do begin
 | |
|         Dest^:=LineEnd[j];
 | |
|         inc(Dest);
 | |
|       end;
 | |
|     end;
 | |
|   end;
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| function dbgMemStream(MemStream: TCustomMemoryStream; Count: integer): string;
 | |
| {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
| var
 | |
|   s: string;
 | |
| {$ENDIF}
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   Result:='';
 | |
|   if (MemStream=nil) or (not (MemStream is TCustomMemoryStream)) or (Count<=0)
 | |
|   then exit;
 | |
|   Count:=Min(Count,MemStream.Size);
 | |
|   if Count<=0 then exit;
 | |
|   SetLength(s,Count);
 | |
|   Count:=MemStream.Read(s[1],Count);
 | |
|   Result:=dbgMemRange(PByte(s),Count);
 | |
|   {$ELSE}
 | |
|   Result := '';
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| 
 | |
| procedure DumpExceptionBackTrace;
 | |
| begin
 | |
|   {$IFnDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   DebugLogger.DebugLn('  Stack trace:');
 | |
|   DebugLogger.DumpExceptionBackTrace;
 | |
|   {$ENDIF}
 | |
| end;
 | |
| 
 | |
| {$IFDEF USED_BY_LAZLOGGER_DUMMY}
 | |
|   operator := (g: PLazLoggerLogGroup): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result := Default(TLazLoggerLogEnabled);
 | |
|   end;
 | |
| 
 | |
|   operator := (g: Boolean): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result := Default(TLazLoggerLogEnabled);
 | |
|   end;
 | |
| 
 | |
|   operator and(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result := Default(TLazLoggerLogEnabled);
 | |
|   end;
 | |
| 
 | |
|   operator or(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result := Default(TLazLoggerLogEnabled);
 | |
|   end;
 | |
| {$ELSE}
 | |
|   operator := (g: PLazLoggerLogGroup): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result.Enabled := (g = nil) or (g^.Enabled);
 | |
|     Result.Group := g;
 | |
|   end;
 | |
| 
 | |
|   operator := (g: Boolean): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result.Enabled := g;
 | |
|     Result.Group := nil;
 | |
|   end;
 | |
| 
 | |
|   operator and(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result.Enabled := g1.Enabled and g2.Enabled;
 | |
|     if (g1.Group = nil) and g1.Enabled then
 | |
|       Result.Group := g2.Group
 | |
|     else
 | |
|     if (g2.Group = nil) and g2.Enabled then
 | |
|       Result.Group := g1.Group
 | |
|     else
 | |
|       Result.Group := nil;
 | |
|   end;
 | |
| 
 | |
|   operator or(g1, g2: TLazLoggerLogEnabled): TLazLoggerLogEnabled;
 | |
|   begin
 | |
|     Result.Enabled := g1.Enabled or g2.Enabled;
 | |
|     if (g1.Group = nil) then
 | |
|       Result.Group := g2.Group
 | |
|     else
 | |
|     if (g2.Group = nil) then
 | |
|       Result.Group := g1.Group
 | |
|     else
 | |
|       Result.Group := nil;
 | |
|   end;
 | |
| {$ENDIF}
 | |
| 
 | 
