~ubuntu-branches/ubuntu/precise/exiv2/precise

« back to all changes in this revision

Viewing changes to doc/html/classExiv2_1_1Ifd.html

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Mercatante
  • Date: 2006-12-07 18:40:10 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20061207184010-0ouu8v0dr8nznob9
Tags: 0.12-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
5
5
<link href="tabs.css" rel="stylesheet" type="text/css">
6
6
</head><body>
7
 
<!-- Generated by Doxygen 1.4.6 -->
 
7
<!-- Generated by Doxygen 1.5.1 -->
8
8
<div class="tabs">
9
9
  <ul>
10
10
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
12
12
    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
13
13
    <li><a href="files.html"><span>Files</span></a></li>
14
14
    <li><a href="examples.html"><span>Examples</span></a></li>
 
15
    <li>
 
16
      <form action="search.php" method="get">
 
17
        <table cellspacing="0" cellpadding="0" border="0">
 
18
          <tr>
 
19
            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
 
20
            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
 
21
          </tr>
 
22
        </table>
 
23
      </form>
 
24
    </li>
15
25
  </ul></div>
16
26
<div class="tabs">
17
27
  <ul>
40
50
 
41
51
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Entries iterator type <br></td></tr>
42
52
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
43
 
<tr><td colspan="2"><div class="groupHeader">Creators</div></td></tr>
44
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35ca0bcd5456f652da470abc6796252b"></a><!-- doxytag: member="Exiv2::Ifd::Ifd" ref="35ca0bcd5456f652da470abc6796252b" args="(IfdId ifdId=ifdIdNotSet)" -->
45
 
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#35ca0bcd5456f652da470abc6796252b">Ifd</a> (<a class="el" href="namespaceExiv2.html#1615152767a506a955c9d13443b56b62">IfdId</a> ifdId=ifdIdNotSet)</td></tr>
46
 
 
47
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. Allows to set the IFD identifier. Memory management is enabled, offset is set to 0. Serves as default constructor. <br></td></tr>
48
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4152ff215d6ef0af0f25a4399f47e766"></a><!-- doxytag: member="Exiv2::Ifd::Ifd" ref="4152ff215d6ef0af0f25a4399f47e766" args="(IfdId ifdId, long offset)" -->
49
 
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#4152ff215d6ef0af0f25a4399f47e766">Ifd</a> (<a class="el" href="namespaceExiv2.html#1615152767a506a955c9d13443b56b62">IfdId</a> ifdId, long offset)</td></tr>
50
 
 
51
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. Allows to set the IFD identifier and the offset of the IFD from the start of TIFF header. Memory management is enabled. <br></td></tr>
52
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2742ff3480abd123bec2a169bb9ab6a"></a><!-- doxytag: member="Exiv2::Ifd::Ifd" ref="c2742ff3480abd123bec2a169bb9ab6a" args="(IfdId ifdId, long offset, bool alloc, bool hasNext=true)" -->
53
 
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#c2742ff3480abd123bec2a169bb9ab6a">Ifd</a> (<a class="el" href="namespaceExiv2.html#1615152767a506a955c9d13443b56b62">IfdId</a> ifdId, long offset, bool alloc, bool hasNext=true)</td></tr>
54
 
 
55
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. Allows to set the IFD identifier, offset of the IFD from the start of TIFF header, choose whether or not memory management is required for the Entries, and decide whether this IFD has a next pointer. <br></td></tr>
56
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="868c86a9a804070023bfb81836d0a358"></a><!-- doxytag: member="Exiv2::Ifd::Ifd" ref="868c86a9a804070023bfb81836d0a358" args="(const Ifd &amp;rhs)" -->
57
 
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#868c86a9a804070023bfb81836d0a358">Ifd</a> (const <a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> &amp;rhs)</td></tr>
58
 
 
59
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <br></td></tr>
60
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="42a28a311e121156bf024e5554d30519"></a><!-- doxytag: member="Exiv2::Ifd::~Ifd" ref="42a28a311e121156bf024e5554d30519" args="()" -->
61
 
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#42a28a311e121156bf024e5554d30519">~Ifd</a> ()</td></tr>
62
 
 
63
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <br></td></tr>
64
53
<tr><td colspan="2"><div class="groupHeader">Manipulators</div></td></tr>
65
54
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#8d86b9dfa71fb413978822ed388d5f78">read</a> (const <a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *buf, long len, long start, <a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a> byteOrder, long shift=0)</td></tr>
66
55
 
84
73
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#f1389f168b084badf2cd73c380d28ea3">erase</a> (uint16_t tag)</td></tr>
85
74
 
86
75
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete the directory entry with the given tag. Return the index of the deleted entry or 0 if no entry with tag was found. <br></td></tr>
87
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6b29dc7ce0ab026d8600191c0abd4e2c"></a><!-- doxytag: member="Exiv2::Ifd::erase" ref="6b29dc7ce0ab026d8600191c0abd4e2c" args="(iterator pos)" -->
88
 
<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#6b29dc7ce0ab026d8600191c0abd4e2c">erase</a> (<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a> pos)</td></tr>
 
76
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="368820f1aaf6baf20a0d87b9c4fe0703"></a><!-- doxytag: member="Exiv2::Ifd::erase" ref="368820f1aaf6baf20a0d87b9c4fe0703" args="(iterator pos)" -->
 
77
<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#368820f1aaf6baf20a0d87b9c4fe0703">erase</a> (<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a> pos)</td></tr>
89
78
 
90
79
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete the directory entry at iterator position pos, return the position of the next entry. Note that iterators into the directory, including pos, are potentially invalidated by this call. <br></td></tr>
91
80
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c98ad7d2422810a0a253d86452a46bae"></a><!-- doxytag: member="Exiv2::Ifd::sortByTag" ref="c98ad7d2422810a0a253d86452a46bae" args="()" -->
100
89
<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#ea062007f866b97a9ce6867fb1e52fe1">end</a> ()</td></tr>
101
90
 
102
91
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">End of the entries. <br></td></tr>
103
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eea8815df5c4d997aabeca6c433e5419"></a><!-- doxytag: member="Exiv2::Ifd::findIdx" ref="eea8815df5c4d997aabeca6c433e5419" args="(int idx)" -->
104
 
<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#eea8815df5c4d997aabeca6c433e5419">findIdx</a> (int idx)</td></tr>
 
92
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7d69be6d51afd457322ffa055fcfc568"></a><!-- doxytag: member="Exiv2::Ifd::findIdx" ref="7d69be6d51afd457322ffa055fcfc568" args="(int idx)" -->
 
93
<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#7d69be6d51afd457322ffa055fcfc568">findIdx</a> (int idx)</td></tr>
105
94
 
106
95
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an IFD entry by idx, return an iterator into the entries list. <br></td></tr>
107
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ed5cbf1618df16baf196b8751784ce90"></a><!-- doxytag: member="Exiv2::Ifd::findTag" ref="ed5cbf1618df16baf196b8751784ce90" args="(uint16_t tag)" -->
108
 
<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#ed5cbf1618df16baf196b8751784ce90">findTag</a> (uint16_t tag)</td></tr>
 
96
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9f2ed8194ec2f2a92d400807102cce43"></a><!-- doxytag: member="Exiv2::Ifd::findTag" ref="9f2ed8194ec2f2a92d400807102cce43" args="(uint16_t tag)" -->
 
97
<a class="el" href="classExiv2_1_1Ifd.html#9c93a8ce8a9645aa66c152641a91fb56">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#9f2ed8194ec2f2a92d400807102cce43">findTag</a> (uint16_t tag)</td></tr>
109
98
 
110
99
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an IFD entry by tag, return an iterator into the entries list. <br></td></tr>
111
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#5f6bb37fc8c82ca5e584f7353fc77ce9">updateBase</a> (<a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *pNewBase)</td></tr>
 
100
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#fdc96f99d251a70a77e16d24cde6aaf2">updateBase</a> (<a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *pNewBase)</td></tr>
112
101
 
113
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update the base pointer of the <a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> and all entries to <em>pNewBase</em>.  <a href="#5f6bb37fc8c82ca5e584f7353fc77ce9"></a><br></td></tr>
 
102
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update the base pointer of the <a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> and all entries to <em>pNewBase</em>.  <a href="#fdc96f99d251a70a77e16d24cde6aaf2"></a><br></td></tr>
114
103
<tr><td colspan="2"><div class="groupHeader">Accessors</div></td></tr>
115
 
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#bff72dd26220e5f6d30288f45af42e0a">readSubIfd</a> (<a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> &amp;dest, const <a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *buf, long len, <a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a> byteOrder, uint16_t tag) const </td></tr>
 
104
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#dec4cd1817a3542422ca488b0a3bd58d">readSubIfd</a> (<a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> &amp;dest, const <a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *buf, long len, <a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a> byteOrder, uint16_t tag) const</td></tr>
116
105
 
117
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a sub-IFD from the location pointed to by the directory entry with the given tag.  <a href="#bff72dd26220e5f6d30288f45af42e0a"></a><br></td></tr>
118
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c8a8b5eeaf0437c846b160f58347b68f"></a><!-- doxytag: member="Exiv2::Ifd::alloc" ref="c8a8b5eeaf0437c846b160f58347b68f" args="() const " -->
119
 
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#c8a8b5eeaf0437c846b160f58347b68f">alloc</a> () const </td></tr>
 
106
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a sub-IFD from the location pointed to by the directory entry with the given tag.  <a href="#dec4cd1817a3542422ca488b0a3bd58d"></a><br></td></tr>
 
107
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4fb5d983a3ced0622f987441f8851583"></a><!-- doxytag: member="Exiv2::Ifd::alloc" ref="4fb5d983a3ced0622f987441f8851583" args="() const" -->
 
108
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#4fb5d983a3ced0622f987441f8851583">alloc</a> () const</td></tr>
120
109
 
121
110
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the memory allocation mode, see the <a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> class description for details. <br></td></tr>
122
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3f3c2d53d5e2a46b8de4219a062981b6"></a><!-- doxytag: member="Exiv2::Ifd::begin" ref="3f3c2d53d5e2a46b8de4219a062981b6" args="() const " -->
123
 
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#3f3c2d53d5e2a46b8de4219a062981b6">begin</a> () const </td></tr>
 
111
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2d14160653c91512fe884b9c5f65c107"></a><!-- doxytag: member="Exiv2::Ifd::begin" ref="2d14160653c91512fe884b9c5f65c107" args="() const" -->
 
112
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#2d14160653c91512fe884b9c5f65c107">begin</a> () const</td></tr>
124
113
 
125
114
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The first entry. <br></td></tr>
126
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8b9d389689153948e6a55a5bed90596d"></a><!-- doxytag: member="Exiv2::Ifd::end" ref="8b9d389689153948e6a55a5bed90596d" args="() const " -->
127
 
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#8b9d389689153948e6a55a5bed90596d">end</a> () const </td></tr>
 
115
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fd334a8108bd6ffb92cfe20e4d8d7aa7"></a><!-- doxytag: member="Exiv2::Ifd::end" ref="fd334a8108bd6ffb92cfe20e4d8d7aa7" args="() const" -->
 
116
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#fd334a8108bd6ffb92cfe20e4d8d7aa7">end</a> () const</td></tr>
128
117
 
129
118
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">End of the entries. <br></td></tr>
130
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="871232ca77c3eddbddac46b7fdf86a40"></a><!-- doxytag: member="Exiv2::Ifd::findIdx" ref="871232ca77c3eddbddac46b7fdf86a40" args="(int idx) const " -->
131
 
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#871232ca77c3eddbddac46b7fdf86a40">findIdx</a> (int idx) const </td></tr>
 
119
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b021a2dd8e6d0e47cf2dcc163daeadec"></a><!-- doxytag: member="Exiv2::Ifd::findIdx" ref="b021a2dd8e6d0e47cf2dcc163daeadec" args="(int idx) const" -->
 
120
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#b021a2dd8e6d0e47cf2dcc163daeadec">findIdx</a> (int idx) const</td></tr>
132
121
 
133
122
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an IFD entry by idx, return a const iterator into the entries list. <br></td></tr>
134
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6cadb943ad9abad002d118cb10f259fa"></a><!-- doxytag: member="Exiv2::Ifd::findTag" ref="6cadb943ad9abad002d118cb10f259fa" args="(uint16_t tag) const " -->
135
 
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#6cadb943ad9abad002d118cb10f259fa">findTag</a> (uint16_t tag) const </td></tr>
 
123
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8cbcba35cb4ab1ffd589aa8864cc1ebd"></a><!-- doxytag: member="Exiv2::Ifd::findTag" ref="8cbcba35cb4ab1ffd589aa8864cc1ebd" args="(uint16_t tag) const " -->
 
124
<a class="el" href="classExiv2_1_1Ifd.html#e1a940634eeaaf03e3635b666ee8ab06">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#8cbcba35cb4ab1ffd589aa8864cc1ebd">findTag</a> (uint16_t tag) const </td></tr>
136
125
 
137
126
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find an IFD entry by tag, return a const iterator into the entries list. <br></td></tr>
138
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="00a4292e936211c946594be03bad055e"></a><!-- doxytag: member="Exiv2::Ifd::ifdId" ref="00a4292e936211c946594be03bad055e" args="() const " -->
139
 
<a class="el" href="namespaceExiv2.html#1615152767a506a955c9d13443b56b62">IfdId</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#00a4292e936211c946594be03bad055e">ifdId</a> () const </td></tr>
 
127
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f97e03103e07096504fed576b5ad5844"></a><!-- doxytag: member="Exiv2::Ifd::ifdId" ref="f97e03103e07096504fed576b5ad5844" args="() const" -->
 
128
<a class="el" href="namespaceExiv2.html#1615152767a506a955c9d13443b56b62">IfdId</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#f97e03103e07096504fed576b5ad5844">ifdId</a> () const</td></tr>
140
129
 
141
130
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the IfdId of the IFD. <br></td></tr>
142
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fb2195a0b29a87cfff6aa35437b47a9e"></a><!-- doxytag: member="Exiv2::Ifd::offset" ref="fb2195a0b29a87cfff6aa35437b47a9e" args="() const " -->
143
 
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#fb2195a0b29a87cfff6aa35437b47a9e">offset</a> () const </td></tr>
 
131
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d6fb38f21a199b2c0150014947c58993"></a><!-- doxytag: member="Exiv2::Ifd::offset" ref="d6fb38f21a199b2c0150014947c58993" args="() const" -->
 
132
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#d6fb38f21a199b2c0150014947c58993">offset</a> () const</td></tr>
144
133
 
145
134
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset of the IFD from the start of the TIFF header. <br></td></tr>
146
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ff751d7b774be46c37235951212321cc"></a><!-- doxytag: member="Exiv2::Ifd::dataOffset" ref="ff751d7b774be46c37235951212321cc" args="() const " -->
147
 
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#ff751d7b774be46c37235951212321cc">dataOffset</a> () const </td></tr>
 
135
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="189ffc30d3a02b91c9b4664c0de44e02"></a><!-- doxytag: member="Exiv2::Ifd::dataOffset" ref="189ffc30d3a02b91c9b4664c0de44e02" args="() const" -->
 
136
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#189ffc30d3a02b91c9b4664c0de44e02">dataOffset</a> () const</td></tr>
148
137
 
149
138
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset of the first data entry outside of the IFD from the start of the TIFF header, return 0 if there is none. The data offset is determined when the IFD is read. <br></td></tr>
150
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5c7a475416b7d03f5467c2b0a3f8a297"></a><!-- doxytag: member="Exiv2::Ifd::next" ref="5c7a475416b7d03f5467c2b0a3f8a297" args="() const " -->
151
 
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#5c7a475416b7d03f5467c2b0a3f8a297">next</a> () const </td></tr>
 
139
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="65d8b6f36000c583a13838555c606d28"></a><!-- doxytag: member="Exiv2::Ifd::next" ref="65d8b6f36000c583a13838555c606d28" args="() const" -->
 
140
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#65d8b6f36000c583a13838555c606d28">next</a> () const</td></tr>
152
141
 
153
142
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset to the next IFD from the start of the TIFF header. <br></td></tr>
154
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0d2baaaa5da6e435134c688faa435b24"></a><!-- doxytag: member="Exiv2::Ifd::count" ref="0d2baaaa5da6e435134c688faa435b24" args="() const " -->
155
 
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#0d2baaaa5da6e435134c688faa435b24">count</a> () const </td></tr>
 
143
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6364b41562c029cd3c5c9b7a074f2dcd"></a><!-- doxytag: member="Exiv2::Ifd::count" ref="6364b41562c029cd3c5c9b7a074f2dcd" args="() const" -->
 
144
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#6364b41562c029cd3c5c9b7a074f2dcd">count</a> () const</td></tr>
156
145
 
157
146
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of directory entries in the IFD. <br></td></tr>
158
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a12417574ede7fc602ec2bd4c8bedfe9"></a><!-- doxytag: member="Exiv2::Ifd::size" ref="a12417574ede7fc602ec2bd4c8bedfe9" args="() const " -->
159
 
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#a12417574ede7fc602ec2bd4c8bedfe9">size</a> () const </td></tr>
 
147
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6f61f6fb8cf5bdb6f1a7c2d30d246fd3"></a><!-- doxytag: member="Exiv2::Ifd::size" ref="6f61f6fb8cf5bdb6f1a7c2d30d246fd3" args="() const" -->
 
148
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#6f61f6fb8cf5bdb6f1a7c2d30d246fd3">size</a> () const</td></tr>
160
149
 
161
150
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the size of this IFD in bytes (IFD only, without data). <br></td></tr>
162
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ed3dbf3d4dbf003df41acbd4587df8a3"></a><!-- doxytag: member="Exiv2::Ifd::dataSize" ref="ed3dbf3d4dbf003df41acbd4587df8a3" args="() const " -->
163
 
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#ed3dbf3d4dbf003df41acbd4587df8a3">dataSize</a> () const </td></tr>
 
151
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4abb2f0fd65bedcba7948308ac0edd36"></a><!-- doxytag: member="Exiv2::Ifd::dataSize" ref="4abb2f0fd65bedcba7948308ac0edd36" args="() const" -->
 
152
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#4abb2f0fd65bedcba7948308ac0edd36">dataSize</a> () const</td></tr>
164
153
 
165
154
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the total size of the data of this IFD in bytes; sums the size of all directory entries where size is greater than four plus the size of all data areas, i.e., all data that requires memory outside the IFD directory entries is counted. <br></td></tr>
166
 
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ac4f19f3ee6eccbfd2fce067d03efb1f"></a><!-- doxytag: member="Exiv2::Ifd::print" ref="ac4f19f3ee6eccbfd2fce067d03efb1f" args="(std::ostream &amp;os, const std::string &amp;prefix=&quot;&quot;) const " -->
167
 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#ac4f19f3ee6eccbfd2fce067d03efb1f">print</a> (std::ostream &amp;os, const std::string &amp;prefix=&quot;&quot;) const </td></tr>
 
155
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d500fa8d35637934499cee74502737c1"></a><!-- doxytag: member="Exiv2::Ifd::print" ref="d500fa8d35637934499cee74502737c1" args="(std::ostream &amp;os, const std::string &amp;prefix=&quot;&quot;) const" -->
 
156
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1Ifd.html#d500fa8d35637934499cee74502737c1">print</a> (std::ostream &amp;os, const std::string &amp;prefix=&quot;&quot;) const</td></tr>
168
157
 
169
158
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print the IFD in human readable format to the given stream; begin each line with prefix. <br></td></tr>
170
159
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
184
173
An instance of class Ifd can operate in two modes, one that allocates and deallocates the memory required to store data, and one that doesn't perform such memory management. <br>
185
174
An external data buffer (not managed by Ifd) is needed for an instance of Ifd which operates in no memory management mode. The Ifd will maintain only pointers into this buffer. <br>
186
175
 The mode without memory management is used to make "non-intrusive write support" possible. This allows writing to Exif data of an image without changing the data layout of the Exif data, to maximize chances that tag data, which the Exif reader may not understand (e.g., the Makernote) remains valid. A "non-intrusive write operation" is the modification of tag data without increasing the data size.<p>
187
 
<dl compact><dt><b>Note:</b></dt><dd>Use the mode with memory management (the default) if you are unsure or if these memory management considerations are of no concern to you.<p>
 
176
<dl class="note" compact><dt><b>Note:</b></dt><dd>Use the mode with memory management (the default) if you are unsure or if these memory management considerations are of no concern to you.<p>
188
177
The two different modes imply completely different copy and assignment behaviours, with the first resulting in entirely separate classes and the second mode resulting in multiple classes using one and the same data buffer. </dd></dl>
189
178
 
190
179
<p>
191
180
<hr><h2>Member Function Documentation</h2>
192
 
<a class="anchor" name="e4111e2b5234b5dab141e4fd7194eabd"></a><!-- doxytag: member="Exiv2::Ifd::copy" ref="e4111e2b5234b5dab141e4fd7194eabd" args="(byte *buf, ByteOrder byteOrder, long offset=0)" --><p>
193
 
<table class="mdTable" cellpadding="2" cellspacing="0">
194
 
  <tr>
195
 
    <td class="mdRow">
196
 
      <table cellpadding="0" cellspacing="0" border="0">
197
 
        <tr>
198
 
          <td class="md" nowrap valign="top">long Exiv2::Ifd::copy           </td>
199
 
          <td class="md" valign="top">(&nbsp;</td>
200
 
          <td class="md" nowrap valign="top"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
201
 
          <td class="mdname" nowrap> <em>buf</em>, </td>
202
 
        </tr>
203
 
        <tr>
204
 
          <td class="md" nowrap align="right"></td>
205
 
          <td class="md"></td>
206
 
          <td class="md" nowrap><a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a>&nbsp;</td>
207
 
          <td class="mdname" nowrap> <em>byteOrder</em>, </td>
208
 
        </tr>
209
 
        <tr>
210
 
          <td class="md" nowrap align="right"></td>
211
 
          <td class="md"></td>
212
 
          <td class="md" nowrap>long&nbsp;</td>
213
 
          <td class="mdname" nowrap> <em>offset</em> = <code>0</code></td>
214
 
        </tr>
215
 
        <tr>
216
 
          <td class="md"></td>
217
 
          <td class="md">)&nbsp;</td>
218
 
          <td class="md" colspan="2"></td>
219
 
        </tr>
220
 
      </table>
221
 
    </td>
222
 
  </tr>
223
 
</table>
224
 
<table cellspacing="5" cellpadding="0" border="0">
225
 
  <tr>
226
 
    <td>
227
 
      &nbsp;
228
 
    </td>
229
 
    <td>
230
 
 
231
 
<p>
232
 
Copy the IFD to a data array, update the offsets of the IFD and all its entries, return the number of bytes written. 
233
 
<p>
234
 
First the number of IFD entries is written (2 bytes), followed by all directory entries: tag (2), type (2), number of data components (4) and offset to the data or the data, if it occupies not more than four bytes (4). The directory entries are followed by the offset of the next IFD (4). All these fields are encoded according to the byte order argument. Data that doesn't fit into the offset fields follows immediately after the IFD entries. The offsets in the IFD are set to correctly point to the data fields, using the offset parameter or the offset of the IFD.<p>
235
 
<dl compact><dt><b>Parameters:</b></dt><dd>
236
 
  <table border="0" cellspacing="2" cellpadding="0">
237
 
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>Pointer to the data buffer. The user must ensure that the buffer has enough memory. Otherwise the call results in undefined behaviour. </td></tr>
238
 
    <tr><td valign="top"></td><td valign="top"><em>byteOrder</em>&nbsp;</td><td>Applicable byte order (little or big endian). </td></tr>
239
 
    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>Target offset from the start of the TIFF header of the data array. The IFD offsets will be adjusted as necessary. If not given, then it is assumed that the IFD will remain at its original position, i.e., the offset of the IFD will be used. </td></tr>
240
 
  </table>
241
 
</dl>
242
 
<dl compact><dt><b>Returns:</b></dt><dd>Returns the number of characters written. </dd></dl>
243
 
    </td>
244
 
  </tr>
245
 
</table>
246
 
<a class="anchor" name="8d86b9dfa71fb413978822ed388d5f78"></a><!-- doxytag: member="Exiv2::Ifd::read" ref="8d86b9dfa71fb413978822ed388d5f78" args="(const byte *buf, long len, long start, ByteOrder byteOrder, long shift=0)" --><p>
247
 
<table class="mdTable" cellpadding="2" cellspacing="0">
248
 
  <tr>
249
 
    <td class="mdRow">
250
 
      <table cellpadding="0" cellspacing="0" border="0">
251
 
        <tr>
252
 
          <td class="md" nowrap valign="top">int Exiv2::Ifd::read           </td>
253
 
          <td class="md" valign="top">(&nbsp;</td>
254
 
          <td class="md" nowrap valign="top">const <a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
255
 
          <td class="mdname" nowrap> <em>buf</em>, </td>
256
 
        </tr>
257
 
        <tr>
258
 
          <td class="md" nowrap align="right"></td>
259
 
          <td class="md"></td>
260
 
          <td class="md" nowrap>long&nbsp;</td>
261
 
          <td class="mdname" nowrap> <em>len</em>, </td>
262
 
        </tr>
263
 
        <tr>
264
 
          <td class="md" nowrap align="right"></td>
265
 
          <td class="md"></td>
266
 
          <td class="md" nowrap>long&nbsp;</td>
267
 
          <td class="mdname" nowrap> <em>start</em>, </td>
268
 
        </tr>
269
 
        <tr>
270
 
          <td class="md" nowrap align="right"></td>
271
 
          <td class="md"></td>
272
 
          <td class="md" nowrap><a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a>&nbsp;</td>
273
 
          <td class="mdname" nowrap> <em>byteOrder</em>, </td>
274
 
        </tr>
275
 
        <tr>
276
 
          <td class="md" nowrap align="right"></td>
277
 
          <td class="md"></td>
278
 
          <td class="md" nowrap>long&nbsp;</td>
279
 
          <td class="mdname" nowrap> <em>shift</em> = <code>0</code></td>
280
 
        </tr>
281
 
        <tr>
282
 
          <td class="md"></td>
283
 
          <td class="md">)&nbsp;</td>
284
 
          <td class="md" colspan="2"></td>
285
 
        </tr>
286
 
      </table>
287
 
    </td>
288
 
  </tr>
289
 
</table>
290
 
<table cellspacing="5" cellpadding="0" border="0">
291
 
  <tr>
292
 
    <td>
293
 
      &nbsp;
294
 
    </td>
295
 
    <td>
 
181
<a class="anchor" name="8d86b9dfa71fb413978822ed388d5f78"></a><!-- doxytag: member="Exiv2::Ifd::read" ref="8d86b9dfa71fb413978822ed388d5f78" args="(const byte *buf, long len, long start, ByteOrder byteOrder, long shift=0)" -->
 
182
<div class="memitem">
 
183
<div class="memproto">
 
184
      <table class="memname">
 
185
        <tr>
 
186
          <td class="memname">int Exiv2::Ifd::read           </td>
 
187
          <td>(</td>
 
188
          <td class="paramtype">const <a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
 
189
          <td class="paramname"> <em>buf</em>, </td>
 
190
        </tr>
 
191
        <tr>
 
192
          <td class="paramkey"></td>
 
193
          <td></td>
 
194
          <td class="paramtype">long&nbsp;</td>
 
195
          <td class="paramname"> <em>len</em>, </td>
 
196
        </tr>
 
197
        <tr>
 
198
          <td class="paramkey"></td>
 
199
          <td></td>
 
200
          <td class="paramtype">long&nbsp;</td>
 
201
          <td class="paramname"> <em>start</em>, </td>
 
202
        </tr>
 
203
        <tr>
 
204
          <td class="paramkey"></td>
 
205
          <td></td>
 
206
          <td class="paramtype"><a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a>&nbsp;</td>
 
207
          <td class="paramname"> <em>byteOrder</em>, </td>
 
208
        </tr>
 
209
        <tr>
 
210
          <td class="paramkey"></td>
 
211
          <td></td>
 
212
          <td class="paramtype">long&nbsp;</td>
 
213
          <td class="paramname"> <em>shift</em> = <code>0</code></td><td>&nbsp;</td>
 
214
        </tr>
 
215
        <tr>
 
216
          <td></td>
 
217
          <td>)</td>
 
218
          <td></td><td></td><td width="100%"></td>
 
219
        </tr>
 
220
      </table>
 
221
</div>
 
222
<div class="memdoc">
296
223
 
297
224
<p>
298
225
Read a complete IFD and its data from a data buffer. 
306
233
    <tr><td valign="top"></td><td valign="top"><em>shift</em>&nbsp;</td><td>IFD offsets are relative to buf + shift.</td></tr>
307
234
  </table>
308
235
</dl>
309
 
<dl compact><dt><b>Returns:</b></dt><dd>0 if successful;<br>
 
236
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if successful;<br>
310
237
 6 if the data buffer is too small, e.g., if an offset points beyond the provided buffer. The IFD is cleared in this case. </dd></dl>
311
 
    </td>
312
 
  </tr>
313
 
</table>
314
 
<a class="anchor" name="bff72dd26220e5f6d30288f45af42e0a"></a><!-- doxytag: member="Exiv2::Ifd::readSubIfd" ref="bff72dd26220e5f6d30288f45af42e0a" args="(Ifd &amp;dest, const byte *buf, long len, ByteOrder byteOrder, uint16_t tag) const " --><p>
315
 
<table class="mdTable" cellpadding="2" cellspacing="0">
316
 
  <tr>
317
 
    <td class="mdRow">
318
 
      <table cellpadding="0" cellspacing="0" border="0">
319
 
        <tr>
320
 
          <td class="md" nowrap valign="top">int Exiv2::Ifd::readSubIfd           </td>
321
 
          <td class="md" valign="top">(&nbsp;</td>
322
 
          <td class="md" nowrap valign="top"><a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> &amp;&nbsp;</td>
323
 
          <td class="mdname" nowrap> <em>dest</em>, </td>
324
 
        </tr>
325
 
        <tr>
326
 
          <td class="md" nowrap align="right"></td>
327
 
          <td class="md"></td>
328
 
          <td class="md" nowrap>const <a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
329
 
          <td class="mdname" nowrap> <em>buf</em>, </td>
330
 
        </tr>
331
 
        <tr>
332
 
          <td class="md" nowrap align="right"></td>
333
 
          <td class="md"></td>
334
 
          <td class="md" nowrap>long&nbsp;</td>
335
 
          <td class="mdname" nowrap> <em>len</em>, </td>
336
 
        </tr>
337
 
        <tr>
338
 
          <td class="md" nowrap align="right"></td>
339
 
          <td class="md"></td>
340
 
          <td class="md" nowrap><a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a>&nbsp;</td>
341
 
          <td class="mdname" nowrap> <em>byteOrder</em>, </td>
342
 
        </tr>
343
 
        <tr>
344
 
          <td class="md" nowrap align="right"></td>
345
 
          <td class="md"></td>
346
 
          <td class="md" nowrap>uint16_t&nbsp;</td>
347
 
          <td class="mdname" nowrap> <em>tag</em></td>
348
 
        </tr>
349
 
        <tr>
350
 
          <td class="md"></td>
351
 
          <td class="md">)&nbsp;</td>
352
 
          <td class="md" colspan="2"> const</td>
353
 
        </tr>
354
 
      </table>
355
 
    </td>
356
 
  </tr>
357
 
</table>
358
 
<table cellspacing="5" cellpadding="0" border="0">
359
 
  <tr>
360
 
    <td>
361
 
      &nbsp;
362
 
    </td>
363
 
    <td>
 
238
 
 
239
</div>
 
240
</div><p>
 
241
<a class="anchor" name="e4111e2b5234b5dab141e4fd7194eabd"></a><!-- doxytag: member="Exiv2::Ifd::copy" ref="e4111e2b5234b5dab141e4fd7194eabd" args="(byte *buf, ByteOrder byteOrder, long offset=0)" -->
 
242
<div class="memitem">
 
243
<div class="memproto">
 
244
      <table class="memname">
 
245
        <tr>
 
246
          <td class="memname">long Exiv2::Ifd::copy           </td>
 
247
          <td>(</td>
 
248
          <td class="paramtype"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
 
249
          <td class="paramname"> <em>buf</em>, </td>
 
250
        </tr>
 
251
        <tr>
 
252
          <td class="paramkey"></td>
 
253
          <td></td>
 
254
          <td class="paramtype"><a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a>&nbsp;</td>
 
255
          <td class="paramname"> <em>byteOrder</em>, </td>
 
256
        </tr>
 
257
        <tr>
 
258
          <td class="paramkey"></td>
 
259
          <td></td>
 
260
          <td class="paramtype">long&nbsp;</td>
 
261
          <td class="paramname"> <em>offset</em> = <code>0</code></td><td>&nbsp;</td>
 
262
        </tr>
 
263
        <tr>
 
264
          <td></td>
 
265
          <td>)</td>
 
266
          <td></td><td></td><td width="100%"></td>
 
267
        </tr>
 
268
      </table>
 
269
</div>
 
270
<div class="memdoc">
 
271
 
 
272
<p>
 
273
Copy the IFD to a data array, update the offsets of the IFD and all its entries, return the number of bytes written. 
 
274
<p>
 
275
First the number of IFD entries is written (2 bytes), followed by all directory entries: tag (2), type (2), number of data components (4) and offset to the data or the data, if it occupies not more than four bytes (4). The directory entries are followed by the offset of the next IFD (4). All these fields are encoded according to the byte order argument. Data that doesn't fit into the offset fields follows immediately after the IFD entries. The offsets in the IFD are set to correctly point to the data fields, using the offset parameter or the offset of the IFD.<p>
 
276
<dl compact><dt><b>Parameters:</b></dt><dd>
 
277
  <table border="0" cellspacing="2" cellpadding="0">
 
278
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>Pointer to the data buffer. The user must ensure that the buffer has enough memory. Otherwise the call results in undefined behaviour. </td></tr>
 
279
    <tr><td valign="top"></td><td valign="top"><em>byteOrder</em>&nbsp;</td><td>Applicable byte order (little or big endian). </td></tr>
 
280
    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>Target offset from the start of the TIFF header of the data array. The IFD offsets will be adjusted as necessary. If not given, then it is assumed that the IFD will remain at its original position, i.e., the offset of the IFD will be used. </td></tr>
 
281
  </table>
 
282
</dl>
 
283
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns the number of characters written. </dd></dl>
 
284
 
 
285
</div>
 
286
</div><p>
 
287
<a class="anchor" name="fdc96f99d251a70a77e16d24cde6aaf2"></a><!-- doxytag: member="Exiv2::Ifd::updateBase" ref="fdc96f99d251a70a77e16d24cde6aaf2" args="(byte *pNewBase)" -->
 
288
<div class="memitem">
 
289
<div class="memproto">
 
290
      <table class="memname">
 
291
        <tr>
 
292
          <td class="memname"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a>* Exiv2::Ifd::updateBase           </td>
 
293
          <td>(</td>
 
294
          <td class="paramtype"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
 
295
          <td class="paramname"> <em>pNewBase</em>          </td>
 
296
          <td>&nbsp;)&nbsp;</td>
 
297
          <td width="100%"></td>
 
298
        </tr>
 
299
      </table>
 
300
</div>
 
301
<div class="memdoc">
 
302
 
 
303
<p>
 
304
Update the base pointer of the <a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> and all entries to <em>pNewBase</em>. 
 
305
<p>
 
306
Allows to re-locate the underlying data buffer to a new location <em>pNewBase</em>. This method only has an effect in non-alloc mode.<p>
 
307
<dl compact><dt><b>Parameters:</b></dt><dd>
 
308
  <table border="0" cellspacing="2" cellpadding="0">
 
309
    <tr><td valign="top"></td><td valign="top"><em>pNewBase</em>&nbsp;</td><td>Pointer to the new data buffer</td></tr>
 
310
  </table>
 
311
</dl>
 
312
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Old base pointer or 0 if called in alloc mode </dd></dl>
 
313
 
 
314
</div>
 
315
</div><p>
 
316
<a class="anchor" name="dec4cd1817a3542422ca488b0a3bd58d"></a><!-- doxytag: member="Exiv2::Ifd::readSubIfd" ref="dec4cd1817a3542422ca488b0a3bd58d" args="(Ifd &amp;dest, const byte *buf, long len, ByteOrder byteOrder, uint16_t tag) const" -->
 
317
<div class="memitem">
 
318
<div class="memproto">
 
319
      <table class="memname">
 
320
        <tr>
 
321
          <td class="memname">int Exiv2::Ifd::readSubIfd           </td>
 
322
          <td>(</td>
 
323
          <td class="paramtype"><a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> &amp;&nbsp;</td>
 
324
          <td class="paramname"> <em>dest</em>, </td>
 
325
        </tr>
 
326
        <tr>
 
327
          <td class="paramkey"></td>
 
328
          <td></td>
 
329
          <td class="paramtype">const <a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
 
330
          <td class="paramname"> <em>buf</em>, </td>
 
331
        </tr>
 
332
        <tr>
 
333
          <td class="paramkey"></td>
 
334
          <td></td>
 
335
          <td class="paramtype">long&nbsp;</td>
 
336
          <td class="paramname"> <em>len</em>, </td>
 
337
        </tr>
 
338
        <tr>
 
339
          <td class="paramkey"></td>
 
340
          <td></td>
 
341
          <td class="paramtype"><a class="el" href="namespaceExiv2.html#94c225faf6d6c611a3828fae1c28efa6">ByteOrder</a>&nbsp;</td>
 
342
          <td class="paramname"> <em>byteOrder</em>, </td>
 
343
        </tr>
 
344
        <tr>
 
345
          <td class="paramkey"></td>
 
346
          <td></td>
 
347
          <td class="paramtype">uint16_t&nbsp;</td>
 
348
          <td class="paramname"> <em>tag</em></td><td>&nbsp;</td>
 
349
        </tr>
 
350
        <tr>
 
351
          <td></td>
 
352
          <td>)</td>
 
353
          <td></td><td></td><td width="100%"> const</td>
 
354
        </tr>
 
355
      </table>
 
356
</div>
 
357
<div class="memdoc">
364
358
 
365
359
<p>
366
360
Read a sub-IFD from the location pointed to by the directory entry with the given tag. 
374
368
    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td><a class="el" href="namespaceExiv2_1_1Tag.html">Tag</a> to look for.</td></tr>
375
369
  </table>
376
370
</dl>
377
 
<dl compact><dt><b>Returns:</b></dt><dd>0 if successful;<br>
 
371
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if successful;<br>
378
372
 6 if reading the sub-IFD failed (see <a class="el" href="classExiv2_1_1Ifd.html#8d86b9dfa71fb413978822ed388d5f78">read()</a> above) or the location pointed to by the directory entry with the given tag is outside of the data buffer.</dd></dl>
379
 
<dl compact><dt><b>Note:</b></dt><dd>It is not considered an error if the tag cannot be found in the IFD. 0 is returned and no action is taken in this case. </dd></dl>
380
 
    </td>
381
 
  </tr>
382
 
</table>
383
 
<a class="anchor" name="5f6bb37fc8c82ca5e584f7353fc77ce9"></a><!-- doxytag: member="Exiv2::Ifd::updateBase" ref="5f6bb37fc8c82ca5e584f7353fc77ce9" args="(byte *pNewBase)" --><p>
384
 
<table class="mdTable" cellpadding="2" cellspacing="0">
385
 
  <tr>
386
 
    <td class="mdRow">
387
 
      <table cellpadding="0" cellspacing="0" border="0">
388
 
        <tr>
389
 
          <td class="md" nowrap valign="top"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> * Exiv2::Ifd::updateBase           </td>
390
 
          <td class="md" valign="top">(&nbsp;</td>
391
 
          <td class="md" nowrap valign="top"><a class="el" href="namespaceExiv2.html#16f60a5bd4207fe155f6cf93a15efa72">byte</a> *&nbsp;</td>
392
 
          <td class="mdname1" valign="top" nowrap> <em>pNewBase</em>          </td>
393
 
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
394
 
          <td class="md" nowrap></td>
395
 
        </tr>
396
 
      </table>
397
 
    </td>
398
 
  </tr>
399
 
</table>
400
 
<table cellspacing="5" cellpadding="0" border="0">
401
 
  <tr>
402
 
    <td>
403
 
      &nbsp;
404
 
    </td>
405
 
    <td>
 
373
<dl class="note" compact><dt><b>Note:</b></dt><dd>It is not considered an error if the tag cannot be found in the IFD. 0 is returned and no action is taken in this case. </dd></dl>
406
374
 
407
 
<p>
408
 
Update the base pointer of the <a class="el" href="classExiv2_1_1Ifd.html">Ifd</a> and all entries to <em>pNewBase</em>. 
409
 
<p>
410
 
Allows to re-locate the underlying data buffer to a new location <em>pNewBase</em>. This method only has an effect in non-alloc mode.<p>
411
 
<dl compact><dt><b>Parameters:</b></dt><dd>
412
 
  <table border="0" cellspacing="2" cellpadding="0">
413
 
    <tr><td valign="top"></td><td valign="top"><em>pNewBase</em>&nbsp;</td><td>Pointer to the new data buffer</td></tr>
414
 
  </table>
415
 
</dl>
416
 
<dl compact><dt><b>Returns:</b></dt><dd>Old base pointer or 0 if called in alloc mode </dd></dl>
417
 
    </td>
418
 
  </tr>
419
 
</table>
420
 
<hr>The documentation for this class was generated from the following files:<ul>
421
 
<li><a class="el" href="ifd_8hpp.html">ifd.hpp</a><li>ifd.cpp</ul>
422
 
<hr size="1"><address style="align: right;"><small>Generated on Fri Jun 2 23:54:58 2006 for Exiv2 by&nbsp;
 
375
</div>
 
376
</div><p>
 
377
<hr>The documentation for this class was generated from the following file:<ul>
 
378
<li><a class="el" href="ifd_8hpp.html">ifd.hpp</a></ul>
 
379
<hr size="1"><address style="align: right;"><small>Generated on Mon Nov 27 20:16:27 2006 for Exiv2 by&nbsp;
423
380
<a href="http://www.doxygen.org/index.html">
424
 
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
 
381
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
425
382
</body>
426
383
</html>