aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/pybind11/tests/test_builtin_casters.py
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/pybind11/tests/test_builtin_casters.py')
0 files changed, 0 insertions, 0 deletions
80'>80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
--  Mcode back-end for ortho - type handling.
--  Copyright (C) 2006 Tristan Gingold
--
--  GHDL is free software; you can redistribute it and/or modify it under
--  the terms of the GNU General Public License as published by the Free
--  Software Foundation; either version 2, or (at your option) any later
--  version.
--
--  GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
--  WARRANTY; without even the implied warranty of MERCHANTABILITY or
--  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
--  for more details.
--
--  You should have received a copy of the GNU General Public License
--  along with GCC; see the file COPYING.  If not, write to the Free
--  Software Foundation, 59 Temple Place - Suite 330, Boston, MA
--  02111-1307, USA.
package Ortho_Code.Types is
   type OT_Kind is (OT_Unsigned, OT_Signed, OT_Boolean, OT_Enum, OT_Float,
                    OT_Ucarray, OT_Subarray, OT_Access,
                    OT_Record, OT_Union,

                    --  Type completion.  Mark the completion of a type.
                    --  Optionnal.
                    OT_Complete);

   --  Kind of ATYPE.
   function Get_Type_Kind (Atype : O_Tnode) return OT_Kind;

   --  Number of bytes of type ATYPE.
   function Get_Type_Size (Atype : O_Tnode) return Uns32;

   --  Same as Get_Type_Size but for modes.
   --  Returns 0 in case of error.
   function Get_Mode_Size (Mode : Mode_Type) return Uns32;

   --  Alignment for ATYPE, in power of 2.
   subtype Small_Natural is Natural range 0 .. 3;
   type Mode_Align_Array is array (Mode_Type) of Small_Natural;
   function Get_Type_Align (Atype : O_Tnode) return Small_Natural;

   --  Alignment for ATYPE in bytes.
   function Get_Type_Align_Bytes (Atype : O_Tnode) return Uns32;

   --  Return true is the type was incomplete at creation.
   --  (it may - or not - have been completed later).
   function Get_Type_Deferred (Atype : O_Tnode) return Boolean;

   --  A back-end reserved flag.
   --  Initialized to False.
   function Get_Type_Flag1 (Atype : O_Tnode) return Boolean;
   procedure Set_Type_Flag1 (Atype : O_Tnode; Flag : Boolean);

   --  Align OFF on ATYPE.
   function Do_Align (Off : Uns32; Atype : O_Tnode) return Uns32;
   function Do_Align (Off : Uns32; Mode : Mode_Type) return Uns32;

   --  Get the mode for ATYPE.
   function Get_Type_Mode (Atype : O_Tnode) return Mode_Type;

   --  Get the type designated by access type ATYPE.
   function Get_Type_Access_Type (Atype : O_Tnode) return O_Tnode;

   --  Get the index type of array type ATYPE.
   function Get_Type_Ucarray_Index (Atype : O_Tnode) return O_Tnode;

   --  Get the element type of array type ATYPE.
   function Get_Type_Ucarray_Element (Atype : O_Tnode) return O_Tnode;

   --  Get the base type of array type ATYPE.
   function Get_Type_Subarray_Base (Atype : O_Tnode) return O_Tnode;

   --  Get number of element for array type ATYPE.
   function Get_Type_Subarray_Length (Atype : O_Tnode) return Uns32;

   --  Get the first field of record/union ATYPE.
   function Get_Type_Record_Fields (Atype : O_Tnode) return O_Fnode;

   --  Get the number of fields of record/union ATYPE.
   function Get_Type_Record_Nbr_Fields (Atype : O_Tnode) return Uns32;

   --  Get the first literal of enum type ATYPE.
   function Get_Type_Enum_Lits (Atype : O_Tnode) return O_Cnode;

   --  Get the POS th literal of enum type ATYPE.
   --  The first is when POS = 0.
   function Get_Type_Enum_Lit (Atype : O_Tnode; Pos : Uns32) return O_Cnode;

   --  Get the number of literals of enum type ATYPE.
   function Get_Type_Enum_Nbr_Lits (Atype : O_Tnode) return Uns32;

   --  Get the false/true literal of boolean type ATYPE.
   function Get_Type_Bool_False (Atype : O_Tnode) return O_Cnode;
   function Get_Type_Bool_True (Atype : O_Tnode) return O_Cnode;

   --  Return the union/record type which contains FIELD.
   function Get_Field_Parent (Field : O_Fnode) return O_Tnode;

   --  Get the offset of FIELD in its record/union.
   function Get_Field_Offset (Field : O_Fnode) return Uns32;
   procedure Set_Field_Offset (Field : O_Fnode; Offset : Uns32);

   --  Get the type of FIELD.
   function Get_Field_Type (Field : O_Fnode) return O_Tnode;

   --  Get the name of FIELD.
   function Get_Field_Ident (Field : O_Fnode) return O_Ident;

   --  Get the next field.
   function Get_Field_Chain (Field : O_Fnode) return O_Fnode;

   --  Get the type that was completed.
   function Get_Type_Complete_Type (Atype : O_Tnode) return O_Tnode;

   --  Build a scalar type; size may be 8, 16, 32 or 64.
   function New_Unsigned_Type (Size : Natural) return O_Tnode;
   function New_Signed_Type (Size : Natural) return O_Tnode;

   --  Build a float type.
   function New_Float_Type return O_Tnode;

   --  Build a boolean type.
   procedure New_Boolean_Type (Res : out O_Tnode;
                               False_Id : O_Ident;
                               False_E : out O_Cnode;
                               True_Id : O_Ident;
                               True_E : out O_Cnode);

   --  Create an enumeration
   type O_Enum_List is limited private;

   --  Elements are declared in order, the first is ordered from 0.
   procedure Start_Enum_Type (List : out O_Enum_List; Size : Natural);
   procedure New_Enum_Literal (List : in out O_Enum_List;
                               Ident : O_Ident; Res : out O_Cnode);
   procedure Finish_Enum_Type (List : in out O_Enum_List; Res : out O_Tnode);


   --  Build an access type.
   --  DTYPE may be O_tnode_null in order to build an incomplete access type.
   --  It is completed with finish_access_type.
   function New_Access_Type (Dtype : O_Tnode) return O_Tnode;
   procedure Finish_Access_Type (Atype : O_Tnode; Dtype : O_Tnode);


   --  Build an array type.
   --  The array is not constrained and unidimensional.
   function New_Array_Type (El_Type : O_Tnode; Index_Type : O_Tnode)
     return O_Tnode;

   --  Build a constrained array type.
   function New_Constrained_Array_Type (Atype : O_Tnode; Length : Uns32)
     return O_Tnode;

   --  Return the base type of ATYPE: for a subarray this is the uc array,
   --  otherwise this is the type.
   function Get_Base_Type (Atype : O_Tnode) return O_Tnode;

   type O_Element_List is limited private;

   --  Build a record type.
   procedure Start_Record_Type (Elements : out O_Element_List);
   --  Add a field in the record; not constrained array are prohibited, since
   --  its size is unlimited.
   procedure New_Record_Field
     (Elements : in out O_Element_List;
      El : out O_Fnode;
      Ident : O_Ident; Etype : O_Tnode);
   --  Finish the record type.
   procedure Finish_Record_Type
     (Elements : in out O_Element_List; Res : out O_Tnode);

   -- Build an uncomplete record type:
   -- First call NEW_UNCOMPLETE_RECORD_TYPE, which returns a record type.
   -- This type can be declared or used to define access types on it.
   -- Then, complete (if necessary) the record type, by calling
   -- START_UNCOMPLETE_RECORD_TYPE, NEW_RECORD_FIELD and FINISH_RECORD_TYPE.
   procedure New_Uncomplete_Record_Type (Res : out O_Tnode);
   procedure Start_Uncomplete_Record_Type (Res : O_Tnode;
                                           Elements : out O_Element_List);

   --  Build an union type.
   procedure Start_Union_Type (Elements : out O_Element_List);
   procedure New_Union_Field
     (Elements : in out O_Element_List;
      El : out O_Fnode;
      Ident : O_Ident;
      Etype : O_Tnode);
   procedure Finish_Union_Type
     (Elements : in out O_Element_List; Res : out O_Tnode);

   --  Non-primitives.

   --  Type of an element of a ucarray or constrained array.
   function Get_Type_Array_Element (Atype : O_Tnode) return O_Tnode;

   --  Get a type number limit (an O_Tnode is a number).
   --  There is no type whose number is beyond this limit.
   --  Note: the limit may not be a type!
   function Get_Type_Limit return O_Tnode;

   --  Get the type which follows ATYPE.
   --  User has to check that the result is valid (ie not beyond limit).
   function Get_Type_Next (Atype : O_Tnode) return O_Tnode;

   procedure Disp_Stats;

   --  Free all the memory used.
   procedure Finish;

   type Mark_Type is limited private;
   procedure Mark (M : out Mark_Type);
   procedure Release (M : Mark_Type);

   procedure Debug_Type (Atype : O_Tnode);
   procedure Debug_Field (Field : O_Fnode);
private
   type O_Enum_List is record
      Res : O_Tnode;
      First : O_Cnode;
      Last : O_Cnode;
      Nbr : Uns32;
   end record;

   type O_Element_List is record
      Res : O_Tnode;
      Nbr : Uns32;
      Off : Uns32;
      Align : Small_Natural;
      First_Field : O_Fnode;
      Last_Field : O_Fnode;
   end record;

   type Mark_Type is record
      Tnode : O_Tnode;
      Fnode : O_Fnode;
   end record;

end Ortho_Code.Types;