D serialization temporary fixup?
TheFlyingFiddle via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Oct 22 16:23:11 PDT 2015
On Thursday, 22 October 2015 at 16:15:23 UTC, Shriramana Sharma
wrote:
> I wanted a D equivalent to:
> http://doc.qt.io/qt-5/qdatastream.html
> https://docs.python.org/3/library/pickle.html
>
> and saw that one is under construction:
> http://wiki.dlang.org/Review/std.serialization
>
> But till it's finalized, I'd just like to have a quick but
> reliable way to store real and int data types into a binary
> data file and read therefrom. Is there such a solution? The
> size of the data is fixed, but especially since I have real
> values, I'd like to not write to limited fixed decimal text
> format.
If your only interested in POD data something like this should do
the trick.
module pod_encoding;
import std.traits;
import std.stdio;
void encode(T)(string s, T[] t)
if(!hasIndirections!T && (is(T == struct) || isNumeric!T))
{
File(s, "wb").rawWrite(t);
}
T[] decode(T)(string s)
if(!hasIndirections!T && (is(T == struct) || isNumeric!T))
{
File f = File(s, "rb");
assert(f.size % T.sizeof == 0, "File does not contain array of
" ~ T.stringof ~ ".");
auto size = f.size / U.sizeof;
auto data = new T[size];
data = f.rawRead(data);
return data;
}
More information about the Digitalmars-d-learn
mailing list