Просмотр исходного кода

* Convert array of widechar to pwidechar instead of pchar

michael 20 лет назад
Родитель
Сommit
44bf61f445
3 измененных файлов с 25 добавлено и 4 удалено
  1. 13 2
      compiler/nld.pas
  2. 7 1
      compiler/psystem.pas
  3. 5 1
      compiler/symdef.pas

+ 13 - 2
compiler/nld.pas

@@ -944,7 +944,15 @@ implementation
                    enumdef :
                      hp.left:=ctypeconvnode.create_internal(hp.left,s32inttype);
                    arraydef :
-                     hp.left:=ctypeconvnode.create(hp.left,charpointertype);
+                     begin
+                       if is_chararray(hp.left.resulttype.def) then
+                         hp.left:=ctypeconvnode.create_internal(hp.left,charpointertype)
+                       else
+                         if is_widechararray(hp.left.resulttype.def) then
+                           hp.left:=ctypeconvnode.create_internal(hp.left,widecharpointertype)
+                       else
+                         CGMessagePos1(hp.left.fileinfo,type_e_wrong_type_in_array_constructor,hp.left.resulttype.def.typename);
+                     end;
                    orddef :
                      begin
                        if is_integer(hp.left.resulttype.def) and
@@ -1172,7 +1180,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.140  2004-12-05 12:28:11  peter
+  Revision 1.141  2004-12-07 13:52:54  michael
+    * Convert array of widechar to pwidechar instead of pchar
+
+  Revision 1.140  2004/12/05 12:28:11  peter
     * procvar handling for tp procvar mode fixed
     * proc to procvar moved from addrnode to typeconvnode
     * inlininginfo is now allocated only for inline routines that

+ 7 - 1
compiler/psystem.pas

@@ -202,6 +202,7 @@ implementation
         addtype('$boolean',booltype);
         addtype('$void_pointer',voidpointertype);
         addtype('$char_pointer',charpointertype);
+        addtype('$widechar_pointer',widecharpointertype);
         addtype('$void_farpointer',voidfarpointertype);
         addtype('$openchararray',openchararraytype);
         addtype('$file',cfiletype);
@@ -286,6 +287,7 @@ implementation
         loadtype('boolean',booltype);
         loadtype('void_pointer',voidpointertype);
         loadtype('char_pointer',charpointertype);
+        loadtype('widechar_pointer',widecharpointertype);
         loadtype('void_farpointer',voidfarpointertype);
         loadtype('file',cfiletype);
         loadtype('pvmt',pvmttype);
@@ -386,6 +388,7 @@ implementation
         { some other definitions }
         voidpointertype.setdef(tpointerdef.create(voidtype));
         charpointertype.setdef(tpointerdef.create(cchartype));
+        widecharpointertype.setdef(tpointerdef.create(cwidechartype));
         voidfarpointertype.setdef(tpointerdef.createfar(voidtype));
         cfiletype.setdef(tfiledef.createuntyped);
         cvarianttype.setdef(tvariantdef.create(vt_normalvariant));
@@ -534,7 +537,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.73  2004-11-08 22:09:59  peter
+  Revision 1.74  2004-12-07 13:52:54  michael
+    * Convert array of widechar to pwidechar instead of pchar
+
+  Revision 1.73  2004/11/08 22:09:59  peter
     * tvarsym splitted
 
   Revision 1.72  2004/10/15 09:14:17  mazen

+ 5 - 1
compiler/symdef.pas

@@ -714,6 +714,7 @@ interface
        generrortype,              { error in definition }
        voidpointertype,           { pointer for Void-Pointerdef }
        charpointertype,           { pointer for Char-Pointerdef }
+       widecharpointertype,       { pointer for WideChar-Pointerdef }
        voidfarpointertype,
        cformaltype,               { unique formal definition }
        voidtype,                  { Void (procedure) }
@@ -6123,7 +6124,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.282  2004-12-05 12:28:11  peter
+  Revision 1.283  2004-12-07 13:52:54  michael
+    * Convert array of widechar to pwidechar instead of pchar
+
+  Revision 1.282  2004/12/05 12:28:11  peter
     * procvar handling for tp procvar mode fixed
     * proc to procvar moved from addrnode to typeconvnode
     * inlininginfo is now allocated only for inline routines that