t_num_ref ArchivoRegVars::add(string data){ fseek(f_d_handler, 0, SEEK_END); t_reg_var_size data_length=data.length(); // Almaceno el offset donde se va a escribir t_offset offset= ftell(f_d_handler); fwrite(&data_length,1, sizeof(t_reg_var_size), f_d_handler); fwrite(data.c_str(), 1, data.length(), f_d_handler); fflush(f_d_handler); if(ferror(f_d_handler)==0){ append_index(offset); } else { salir("",ERROR_DE_ESCRITURA_DATOS); } return ferror(f_d_handler); }
void begin_choco() { if (system==NULL) { // someone tries to load a Function from a file with CHOCO constraint syntax throw SyntaxError("unexpected constraints declaration for a function."); } // ----- generate all the variables {i} ----- Dim dim=Dim::scalar(); Domain x(dim); x.i()=Interval::all_reals(); for (int i=0; i<system->nb_var; i++) { char* name=append_index("\0",'{','}',i); scopes().top().add_var(name,&dim,x); free(name); } // ------------------------------------------ }
/** * Make a string from the given state vector. * For example, return "state.matrix.texture[2].inverse". * Use free() to deallocate the string. */ char * _mesa_program_state_string(const gl_state_index state[STATE_LENGTH]) { char str[1000] = ""; char tmp[30]; append(str, "state."); append_token(str, state[0]); switch (state[0]) { case STATE_MATERIAL: append_face(str, state[1]); append_token(str, state[2]); break; case STATE_LIGHT: append_index(str, state[1]); /* light number [i]. */ append_token(str, state[2]); /* coefficients */ break; case STATE_LIGHTMODEL_AMBIENT: append(str, "lightmodel.ambient"); break; case STATE_LIGHTMODEL_SCENECOLOR: if (state[1] == 0) { append(str, "lightmodel.front.scenecolor"); } else { append(str, "lightmodel.back.scenecolor"); } break; case STATE_LIGHTPROD: append_index(str, state[1]); /* light number [i]. */ append_face(str, state[2]); append_token(str, state[3]); break; case STATE_TEXGEN: append_index(str, state[1]); /* tex unit [i] */ append_token(str, state[2]); /* plane coef */ break; case STATE_TEXENV_COLOR: append_index(str, state[1]); /* tex unit [i] */ append(str, "color"); break; case STATE_CLIPPLANE: append_index(str, state[1]); /* plane [i] */ append(str, ".plane"); break; case STATE_MODELVIEW_MATRIX: case STATE_PROJECTION_MATRIX: case STATE_MVP_MATRIX: case STATE_TEXTURE_MATRIX: case STATE_PROGRAM_MATRIX: { /* state[0] = modelview, projection, texture, etc. */ /* state[1] = which texture matrix or program matrix */ /* state[2] = first row to fetch */ /* state[3] = last row to fetch */ /* state[4] = transpose, inverse or invtrans */ const gl_state_index mat = state[0]; const GLuint index = (GLuint) state[1]; const GLuint firstRow = (GLuint) state[2]; const GLuint lastRow = (GLuint) state[3]; const gl_state_index modifier = state[4]; if (index || mat == STATE_TEXTURE_MATRIX || mat == STATE_PROGRAM_MATRIX) append_index(str, index); if (modifier) append_token(str, modifier); if (firstRow == lastRow) sprintf(tmp, ".row[%d]", firstRow); else sprintf(tmp, ".row[%d..%d]", firstRow, lastRow); append(str, tmp); } break; case STATE_POINT_SIZE: break; case STATE_POINT_ATTENUATION: break; case STATE_FOG_PARAMS: break; case STATE_FOG_COLOR: break; case STATE_NUM_SAMPLES: break; case STATE_DEPTH_RANGE: break; case STATE_FRAGMENT_PROGRAM: case STATE_VERTEX_PROGRAM: /* state[1] = {STATE_ENV, STATE_LOCAL} */ /* state[2] = parameter index */ append_token(str, state[1]); append_index(str, state[2]); break; case STATE_NORMAL_SCALE: break; case STATE_INTERNAL: append_token(str, state[1]); if (state[1] == STATE_CURRENT_ATTRIB) append_index(str, state[2]); break; default: _mesa_problem(NULL, "Invalid state in _mesa_program_state_string"); break; } return _mesa_strdup(str); }
static int ber_len_varbind(SmiNode *smiNode, len_type flags) { SmiNode *row; SmiSubid oid[128]; unsigned int oidlen = sizeof(oid)/sizeof(oid[0]); int len = 0; #ifdef DUMP_OID int x; #endif switch (smiNode->nodekind) { case SMI_NODEKIND_SCALAR: for (oidlen = 0; oidlen < smiNode->oidlen; oidlen++) { oid[oidlen] = smiNode->oid[oidlen]; } oid[oidlen++] = 0; break; case SMI_NODEKIND_COLUMN: for (oidlen = 0; oidlen < smiNode->oidlen; oidlen++) { oid[oidlen] = smiNode->oid[oidlen]; } row = smiGetParentNode(smiNode); if (row) { SmiNode *indexNode = NULL, *iNode; SmiElement *smiElement; switch (row->indexkind) { case SMI_INDEX_INDEX: case SMI_INDEX_REORDER: indexNode = row; break; case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ break; case SMI_INDEX_AUGMENT: case SMI_INDEX_SPARSE: indexNode = smiGetRelatedNode(row); break; case SMI_INDEX_UNKNOWN: break; } if (indexNode) { for (smiElement = smiGetFirstElement(indexNode); smiElement; smiElement = smiGetNextElement(smiElement)) { iNode = smiGetElementNode(smiElement); append_index(oid, &oidlen, iNode, flags); } } } break; default: return 0; } #ifdef DUMP_OID fprintf(stderr, "%-32s\t", smiNode->name); for (x = 0; x < oidlen; x++) { fprintf(stderr, ".%u", oid[x]); } fprintf(stderr, "\n"); #endif len += ber_len_oid(oid, oidlen); len += ber_len_val(smiGetNodeType(smiNode), flags); len += ber_len_length(len) + 1; return len; }