mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-23 04:42:32 +00:00
3498d8b2ae
This treats dictionary items as arrays ordered by key creation (ie, the order of the key/value pairs in the dictionary is preserved). The label is written to the specified field when parsing the struct. Both actual arrays and single element "arrays" are supported.
37 lines
823 B
R
37 lines
823 B
R
#include <PropertyList.h>
|
|
|
|
#include "vkfieldlabeledarray.h"
|
|
#include "vkfieldtype.h"
|
|
#include "vkgen.h"
|
|
#include "vkstruct.h"
|
|
#include "vktype.h"
|
|
|
|
@implementation LabeledArrayField
|
|
|
|
-init:(PLItem *) item struct:(Struct *)strct field:(string)fname
|
|
{
|
|
self = [super init:item struct:strct field:fname];
|
|
if (!self) {
|
|
return self;
|
|
}
|
|
|
|
PLItem *desc = [item getObjectForKey:"type"];
|
|
string label_field = [[desc getObjectAtIndex:2] string];
|
|
Type *t = [[Type lookup:[type type]] resolveType];
|
|
if ([t isKindOfClass:[Struct class]]) {
|
|
Struct *s = (Struct *) t;
|
|
[s setLabelField:label_field];
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
-writeField
|
|
{
|
|
fprintf (output_file, "\t{\"%s\", 0, %s, parse_%s, &parse_%s_%s_data},\n",
|
|
field_name, "QFDictionary", "labeledarray", struct_name,
|
|
field_name);
|
|
return self;
|
|
}
|
|
|
|
@end
|