lazarus/components/lazutils/fpcadds.pas
mattias 054150bb42 lazutils: some optimizations from Alexey
git-svn-id: trunk@59358 -
2018-10-26 19:26:31 +00:00

68 lines
1.4 KiB
ObjectPascal

{
*****************************************************************************
This file is part of LazUtils.
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
}
unit FPCAdds;
{$mode objfpc}{$H+}{$inline on}
{$i lazutils_defines.inc}
interface
uses
Classes, SysUtils;
type
TStreamSeekType = int64;
TMemStreamSeekType = PtrInt;
TCompareMemSize = PtrUInt;
PHandle = ^THandle;
function StrToWord(const s: string): word;
function AlignToPtr(const p: Pointer): Pointer; inline;
function AlignToInt(const p: Pointer): Pointer; inline;
implementation
function StrToWord(const s: string): word;
var
i: Integer;
begin
Result:=0;
for i:=1 to Length(s) do
Result:=Result*10+ord(s[i])-ord('0');
end;
function AlignToPtr(const p: Pointer): Pointer; inline;
begin
{$IFDEF FPC_REQUIRES_PROPER_ALIGNMENT}
Result := Align(p, SizeOf(Pointer));
{$ELSE}
Result := p;
{$ENDIF}
end;
function AlignToInt(const p: Pointer): Pointer; inline;
begin
{$IFDEF FPC_REQUIRES_PROPER_ALIGNMENT}
Result := Align(p, SizeOf(integer));
{$ELSE}
Result := p;
{$ENDIF}
end;
{$ifdef UTF8_RTL}
initialization
SetMultiByteConversionCodePage(CP_UTF8);
// SetMultiByteFileSystemCodePage(CP_UTF8); not needed, this is the default under Windows
SetMultiByteRTLFileSystemCodePage(CP_UTF8);
{$IFEND}
end.