Support more complex function return types

This commit is contained in:
2019-02-26 23:23:43 +11:00
parent a325ea6130
commit f2cbbc3a8c
3 changed files with 130 additions and 74 deletions
+12 -22
View File
@@ -1,29 +1,16 @@
DQN_INSPECT enum struct OpenGLShader
DQN_INSPECT enum struct EnumWithMetadata
{
Invalid,
Rect DQN_INSPECT_META(VertexShaderFilePath = "Rect.vert", FragmentShaderFilePath = "Rect.frag"),
Text DQN_INSPECT_META(VertexShaderFilePath = "Text.vert", FragmentShaderFilePath = "Text.frag"),
Rect DQN_INSPECT_META(FilePath = "Rect.vert", FilePath2 = "Rect.frag"),
Count,
};
#if 0
#define EXAMPLE_MACRO \
X(EndOfStream, "End Of Stream") \
X(Hash, "#")
#define MAXIMUM_MACRO(a, b) (a > b) ? (a) : (b)
#endif
struct V3 { float test; };
struct V4 { float test; };
template <typename T, int Size>
struct Array
{
T data[Size];
};
struct Array { T data[Size]; };
DQN_INSPECT struct OpenGLState
DQN_INSPECT struct SampleStruct
{
// #if 0
// #endif
@@ -46,8 +33,11 @@ DQN_INSPECT struct OpenGLState
int *********const j, k, ******l, *m;
};
DQN_INSPECT_GENERATE_PROTOTYPE(texture = nullptr, size = {}, depth_test = false, type = 1, user_msg = "Hello world")
void RenderRect(V3 pos, V2 size, char const *texture, bool depth_test, int type, char *user_msg)
{
(void)pos; void(size); (void)texture; (void)depth_test;
}
DQN_INSPECT_GENERATE_PROTOTYPE(b = {}, c = nullptr, e = false, f = 1, g = "Hello world")
void Function1(int a, float b, char const *c, bool e, int f, char *g) { }
DQN_INSPECT_GENERATE_PROTOTYPE()
void *Function2() { }
DQN_INSPECT_GENERATE_PROTOTYPE()
Array<int const *, 3> const *const Function3() { }
+24 -26
View File
@@ -7,32 +7,28 @@
#ifndef DQN_INSPECT_DQNINSPECT_TESTDATA_H
#define DQN_INSPECT_DQNINSPECT_TESTDATA_H
char const *DqnInspect_OpenGLShader_Strings[] = {"Invalid", "Rect", "Text", "Count", };
char const *DqnInspect_EnumWithMetadata_Strings[] = {"Rect", "Count", };
char const *DqnInspect_EnumString(OpenGLShader val)
char const *DqnInspect_EnumString(EnumWithMetadata val)
{
if (val == OpenGLShader::Invalid) return DqnInspect_OpenGLShader_Strings[0]; // "Invalid"
if (val == OpenGLShader::Rect) return DqnInspect_OpenGLShader_Strings[1]; // "Rect"
if (val == OpenGLShader::Text) return DqnInspect_OpenGLShader_Strings[2]; // "Text"
if (val == OpenGLShader::Count) return DqnInspect_OpenGLShader_Strings[3]; // "Count"
if (val == EnumWithMetadata::Rect) return DqnInspect_EnumWithMetadata_Strings[0]; // "Rect"
if (val == EnumWithMetadata::Count) return DqnInspect_EnumWithMetadata_Strings[1]; // "Count"
return nullptr;
}
char const *DqnInspect_VertexShaderFilePathMetadata(OpenGLShader val)
char const *DqnInspect_FilePathMetadata(EnumWithMetadata val)
{
if (val == OpenGLShader::Rect) return "Rect.vert";
if (val == OpenGLShader::Text) return "Text.vert";
if (val == EnumWithMetadata::Rect) return "Rect.vert";
return nullptr;
}
char const *DqnInspect_FragmentShaderFilePathMetadata(OpenGLShader val)
char const *DqnInspect_FilePath2Metadata(EnumWithMetadata val)
{
if (val == OpenGLShader::Rect) return "Rect.frag";
if (val == OpenGLShader::Text) return "Text.frag";
if (val == EnumWithMetadata::Rect) return "Rect.frag";
return nullptr;
}
DqnInspect_StructMemberMetadata const DqnInspect_OpenGLState_ebo_StructMemberMetadata[] =
DqnInspect_StructMemberMetadata const DqnInspect_SampleStruct_ebo_StructMemberMetadata[] =
{
{
DqnInspect_StructMemberMetadataType::String,
@@ -40,7 +36,7 @@ DqnInspect_StructMemberMetadata const DqnInspect_OpenGLState_ebo_StructMemberMet
},
};
DqnInspect_StructMemberMetadata const DqnInspect_OpenGLState_vao_StructMemberMetadata[] =
DqnInspect_StructMemberMetadata const DqnInspect_SampleStruct_vao_StructMemberMetadata[] =
{
{
DqnInspect_StructMemberMetadataType::String,
@@ -52,7 +48,7 @@ DqnInspect_StructMemberMetadata const DqnInspect_OpenGLState_vao_StructMemberMet
},
};
DqnInspect_StructMemberMetadata const DqnInspect_OpenGLState_draw_color_StructMemberMetadata[] =
DqnInspect_StructMemberMetadata const DqnInspect_SampleStruct_draw_color_StructMemberMetadata[] =
{
{
DqnInspect_StructMemberMetadataType::String,
@@ -60,7 +56,7 @@ DqnInspect_StructMemberMetadata const DqnInspect_OpenGLState_draw_color_StructMe
},
};
DqnInspect_StructMember const DqnInspect_OpenGLState_StructMembers[] =
DqnInspect_StructMember const DqnInspect_SampleStruct_StructMembers[] =
{
{
STR_AND_LEN("Array"), STR_AND_LEN("lights"),
@@ -95,7 +91,7 @@ DqnInspect_StructMember const DqnInspect_OpenGLState_StructMembers[] =
{
STR_AND_LEN("int"), STR_AND_LEN("ebo"),
nullptr, 0, // template_expr and template_expr_len
DqnInspect_OpenGLState_ebo_StructMemberMetadata, 1,
DqnInspect_SampleStruct_ebo_StructMemberMetadata, 1,
0 // array_dimensions
},
{
@@ -107,13 +103,13 @@ DqnInspect_StructMember const DqnInspect_OpenGLState_StructMembers[] =
{
STR_AND_LEN("int"), STR_AND_LEN("vao"),
nullptr, 0, // template_expr and template_expr_len
DqnInspect_OpenGLState_vao_StructMemberMetadata, 2,
DqnInspect_SampleStruct_vao_StructMemberMetadata, 2,
0 // array_dimensions
},
{
STR_AND_LEN("V4"), STR_AND_LEN("draw_color"),
nullptr, 0, // template_expr and template_expr_len
DqnInspect_OpenGLState_draw_color_StructMemberMetadata, 1,
DqnInspect_SampleStruct_draw_color_StructMemberMetadata, 1,
0 // array_dimensions
},
{
@@ -214,21 +210,23 @@ DqnInspect_StructMember const DqnInspect_OpenGLState_StructMembers[] =
},
};
DqnInspect_Struct const DqnInspect_OpenGLState_Struct =
DqnInspect_Struct const DqnInspect_SampleStruct_Struct =
{
STR_AND_LEN("OpenGLState"),
DqnInspect_OpenGLState_StructMembers, // members
ARRAY_COUNT(DqnInspect_OpenGLState_StructMembers) // members_len
STR_AND_LEN("SampleStruct"),
DqnInspect_SampleStruct_StructMembers, // members
ARRAY_COUNT(DqnInspect_SampleStruct_StructMembers) // members_len
};
DqnInspect_Struct const *DqnInspect_GetStruct(OpenGLState const *val)
DqnInspect_Struct const *DqnInspect_GetStruct(SampleStruct const *val)
{
(void)val;
DqnInspect_Struct const *result = &DqnInspect_OpenGLState_Struct;
DqnInspect_Struct const *result = &DqnInspect_SampleStruct_Struct;
return result;
}
void RenderRect(V3 pos, V2 size = {}, char const *texture = nullptr, bool depth_test = false, int type = 1, char *user_msg = "Hello world");
void Function1(int a, float b = {}, char const *c = nullptr, bool e = false, int f = 1, char *g = "Hello world");
void *Function2();
Array<int const *, 3> const *const Function3();
#endif // DQN_INSPECT_DQNINSPECT_TESTDATA_H