<br><br><div class="gmail_quote">On Wed, May 16, 2012 at 8:55 AM, Liam <span dir="ltr">&lt;<a href="mailto:xapian@networkimprov.net" target="_blank">xapian@networkimprov.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><div class="gmail_quote"><div><div class="h5">On Sat, May 12, 2012 at 1:00 AM, Marius Tibeica <span dir="ltr">&lt;<a href="mailto:mtibeica@gmail.com" target="_blank">mtibeica@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

I have designed a way to provide both sync and async variants from the same code for a nodejs binding.<div><br></div><div>The code can be found at:</div><div><a href="https://github.com/mtibeica/node-xapian/blob/master/xapian-op.h" target="_blank">https://github.com/mtibeica/node-xapian/blob/master/xapian-op.h</a> </div>


<div><a href="https://github.com/mtibeica/node-xapian/blob/master/xapian-enquire.h" target="_blank">https://github.com/mtibeica/node-xapian/blob/master/xapian-enquire.h</a> </div><div><a href="https://github.com/mtibeica/node-xapian/blob/master/xapian-enquire.cc" target="_blank">https://github.com/mtibeica/node-xapian/blob/master/xapian-enquire.cc</a> <br>


<div><br></div><div>Every method which has both sync and async has to have the following C++ methods (GetMset as an example):</div><div><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">struct</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMset_data</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">{ ... }</span></div>


<div><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px"><span style="color:rgb(0,0,0);font-family:arial;line-height:normal;white-space:normal">-  the data which will be passed</span>
</span></div><div><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">static</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Handle</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&lt;</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Value</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&gt;</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMset</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">(</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">const</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Arguments</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&amp;</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">args</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">);</span>
</div><div>-  parse the sync method parameters and create the GetMset_data object.</div><div><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">static</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Handle</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&lt;</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Value</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&gt;</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMsetSync</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">(</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">const</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Arguments</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&amp;</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">args</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">);</span>
</div><div>- parse the async method parameters and create the GetMset_data object.</div><div><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">static</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Xapian</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">::</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Error</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">*</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMset_process</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">(</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMset_data</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">*</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">data</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">,</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Enquire</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">*</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">pThis</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">);</span>
</div><div>- the actual data processing (which will happen either on the thread pool or on the main thread depending on the called method).</div><div><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">static</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Handle</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&lt;</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Value</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">&gt;</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMset_convert</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">(</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMset_data</span><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace"> </span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;font-weight:bold;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">*</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">data</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">);</span>
</div><div>- converts the GetMset_data into a JS object which will be either returned or sent as a parameter in a callback</div><div><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">DECLARE_POOLS</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">(</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">GetMset</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">,</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">Enquire</span><span style="padding-right:0px;padding-left:0px;border-bottom-width:0px;padding-top:0px;font:inherit;border-style:initial;border-color:initial;margin-bottom:0px;padding-bottom:0px;border-top-width:0px;line-height:16px;margin-right:0px;color:rgb(51,51,51);white-space:pre-wrap;margin-left:0px;border-right-width:0px;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px;border-left-width:0px">)</span>
</div><div>- macro which creates other helping methods</div><div><br></div><div><br></div><div>Another advantage is that the libeio code is isolated in xapian-op.h, so porting to node 0.6+ will be easier.</div><div>Any suggestions?</div>

</div></blockquote></div></div><div><br>Calling the files xapian-* makes me wonder if they&#39;re from the xapian codebase, so I think we can omit that filename prefix.<br></div></div></blockquote><div>Sure. And maybe move them to a src folder </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><br>In the DECLARE_POOLS macro and Enquire class, you&#39;ll merge the sync &amp; async variants as we discussed?<br>
</div></div></blockquote><div>Yes. And later we will create a js wrapper to avoid confusion. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote">
<div>
<br>Those methods both have a try block, but I think only the AsyncOp ctor can throw? If so, the try block should contain just that call.<br></div></div></blockquote><div>Ok</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div><br>In my code GetMset_data is derived from an AsyncOp&lt;Enquire&gt;. Your code packages those two via the new OpInfo class. Why the change?<br></div></div></blockquote><div>Because the sync version only requires the GetMset_data (and id does not need the AsyncOp initialization). This way i can have the same GetMset_data structure for both methods.</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div>
<br>Did you consider how those macro functions could be templatized?</div></div></blockquote><div>Will do.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div><span class="HOEnZb"><font color="#888888"><br><br>Liam<br></font></span></div></div>
<br>_______________________________________________<br>
Xapian-devel mailing list<br>
<a href="mailto:Xapian-devel@lists.xapian.org">Xapian-devel@lists.xapian.org</a><br>
<a href="http://lists.xapian.org/mailman/listinfo/xapian-devel" target="_blank">http://lists.xapian.org/mailman/listinfo/xapian-devel</a><br>
<br></blockquote></div><br>