Sfoglia il codice sorgente

+ cstring_to_pchar type conversion support
* fixed AnsiCharArrayClass.CreateFromLiteralStringBytes() declaration
(no maxlength parameter)

git-svn-id: branches/jvmbackend@18760 -

Jonas Maebe 14 anni fa
parent
commit
dd32efa9ff
3 ha cambiato i file con 15 aggiunte e 4 eliminazioni
  1. 12 1
      compiler/jvm/njvmcnv.pas
  2. 1 1
      rtl/java/sstringh.inc
  3. 2 2
      rtl/java/sstrings.inc

+ 12 - 1
compiler/jvm/njvmcnv.pas

@@ -42,7 +42,7 @@ interface
 
           procedure second_int_to_int;override;
          { procedure second_string_to_string;override; }
-         { procedure second_cstring_to_pchar;override; }
+          procedure second_cstring_to_pchar;override;
          { procedure second_string_to_chararray;override; }
          { procedure second_array_to_pointer;override; }
           function first_int_to_real: tnode; override;
@@ -514,6 +514,17 @@ implementation
       end;
 
 
+    procedure tjvmtypeconvnode.second_cstring_to_pchar;
+      begin
+        { don't use is_chararray because it doesn't support special arrays }
+        if (left.resultdef.typ<>arraydef) or
+           (tarraydef(left.resultdef).elementdef.typ<>orddef) or
+           (torddef(tarraydef(left.resultdef).elementdef).ordtype<>uchar) then
+          internalerror(2011081304);
+        location_copy(location,left.location);
+      end;
+
+
     procedure tjvmtypeconvnode.second_int_to_real;
       var
         srcsize, ressize: longint;

+ 1 - 1
rtl/java/sstringh.inc

@@ -47,7 +47,7 @@ type
   end;
 
   AnsiCharArrayClass = class sealed (JLObject)
-   class function CreateFromLiteralStringBytes(const u: unicodestring; maxlen: byte): TAnsiCharArray; static;
+   class function CreateFromLiteralStringBytes(const u: unicodestring): TAnsiCharArray; static;
   end;
 
 //Function Pos (Const Substr : Ansistring; Const Source : Ansistring) : SizeInt;

+ 2 - 2
rtl/java/sstrings.inc

@@ -184,12 +184,12 @@ begin
 end;
 
 
-class function AnsiCharArrayClass.CreateFromLiteralStringBytes(const u: unicodestring; maxlen: byte): TAnsiCharArray;
+class function AnsiCharArrayClass.CreateFromLiteralStringBytes(const u: unicodestring): TAnsiCharArray;
 var
   i: longint;
 begin
   { used to construct constant chararrays from Java string constants }
-  setlength(result,maxlen);
+  setlength(result,length(u));
   for i:=1 to system.length(u) do
     result[i-1]:=ansichar(ord(u[i]));
 end;