They are all functions in a namespace.
There are some hand written ones for base types, and then a bunch of generated overloads for structures.
Broadly like this, for example:
Serialise.h
namespace serialise
{
void Write(Buffer * b, int v) { ... }
void Write(Buffer * b, float v) { ... }
}
ProjectStructs.h
struct Foo
{
int i;
float f;
};
ProjectSerialise.h
namespace serialise
{
void Write(Buffer * b, Foo * f)
{
Write(b, f->i);
Write(b, f->f);
}
}
hth,
Alex