-- Name table. -- Copyright (C) 2002 - 2016 Tristan Gingold -- -- This program 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 of the License, or -- (at your option) any later version. -- -- This program 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 this program. If not, see . with System; with Types; use Types; -- A very simple name table. This is an hash table, so that -- id1 = id2 <=> get_string (id1) = get_string (id2). -- Note: for VHDL, extended names are represented as they appear in the -- sources: with a leading and trailing backslash; internal backslashes are -- doubled. package Name_Table is -- Get an entry in the name table for a character. -- (entries for characters are already built). Characters are put in the -- name table, but are always different from identifiers. They simply -- share the same Name_Id type. function Get_Identifier (Char: Character) return Name_Id; pragma Inline (Get_Identifier); -- Get or create an entry in the name table. Note: -- * an identifier is represented in all lower case letter, -- * an extended identifier is represented in backslashes, double internal -- backslashes are simplified. function Get_Identifier (Str: String) return Name_Id; -- Likewise, but with a C compatible interface. function Get_Identifier_With_Len (Str : Thin_String_Ptr; Len : Natural) return Name_Id; -- Get the string associed to a name. The first bound is 1. -- If the name is a character, then single quote are added. function Image (Id: Name_Id) return String; -- Get the address of the first character of ID. The address is valid -- until the next call to Get_Identifier (which may reallocate the string -- table). -- The string is NUL-terminated (this is done by get_identifier). function Get_Address (Id: Name_Id) return System.Address; function Get_Name_Ptr (Id : Name_Id) return Thin_String_Ptr; -- Get the length of ID. function Get_Name_Length (Id: Name_Id) return Natural; pragma Inline (Get_Name_Length); -- Get the character associed to a name. This is valid only for character -- ids. function Get_Character (Id: Name_Id) return Character; pragma Inline (Get_Character); -- Return TRUE iff ID is a character. function Is_Character (Id: Name_Id) return Boolean; pragma Inline (Is_Character); -- Like GET_IDENTIFIER, but return NULL_IDENTIFIER if the identifier -- is not found (and do not create an entry for it). function Get_Identifier_No_Create (Str : String) return Name_Id; function Get_Identifier_No_Create_With_Len (Str : Thin_String_Ptr; Len : Natural) return Name_Id; -- Get and set the info field associated with each identifier. -- Used to store interpretations of the name. function Get_Name_Info (Id : Name_Id) return Int32; pragma Inline (Get_Name_Info); procedure Set_Name_Info (Id : Name_Id; Info: Int32); pragma Inline (Set_Name_Info); -- Return the latest name_id used. This is only for debugging or stats. function Last_Name_Id return Name_Id; -- Be sure all info fields have their default value. procedure Assert_No_Infos; -- Initialize this package -- This must be called once and only once before any use. procedure Initialize; -- Free all resources. The package cannot be used anymore after calling -- this procedure. procedure Fi
{
    "gh-poc": {
    "src":    "badge/-VLSI--EDA/PoC-323131.svg?logo=github",
    "target": "gh:VLSI-EDA/PoC",
    "alt":    "Source Code on GitHub" },
    "rtd-poc": {
    "src":    "badge/-poc--library-2980b9.svg?logo=read-the-docs",
    "target": "http://poc-library.readthedocs.io/en/latest/?badge=latest",
    "alt":    "Documentation on ReadTheDocs" },
    "gh-vunit": {
    "src":    "badge/-VUnit/vunit-323131.svg?logo=github",
    "target": "gh:VUnit/vunit",
    "alt":    "Source Code on GitHub" },
    "doc-vunit": {
    "src":    "badge/doc-vunit.github.io-blue.svg?",
    "target": "https://vunit.github.io/documentation",
    "alt":    "Documentation on vunit.github.io" },
    "gl-p1076": {
    "src":    "badge/-IEEE--P1076-323131.svg?logo=gitlab",
    "target": "https://gitlab.com/IEEE-P1076",
    "alt":    "Source Code on GitLab" },
    "tw-p1076": {
    "src":    "badge/-eda--twiki.org-critical.svg?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIWAhImtwMY5AAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACwUlEQVRYw%2B1XTWgTQRT%2BZpOokURDg6GiaAwoCEX8QQpevFTQHgTBY8FrERSstKLePVSleLSH3qUFRSx48CR4CIJU8BC0WKqVULQiJsZmZ94%2BD83GJPOTDR68dGHZXYb3vu99882bWWDz%2Bs%2BXCF%2F408Au%2BD9GoaqXoIICFAQUAAWAGk%2FXTQCkAFSwhiAxD94%2BJS6vLEQiwOULp1B5Og9JGS2xbCEgDcDheOcYxQhb%2BibF2NdbTgL8%2BWQOv98sQlJaSyQ7qpeW6k0kQkWyR86Jq2%2Bf2wh4qK%2BMdgWXBnBpeaoWMpKB1dIztwKl9BL8Sl4DF6lXkMGyltT%2BruCrs%2FD9nJYre%2FCMuP3hhYlAHH5tvz5%2FAJL5B%2BL0u9leHM13My8h%2FZyWq1ot2KdAsdACFAAVxHpeUzZ%2F1Nc9BwHD3IXf%2F0og9A4Ja0jcCC4B8PfjPJuqNsfFtkUx8q3UlJvZw730eRBUI2YdvuzTTBrmdRIggwfqq%2BNQGG%2BuBtAkgBstsTHUfz1ur5j1FSEBJBBBAW2Nc8d0cKBFh4BdO6SLADk6XOs392A61YsCUcBVD6YzKeAwtOfs%2FW1O7kJAWjYtW6zmAVcFBCBwEJBdPKCimpAcVQkLARlxu3YSkBZg6pLAthWbVHWakAwHj04fmJopORSI2FXNCpBBjaBHBWQEBTf6gAdQ4PaATQFlUa6TmE9sJ4DkEmTlgBOcABD385XUMZAQUGBcP5To2v3CnIE3DOAhXxwUYq7I7QeS6d038bN8xwm%2B0QsYBO4Y89o2Hd%2BigAQwMDgl5opjeiOKZ6fBW9esFfxtRAISXgPUawO3kW7N97p4jQ%2FvfMQjw%2Fv0U%2FHM0X6U339BreZZk5gAQol9B7huygB7CvfFwseJ9v%2BCmaEMlosTUBhCfMcJqJY2TQ7DKccyNHVUBcAPgESSsDf%2FZPPXbPP6A13nhms8bYukAAAAAElFTkSuQmCC",
    "target": "http://www.eda-twiki.org/cgi-bin/view.cgi/P1076/WebHome",
    "alt":    "Documentation on eda-twiki.org" },
    "gh-tce": {
    "src":    "badge/-TCE-323131.svg?logo=github",
    "target": "gh:cpc/tce",
    "alt":    "Source Code on GitHub" },
    "doc-tce": {
    "src":    "badge/doc-openasip.org-blue.svg?",
    "target": "http://openasip.org/documentation.html",
    "alt":    "Documentation on openasip.org" }
}