<br><br><div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">#define BIGINT 1<br>#define DOUBLE 2
<br>#define STRING 4<br>#define ARRAY&nbsp; 8<br>#define INITIALISED 16<br><br>struct sdescript<br>{<br>&nbsp; char *&nbsp;&nbsp; sptr;&nbsp;&nbsp;&nbsp; // pointer to string<br>&nbsp; int salloc;&nbsp;&nbsp;&nbsp; // allocated space for string<br>&nbsp; int slength;&nbsp;&nbsp;&nbsp; // actual length of string - always &lt;= salloc
<br>};<br><br>union varval {<br>&nbsp; int *bi;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // BIGINT<br>&nbsp; double *df;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // DOUBLE<br>&nbsp; sdescript *sd;&nbsp;&nbsp;&nbsp; // STRING<br>};<br><br>struct variable {&nbsp;&nbsp;&nbsp; // <br>&nbsp; union varval&nbsp; value;&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp; char * varname;<br>
&nbsp;&nbsp;&nbsp; int varlength;<br>&nbsp;&nbsp;&nbsp; char bitflags;<br>};</blockquote><div><br>and&nbsp; <br><br>&nbsp;variable v;<br>&nbsp; *<a href="http://v.value.bi">v.value.bi</a> = 10;<br>&nbsp; v.varname = &quot;@%&quot;;<br>&nbsp; v.bitflags = BIGINT;<br>&nbsp; *MOC = v;
<br><br>where MOC is declared as void * gives <br><br>bb1fun.cc:183: error: &#39;void*&#39; is not a pointer-to-object type<br>183 is the *MOC line.<br><br>Your input is deeply appreciated.<br><br>Cheers Dominic<br></div>
<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">What you haven&#39;t told us is if your C++ program structures need to<br>*exactly* match the assembler structures 
</blockquote><div><br>No.&nbsp; <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>So, actual data in the structure could be represented by something
<br>like:<br><br>struct s<br>{<br>&nbsp;&nbsp;void*&nbsp;&nbsp; a,<br>&nbsp;&nbsp;int16_t b,<br>&nbsp;&nbsp;int16_t c<br>};<br><br>struct record<br>{<br>&nbsp;&nbsp;union u1<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;int64_t* a,
<br>&nbsp;&nbsp;&nbsp;&nbsp;double*&nbsp;&nbsp;b,<br>&nbsp;&nbsp;&nbsp;&nbsp;s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c<br>&nbsp;&nbsp;};<br><br>&nbsp;&nbsp;union u2<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;uint64_t&nbsp;&nbsp;a,<br>&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b<br>&nbsp;&nbsp;};<br><br>&nbsp;&nbsp;...<br>};<br><br><br>While this is compact and efficient, it&#39;s also a horror from a C++<br>
programmer&#39;s perspective.&nbsp;&nbsp;</blockquote><div><br>Yes <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">C++ provides mechanisms in the Standard
<br>Library to do lists, 
e.g. std::list and std::vector.&nbsp;&nbsp;These templated<br>containers should, with compiler optimisations turned on, be just as<br>time- and space-efficient as your assembly.<br><br>Consider, C++ lets you code from a higher level perspective, so rather
<br>than show us the exact structure, tell us what you want the code to<br>/do/, and what information needs to be represented.&nbsp;&nbsp;There&#39;s sure to<br>be a clean and efficient way of representing it.<br><br>Also note: pointers are /not/ 32 bits.&nbsp;&nbsp;They might be on i386, but
<br>they are not on amd64, and on other architectures, even 32-bit ones,<br>they may be greater than 32 bits (e.g. function pointers).</blockquote><div><br><br>Good point. <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&nbsp;&nbsp;A pointer<br>is a pointer, and has an architecture-specific size which might even<br>
change depending on what you are pointing to; you can&#39;t assume it&#39;s 32<br>bits, ever.&nbsp;&nbsp;A C or C++ compiler will always handle this for you.<br><br><br>Regards,<br>Roger<br><br>_______________________________________________
<br>York mailing list
<br><a href="mailto:York@lists.lug.org.uk" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">York@lists.lug.org.uk</a><br><a href="https://mailman.lug.org.uk/mailman/listinfo/york" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
https://mailman.lug.org.uk/mailman/listinfo/york</a><br><br><br></blockquote></div><br>