aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-nodes_meta.ads.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/vhdl-nodes_meta.ads.in')
-rw-r--r--src/vhdl/vhdl-nodes_meta.ads.in73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/vhdl/vhdl-nodes_meta.ads.in b/src/vhdl/vhdl-nodes_meta.ads.in
new file mode 100644
index 000000000..fe345df78
--- /dev/null
+++ b/src/vhdl/vhdl-nodes_meta.ads.in
@@ -0,0 +1,73 @@
+-- Meta description of nodes.
+-- Copyright (C) 2014 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 GHDL; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+
+with Types; use Types;
+with Vhdl.Nodes; use Vhdl.Nodes;
+with Vhdl.Tokens; use Vhdl.Tokens;
+
+package Vhdl.Nodes_Meta is
+ -- The enumeration of all possible types in the nodes.
+ type Types_Enum is
+ (
+ -- TYPES
+ );
+
+ -- The enumeration of all fields defined in iirs.
+ type Fields_Enum is
+ (
+ -- FIELDS
+ );
+ pragma Discard_Names (Fields_Enum);
+
+ -- Return the type of field F.
+ function Get_Field_Type (F : Fields_Enum) return Types_Enum;
+
+ -- Get the name of a field.
+ function Get_Field_Image (F : Fields_Enum) return String;
+
+ -- Get the name of a kind.
+ function Get_Iir_Image (K : Iir_Kind) return String;
+
+ -- Possible attributes of a field.
+ type Field_Attribute is
+ (
+ -- ATTRS
+ );
+
+ -- Get the attribute of a field.
+ function Get_Field_Attribute (F : Fields_Enum) return Field_Attribute;
+
+ type Fields_Index_Extended is new Int32;
+ subtype Fields_Index is Fields_Index_Extended
+ range 0 .. Fields_Index_Extended'Last;
+
+ type Fields_Array is array (Fields_Index range <>) of Fields_Enum;
+
+ -- Return the list of fields for node K. The fields are sorted: first
+ -- the non nodes/list of nodes, then the nodes/lists that aren't reference,
+ -- and then the reference.
+ function Get_Fields (K : Iir_Kind) return Fields_Array;
+
+ -- Likewise, but without using arrays (for interfacing with C).
+ function Get_Fields_First (K : Iir_Kind) return Fields_Index;
+ function Get_Fields_Last (K : Iir_Kind) return Fields_Index;
+ function Get_Field_By_Index (Idx : Fields_Index) return Fields_Enum;
+
+ -- Get/Set a field.
+ -- FUNCS
+end Vhdl.Nodes_Meta;