array-decl.h revision c740209eb3db031022c6fd436fa2ef1aa0ec46b8
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync#ifndef __ARRAY_DECL_H
2291faee92ebb5cc9722cd3f22e499900a5a411fvboxsync#define __ARRAY_DECL_H
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync#define ARRAY_DEFINE(name, array_type) union { struct array arr; array_type const *const *v; array_type **v_modifiable; } name
2291faee92ebb5cc9722cd3f22e499900a5a411fvboxsync#define ARRAY_INIT { { 0, 0 } }
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync#define ARRAY_DEFINE_TYPE(name, array_type) \
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync union array ## __ ## name { struct array arr; array_type const *const *v; array_type **v_modifiable; }
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync#define ARRAY_TYPE(name) \
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync union array ## __ ## name
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync
9496b6f77d66eb89f088668752b8838d578d6e10vboxsyncstruct array {
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync buffer_t *buffer;
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync size_t element_size;
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync};
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync
4b9d6701570cb98fd36e209314239d104ec584d3vboxsyncARRAY_DEFINE_TYPE(const_string, const char *);
4b9d6701570cb98fd36e209314239d104ec584d3vboxsyncARRAY_DEFINE_TYPE(uint32_t, uint32_t);
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync#endif
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync