diff options
author | k-m_schindler <k-m_schindler@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2009-04-18 08:09:49 +0000 |
---|---|---|
committer | k-m_schindler <k-m_schindler@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2009-04-18 08:09:49 +0000 |
commit | 34120b83807097ca25af4af5d35ac6023627bee6 (patch) | |
tree | 5dd980df23ea0e7c00f53d8ce7fa82a6c194c1ba /plugins/SDK/USDXStrUtils.pas | |
parent | aca4ad448dddb2a260cda692ec9eeba415a78852 (diff) | |
download | usdx-34120b83807097ca25af4af5d35ac6023627bee6.tar.gz usdx-34120b83807097ca25af4af5d35ac6023627bee6.tar.xz usdx-34120b83807097ca25af4af5d35ac6023627bee6.zip |
rename StrUtils.pas to USDXStrUtils.pas; should finally be removed anyway. Many text changes in comments
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1675 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'plugins/SDK/USDXStrUtils.pas')
-rw-r--r-- | plugins/SDK/USDXStrUtils.pas | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/plugins/SDK/USDXStrUtils.pas b/plugins/SDK/USDXStrUtils.pas new file mode 100644 index 00000000..94e5f65f --- /dev/null +++ b/plugins/SDK/USDXStrUtils.pas @@ -0,0 +1,79 @@ +unit USDXStrUtils; + +interface + +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + +uses ModiSDK; + +//function StrToAChar(Str: String): AChar; +function CreateStr(Str: PChar): PChar; +procedure FreeStr(Str: PChar); + +implementation + +{$IFDEF FPC} + {$ASMMODE Intel} +{$ENDIF} + +{function StrToAChar(Str: String): AChar; +var + L, I: Integer; +begin + L := Length(Str); + For I := 0 to L-1 do + AChar[I] := Str[I+1]; + + For I := L to 254 do + AChar[I] := #0; +end; } + +function StrCopy(Dest, Source: PChar): PChar; assembler; +asm + PUSH EDI + PUSH ESI + MOV ESI,EAX + MOV EDI,EDX + MOV ECX,0FFFFFFFFH + XOR AL,AL + REPNE SCASB + NOT ECX + MOV EDI,ESI + MOV ESI,EDX + MOV EDX,ECX + MOV EAX,EDI + SHR ECX,2 + REP MOVSD + MOV ECX,EDX + AND ECX,3 + REP MOVSB + POP ESI + POP EDI +end; + +function StrLen(Str: PChar): Cardinal; assembler; +asm + MOV EDX,EDI + MOV EDI,EAX + MOV ECX,0FFFFFFFFH + XOR AL,AL + REPNE SCASB + MOV EAX,0FFFFFFFEH + SUB EAX,ECX + MOV EDI,EDX +end; + +function CreateStr(Str: PChar): PChar; +begin + GetMem(Result, StrLen(Str) + 1); + StrCopy(Result, Str); +end; + +procedure FreeStr(Str: PChar); +begin + FreeMem(Str); +end; + +end. |