summaryrefslogtreecommitdiffstats
path: root/source/slang/reflection.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/reflection.h')
-rw-r--r--source/slang/reflection.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/source/slang/reflection.h b/source/slang/reflection.h
new file mode 100644
index 000000000..4d2c53084
--- /dev/null
+++ b/source/slang/reflection.h
@@ -0,0 +1,39 @@
+#ifndef SLANG_REFLECTION_H
+#define SLANG_REFLECTION_H
+
+#include "../core/basic.h"
+#include "syntax.h"
+
+#include "../../slang.h"
+
+namespace Slang {
+
+// TODO(tfoley): Need to move these somewhere universal
+
+typedef intptr_t Int;
+typedef int64_t Int64;
+
+typedef uintptr_t UInt;
+typedef uint64_t UInt64;
+
+namespace Compiler {
+
+class ProgramLayout;
+class TypeLayout;
+
+String emitReflectionJSON(
+ ProgramLayout* programLayout);
+
+//
+
+SlangTypeKind getReflectionTypeKind(ExpressionType* type);
+
+SlangTypeKind getReflectionParameterCategory(TypeLayout* typeLayout);
+
+UInt getReflectionFieldCount(ExpressionType* type);
+UInt getReflectionFieldByIndex(ExpressionType* type, UInt index);
+UInt getReflectionFieldByIndex(TypeLayout* typeLayout, UInt index);
+
+}}
+
+#endif // SLANG_REFLECTION_H