<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the BFD library.

Copyright (C) 1991 - 2013 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Funding
Free Software", the Front-Cover texts being (a) (see below), and with
the Back-Cover Texts being (b) (see below).  A copy of the license is
included in the section entitled "GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Untitled Document: Looking Up or Entering a String</title>

<meta name="description" content="Untitled Document: Looking Up or Entering a String">
<meta name="keywords" content="Untitled Document: Looking Up or Entering a String">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="BFD-Index.html#BFD-Index" rel="index" title="BFD Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Hash-Tables.html#Hash-Tables" rel="up" title="Hash Tables">
<link href="Traversing-a-Hash-Table.html#Traversing-a-Hash-Table" rel="next" title="Traversing a Hash Table">
<link href="Creating-and-Freeing-a-Hash-Table.html#Creating-and-Freeing-a-Hash-Table" rel="prev" title="Creating and Freeing a Hash Table">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Looking-Up-or-Entering-a-String"></a>
<div class="header">
<p>
Next: <a href="Traversing-a-Hash-Table.html#Traversing-a-Hash-Table" accesskey="n" rel="next">Traversing a Hash Table</a>, Previous: <a href="Creating-and-Freeing-a-Hash-Table.html#Creating-and-Freeing-a-Hash-Table" accesskey="p" rel="prev">Creating and Freeing a Hash Table</a>, Up: <a href="Hash-Tables.html#Hash-Tables" accesskey="u" rel="up">Hash Tables</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="BFD-Index.html#BFD-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Looking-up-or-entering-a-string"></a>
<h4 class="subsection">2.18.2 Looking up or entering a string</h4>
<a name="index-bfd_005fhash_005flookup"></a>
<p>The function <code>bfd_hash_lookup</code> is used both to look up a
string in the hash table and to create a new entry.
</p>
<p>If the <var>create</var> argument is <code>FALSE</code>, <code>bfd_hash_lookup</code>
will look up a string.  If the string is found, it will
returns a pointer to a <code>struct bfd_hash_entry</code>.  If the
string is not found in the table <code>bfd_hash_lookup</code> will
return <code>NULL</code>.  You should not modify any of the fields in
the returns <code>struct bfd_hash_entry</code>.
</p>
<p>If the <var>create</var> argument is <code>TRUE</code>, the string will be
entered into the hash table if it is not already there.
Either way a pointer to a <code>struct bfd_hash_entry</code> will be
returned, either to the existing structure or to a newly
created one.  In this case, a <code>NULL</code> return means that an
error occurred.
</p>
<p>If the <var>create</var> argument is <code>TRUE</code>, and a new entry is
created, the <var>copy</var> argument is used to decide whether to
copy the string onto the hash table objalloc or not.  If
<var>copy</var> is passed as <code>FALSE</code>, you must be careful not to
deallocate or modify the string as long as the hash table
exists.
</p>



</body>
</html>
