D-styled data file

Saaa empty at needmail.com
Wed Apr 29 10:57:00 PDT 2009


Simply put, I'd like a D styled dataformat alike JSON.
Somehow saying that I would like it D styled makes it difficult to 
understand :)

"Georg Wrede" <georg.wrede at iki.fi> wrote in message 
news:gta2r9$1vls$1 at digitalmars.com...
> Saaa wrote:
>>>> I'm still dangling between a full parsing at load and parse on demand.
>>>> A parse on demand (get) would do the following steps:
>>>> Get the type of the variable in which the data must be stored (in 
>>>> string format)
>>>> Search for this type in every line of the char[][], when found check 
>>>> whether the name is the same
>>>> and then convert the chars to that type and place the data in the 
>>>> variable.
>>> This sounds complicated. Can you decide the input file format? Or is it 
>>> from some other program that you can't change?
>>
>> The input file format would be like D
>> Like file.dat from the original post.
>> I just often have the need to save large arrays and other variables and I 
>> thought
>> why not just save them like the way I would use them in my modules.
>
> Err, ok, lemme assume this is kind-of like a scrapbook thing. You collect 
> nice arrays, filled data structures and the like. And the you'd want to 
> read them into your programs.
Yes, except that the program creating them is the same as the one loading 
them.
It's a simple safe (with very large multi arrays)

>
> Now, to know how to use the stuff, the program would need to not only be 
> able to handle the data structures, but also know their names. Sure, you 
> could have a parser that returns first the name of the thing, and then the 
> thing itself. But then, to use it, you probably couldn't have an Universal 
> program. Rather, you'd have to write the program different for each time 
> you decide to use a particular item from the scrap book.
>
The JSON parser does the same thing. You give it the name of the array you 
want to read.

This is what the corresponding data files look like
- JSON version
"array" :
[
[
[
1,
2,
],
[
3,
4,
]
]
[
... etc :)
--

-D styled version
int[2][2][2] array = [[
[1,2],
[3,4]],
[
[5,6],
[7,8]];
--

> Which actually leads us to another simple solution. Why not write your 
> scrapbook simply in total D format, and then include it in the program?
I really can't ask my customers to rebuild their app everytime they save 
something :)

>
>>> Suppose you already had this get function. How would you use it? An 
>>> example would help.
>>
>> I use the get functions a few posts back, in the main:
>>
>> ---
>> void main()
>> {
>>  char[] filename = `data.dat`;
>>  char[][] file;
>>
>>  try{
>>   file = splitlines( cast(char[])read(filename) );
>>  }
>>  catch{
>>   throw new Exception("Couldn't load : " ~ filename);
>>  }
>>
>>  DData file_dd = new DData(file);
>>  int i;
>>  file_dd.get(`i`, i);
>> }
>> ---
>>
>> The data.dat should have a line like this to work:
>> --- data.dat
>> int i = 10;
>> ---
>
> So here main has to know that there will be a variable i in the data file, 
> then get it, then presumably assign the value to the here defined "int 
> i;". This way you have to do everything (and more) you would if you were 
> to rename data.dat to data.d, include it, and then just use the variables.
The get function doesn't need to know that there will be an i in the data,
it will just search for it.

>
>> I hope it all makes sense :)
>
> So, either I still don't get it, or you're doing Double Thinking. A 
> picture might clarify:
>
> http://ocw.mit.edu/NR/rdonlyres/A166EB14-E7FD-473F-98FB-741A9817540C/0/chp_triangle.jpg
>
> It's very often that programmers spend time attempting to do something 
> that is possible, but when it comes down to it, it either isn't, or it 
> takes an inordinate amount of work /compared/ to the value of the goal.
>
I know it is possible because
1. it isn't much different than the JSON parser from tango
2. the compiler does the same

If the JSON writer won't write every item (which will be thousands of items)
on a new line and reading in multi arrays, then I think I need to witch to 
Tango :D 




More information about the Digitalmars-d-learn mailing list