⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slang_print.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
📖 第 1 页 / 共 2 页
字号:
      break;   case SLANG_OPER_LITERAL_INT:      spaces(indent);      printf("LITERAL (");      for (i = 0; i < op->literal_size; i++)         printf("%d ", (int) op->literal[i]);      printf(")\n");      break;   case SLANG_OPER_LITERAL_FLOAT:      spaces(indent);      printf("LITERAL (");      for (i = 0; i < op->literal_size; i++)         printf("%f ", op->literal[i]);      printf(")\n");      break;   case SLANG_OPER_IDENTIFIER:      {         const slang_variable_scope *scope;         spaces(indent);         if (op->var && op->var->a_name) {            scope = find_scope(op->locals, op->var->a_name);            printf("VAR %s  (in scope %p)\n", (char *) op->var->a_name,                   (void *) scope);            assert(scope);         }         else {            scope = find_scope(op->locals, op->a_id);            printf("VAR' %s  (in scope %p) locals=%p outer=%p\n",                   (char *) op->a_id,                   (void *) scope,                   (void *) op->locals,                   (void *) op->locals->outer_scope);            assert(scope);         }      }      break;   case SLANG_OPER_SEQUENCE:      print_generic(op, "COMMA-SEQ", indent+3);      break;   case SLANG_OPER_ASSIGN:      spaces(indent);      printf("ASSIGNMENT  locals=%p outer=%p\n",             (void *) op->locals,             (void *) op->locals->outer_scope);      print_binary(op, ":=", indent);      break;   case SLANG_OPER_ADDASSIGN:      spaces(indent);      printf("ASSIGN\n");      print_binary(op, "+=", indent);      break;   case SLANG_OPER_SUBASSIGN:      spaces(indent);      printf("ASSIGN\n");      print_binary(op, "-=", indent);      break;   case SLANG_OPER_MULASSIGN:      spaces(indent);      printf("ASSIGN\n");      print_binary(op, "*=", indent);      break;   case SLANG_OPER_DIVASSIGN:      spaces(indent);      printf("ASSIGN\n");      print_binary(op, "/=", indent);      break;	/*SLANG_OPER_MODASSIGN,*/	/*SLANG_OPER_LSHASSIGN,*/	/*SLANG_OPER_RSHASSIGN,*/	/*SLANG_OPER_ORASSIGN,*/	/*SLANG_OPER_XORASSIGN,*/	/*SLANG_OPER_ANDASSIGN,*/   case SLANG_OPER_SELECT:      spaces(indent);      printf("SLANG_OPER_SELECT n=%d\n", op->num_children);      assert(op->num_children == 3);      slang_print_tree(&op->children[0], indent+3);      spaces(indent);      printf("?\n");      slang_print_tree(&op->children[1], indent+3);      spaces(indent);      printf(":\n");      slang_print_tree(&op->children[2], indent+3);      break;   case SLANG_OPER_LOGICALOR:      print_binary(op, "||", indent);      break;   case SLANG_OPER_LOGICALXOR:      print_binary(op, "^^", indent);      break;   case SLANG_OPER_LOGICALAND:      print_binary(op, "&&", indent);      break;   /*SLANG_OPER_BITOR*/   /*SLANG_OPER_BITXOR*/   /*SLANG_OPER_BITAND*/   case SLANG_OPER_EQUAL:      print_binary(op, "==", indent);      break;   case SLANG_OPER_NOTEQUAL:      print_binary(op, "!=", indent);      break;   case SLANG_OPER_LESS:      print_binary(op, "<", indent);      break;   case SLANG_OPER_GREATER:      print_binary(op, ">", indent);      break;   case SLANG_OPER_LESSEQUAL:      print_binary(op, "<=", indent);      break;   case SLANG_OPER_GREATEREQUAL:      print_binary(op, ">=", indent);      break;   /*SLANG_OPER_LSHIFT*/   /*SLANG_OPER_RSHIFT*/   case SLANG_OPER_ADD:      print_binary(op, "+", indent);      break;   case SLANG_OPER_SUBTRACT:      print_binary(op, "-", indent);      break;   case SLANG_OPER_MULTIPLY:      print_binary(op, "*", indent);      break;   case SLANG_OPER_DIVIDE:      print_binary(op, "/", indent);      break;   /*SLANG_OPER_MODULUS*/   case SLANG_OPER_PREINCREMENT:      spaces(indent);      printf("PRE++\n");      slang_print_tree(&op->children[0], indent+3);      break;   case SLANG_OPER_PREDECREMENT:      spaces(indent);      printf("PRE--\n");      slang_print_tree(&op->children[0], indent+3);      break;   case SLANG_OPER_PLUS:      spaces(indent);      printf("SLANG_OPER_PLUS\n");      break;   case SLANG_OPER_MINUS:      spaces(indent);      printf("SLANG_OPER_MINUS\n");      break;   /*SLANG_OPER_COMPLEMENT*/   case SLANG_OPER_NOT:      spaces(indent);      printf("NOT\n");      slang_print_tree(&op->children[0], indent+3);      break;   case SLANG_OPER_SUBSCRIPT:      spaces(indent);      printf("SLANG_OPER_SUBSCRIPT locals=%p outer=%p\n",             (void *) op->locals,             (void *) op->locals->outer_scope);      print_generic(op, NULL, indent+3);      break;   case SLANG_OPER_CALL:#if 0         slang_function *fun            = _slang_locate_function(A->space.funcs, oper->a_id,                                     oper->children,                                     oper->num_children, &A->space, A->atoms);#endif      spaces(indent);      printf("CALL %s(\n", (char *) op->a_id);      for (i = 0; i < op->num_children; i++) {         slang_print_tree(&op->children[i], indent+3);         if (i + 1 < op->num_children) {            spaces(indent + 3);            printf(",\n");         }      }      spaces(indent);      printf(")\n");      break;   case SLANG_OPER_FIELD:      spaces(indent);      printf("FIELD %s of\n", (char*) op->a_id);      slang_print_tree(&op->children[0], indent+3);      break;   case SLANG_OPER_POSTINCREMENT:      spaces(indent);      printf("POST++\n");      slang_print_tree(&op->children[0], indent+3);      break;   case SLANG_OPER_POSTDECREMENT:      spaces(indent);      printf("POST--\n");      slang_print_tree(&op->children[0], indent+3);      break;   default:      printf("unknown op->type %d\n", (int) op->type);   }}voidslang_print_function(const slang_function *f, GLboolean body){   GLuint i;#if 0   if (_mesa_strcmp((char *) f->header.a_name, "main") != 0)     return;#endif   printf("FUNCTION %s ( scope=%p\n",          (char *) f->header.a_name, (void *) f->parameters);   for (i = 0; i < f->param_count; i++) {      print_variable(f->parameters->variables[i], 3);   }   printf(") param scope = %p\n", (void *) f->parameters);   if (body && f->body)      slang_print_tree(f->body, 0);}const char *slang_type_qual_string(slang_type_qualifier q){   switch (q) {   case SLANG_QUAL_NONE:      return "none";   case SLANG_QUAL_CONST:      return "const";   case SLANG_QUAL_ATTRIBUTE:      return "attribute";   case SLANG_QUAL_VARYING:      return "varying";   case SLANG_QUAL_UNIFORM:      return "uniform";   case SLANG_QUAL_OUT:      return "out";   case SLANG_QUAL_INOUT:      return "inout";   case SLANG_QUAL_FIXEDOUTPUT:      return "fixedoutput";   case SLANG_QUAL_FIXEDINPUT:      return "fixedinputk";   default:      return "qual?";   }}static const char *slang_type_string(slang_type_specifier_type t){   switch (t) {   case SLANG_SPEC_VOID:      return "void";   case SLANG_SPEC_BOOL:      return "bool";   case SLANG_SPEC_BVEC2:      return "bvec2";   case SLANG_SPEC_BVEC3:      return "bvec3";   case SLANG_SPEC_BVEC4:      return "bvec4";   case SLANG_SPEC_INT:      return "int";   case SLANG_SPEC_IVEC2:      return "ivec2";   case SLANG_SPEC_IVEC3:      return "ivec3";   case SLANG_SPEC_IVEC4:      return "ivec4";   case SLANG_SPEC_FLOAT:      return "float";   case SLANG_SPEC_VEC2:      return "vec2";   case SLANG_SPEC_VEC3:      return "vec3";   case SLANG_SPEC_VEC4:      return "vec4";   case SLANG_SPEC_MAT2:      return "mat2";   case SLANG_SPEC_MAT3:      return "mat3";   case SLANG_SPEC_MAT4:      return "mat4";   case SLANG_SPEC_SAMPLER1D:      return "sampler1D";   case SLANG_SPEC_SAMPLER2D:      return "sampler2D";   case SLANG_SPEC_SAMPLER3D:      return "sampler3D";   case SLANG_SPEC_SAMPLERCUBE:      return "samplerCube";   case SLANG_SPEC_SAMPLER1DSHADOW:      return "sampler1DShadow";   case SLANG_SPEC_SAMPLER2DSHADOW:      return "sampler2DShadow";   case SLANG_SPEC_SAMPLER2DRECT:      return "sampler2DRect";   case SLANG_SPEC_SAMPLER2DRECTSHADOW:      return "sampler2DRectShadow";   case SLANG_SPEC_STRUCT:      return "struct";   case SLANG_SPEC_ARRAY:      return "array";   default:      return "type?";   }}static const char *slang_fq_type_string(const slang_fully_specified_type *t){   static char str[1000];   sprintf(str, "%s %s", slang_type_qual_string(t->qualifier),      slang_type_string(t->specifier.type));   return str;}voidslang_print_type(const slang_fully_specified_type *t){   printf("%s %s", slang_type_qual_string(t->qualifier),      slang_type_string(t->specifier.type));}#if 0static char *slang_var_string(const slang_variable *v){   static char str[1000];   sprintf(str, "%s : %s",           (char *) v->a_name,           slang_fq_type_string(&v->type));   return str;}#endifvoidslang_print_variable(const slang_variable *v){   printf("Name: %s\n", (char *) v->a_name);   printf("Type: %s\n", slang_fq_type_string(&v->type));}void_slang_print_var_scope(const slang_variable_scope *vars, int indent){   GLuint i;   spaces(indent);   printf("Var scope %p  %d vars:\n", (void *) vars, vars->num_variables);   for (i = 0; i < vars->num_variables; i++) {      spaces(indent + 3);      printf("%s (at %p)\n", (char *) vars->variables[i]->a_name, (void*) (vars->variables + i));   }   spaces(indent + 3);   printf("outer_scope = %p\n", (void*) vars->outer_scope);   if (vars->outer_scope) {      /*spaces(indent + 3);*/      _slang_print_var_scope(vars->outer_scope, indent + 3);   }}intslang_checksum_tree(const slang_operation *op){   int s = op->num_children;   GLuint i;   for (i = 0; i < op->num_children; i++) {      s += slang_checksum_tree(&op->children[i]);   }   return s;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -