#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
- int can_be_referenced;\r
- int is_swizzled;\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
-int slang_assembly_typeinfo_construct (slang_assembly_typeinfo *);\r
-void slang_assembly_typeinfo_destruct (slang_assembly_typeinfo *);\r
+GLboolean slang_assembly_typeinfo_construct (slang_assembly_typeinfo *);\r
+GLvoid slang_assembly_typeinfo_destruct (slang_assembly_typeinfo *);\r
\r
/*\r
- retrieves type information about an operation\r
- returns 1 on success\r
- returns 0 otherwise\r
-*/\r
-int _slang_typeof_operation (slang_operation *, slang_assembly_name_space *,\r
+ * Retrieves type information about an operation.\r
+ * Returns GL_TRUE on success.\r
+ * Returns GL_FALSE otherwise.\r
+ */\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
- retrieves type of a function prototype, if one exists\r
- returns 1 on success, even if the function was not found\r
- returns 0 otherwise\r
-*/\r
-int _slang_typeof_function (slang_atom a_name, slang_operation *params, unsigned int num_params,\r
- slang_assembly_name_space *space, slang_type_specifier *spec, int *exists, slang_atom_pool *);\r
-\r
-int _slang_type_is_matrix (slang_type_specifier_type);\r
-int _slang_type_is_vector (slang_type_specifier_type);\r
+ * Retrieves type of a function prototype, if one exists.\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, 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
+GLboolean _slang_type_is_vector (slang_type_specifier_type);\r
+\r
slang_type_specifier_type _slang_type_base (slang_type_specifier_type);\r
-unsigned int _slang_type_dim (slang_type_specifier_type);\r
+\r
+GLuint _slang_type_dim (slang_type_specifier_type);\r
\r
#ifdef __cplusplus\r
}\r