aboutsummaryrefslogtreecommitdiffstats
path: root/ortho/mcode/ortho_ident.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2014-11-04 20:14:19 +0100
committerTristan Gingold <tgingold@free.fr>2014-11-04 20:14:19 +0100
commit9c195bf5d86d67ea5eb419ccf6e48dc153e57c68 (patch)
tree575346e529b99e26382b4a06f6ff2caa0b391ab2 /ortho/mcode/ortho_ident.adb
parent184a123f91e07c927292d67462561dc84f3a920d (diff)
downloadghdl-9c195bf5d86d67ea5eb419ccf6e48dc153e57c68.tar.gz
ghdl-9c195bf5d86d67ea5eb419ccf6e48dc153e57c68.tar.bz2
ghdl-9c195bf5d86d67ea5eb419ccf6e48dc153e57c68.zip
Move sources to src/ subdirectory.
Diffstat (limited to 'ortho/mcode/ortho_ident.adb')
-rw-r--r--ortho/mcode/ortho_ident.adb117
1 files changed, 0 insertions, 117 deletions
diff --git a/ortho/mcode/ortho_ident.adb b/ortho/mcode/ortho_ident.adb
deleted file mode 100644
index 0893b75dd..000000000
--- a/ortho/mcode/ortho_ident.adb
+++ /dev/null
@@ -1,117 +0,0 @@
--- Mcode back-end for ortho.
--- 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.
-with Ada.Text_IO;
-with GNAT.Table;
-
-package body Ortho_Ident is
- package Ids is new GNAT.Table
- (Table_Component_Type => Natural,
- Table_Index_Type => O_Ident,
- Table_Low_Bound => 2,
- Table_Initial => 128,
- Table_Increment => 100);
-
- package Strs is new GNAT.Table
- (Table_Component_Type => Character,
- Table_Index_Type => Natural,
- Table_Low_Bound => 2,
- Table_Initial => 128,
- Table_Increment => 100);
-
- function Get_Identifier (Str : String) return O_Ident
- is
- Start : Natural;
- begin
- Start := Strs.Allocate (Str'Length + 1);
- for I in Str'Range loop
- Strs.Table (Start + I - Str'First) := Str (I);
- end loop;
- Strs.Table (Start + Str'Length) := ASCII.Nul;
- Ids.Append (Start);
- return Ids.Last;
- end Get_Identifier;
-
- function Is_Equal (L, R : O_Ident) return Boolean
- is
- begin
- return L = R;
- end Is_Equal;
-
- function Get_String_Length (Id : O_Ident) return Natural
- is
- Start : Natural;
- begin
- Start := Ids.Table (Id);
- if Id = Ids.Last then
- return Strs.Last - Start + 1 - 1;
- else
- return Ids.Table (Id + 1) - 1 - Start;
- end if;
- end Get_String_Length;
-
- function Get_String (Id : O_Ident) return String
- is
- Res : String (1 .. Get_String_Length (Id));
- Start : constant Natural := Ids.Table (Id);
- begin
- for I in Res'Range loop
- Res (I) := Strs.Table (Start + I - Res'First);
- end loop;
- return Res;
- end Get_String;
-
- function Get_Cstring (Id : O_Ident) return System.Address is
- begin
- return Strs.Table (Ids.Table (Id))'Address;
- end Get_Cstring;
-
- function Is_Equal (Id : O_Ident; Str : String) return Boolean
- is
- Start : constant Natural := Ids.Table (Id);
- Len : constant Natural := Get_String_Length (Id);
- begin
- if Len /= Str'Length then
- return False;
- end if;
- for I in Str'Range loop
- if Str (I) /= Strs.Table (Start + I - Str'First) then
- return False;
- end if;
- end loop;
- return True;
- end Is_Equal;
-
- function Is_Nul (Id : O_Ident) return Boolean is
- begin
- return Id = O_Ident_Nul;
- end Is_Nul;
-
- procedure Disp_Stats
- is
- use Ada.Text_IO;
- begin
- Put_Line ("Number of Ident: " & O_Ident'Image (Ids.Last));
- Put_Line ("Number of Ident-Strs: " & Natural'Image (Strs.Last));
- end Disp_Stats;
-
- procedure Finish is
- begin
- Ids.Free;
- Strs.Free;
- end Finish;
-end Ortho_Ident;