Преглед на файлове

+ get_unsigned_inttype(def) to get an unsigned integer type of the same
size as the provided def (must be an orddef or enumdef)

git-svn-id: trunk@34033 -

Jonas Maebe преди 9 години
родител
ревизия
33b44443b8
променени са 1 файла, в които са добавени 16 реда и са изтрити 0 реда
  1. 16 0
      compiler/defutil.pas

+ 16 - 0
compiler/defutil.pas

@@ -103,6 +103,10 @@ interface
     }
     function is_signed(def : tdef) : boolean;
 
+    {# Returns an unsigned integer type of the same size as def; def must be
+       an ordinal or enum }
+    function get_unsigned_inttype(def: tdef): torddef;
+
     {# Returns whether def_from's range is comprised in def_to's if both are
       orddefs, false otherwise                                              }
     function is_in_limit(def_from,def_to : tdef) : boolean;
@@ -608,6 +612,18 @@ implementation
       end;
 
 
+    function get_unsigned_inttype(def: tdef): torddef;
+      begin
+        case def.typ of
+          orddef,
+          enumdef:
+            result:=cgsize_orddef(tcgsize2unsigned[def_cgsize(def)]);
+          else
+            internalerror(2016062001);
+        end;
+      end;
+
+
     function is_in_limit(def_from,def_to : tdef) : boolean;
 
       begin