📄 group__apr__ring.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Apache Portable Runtime: Ring Macro Implementations</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.7 -->
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a></div>
<h1>Ring Macro Implementations</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga0">APR_RING_ENTRY</a>(elem)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga1">APR_RING_HEAD</a>(head, elem)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga2">APR_RING_SENTINEL</a>(hp, elem, link) (struct elem *)((char *)(hp) - APR_OFFSETOF(struct elem, link))</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga3">APR_RING_FIRST</a>(hp) (hp)->next</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga4">APR_RING_LAST</a>(hp) (hp)->prev</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga5">APR_RING_NEXT</a>(ep, link) (ep)->link.next</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga6">APR_RING_PREV</a>(ep, link) (ep)->link.prev</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga7">APR_RING_INIT</a>(hp, elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga8">APR_RING_EMPTY</a>(hp, elem, link) (APR_RING_FIRST((hp)) == APR_RING_SENTINEL((hp), elem, link))</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga9">APR_RING_ELEM_INIT</a>(ep, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga10">APR_RING_SPLICE_BEFORE</a>(lep, ep1, epN, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga11">APR_RING_SPLICE_AFTER</a>(lep, ep1, epN, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga12">APR_RING_INSERT_BEFORE</a>(lep, nep, link) APR_RING_SPLICE_BEFORE((lep), (nep), (nep), link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga13">APR_RING_INSERT_AFTER</a>(lep, nep, link) APR_RING_SPLICE_AFTER((lep), (nep), (nep), link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga14">APR_RING_SPLICE_HEAD</a>(hp, ep1, epN, elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga15">APR_RING_SPLICE_TAIL</a>(hp, ep1, epN, elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga16">APR_RING_INSERT_HEAD</a>(hp, nep, elem, link) APR_RING_SPLICE_HEAD((hp), (nep), (nep), elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga17">APR_RING_INSERT_TAIL</a>(hp, nep, elem, link) APR_RING_SPLICE_TAIL((hp), (nep), (nep), elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga18">APR_RING_CONCAT</a>(h1, h2, elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga19">APR_RING_PREPEND</a>(h1, h2, elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga20">APR_RING_UNSPLICE</a>(ep1, epN, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga21">APR_RING_REMOVE</a>(ep, link) APR_RING_UNSPLICE((ep), (ep), link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga22">APR_RING_CHECK_ONE</a>(msg, ptr)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga23">APR_RING_CHECK</a>(hp, elem, link, msg)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga24">APR_RING_CHECK_CONSISTENCY</a>(hp, elem, link)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga25">APR_RING_CHECK_ELEM</a>(ep, elem, link, msg)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__apr__ring.html#ga26">APR_RING_CHECK_ELEM_CONSISTENCY</a>(ep, elem, link)</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A ring is a kind of doubly-linked list that can be manipulated without knowing where its head is. <hr><h2>Define Documentation</h2>
<a class="anchor" name="ga23" doxytag="apr_ring.h::APR_RING_CHECK" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define APR_RING_CHECK </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">hp, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>elem, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>link, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>msg </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Dump all ring pointers to STDERR, starting with the head and looping all the way around the ring back to the head. Aborts if an inconsistency is found. (This is a no-op unless APR_RING_DEBUG is defined.) <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign=top><em>hp</em> </td><td>Head of the ring </td></tr>
<tr><td></td><td valign=top><em>elem</em> </td><td>The name of the element struct </td></tr>
<tr><td></td><td valign=top><em>link</em> </td><td>The name of the APR_RING_ENTRY in the element struct </td></tr>
<tr><td></td><td valign=top><em>msg</em> </td><td>Descriptive message </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="ga24" doxytag="apr_ring.h::APR_RING_CHECK_CONSISTENCY" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define APR_RING_CHECK_CONSISTENCY </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">hp, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>elem, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>link </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Loops around a ring and checks all the pointers for consistency. Pops an assertion if any inconsistency is found. Same idea as <a class="el" href="group__apr__ring.html#ga23">APR_RING_CHECK()</a> except that it's silent if all is well. (This is a no-op unless APR_RING_DEBUG is defined.) <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign=top><em>hp</em> </td><td>Head of the ring </td></tr>
<tr><td></td><td valign=top><em>elem</em> </td><td>The name of the element struct </td></tr>
<tr><td></td><td valign=top><em>link</em> </td><td>The name of the APR_RING_ENTRY in the element struct </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="ga25" doxytag="apr_ring.h::APR_RING_CHECK_ELEM" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define APR_RING_CHECK_ELEM </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">ep, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>elem, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>link, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>msg </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Dump all ring pointers to STDERR, starting with the given element and looping all the way around the ring back to that element. Aborts if an inconsistency is found. (This is a no-op unless APR_RING_DEBUG is defined.) <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign=top><em>ep</em> </td><td>The element </td></tr>
<tr><td></td><td valign=top><em>elem</em> </td><td>The name of the element struct </td></tr>
<tr><td></td><td valign=top><em>link</em> </td><td>The name of the APR_RING_ENTRY in the element struct </td></tr>
<tr><td></td><td valign=top><em>msg</em> </td><td>Descriptive message </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="ga26" doxytag="apr_ring.h::APR_RING_CHECK_ELEM_CONSISTENCY" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define APR_RING_CHECK_ELEM_CONSISTENCY </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">ep, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>elem, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>link </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Loops around a ring, starting with the given element, and checks all the pointers for consistency. Pops an assertion if any inconsistency is found. Same idea as <a class="el" href="group__apr__ring.html#ga25">APR_RING_CHECK_ELEM()</a> except that it's silent if all is well. (This is a no-op unless APR_RING_DEBUG is defined.) <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign=top><em>ep</em> </td><td>The element </td></tr>
<tr><td></td><td valign=top><em>elem</em> </td><td>The name of the element struct </td></tr>
<tr><td></td><td valign=top><em>link</em> </td><td>The name of the APR_RING_ENTRY in the element struct </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="ga22" doxytag="apr_ring.h::APR_RING_CHECK_ONE" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define APR_RING_CHECK_ONE </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">msg, <tr>
<td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>ptr </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -