Embed files into binary.
Pie? via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Jun 5 22:07:29 PDT 2016
On Monday, 6 June 2016 at 03:23:02 UTC, rikki cattermole wrote:
> On 06/06/2016 3:11 PM, Pie? wrote:
>> On Monday, 6 June 2016 at 02:34:07 UTC, Adam D. Ruppe wrote:
>>> On Monday, 6 June 2016 at 02:05:09 UTC, Pie? wrote:
>>>> I believe the essentially converted the file into a ubyte or
>>>> something and then wrote that out to a temp file and read in
>>>> the temp
>>>> file... this seems a bit of a kludge to me.
>>>
>>> They might do that for certain special cases, but
>>> import("file.whatever") just drops the file content in memory
>>> and you
>>> can then access it as an array.
>>>
>>>> Because D allows such an embedding feature, maybe the file
>>>> system
>>>> should allow working with this concept?
>>>
>>> Why do you need it through the file system? If you're writing
>>> the
>>> code, just use the array in memory. If it is external, see if
>>> the
>>> library offers something like that.
>>>
>>> DLL and exe are a special case, most things don't need to be
>>> physical
>>> files.
>>
>> Because, as I said, if I'm working with pre-exiting modules
>> that work
>> with file, I have to provide a file or modify the source.
>>
>> e.g., how could I do this easily with your read in your png
>> module? It
>> takes a file..
>>
>> /// Easily reads a png file into a MemoryImage
>> MemoryImage readPng(string filename) {
>> import std.file;
>> return imageFromPng(readPng(cast(ubyte[]) read(filename)));
>>
>> recognize the code?
>>
>> Of course, like I said, it can be modified in this case, but
>> that means
>> nothing in general.
>
>
> ubyte[] theArray = import("...");
> MemoryImage img = imageFromPng(readPng(theArray));
>
> And that's just from the snippet you provided.
> Yay overloads!
Yes, I figured it could be done because of the MemoryImage, but
that wasn't the point. You are delving in to code that you might
not normally have access or might not exist.
Adam wrote the MemoryImage that essentially does this but that is
not the general case.
Image if all you access to was readPng(string filename), then
what would you say? That was my point of posting the code, I
didn't mean for you to go look and see if it was possible to
achieve what I was saying in arsd(Formally known as Adam Druppe)
git repository ;)
If that was the case I would have titled this something similar
not but maybe not exactly equivalent(Just being pedantic since we
seem to be having a communications gap in how accurate and
precise our expressions are to be interpreted): "Possible to get
arsd(Formally known as Adam Druppe) readpng lib to read from
import(filename)?".
Since I was desiring to arrive at a more general solution to
potential future programming goals, I phrased my question in more
general terms. I assumed that this would be understood. (i.e.,
vague questions generally gets/desires vague results, intelligent
questions generally get/desires intelligent results, etc.)
In fact, I posted the most generic(and possibly vague) question I
could:
"Embed files into binary." I stated, but not exclaimed or
questioned(as these are in theory, mutually exclusive), in the
subject line!
But this is no question! It is a riddle my friend! By stating it
in such a way as to only imply the logical consequent "How to use
embedded files in the binary"[Of course, with an infinite number
of assumptions mixed in for spice]!
Why is this a necessary forgone conclusion, as Einstein would
some times say(not to me in particular, mind you)? Because there
is no point to embed files in a binary if one can not use them!!!
Naturally, this is why I further said, in a round about way, why
exporting them to temp files is not really an option. This was
further to exclude, if you are keeping track with your Venn
Diagram, something akin to the infinite monkey theorem... or a
breach in the space time continuum.... or just several responses
about along the lines "...save the data to a temp file and use
that".
Note my retort:
">>>> Because D allows such an embedding feature, maybe the file
>>>> system
>>>> should allow working with this concept?"
Asking about future events and possibly space-time paradoxes!
For example, what if I derive some source code from some
unexpected places and they have some complex way of using D's
std.file routines and offers no interface to use memory arrays as
an input? Suppose further that it is very contorted and only
Steven Hawkins has figured out how to unravel the complexities of
the law of import/export. We are not privy to his knowledge or
intellectual properties. Would it not be intelligent and
forthright, mimicking Steven Hawkins in a sort of motherly
daughterly bond kind of way, to see that we must write new code
to solve the problem... this timing mimicking God himself as he
bought forth the earth and heaven?
Does that make sense?
More information about the Digitalmars-d-learn
mailing list