Browse Source

* renamed is_class_or_interface_or_dispinterface_or_objc() into
is_implicit_pointer_object_type() to better indicate the purpose of
that routine, and to avoid having to change its name every time
a new object type with this property is added

git-svn-id: trunk@16664 -

Jonas Maebe 14 years ago
parent
commit
2222f2c44b

+ 3 - 3
compiler/dbgdwarf.pas

@@ -941,7 +941,7 @@ implementation
                           on when the typecast is changed to 'as' }
                         current_asmdata.getdatalabel(TAsmLabel(pointer(def.dwarf_lab)));
                         current_asmdata.getdatalabel(TAsmLabel(pointer(def.dwarf_ref_lab)));
-                        if is_class_or_interface_or_dispinterface_or_objc(def) then
+                        if is_implicit_pointer_object_type(def) then
                           current_asmdata.getdatalabel(TAsmLabel(pointer(tobjectdef(def).dwarf_struct_lab)));
                       end;
                   end;
@@ -953,7 +953,7 @@ implementation
                 { addrlabel instead of datalabel because it must be a local one }
                 current_asmdata.getaddrlabel(TAsmLabel(pointer(def.dwarf_lab)));
                 current_asmdata.getaddrlabel(TAsmLabel(pointer(def.dwarf_ref_lab)));
-                if is_class_or_interface_or_dispinterface_or_objc(def) then
+                if is_implicit_pointer_object_type(def) then
                   current_asmdata.getaddrlabel(TAsmLabel(pointer(tobjectdef(def).dwarf_struct_lab)));
               end;
             if def.dbg_state=dbg_state_used then
@@ -3419,7 +3419,7 @@ implementation
               current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_uleb128bit(0));
               if (def.childof.dbg_state=dbg_state_unused) then
                 def.childof.dbg_state:=dbg_state_used;
-              if is_class_or_interface_or_dispinterface_or_objc(def) then
+              if is_implicit_pointer_object_type(def) then
                 append_labelentry_ref(DW_AT_type,def_dwarf_class_struct_lab(def.childof))
               else
                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(def.childof));

+ 5 - 5
compiler/defcmp.pas

@@ -282,7 +282,7 @@ implementation
                  objectdef:
                    begin
                      if (m_delphi in current_settings.modeswitches) and
-                        is_class_or_interface_or_dispinterface_or_objc(def_from) and
+                        is_implicit_pointer_object_type(def_from) and
                         (cdo_explicit in cdoptions) then
                       begin
                         eq:=te_convert_l1;
@@ -1131,11 +1131,11 @@ implementation
                  classrefdef,
                  objectdef :
                    begin
-                     { class types and class reference type
+                     { implicit pointer object and class reference types
                        can be assigned to void pointers, but it is less
                        preferred than assigning to a related objectdef }
                      if (
-                         is_class_or_interface_or_dispinterface_or_objc(def_from) or
+                         is_implicit_pointer_object_type(def_from) or
                          (def_from.typ=classrefdef)
                         ) and
                         (tpointerdef(def_to).pointeddef.typ=orddef) and
@@ -1268,8 +1268,8 @@ implementation
                   eq:=te_convert_l1;
                 end
                else
-               { Class/interface specific }
-                if is_class_or_interface_or_dispinterface_or_objc(def_to) then
+               { specific to implicit pointer object types }
+                if is_implicit_pointer_object_type(def_to) then
                  begin
                    { void pointer also for delphi mode }
                    if (m_delphi in current_settings.modeswitches) and

+ 1 - 1
compiler/defutil.pas

@@ -1003,7 +1003,7 @@ implementation
             end;
           objectdef :
             begin
-              if is_class_or_interface_or_dispinterface_or_objc(def) then
+              if is_implicit_pointer_object_type(def) then
                 result := OS_ADDR
               else
                 result:=int_cgsize(def.size);

+ 9 - 10
compiler/htypechk.pas

@@ -229,7 +229,7 @@ implementation
             pointerdef :
               begin
                 if ((rd.typ in [orddef,enumdef,pointerdef,classrefdef,procvardef]) or
-                    is_class_or_interface_or_dispinterface_or_objc(rd)) then
+                    is_implicit_pointer_object_type(rd)) then
                  begin
                    allowed:=false;
                    exit;
@@ -289,9 +289,9 @@ implementation
               end;
             objectdef :
               begin
-                { <> and = are defined for classes }
+                { <> and = are defined for implicit pointer object types }
                 if (treetyp in [equaln,unequaln]) and
-                   is_class_or_interface_or_dispinterface_or_objc(ld) then
+                   is_implicit_pointer_object_type(ld) then
                  begin
                    allowed:=false;
                    exit;
@@ -944,7 +944,7 @@ implementation
                end;
              subscriptn :
                begin
-                 if is_class_or_interface_or_dispinterface_or_objc(tunarynode(p).left.resultdef) then
+                 if is_implicit_pointer_object_type(tunarynode(p).left.resultdef) then
                    newstate := vs_read;
                  p:=tunarynode(p).left;
                end;
@@ -1098,7 +1098,7 @@ implementation
                  pointerdef :
                    gotpointer:=true;
                  objectdef :
-                   gotclass:=is_class_or_interface_or_dispinterface_or_objc(hp.resultdef);
+                   gotclass:=is_implicit_pointer_object_type(hp.resultdef);
                  recorddef :
                    gotrecord:=true;
                  classrefdef :
@@ -1215,7 +1215,7 @@ implementation
                    pointerdef :
                      gotpointer:=true;
                    objectdef :
-                     gotclass:=is_class_or_interface_or_dispinterface_or_objc(hp.resultdef);
+                     gotclass:=is_implicit_pointer_object_type(hp.resultdef);
                    classrefdef :
                      gotclass:=true;
                    arraydef :
@@ -1309,10 +1309,9 @@ implementation
                      else
                        exit;
                    end;
-                 { a class/interface access is an implicit }
-                 { dereferencing                           }
+                 { implicit pointer object types result in dereferencing }
                  hp:=tsubscriptnode(hp).left;
-                 if is_class_or_interface_or_dispinterface_or_objc(hp.resultdef) then
+                 if is_implicit_pointer_object_type(hp.resultdef) then
                    gotderef:=true;
                end;
              muln,
@@ -1401,7 +1400,7 @@ implementation
                    pointerdef :
                      gotpointer:=true;
                    objectdef :
-                     gotclass:=is_class_or_interface_or_dispinterface_or_objc(hp.resultdef);
+                     gotclass:=is_implicit_pointer_object_type(hp.resultdef);
                    recorddef, { handle record like class it needs a subscription }
                    classrefdef :
                      gotclass:=true;

+ 8 - 8
compiler/nadd.pas

@@ -1598,19 +1598,19 @@ implementation
               CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),ld.typename,rd.typename);
           end
 
-         { class or interface equation }
-         else if is_class_or_interface_or_dispinterface_or_objc(rd) or is_class_or_interface_or_dispinterface_or_objc(ld) then
+         { implicit pointer object type comparison }
+         else if is_implicit_pointer_object_type(rd) or is_implicit_pointer_object_type(ld) then
           begin
             if (nodetype in [equaln,unequaln]) then
               begin
-                if is_class_or_interface_or_dispinterface_or_objc(rd) and is_class_or_interface_or_dispinterface_or_objc(ld) then
+                if is_implicit_pointer_object_type(rd) and is_implicit_pointer_object_type(ld) then
                  begin
                    if tobjectdef(rd).is_related(tobjectdef(ld)) then
                     inserttypeconv(right,left.resultdef)
                    else
                     inserttypeconv(left,right.resultdef);
                  end
-                else if is_class_or_interface_or_dispinterface_or_objc(rd) then
+                else if is_implicit_pointer_object_type(rd) then
                   inserttypeconv(left,right.resultdef)
                 else
                   inserttypeconv(right,left.resultdef);
@@ -1633,8 +1633,8 @@ implementation
               CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),ld.typename,rd.typename);
           end
 
-         { allows comperasion with nil pointer }
-         else if is_class_or_interface_or_dispinterface_or_objc(rd) or (rd.typ=classrefdef) then
+         { allow comparison with nil pointer }
+         else if is_implicit_pointer_object_type(rd) or (rd.typ=classrefdef) then
           begin
             if (nodetype in [equaln,unequaln]) then
               inserttypeconv(left,right.resultdef)
@@ -1642,7 +1642,7 @@ implementation
               CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),ld.typename,rd.typename);
           end
 
-         else if is_class_or_interface_or_dispinterface_or_objc(ld) or (ld.typ=classrefdef) then
+         else if is_implicit_pointer_object_type(ld) or (ld.typ=classrefdef) then
           begin
             if (nodetype in [equaln,unequaln]) then
               inserttypeconv(right,left.resultdef)
@@ -2710,7 +2710,7 @@ implementation
                 expectloc:=LOC_FLAGS;
            end
 
-         else if is_class_or_interface_or_dispinterface_or_objc(ld) then
+         else if is_implicit_pointer_object_type(ld) then
             begin
               expectloc:=LOC_FLAGS;
             end

+ 2 - 2
compiler/ncgmem.pas

@@ -291,8 +291,8 @@ implementation
          if codegenerror then
            exit;
          paraloc1.init;
-         { classes and interfaces must be dereferenced implicitly }
-         if is_class_or_interface_or_dispinterface_or_objc(left.resultdef) then
+         { several object types must be dereferenced implicitly }
+         if is_implicit_pointer_object_type(left.resultdef) then
            begin
              { the contents of a class are aligned to a sizeof(pointer) }
              location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),sizeof(pint));

+ 2 - 2
compiler/nmem.pas

@@ -687,8 +687,8 @@ implementation
          if codegenerror then
           exit;
 
-         { classes must be dereferenced implicitly }
-         if is_class_or_interface_or_dispinterface_or_objc(left.resultdef) then
+         { several object types must be dereferenced implicitly }
+         if is_implicit_pointer_object_type(left.resultdef) then
            expectloc:=LOC_REFERENCE
          else
            begin

+ 1 - 1
compiler/nutils.pas

@@ -725,7 +725,7 @@ implementation
                 end;
               subscriptn:
                 begin
-                  if is_class_or_interface_or_dispinterface_or_objc(tunarynode(p).left.resultdef) then
+                  if is_implicit_pointer_object_type(tunarynode(p).left.resultdef) then
                     inc(result,2);
                   if (result = NODE_COMPLEXITY_INF) then
                     exit;

+ 1 - 1
compiler/pdecl.pas

@@ -511,7 +511,7 @@ implementation
                      (token=_OBJCPROTOCOL) or
                      (token=_OBJCCATEGORY)) and
                     (assigned(ttypesym(sym).typedef)) and
-                    is_class_or_interface_or_dispinterface_or_objc(ttypesym(sym).typedef) and
+                    is_implicit_pointer_object_type(ttypesym(sym).typedef) and
                     (oo_is_forward in tobjectdef(ttypesym(sym).typedef).objectoptions) then
                   begin
                     case token of

+ 1 - 1
compiler/pexpr.pas

@@ -495,7 +495,7 @@ implementation
                    procvardef,
                    classrefdef : ;
                    objectdef :
-                     if not is_class_or_interface_or_dispinterface_or_objc(p1.resultdef) then
+                     if not is_implicit_pointer_object_type(p1.resultdef) then
                        begin
                          Message(parser_e_illegal_parameter_list);
                          err:=true;

+ 2 - 2
compiler/pstatmnt.pas

@@ -597,8 +597,8 @@ implementation
                     p:=ctemprefnode.create(calltempnode);
                     typecheckpass(p);
                   end;
-                { classes and interfaces have implicit dereferencing }
-                hasimplicitderef:=is_class_or_interface_or_dispinterface_or_objc(p.resultdef) or
+                { several object types have implicit dereferencing }
+                hasimplicitderef:=is_implicit_pointer_object_type(p.resultdef) or
                                   (p.resultdef.typ = classrefdef);
                 if hasimplicitderef then
                   hdef:=p.resultdef

+ 2 - 2
compiler/ptconst.pas

@@ -1275,8 +1275,8 @@ implementation
               exit;
             end;
 
-          { only allow nil for class and interface }
-          if is_class_or_interface_or_dispinterface_or_objc(def) then
+          { only allow nil for implicit pointer object types }
+          if is_implicit_pointer_object_type(def) then
             begin
               n:=comp_expr(true,false);
               if n.nodetype<>niln then

+ 3 - 3
compiler/symdef.pas

@@ -783,7 +783,7 @@ interface
     function is_class_or_interface_or_objc(def: tdef): boolean;
     function is_class_or_interface_or_object(def: tdef): boolean;
     function is_class_or_interface_or_dispinterface(def: tdef): boolean;
-    function is_class_or_interface_or_dispinterface_or_objc(def: tdef): boolean;
+    function is_implicit_pointer_object_type(def: tdef): boolean;
     function is_class_or_object(def: tdef): boolean;
     function is_record(def: tdef): boolean;
 
@@ -1155,7 +1155,7 @@ implementation
           procvardef :
             is_intregable:=tprocvardef(self).is_addressonly;
           objectdef:
-            is_intregable:=(is_class_or_interface_or_dispinterface_or_objc(self)) and not needs_inittable;
+            is_intregable:=(is_implicit_pointer_object_type(self)) and not needs_inittable;
           setdef:
             is_intregable:=is_smallset(self);
           recorddef:
@@ -5509,7 +5509,7 @@ implementation
       end;
 
 
-    function is_class_or_interface_or_dispinterface_or_objc(def: tdef): boolean;
+    function is_implicit_pointer_object_type(def: tdef): boolean;
       begin
         result:=
           assigned(def) and