I have a complex nested structure that looks something like this:

typedef struct struct_A
{
  int i;
  struct struct_B[5];
  int j;

using an IPC stream I do:

struct_A a;

ios.put(a);

and then in the server process I do:

struct_A b;

ios.get(b);

( ios is a L4::Ipc::Iostream )

and magically my complex nested structure reappears with all the data intact in the server process running in another address space.

As the IPC Streams are not well documented would someone be able to explain to me how my complex nested structure got automatically marshalled in the client and unmarshalled in the server process?