Преглед изворни кода

+ ToSingleByteFileSystemEncodedFileName(array of widechar) overload for more
efficient operation in certain platform's dos units (avoid
array-of-widechar -> unicodestring conversion)

git-svn-id: branches/cpstrrtl@25138 -

Jonas Maebe пре 12 година
родитељ
комит
aaa5bb48de
3 измењених фајлова са 15 додато и 0 уклоњено
  1. 1 0
      rtl/inc/ustringh.inc
  2. 9 0
      rtl/inc/ustrings.inc
  3. 5 0
      rtl/java/justrings.inc

+ 1 - 0
rtl/inc/ustringh.inc

@@ -147,4 +147,5 @@ function StringRefCount(const S : UnicodeString): SizeInt; overload;
 function StringCodePage(const S : UnicodeString): TSystemCodePage; overload;
 
 Function ToSingleByteFileSystemEncodedFileName(const Str: UnicodeString): RawByteString;
+Function ToSingleByteFileSystemEncodedFileName(const arr: array of widechar): RawByteString;
 Function ToSingleByteFileSystemEncodedFileName(const Str: RawByteString): RawByteString;

+ 9 - 0
rtl/inc/ustrings.inc

@@ -2292,6 +2292,15 @@ End;
 {$endif FPC_HAS_TOSINGLEBYTEFILESYSTEMENCODEDFILENAME_UNICODESTRING}
 
 
+{$ifndef FPC_HAS_TOSINGLEBYTEFILESYSTEMENCODEDFILENAME_UNICODECHARARRAY}
+{$define FPC_HAS_TOSINGLEBYTEFILESYSTEMENCODEDFILENAME_UNICODECHARARRAY}
+Function ToSingleByteFileSystemEncodedFileName(const arr: array of widechar): RawByteString;
+Begin
+  widestringmanager.Unicode2AnsiMoveProc(@arr[0],Result,
+    DefaultFileSystemCodePage,length(pwidechar(@arr[0])));
+End;
+{$endif FPC_HAS_TOSINGLEBYTEFILESYSTEMENCODEDFILENAME_UNICODECHARARRAY}
+
 Function ToSingleByteFileSystemEncodedFileName(const Str: RawByteString): RawByteString;
 Begin
   Result:=Str;

+ 5 - 0
rtl/java/justrings.inc

@@ -908,6 +908,11 @@ Begin
   result:=AnsiString(AnsistringClass.Create(Str,DefaultFileSystemCodePage));
 End;
 
+{$define FPC_HAS_TOSINGLEBYTEFILESYSTEMENCODEDFILENAME_UNICODECHARARRAY}
+Function ToSingleByteFileSystemEncodedFileName(const arr: array of widechar): RawByteString;
+Begin
+  result:=AnsiString(AnsistringClass.Create(arr,DefaultFileSystemCodePage));
+End;
 
 
 { helpers for converting between Windows and Java code page identifiers }