ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

slang_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.