mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-01 16:31:13 +00:00
Update the documentation for SymbolTable class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32970 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d5f317d158
commit
a636224712
@ -1426,14 +1426,14 @@ somewhere) can never be refined.
|
||||
<p>This class provides a symbol table that the <a
|
||||
href="#Function"><tt>Function</tt></a> and <a href="#Module">
|
||||
<tt>Module</tt></a> classes use for naming definitions. The symbol table can
|
||||
provide a name for any <a href="#Value"><tt>Value</tt></a> or <a
|
||||
href="#Type"><tt>Type</tt></a>. <tt>SymbolTable</tt> is an abstract data
|
||||
type. It hides the data it contains and provides access to it through a
|
||||
controlled interface.</p>
|
||||
provide a name for any <a href="#Value"><tt>Value</tt></a>.
|
||||
<tt>SymbolTable</tt> is an abstract data type. It hides the data it contains
|
||||
and provides access to it through a controlled interface.</p>
|
||||
|
||||
<p>Note that the symbol table class is should not be directly accessed by most
|
||||
clients. It should only be used when iteration over the symbol table names
|
||||
themselves are required, which is very special purpose. Note that not all LLVM
|
||||
<p>Note that the <tt>SymbolTable</tt> class should not be directly accessed
|
||||
by most clients. It should only be used when iteration over the symbol table
|
||||
names themselves are required, which is very special purpose. Note that not
|
||||
all LLVM
|
||||
<a href="#Value">Value</a>s have names, and those without names (i.e. they have
|
||||
an empty name) do not exist in the symbol table.
|
||||
</p>
|
||||
@ -1442,9 +1442,8 @@ an empty name) do not exist in the symbol table.
|
||||
structure of the information it holds. The class contains two
|
||||
<tt>std::map</tt> objects. The first, <tt>pmap</tt>, is a map of
|
||||
<tt>Type*</tt> to maps of name (<tt>std::string</tt>) to <tt>Value*</tt>.
|
||||
The second, <tt>tmap</tt>, is a map of names to <tt>Type*</tt>. Thus, Values
|
||||
are stored in two-dimensions and accessed by <tt>Type</tt> and name. Types,
|
||||
however, are stored in a single dimension and accessed only by name.</p>
|
||||
Thus, Values are stored in two-dimensions and accessed by <tt>Type</tt> and
|
||||
name.</p>
|
||||
|
||||
<p>The interface of this class provides three basic types of operations:
|
||||
<ol>
|
||||
@ -1456,7 +1455,7 @@ however, are stored in a single dimension and accessed only by name.</p>
|
||||
<a href="#SymbolTable_insert"><tt>insert</tt></a>.</li>
|
||||
<li><em>Iterators</em>. Iterators allow the user to traverse the content
|
||||
of the symbol table in well defined ways, such as the method
|
||||
<a href="#SymbolTable_type_begin"><tt>type_begin</tt></a>.</li>
|
||||
<a href="#SymbolTable_plane_begin"><tt>plane_begin</tt></a>.</li>
|
||||
</ol>
|
||||
|
||||
<h3>Accessors</h3>
|
||||
@ -1467,15 +1466,6 @@ however, are stored in a single dimension and accessed only by name.</p>
|
||||
<tt>Ty</tt> parameter for a <tt>Value</tt> with the provided <tt>name</tt>.
|
||||
If a suitable <tt>Value</tt> is not found, null is returned.</dd>
|
||||
|
||||
<dt><tt>Type* lookupType( const std::string& name) const</tt>:</dt>
|
||||
<dd>The <tt>lookupType</tt> method searches through the types for a
|
||||
<tt>Type</tt> with the provided <tt>name</tt>. If a suitable <tt>Type</tt>
|
||||
is not found, null is returned.</dd>
|
||||
|
||||
<dt><tt>bool hasTypes() const</tt>:</dt>
|
||||
<dd>This function returns true if an entry has been made into the type
|
||||
map.</dd>
|
||||
|
||||
<dt><tt>bool isEmpty() const</tt>:</dt>
|
||||
<dd>This function returns true if both the value and types maps are
|
||||
empty</dd>
|
||||
@ -1493,12 +1483,6 @@ however, are stored in a single dimension and accessed only by name.</p>
|
||||
name. There can be a many to one mapping between names and constants
|
||||
or types.</dd>
|
||||
|
||||
<dt><tt>void insert(const std::string& Name, Type *Typ)</tt>:</dt>
|
||||
<dd> Inserts a type into the symbol table with the specified name. There
|
||||
can be a many-to-one mapping between names and types. This method
|
||||
allows a type with an existing entry in the symbol table to get
|
||||
a new name.</dd>
|
||||
|
||||
<dt><tt>void remove(Value* Val)</tt>:</dt>
|
||||
<dd> This method removes a named value from the symbol table. The
|
||||
type and name of the Value are extracted from \p N and used to
|
||||
@ -1506,21 +1490,11 @@ however, are stored in a single dimension and accessed only by name.</p>
|
||||
not in the symbol table, this method silently ignores the
|
||||
request.</dd>
|
||||
|
||||
<dt><tt>void remove(Type* Typ)</tt>:</dt>
|
||||
<dd> This method removes a named type from the symbol table. The
|
||||
name of the type is extracted from \P T and used to look up
|
||||
the Type in the type map. If the Type is not in the symbol
|
||||
table, this method silently ignores the request.</dd>
|
||||
|
||||
<dt><tt>Value* remove(const std::string& Name, Value *Val)</tt>:</dt>
|
||||
<dd> Remove a constant or type with the specified name from the
|
||||
symbol table.</dd>
|
||||
|
||||
<dt><tt>Type* remove(const std::string& Name, Type* T)</tt>:</dt>
|
||||
<dd> Remove a type with the specified name from the symbol table.
|
||||
Returns the removed Type.</dd>
|
||||
|
||||
<dt><tt>Value *value_remove(const value_iterator& It)</tt>:</dt>
|
||||
<dt><tt>Value *remove(const value_iterator& It)</tt>:</dt>
|
||||
<dd> Removes a specific value from the symbol table.
|
||||
Returns the removed value.</dd>
|
||||
|
||||
@ -1547,16 +1521,6 @@ for (SymbolTable::plane_const_iterator PI = ST.plane_begin(),
|
||||
PE = ST.plane_end(); PI != PE; ++PI ) {
|
||||
PI->first // <i>This is the Type* of the plane</i>
|
||||
PI->second // <i>This is the SymbolTable::ValueMap of name/Value pairs</i>
|
||||
}
|
||||
</tt></pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">All name/Type Pairs</td><td>TI</td>
|
||||
<td align="left"><pre><tt>
|
||||
for (SymbolTable::type_const_iterator TI = ST.type_begin(),
|
||||
TE = ST.type_end(); TI != TE; ++TI ) {
|
||||
TI->first // <i>This is the name of the type</i>
|
||||
TI->second // <i>This is the Type* value associated with the name</i>
|
||||
}
|
||||
</tt></pre></td>
|
||||
</tr>
|
||||
@ -1618,20 +1582,6 @@ will loop infinitely.</p>
|
||||
marker for end of iteration of the type plane.
|
||||
Note: the type plane must already exist before using this.</dd>
|
||||
|
||||
<dt><tt>type_iterator type_begin()</tt>:</dt>
|
||||
<dd>Get an iterator to the start of the name/Type map.</dd>
|
||||
|
||||
<dt><tt>type_const_iterator type_begin() cons</tt>:</dt>
|
||||
<dd> Get a const_iterator to the start of the name/Type map.</dd>
|
||||
|
||||
<dt><tt>type_iterator type_end()</tt>:</dt>
|
||||
<dd>Get an iterator to the end of the name/Type map. This serves as the
|
||||
marker for end of iteration of the types.</dd>
|
||||
|
||||
<dt><tt>type_const_iterator type_end() const</tt>:</dt>
|
||||
<dd>Get a const-iterator to the end of the name/Type map. This serves
|
||||
as the marker for end of iteration of the types.</dd>
|
||||
|
||||
<dt><tt>plane_const_iterator find(const Type* Typ ) const</tt>:</dt>
|
||||
<dd>This method returns a plane_const_iterator for iteration over
|
||||
the type planes starting at a specific plane, given by \p Ty.</dd>
|
||||
|
Loading…
x
Reference in New Issue
Block a user