On 02/26/2012 03:22 PM, Chopin wrote:

> I don't want to hear the reinvent the wheel :(, I think you
> learn a lot by doing thing like this.

Agreed.

> So, when I POST a blog-entry, I will read it, and write it to a file. I
> don't want write strings in a file, like:
>
> 1--||--Title--||--The entry--||--Date

I encourage you to stay with human-readable formats unless there is a reason not to. You can ditch XML, fine, but consider other formats like json. :) But I understand that you want to do this to learn. Fine...

> I have little knowledge about system programming, and writing raw files.
> But my dream was like:
>
> SOME_INT_WITH_LENGTH_OF_STRUCT_TO_THE_RIGHT HERE_IS_THE_RAW_STRUCT
> SOME_INT_WITH_LENGTH_OF_STRUCT_TO_THE_RIGHT HERE_IS_THE_RAW_STRUCT
> etc.etc.etc.

You can do that only with structs that contain the entire data. As soon as there is a reference member, you must dereference that member to grab that member's data. For example, when you have strings, slices, associative arrays, class variables, pointers, and other user types with reference semantics, the data is not within the struct itself.

No matter how long the string is, the following struct is always the same size:

struct S
{
    char[] s;
}

On the other hand, the following is fine for what you want to do:

struct S
{
    char[1000] s;
}

But is 1000 always enough? Is it wasteful (every instance of S will be very large.)?

> Then read those structs in array :)

Again, that part is easy as long as the struct doesn't have reference members.

> I thought this was kinda easy in C, but I could be very wrong!

C has exactly the same issues. As soon as you have a pointer member you must /follow/ that member to reach the actual data.

> So I
> thought it must be super easy in D! I don't have the knowledge...

D is awesome compared to C as it enables serializing/deserializing data with its generic programming and compile-time reflection features like this:

  http://dlang.org/traits.html#allMembers

I don't know their details but I would imagine that serialization libraries must be written taking advantage of allMembers.

> ae.utils.json <-- this will be not as "cool" as writing it raw binary? :p

Must be subjective. I find json output cooler that binary. :p

Ali

Reply via email to