The main difference between MD1 and MD2 is the size of the context headers. For MD1, it's a fixed size ctx headers. However, MD2 supposes to be "Variable-Length Context Headers." Inside of it, it has a "Variable-Length Metadata."
Therefore, I am using FAM in C. Flexible Array Member(FAM) is a feature of declaring an array without a dimension.
For instance,
#include <string.h> #include <stdio.h> #include <stdlib.h> struct TempMD{ /* Just an example Not for MD2 */ int id; int cla; int struct_size; char ctx_header[]; }; // Memory allocation the struct struct TempMD *createTempMD(struct TempMD *t, int id, int cla, char ctx[]) { t = malloc(sizeof(*t) + sizeof(char) * strlen(ctx)); t->id = id; t->cla = cla; strcpy(t->ctx_header, ctx); t->struct_size = sizeof(*t) + sizeof(char) * strlen(t->ctx_header); return t; } int main() { struct TempMD *t = createTempMD(t, 2, 1, "0011"); printf("Size of struct: %d\n", t->struct_size); return 0; }
No comments:
Post a Comment