#if !defined SLANG_ASSEMBLE_TYPEINFO_H\r
#define SLANG_ASSEMBLE_TYPEINFO_H\r
\r
-#include "slang_assemble_constructor.h"\r
-#include "slang_compile.h"\r
-\r
#if defined __cplusplus\r
extern "C" {\r
#endif\r
\r
+typedef enum slang_type_specifier_type_\r
+{\r
+ slang_spec_void,\r
+ slang_spec_bool,\r
+ slang_spec_bvec2,\r
+ slang_spec_bvec3,\r
+ slang_spec_bvec4,\r
+ slang_spec_int,\r
+ slang_spec_ivec2,\r
+ slang_spec_ivec3,\r
+ slang_spec_ivec4,\r
+ slang_spec_float,\r
+ slang_spec_vec2,\r
+ slang_spec_vec3,\r
+ slang_spec_vec4,\r
+ slang_spec_mat2,\r
+ slang_spec_mat3,\r
+ slang_spec_mat4,\r
+ slang_spec_sampler1D,\r
+ slang_spec_sampler2D,\r
+ slang_spec_sampler3D,\r
+ slang_spec_samplerCube,\r
+ slang_spec_sampler1DShadow,\r
+ slang_spec_sampler2DShadow,\r
+ slang_spec_struct,\r
+ slang_spec_array\r
+} slang_type_specifier_type;\r
+\r
+typedef struct slang_type_specifier_\r
+{\r
+ slang_type_specifier_type type;\r
+ struct slang_struct_ *_struct; /* type: spec_struct */\r
+ struct slang_type_specifier_ *_array; /* type: spec_array */\r
+} slang_type_specifier;\r
+\r
+GLvoid slang_type_specifier_ctr (slang_type_specifier *);\r
+GLvoid slang_type_specifier_dtr (slang_type_specifier *);\r
+GLboolean slang_type_specifier_copy (slang_type_specifier *, const slang_type_specifier *);\r
+GLboolean slang_type_specifier_equal (const slang_type_specifier *, const slang_type_specifier *);\r
+\r
typedef struct slang_assembly_typeinfo_\r
{\r
GLboolean can_be_referenced;\r
GLboolean is_swizzled;\r
slang_swizzle swz;\r
slang_type_specifier spec;\r
- slang_operation *array_size;\r
+ GLuint array_len;\r
} slang_assembly_typeinfo;\r
\r
GLboolean slang_assembly_typeinfo_construct (slang_assembly_typeinfo *);\r
* Returns GL_TRUE on success.\r
* Returns GL_FALSE otherwise.\r
*/\r
-GLboolean _slang_typeof_operation (slang_operation *, slang_assembly_name_space *,\r
+GLboolean _slang_typeof_operation (slang_assemble_ctx *, struct slang_operation_ *,\r
+ slang_assembly_typeinfo *);\r
+GLboolean _slang_typeof_operation_ (struct slang_operation_ *, slang_assembly_name_space *,\r
slang_assembly_typeinfo *, slang_atom_pool *);\r
\r
/*\r
* Returns GL_TRUE on success, even if the function was not found.\r
* Returns GL_FALSE otherwise.\r
*/\r
-GLboolean _slang_typeof_function (slang_atom a_name, slang_operation *params, GLuint num_params,\r
- slang_assembly_name_space *, slang_type_specifier *spec, GLboolean *exists, slang_atom_pool *);\r
+GLboolean _slang_typeof_function (slang_atom a_name, struct slang_operation_ *params,\r
+ GLuint num_params, slang_assembly_name_space *, slang_type_specifier *spec, GLboolean *exists,\r
+ slang_atom_pool *);\r
\r
GLboolean _slang_type_is_matrix (slang_type_specifier_type);\r
\r