aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/SDK/USDXStrUtils.pas
diff options
context:
space:
mode:
authork-m_schindler <k-m_schindler@b956fd51-792f-4845-bead-9b4dfca2ff2c>2009-04-18 08:09:49 +0000
committerk-m_schindler <k-m_schindler@b956fd51-792f-4845-bead-9b4dfca2ff2c>2009-04-18 08:09:49 +0000
commit34120b83807097ca25af4af5d35ac6023627bee6 (patch)
tree5dd980df23ea0e7c00f53d8ce7fa82a6c194c1ba /plugins/SDK/USDXStrUtils.pas
parentaca4ad448dddb2a260cda692ec9eeba415a78852 (diff)
downloadusdx-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.pas79
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.