Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenslang_typeinfo.h
Go to the documentation of this file.
00001 /* 00002 * Mesa 3-D graphics library 00003 * Version: 6.5 00004 * 00005 * Copyright (C) 2005-2006 Brian Paul All Rights Reserved. 00006 * 00007 * Permission is hereby granted, free of charge, to any person obtaining a 00008 * copy of this software and associated documentation files (the "Software"), 00009 * to deal in the Software without restriction, including without limitation 00010 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 00011 * and/or sell copies of the Software, and to permit persons to whom the 00012 * Software is furnished to do so, subject to the following conditions: 00013 * 00014 * The above copyright notice and this permission notice shall be included 00015 * in all copies or substantial portions of the Software. 00016 * 00017 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00018 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00019 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 00020 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 00021 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 00022 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00023 */ 00024 00025 #ifndef SLANG_TYPEINFO_H 00026 #define SLANG_TYPEINFO_H 1 00027 00028 #include "main/imports.h" 00029 #include "main/mtypes.h" 00030 #include "slang_log.h" 00031 #include "slang_utility.h" 00032 #include "slang_vartable.h" 00033 00034 00035 struct slang_operation_; 00036 00037 struct slang_name_space_; 00038 00039 00040 00047 typedef struct slang_swizzle_ 00048 { 00049 GLuint num_components; 00050 GLuint swizzle[4]; 00051 } slang_swizzle; 00052 00053 extern GLboolean 00054 _slang_is_swizzle(const char *field, GLuint rows, slang_swizzle *swz); 00055 00056 00057 typedef enum slang_type_variant_ 00058 { 00059 SLANG_VARIANT, /* the default */ 00060 SLANG_INVARIANT /* indicates the "invariant" keyword */ 00061 } slang_type_variant; 00062 00063 00064 typedef enum slang_type_centroid_ 00065 { 00066 SLANG_CENTER, /* the default */ 00067 SLANG_CENTROID /* indicates the "centroid" keyword */ 00068 } slang_type_centroid; 00069 00070 00071 typedef enum slang_type_qualifier_ 00072 { 00073 SLANG_QUAL_NONE, 00074 SLANG_QUAL_CONST, 00075 SLANG_QUAL_ATTRIBUTE, 00076 SLANG_QUAL_VARYING, 00077 SLANG_QUAL_UNIFORM, 00078 SLANG_QUAL_OUT, 00079 SLANG_QUAL_INOUT, 00080 SLANG_QUAL_FIXEDOUTPUT, /* internal */ 00081 SLANG_QUAL_FIXEDINPUT /* internal */ 00082 } slang_type_qualifier; 00083 00084 00085 typedef enum slang_type_precision_ 00086 { 00087 SLANG_PREC_DEFAULT, 00088 SLANG_PREC_LOW, 00089 SLANG_PREC_MEDIUM, 00090 SLANG_PREC_HIGH 00091 } slang_type_precision; 00092 00093 00097 typedef enum slang_type_specifier_type_ 00098 { 00099 SLANG_SPEC_VOID, 00100 SLANG_SPEC_BOOL, 00101 SLANG_SPEC_BVEC2, 00102 SLANG_SPEC_BVEC3, 00103 SLANG_SPEC_BVEC4, 00104 SLANG_SPEC_INT, 00105 SLANG_SPEC_IVEC2, 00106 SLANG_SPEC_IVEC3, 00107 SLANG_SPEC_IVEC4, 00108 SLANG_SPEC_FLOAT, 00109 SLANG_SPEC_VEC2, 00110 SLANG_SPEC_VEC3, 00111 SLANG_SPEC_VEC4, 00112 SLANG_SPEC_MAT2, 00113 SLANG_SPEC_MAT3, 00114 SLANG_SPEC_MAT4, 00115 SLANG_SPEC_MAT23, 00116 SLANG_SPEC_MAT32, 00117 SLANG_SPEC_MAT24, 00118 SLANG_SPEC_MAT42, 00119 SLANG_SPEC_MAT34, 00120 SLANG_SPEC_MAT43, 00121 SLANG_SPEC_SAMPLER1D, 00122 SLANG_SPEC_SAMPLER2D, 00123 SLANG_SPEC_SAMPLER3D, 00124 SLANG_SPEC_SAMPLERCUBE, 00125 SLANG_SPEC_SAMPLER2DRECT, 00126 SLANG_SPEC_SAMPLER1DSHADOW, 00127 SLANG_SPEC_SAMPLER2DSHADOW, 00128 SLANG_SPEC_SAMPLER2DRECTSHADOW, 00129 SLANG_SPEC_STRUCT, 00130 SLANG_SPEC_ARRAY 00131 } slang_type_specifier_type; 00132 00133 00134 extern slang_type_specifier_type 00135 slang_type_specifier_type_from_string(const char *); 00136 00137 extern const char * 00138 slang_type_specifier_type_to_string(slang_type_specifier_type); 00139 00140 00144 typedef struct slang_type_specifier_ 00145 { 00146 slang_type_specifier_type type; 00147 struct slang_struct_ *_struct; 00148 struct slang_type_specifier_ *_array; 00149 } slang_type_specifier; 00150 00151 00152 extern GLvoid 00153 slang_type_specifier_ctr(slang_type_specifier *); 00154 00155 extern GLvoid 00156 slang_type_specifier_dtr(slang_type_specifier *); 00157 00158 extern slang_type_specifier * 00159 slang_type_specifier_new(slang_type_specifier_type type, 00160 struct slang_struct_ *_struct, 00161 struct slang_type_specifier_ *_array); 00162 00163 00164 extern GLboolean 00165 slang_type_specifier_copy(slang_type_specifier *, const slang_type_specifier *); 00166 00167 extern GLboolean 00168 slang_type_specifier_equal(const slang_type_specifier *, 00169 const slang_type_specifier *); 00170 00171 00172 extern GLboolean 00173 slang_type_specifier_compatible(const slang_type_specifier * x, 00174 const slang_type_specifier * y); 00175 00176 00177 typedef struct slang_fully_specified_type_ 00178 { 00179 slang_type_qualifier qualifier; 00180 slang_type_specifier specifier; 00181 slang_type_precision precision; 00182 slang_type_variant variant; 00183 slang_type_centroid centroid; 00184 GLint array_len; 00185 } slang_fully_specified_type; 00186 00187 extern int 00188 slang_fully_specified_type_construct(slang_fully_specified_type *); 00189 00190 extern void 00191 slang_fully_specified_type_destruct(slang_fully_specified_type *); 00192 00193 extern int 00194 slang_fully_specified_type_copy(slang_fully_specified_type *, 00195 const slang_fully_specified_type *); 00196 00197 00198 00199 typedef struct slang_typeinfo_ 00200 { 00201 GLboolean can_be_referenced; 00202 GLboolean is_swizzled; 00203 slang_swizzle swz; 00204 slang_type_specifier spec; 00205 GLuint array_len; 00206 } slang_typeinfo; 00207 00208 extern GLboolean 00209 slang_typeinfo_construct(slang_typeinfo *); 00210 00211 extern GLvoid 00212 slang_typeinfo_destruct(slang_typeinfo *); 00213 00214 00215 extern GLboolean 00216 _slang_typeof_operation(struct slang_operation_ *, 00217 const struct slang_name_space_ *, 00218 slang_typeinfo *, slang_atom_pool *, 00219 slang_info_log *log); 00220 00221 extern GLboolean 00222 _slang_type_is_matrix(slang_type_specifier_type); 00223 00224 extern GLboolean 00225 _slang_type_is_vector(slang_type_specifier_type); 00226 00227 extern GLboolean 00228 _slang_type_is_float_vec_mat(slang_type_specifier_type); 00229 00230 extern slang_type_specifier_type 00231 _slang_type_base(slang_type_specifier_type); 00232 00233 extern GLuint 00234 _slang_type_dim(slang_type_specifier_type); 00235 00236 extern GLenum 00237 _slang_gltype_from_specifier(const slang_type_specifier *type); 00238 00239 #endif Generated on Sun May 27 2012 04:20:41 for ReactOS by
1.7.6.1
|