<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>pack_fread to array?</title>
		<link>http://www.allegro.cc/forums/view/555395</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 25 Dec 2005 19:19:45 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">//objects.h</span></td></tr><tr><td class="number">2</td><td><span class="c">// define object</span></td></tr><tr><td class="number">3</td><td><span class="k1">class</span> object<span class="k2">{</span></td></tr><tr><td class="number">4</td><td>      public:</td></tr><tr><td class="number">5</td><td>      <span class="k1">bool</span> crossable<span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k2">[</span><span class="n">8</span><span class="k2">]</span><span class="k2">;</span> <span class="c">//dosn't matter - just some strange data.</span></td></tr><tr><td class="number">6</td><td>      <span class="k1">bool</span> ontop<span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>      <span class="k1">short</span> image<span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k2">;</span>      </td></tr><tr><td class="number">8</td><td>      <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="c">// define objects as pointer to object</span></td></tr><tr><td class="number">10</td><td>object <span class="k3">*</span> objects<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="c">// load all objects from file to array, which will be made from 'objects'</span></td></tr><tr><td class="number">13</td><td><span class="k1">void</span> load_objects<span class="k2">(</span><span class="k1">char</span> filename<span class="k2">[</span><span class="n">32</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>    </td></tr><tr><td class="number">14</td><td>     params<span class="k3">=</span><a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a><span class="k2">(</span>filename, <span class="s">"rb"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>     count<span class="k3">=</span><span class="k2">(</span>file_size<span class="k2">(</span>filename<span class="k2">)</span><span class="k3">/</span><span class="k1">sizeof</span><span class="k2">(</span>object<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//how many objects are in file?</span></td></tr><tr><td class="number">16</td><td>     objects <span class="k3">=</span> <span class="k1">new</span> object<span class="k2">[</span>count<span class="k2">]</span><span class="k2">;</span> <span class="c">//create array from objects</span></td></tr><tr><td class="number">17</td><td>     <span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> </td></tr><tr><td class="number">18</td><td>     <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>pack_eof<span class="k2">(</span>params<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>           <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span>objects<span class="k3">&lt;</span>i&gt;,<span class="k1">sizeof</span><span class="k2">(</span>object<span class="k2">)</span>,params<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>           i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>           <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>     <span class="k2">}</span></td></tr></tbody></table></div></div><p>
Dev-Cpp 4.9.9.2; Allegro 4.2.0</p><p>Error:<br />cannot convert `object&#39; to `void*&#39; for argument `1&#39; to `long int pack_fread(void*, long int, PACKFILE*)&#39; </p><p>Where my thinking is wrong? Why doesn&#39;t it work?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Smok)</author>
		<pubDate>Sat, 24 Dec 2005 20:13:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You would have to cast objects[x] to (void *). But, due to endianness and such, you shouldn&#39;t store whole structures like that. You should manually write/read each variable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 24 Dec 2005 20:15:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You mean doing sth like this?
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span> objects<span class="k3">&lt;</span>i&gt;,<span class="k1">sizeof</span><span class="k2">(</span>object<span class="k2">)</span>,params<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
It dosn&#39;t work: </p><p>Cannot convert `*((+(((unsigned int)i) * 540u)) + objects)&#39; from type `object&#39; to type `void*&#39; </p><p>I don&#39;t care about endianness and such, cause this will be object-editor tool for my use only.</p><p>Thanks anyway :]</p><p>[EDIT]<br />Doing it your way would be quicker. Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Smok)</author>
		<pubDate>Sat, 24 Dec 2005 20:21:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I don&#39;t care about endianness and such
</p></div></div><p>You should care about &quot;and such&quot;, because it includes &quot;compiler version and even compile itself&quot;. I.e. if you do that dont&#39; expect your save games to work in the next version of your program.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sat, 24 Dec 2005 22:00:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t endorse what you are doing, writing the whole class to file, but, it would be <span class="source-code"><a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>objects<span class="k3">&lt;</span>i&gt;, <span class="k1">sizeof</span><span class="k2">(</span>object<span class="k2">)</span>, blah<span class="k2">)</span><span class="k2">;</span></span> .
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 24 Dec 2005 22:09:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But it&#39;s important to know that you <b>can</b> safely write entire arrays to a file at one time. That means:<br /><span class="source-code"><a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span>objects, <span class="k1">sizeof</span><span class="k2">(</span>object<span class="k2">)</span> <span class="k3">*</span> number_of_objects, blah<span class="k2">)</span><span class="k2">;</span></span>(To quote BAF&#39;s example.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sun, 25 Dec 2005 04:03:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But it&#39;s important to know that you can safely write entire arrays to a file at one time.
</p></div></div><p>
Not if the structs/classes contain pointers to anything (which can include member functions). Running it once can have a different pointer than when you run it next time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Sun, 25 Dec 2005 09:53:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, I didn&#39;t say structures. I said arrays. We&#39;ve already established that it isn&#39;t safe to write structures directly to files, with or without pointers.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sun, 25 Dec 2005 19:19:45 +0000</pubDate>
	</item>
</rss>
