quakeforge/libs/video/renderer/vulkan/vkgen/vkfielddef.h
Bill Currie c1b85a3db7 [vkgen] Support custom parsing in multi-type fields
This allows the likes of:

    qfv_pushconstantrangeinfo_s = {
	.name = qfv_pushconstantrangeinfo_t;
	.type = (QFDictionary);
	.dictionary = {
	    .parse = {
		type = (labeledarray, qfv_pushconstantinfo_t, name);
		size = num_pushconstants;
		values = pushconstants;
	    };
	    stageFlags = $name.auto;
	};
	stageFlags = auto;
    };

Leading to:

    pushConstants = {
	vertex   = { Model = mat4; blend = float; };
	fragment = { colors = uint; base_color = vec4; fog = vec4; };
    };

Where the label of the labeled array (which pushConstants is) is
actually an enum flag and the dictionary value is another labeled array.
2023-06-16 18:53:37 +09:00

30 lines
597 B
Objective-C

#ifndef __renderer_vulkan_vkgen_vkfielddef_h
#define __renderer_vulkan_vkgen_vkfielddef_h
#include <types.h>
#include <Object.h>
@class PLItem;
@class Struct;
@class Type;
@interface FieldDef: Object
{
int line;
qfot_var_t *field;
string struct_name;
string field_name;
string value_field;
string size_field;
}
+fielddef:(PLItem *)item struct:(Struct *)strct field:(string)fname;
-init:(PLItem *)item struct:(Struct *)strct field:(string)fname;
-writeParseData;
-writeParse;
-writeField;
-writeSymbol;
-(string) name;
-(int) searchType;
@end
#endif//__renderer_vulkan_vkgen_vkfielddef_h