<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt">Also very useful for me would be the output of an mpz_class object into an array (vector&lt;char&gt;).&nbsp; Perhaps there is a way to do this via the ostream operators?&nbsp; My basic problem is:&nbsp; we are already using byte arrays which represent trans-64 bit numbers.&nbsp; I could do a HUGE amount of refactoring of really bad code which manipulates such arrays if I could construct a mpz_class from such an array, do the arithmetic within GMP, output back into an array.&nbsp;&nbsp; The C++ interface seems to character-based I/O only.<br>Thanks for any suggestions.<br>Bob<br><div>&nbsp;</div><font style="color: rgb(127, 0, 63);" size="3"><span style="font-style: italic;"></span></font>----- Original Message ----<br><div style="font-family: times new roman,new york,times,serif; font-size:
 12pt;"><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;">From: James Youngman &lt;jay@gnu.org&gt;<br>To: David Fang &lt;fang@csl.cornell.edu&gt;<br>Cc: gmp-discuss@swox.com; Robert Evans &lt;bobsphysics@yahoo.com&gt;<br>Sent: Wednesday, August 13, 2008 9:40:19 AM<br>Subject: Re: Construction From vector&lt;char&gt; ?<br><br>
On Wed, Aug 13, 2008 at 10:55 AM, David Fang &lt;<a ymailto="mailto:fang@csl.cornell.edu" href="mailto:fang@csl.cornell.edu">fang@csl.cornell.edu</a>&gt; wrote:<br><br>&gt; Hi all,<br>&gt;<br>&gt; Would anyone object to adding an iterator constructor (similar to<br>&gt; std::string taking a pair of iterators)?&nbsp; I'll just describe the idea below,<br>&gt; I don't have time to provide a full patch at the moment.<br>&gt;<br>&gt; First, provide a generic interface function:<br>&gt;<br>&gt; /**<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; \param p pointer to mpz structure to set<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; \param b beginning of character sequence<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; \param e one-past-last character iterator (end)<br>&gt;&nbsp; */<br>&gt; template &lt;typename Iter&gt;<br>&gt; // inline<br>&gt; int<br>&gt; mpz_init_set_iter(mpz_ptr p, Iter b, Iter e) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; return __mpz_init_set_iter_dispatch(p,b,e,<br>&gt;&nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typename std::iterator_traits&lt;Iter&gt;::iterator_category());<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; // dispatcher calls an efficient function for random-access<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; // iterators, such as char*, vector&lt;char&gt;::iterator,<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; // string::iterator, ...<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; // and some less efficient fallback routine for other iterators<br><br>Can't you just do that with a partial specialisation?<br><br>James.<br></div></div></div><br>

      </body></html>