PHP_METHOD(referenceMapObj, __set) { char *property; long property_len = 0; zval *value; zval *zobj = getThis(); php_referencemap_object *php_referencemap; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_referencemap = (php_referencemap_object *) zend_object_store_get_object(zobj TSRMLS_CC); IF_SET_STRING("image", php_referencemap->referencemap->image, value) else IF_SET_LONG("width", php_referencemap->referencemap->width, value) else IF_SET_LONG("height", php_referencemap->referencemap->height, value) else IF_SET_LONG("status", php_referencemap->referencemap->status, value) else IF_SET_LONG("marker", php_referencemap->referencemap->marker, value) else IF_SET_STRING("markername", php_referencemap->referencemap->markername, value) else IF_SET_LONG("markersize", php_referencemap->referencemap->markersize, value) else IF_SET_LONG("maxboxsize", php_referencemap->referencemap->maxboxsize, value) else IF_SET_LONG("minboxsize", php_referencemap->referencemap->minboxsize, value) else if ( (STRING_EQUAL("extent", property)) || (STRING_EQUAL("color", property)) || (STRING_EQUAL("outlinecolor", property))) { mapscript_throw_exception("Property '%s' is an object and can only be modified through its accessors." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(OWSRequestObj, __set) { char *property; long property_len; zval *value; zval *zobj = getThis(); php_owsrequest_object *php_owsrequest; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_owsrequest = (php_owsrequest_object *) zend_object_store_get_object(zobj TSRMLS_CC); if ( (STRING_EQUAL("numparams", property)) || (STRING_EQUAL("type", property)) || (STRING_EQUAL("contenttype", property)) || (STRING_EQUAL("postrequest", property)) || (STRING_EQUAL("httpcookiedata", property))) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(errorObj, __set) { char *property; long property_len; zval *value; zval *zobj = getThis(); php_error_object *php_error; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_error = (php_error_object *) zend_object_store_get_object(zobj TSRMLS_CC); if ( (STRING_EQUAL("code", property)) || (STRING_EQUAL("routine", property)) || (STRING_EQUAL("isreported", property)) || (STRING_EQUAL("message", property))) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(imageObj, __set) { char *property; long property_len; zval *value; zval *zobj = getThis(); php_image_object *php_image; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_image = (php_image_object *) zend_object_store_get_object(zobj TSRMLS_CC); IF_SET_STRING("imagepath", php_image->image->imagepath, value) else IF_SET_STRING("imageurl", php_image->image->imageurl, value) else IF_SET_STRING("imagetype", php_image->image->format->name, value) else if ( (STRING_EQUAL("width", property)) || (STRING_EQUAL("resolution", property)) || (STRING_EQUAL("resolutionfactor", property)) || (STRING_EQUAL("height", property)) ) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(labelObj, __set) { char *property; long property_len = 0; zval *value; zval *zobj = getThis(); php_label_object *php_label; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_label = (php_label_object *) zend_object_store_get_object(zobj TSRMLS_CC); IF_SET_STRING("font", php_label->label->font, value) else IF_SET_STRING("encoding", php_label->label->encoding, value) else IF_SET_LONG("type", php_label->label->type, value) else IF_SET_LONG("shadowsizex", php_label->label->shadowsizex, value) else IF_SET_LONG("shadowsizey", php_label->label->shadowsizey, value) else IF_SET_DOUBLE("size", php_label->label->size, value) else IF_SET_DOUBLE("minsize", php_label->label->minsize, value) else IF_SET_DOUBLE("maxsize", php_label->label->maxsize, value) else IF_SET_LONG("position", php_label->label->position, value) else IF_SET_LONG("offsetx", php_label->label->offsetx, value) else IF_SET_LONG("offsety", php_label->label->offsety, value) else IF_SET_DOUBLE("angle", php_label->label->angle, value) else IF_SET_LONG("anglemode", php_label->label->anglemode, value) else IF_SET_LONG("buffer", php_label->label->buffer, value) else IF_SET_LONG("antialias", php_label->label->antialias, value) else IF_SET_BYTE("wrap", php_label->label->wrap, value) else IF_SET_LONG("minfeaturesize", php_label->label->minfeaturesize, value) else IF_SET_LONG("autominfeaturesize", php_label->label->autominfeaturesize, value) else IF_SET_LONG("repeatdistance", php_label->label->repeatdistance, value) else IF_SET_LONG("mindistance", php_label->label->mindistance, value) else IF_SET_LONG("partials", php_label->label->partials, value) else IF_SET_LONG("force", php_label->label->force, value) else IF_SET_LONG("outlinewidth", php_label->label->outlinewidth, value) else IF_SET_LONG("align", php_label->label->align, value) else IF_SET_LONG("maxlength", php_label->label->maxlength, value) else IF_SET_LONG("minlength", php_label->label->minlength, value) else IF_SET_LONG("maxoverlapangle", php_label->label->maxoverlapangle, value) else IF_SET_LONG("priority", php_label->label->priority, value) else IF_SET_DOUBLE("maxscaledenom", php_label->label->maxscaledenom, value) else IF_SET_DOUBLE("minscaledenom", php_label->label->minscaledenom, value) else if ( (STRING_EQUAL("color", property)) || (STRING_EQUAL("outlinecolor", property)) || (STRING_EQUAL("leader", property)) || (STRING_EQUAL("shadowcolor", property)) ) { mapscript_throw_exception("Property '%s' is an object and can only be modified through its accessors." TSRMLS_CC, property); } else if (STRING_EQUAL("numstyles", property)) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
/* {{{ proto int owsrequest.loadParams() Initializes the OWSRequest object from the cgi environment variables REQUEST_METHOD, QUERY_STRING and HTTP_COOKIE. Returns the number of name/value pairs collected. */ PHP_METHOD(OWSRequestObj, loadParams) { zval *zobj = getThis(); zval **val; php_owsrequest_object *php_owsrequest; void *thread_context; #ifdef ZTS thread_context = (void*)TSRMLS_C; #else thread_context = NULL; #endif //PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters_none() == FAILURE) { //PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } //PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_owsrequest = (php_owsrequest_object *) zend_object_store_get_object(zobj TSRMLS_CC); if ( (STRING_EQUAL(sapi_module.name,"cli")) || (STRING_EQUAL(sapi_module.name,"cgi")) || (STRING_EQUAL(sapi_module.name,"cgi-fcgi")) ) { cgirequestObj_loadParams(php_owsrequest->cgirequest, NULL, NULL, 0, thread_context); } else { // check if we have input data for GET method if (SG(request_info).request_method && STRING_EQUAL(SG(request_info).request_method, "GET")) { zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 TSRMLS_CC); if ( PG(http_globals)[TRACK_VARS_SERVER] && (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "QUERY_STRING", sizeof("QUERY_STRING"), (void **) &val) == SUCCESS) && (Z_TYPE_PP(val) == IS_STRING) && (Z_STRLEN_PP(val) > 0) ) { cgirequestObj_loadParams(php_owsrequest->cgirequest, owsrequest_getenv, NULL, 0, thread_context); } } else { cgirequestObj_loadParams(php_owsrequest->cgirequest, owsrequest_getenv, SG(request_info).raw_post_data, SG(request_info).raw_post_data_length, thread_context); } } RETURN_LONG(php_owsrequest->cgirequest->NumParams); }
PHP_METHOD(symbolObj, __set) { char *property; long property_len; zval *value; zval *zobj = getThis(); php_symbol_object *php_symbol; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_symbol = (php_symbol_object *) zend_object_store_get_object(zobj TSRMLS_CC); IF_SET_STRING("name", php_symbol->symbol->name, value) else IF_SET_LONG("type", php_symbol->symbol->type, value) else IF_SET_LONG("inmapfile", php_symbol->symbol->inmapfile, value) else IF_SET_DOUBLE("sizex", php_symbol->symbol->sizex, value) else IF_SET_DOUBLE("sizey", php_symbol->symbol->sizey, value) else IF_SET_LONG("filled", php_symbol->symbol->filled, value) else IF_SET_LONG("transparent", php_symbol->symbol->transparent, value) else IF_SET_LONG("transparentcolor", php_symbol->symbol->transparentcolor, value) else IF_SET_STRING("character", php_symbol->symbol->character, value) else IF_SET_STRING("svg_text", php_symbol->symbol->svg_text, value) else IF_SET_LONG("antialias", php_symbol->symbol->antialias, value) else IF_SET_STRING("font", php_symbol->symbol->font, value) else IF_SET_DOUBLE("anchorpoint_y", php_symbol->symbol->anchorpoint_y, value) else IF_SET_DOUBLE("anchorpoint_x", php_symbol->symbol->anchorpoint_x, value) else IF_SET_DOUBLE("maxx", php_symbol->symbol->maxx, value) else IF_SET_DOUBLE("maxy", php_symbol->symbol->maxy, value) else IF_SET_DOUBLE("minx", php_symbol->symbol->minx, value) else IF_SET_DOUBLE("miny", php_symbol->symbol->miny, value) else if ( (STRING_EQUAL("numpoints", property)) || (STRING_EQUAL("imagepath", property))) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(shapeObj, __set) { char *property; long property_len = 0; zval *value; zval *zobj = getThis(); php_shape_object *php_shape; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_shape = (php_shape_object *) zend_object_store_get_object(zobj TSRMLS_CC); IF_SET_STRING("text", php_shape->shape->text, value) else IF_SET_LONG("classindex", php_shape->shape->classindex, value) else IF_SET_LONG("index", php_shape->shape->index, value) else if ( (STRING_EQUAL("type", property)) || (STRING_EQUAL("numlines", property)) || (STRING_EQUAL("tileindex", property)) || (STRING_EQUAL("resultindex", property)) || (STRING_EQUAL("bounds", property)) || (STRING_EQUAL("values", property)) || (STRING_EQUAL("numvalues", property)) ) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(shapeFileObj, __set) { char *property; long property_len = 0; zval *value; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); if ( (STRING_EQUAL("numshapes", property)) || (STRING_EQUAL("type", property)) || (STRING_EQUAL("source", property)) || (STRING_EQUAL("isopen", property)) || (STRING_EQUAL("lastshape", property)) || (STRING_EQUAL("bounds", property)) ) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(resultObj, __set) { char *property; long property_len = 0; zval *value; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); if ( (STRING_EQUAL("shapeindex", property)) || (STRING_EQUAL("tileindex", property)) || (STRING_EQUAL("resultindex", property)) || (STRING_EQUAL("classindex", property))) { mapscript_throw_exception("Property '%s' is an object and can only be modified through its accessors." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
PHP_METHOD(scalebarObj, __set) { char *property; long property_len; zval *value; zval *zobj = getThis(); php_scalebar_object *php_scalebar; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_scalebar = (php_scalebar_object *) zend_object_store_get_object(zobj TSRMLS_CC); IF_SET_LONG("height", php_scalebar->scalebar->height, value) else IF_SET_LONG("width", php_scalebar->scalebar->width, value) else IF_SET_LONG("style", php_scalebar->scalebar->style, value) else IF_SET_LONG("intervals", php_scalebar->scalebar->intervals, value) else IF_SET_LONG("units", php_scalebar->scalebar->units, value) else IF_SET_LONG("status", php_scalebar->scalebar->status, value) else IF_SET_LONG("position", php_scalebar->scalebar->position, value) else IF_SET_LONG("postlabelcache", php_scalebar->scalebar->postlabelcache, value) else IF_SET_LONG("align", php_scalebar->scalebar->align, value) else if ( (STRING_EQUAL("color", property)) || (STRING_EQUAL("backgroundcolor", property)) || (STRING_EQUAL("outlinecolor", property)) || (STRING_EQUAL("label", property)) || (STRING_EQUAL("imagecolor", property))) { mapscript_throw_exception("Property '%s' is an object and can only be modified through its accessors." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
char *owsrequest_getenv(const char *name, void *thread_context) { zval **val, **ppzval; zval *cookie_result, *key; HashTable *cookies; char *string_key = NULL, *cookie_tmp; ulong num_key; int numElements, i = 0; TSRMLS_FETCH_FROM_CTX(thread_context); if (STRING_EQUAL(name, "HTTP_COOKIE")) { cookies = PG(http_globals)[TRACK_VARS_COOKIE]->value.ht; numElements = zend_hash_num_elements(cookies); MAKE_STD_ZVAL(cookie_result); ZVAL_STRING(cookie_result, "",1); for(zend_hash_internal_pointer_reset(cookies); zend_hash_has_more_elements(cookies) == SUCCESS; zend_hash_move_forward(cookies), ++i) { zend_hash_get_current_data(cookies, (void **)&ppzval); zend_hash_get_current_key(cookies, &string_key, &num_key, 1); cookie_tmp = malloc((strlen(string_key)+Z_STRLEN_PP(ppzval)+3) * sizeof(char)); sprintf(cookie_tmp, "%s=%s;",string_key,Z_STRVAL_PP(ppzval)); MAKE_STD_ZVAL(key); ZVAL_STRING(key, cookie_tmp,1); add_string_to_string(cookie_result,cookie_result, key); zval_dtor(key); free(cookie_tmp); } return Z_STRVAL_P(cookie_result); } else { zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 TSRMLS_CC); if ( PG(http_globals)[TRACK_VARS_SERVER] && (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, name, strlen(name)+1, (void **) &val) == SUCCESS) && (Z_TYPE_PP(val) == IS_STRING)) { return Z_STRVAL_PP(val); } } return NULL; }
PHP_METHOD(labelCacheMemberObj, __set) { char *property; long property_len; zval *value; zval *zobj = getThis(); php_labelcachemember_object *php_labelcachemember; PHP_MAPSCRIPT_ERROR_HANDLING(TRUE); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &property, &property_len, &value) == FAILURE) { PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); return; } PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_labelcachemember = (php_labelcachemember_object *) zend_object_store_get_object(zobj TSRMLS_CC); if ( (STRING_EQUAL("text", property)) || (STRING_EQUAL("classindex", property)) || (STRING_EQUAL("featuresize", property)) || (STRING_EQUAL("layerindex", property)) || (STRING_EQUAL("numstyles", property)) || (STRING_EQUAL("shapeindex", property)) || (STRING_EQUAL("status", property)) || (STRING_EQUAL("markerid", property)) || (STRING_EQUAL("tileindex", property)) || (STRING_EQUAL("label", property)) || (STRING_EQUAL("styles", property)) || (STRING_EQUAL("poly", property)) || (STRING_EQUAL("point", property))) { mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property); } else { mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property); } }
/**Function******************************************************************** Synopsis [Reads the command line options.] Description [Reads the command line options. Scans the command line one argument at a time and performs a switch on each arguement it hits. Some arguemnts also read in the following arg from the list (i.e., -f also gets the filename which should folow.) Gives a usage message and exits if any unrecognized args are found.] SideEffects [May initialize the random number generator.] SeeAlso [mainInit ntrReadOptionsFile] ******************************************************************************/ static void ntrReadOptions( int argc, char ** argv, NtrOptions * option) { int i = 0; if (argc < 2) goto usage; if (STRING_EQUAL(argv[1],"-f")) { ntrReadOptionsFile(argv[2],&argv,&argc); } for (i = 1; i < argc; i++) { if (argv[i][0] != '-' ) { if (option->file1 == NULL) { option->file1 = util_strsav(argv[i]); } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-second")) { i++; option->file2 = util_strsav(argv[i]); option->second = TRUE; } else if (STRING_EQUAL(argv[i],"-verify")) { i++; option->file2 = util_strsav(argv[i]); option->verify = TRUE; } else if (STRING_EQUAL(argv[i],"-trav")) { option->traverse = TRUE; } else if (STRING_EQUAL(argv[i],"-depend")) { option->traverse = TRUE; option->depend = TRUE; } else if (STRING_EQUAL(argv[i],"-image")) { i++; if (STRING_EQUAL(argv[i],"part")) { option->image = NTR_IMAGE_PART; } else if (STRING_EQUAL(argv[i],"clip")) { option->image = NTR_IMAGE_CLIP; } else if (STRING_EQUAL(argv[i],"depend")) { option->image = NTR_IMAGE_DEPEND; } else if (STRING_EQUAL(argv[i],"mono")) { option->image = NTR_IMAGE_MONO; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-depth")) { i++; option->imageClip = (double) atof(argv[i]); } else if (STRING_EQUAL(argv[i],"-cdepth")) { i++; option->closureClip = (double) atof(argv[i]); } else if (STRING_EQUAL(argv[i],"-approx")) { i++; if (STRING_EQUAL(argv[i],"under")) { option->approx = NTR_UNDER_APPROX; } else if (STRING_EQUAL(argv[i],"over")) { option->approx = NTR_OVER_APPROX; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-threshold")) { i++; option->threshold = (int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-from")) { i++; if (STRING_EQUAL(argv[i],"new")) { option->from = NTR_FROM_NEW; } else if (STRING_EQUAL(argv[i],"reached")) { option->from = NTR_FROM_REACHED; } else if (STRING_EQUAL(argv[i],"restrict")) { option->from = NTR_FROM_RESTRICT; } else if (STRING_EQUAL(argv[i],"compact")) { option->from = NTR_FROM_COMPACT; } else if (STRING_EQUAL(argv[i],"squeeze")) { option->from = NTR_FROM_SQUEEZE; } else if (STRING_EQUAL(argv[i],"subset")) { option->from = NTR_FROM_UNDERAPPROX; } else if (STRING_EQUAL(argv[i],"superset")) { option->from = NTR_FROM_OVERAPPROX; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-groupnsps")) { i++; if (STRING_EQUAL(argv[i],"none")) { option->groupnsps = NTR_GROUP_NONE; } else if (STRING_EQUAL(argv[i],"default")) { option->groupnsps = NTR_GROUP_DEFAULT; } else if (STRING_EQUAL(argv[i],"fixed")) { option->groupnsps = NTR_GROUP_FIXED; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-closure")) { option->closure = TRUE; } else if (STRING_EQUAL(argv[i],"-envelope")) { option->envelope = TRUE; } else if (STRING_EQUAL(argv[i],"-scc")) { option->scc = TRUE; } else if (STRING_EQUAL(argv[i],"-maxflow")) { option->maxflow = TRUE; } else if (STRING_EQUAL(argv[i],"-shortpaths")) { i++; if (STRING_EQUAL(argv[i],"none")) { option->shortPath = NTR_SHORT_NONE; } else if (STRING_EQUAL(argv[i],"bellman")) { option->shortPath = NTR_SHORT_BELLMAN; } else if (STRING_EQUAL(argv[i],"floyd")) { option->shortPath = NTR_SHORT_FLOYD; } else if (STRING_EQUAL(argv[i],"square")) { option->shortPath = NTR_SHORT_SQUARE; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-selective")) { option->selectiveTrace = TRUE; } else if (STRING_EQUAL(argv[i],"-zdd")) { option->zddtest = TRUE; } else if (STRING_EQUAL(argv[i],"-cover")) { option->zddtest = TRUE; option->printcover = TRUE; } else if (STRING_EQUAL(argv[i],"-sink")) { i++; option->maxflow = TRUE; option->sinkfile = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-part")) { option->partition = TRUE; } else if (STRING_EQUAL(argv[i],"-char2vect")) { option->char2vect = TRUE; } else if (STRING_EQUAL(argv[i],"-density")) { option->density = TRUE; } else if (STRING_EQUAL(argv[i],"-quality")) { i++; option->quality = (double) atof(argv[i]); } else if (STRING_EQUAL(argv[i],"-decomp")) { option->decomp = TRUE; } else if (STRING_EQUAL(argv[i],"-cofest")) { option->cofest = TRUE; } else if (STRING_EQUAL(argv[i],"-clip")) { i++; option->clip = (double) atof(argv[i]); i++; option->file2 = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-dctest")) { option->dontcares = TRUE; i++; option->file2 = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-closest")) { option->closestCube = TRUE; } else if (STRING_EQUAL(argv[i],"-clauses")) { option->clauses = TRUE; } else if (STRING_EQUAL(argv[i],"-nobuild")) { option->noBuild = TRUE; option->reordering = CUDD_REORDER_NONE; } else if (STRING_EQUAL(argv[i],"-delta")) { option->stateOnly = TRUE; } else if (STRING_EQUAL(argv[i],"-node")) { i++; option->node = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-local")) { option->locGlob = BNET_LOCAL_DD; } else if (STRING_EQUAL(argv[i],"-progress")) { option->progress = TRUE; } else if (STRING_EQUAL(argv[i],"-cache")) { i++; option->cacheSize = (int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-maxmem")) { i++; option->maxMemory = 1048576 * (int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-memhard")) { i++; option->maxMemHard = 1048576 * (int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-maxlive")) { i++; option->maxLive = (unsigned int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-slots")) { i++; option->slots = (int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-ordering")) { i++; if (STRING_EQUAL(argv[i],"dfs")) { option->ordering = PI_PS_DFS; } else if (STRING_EQUAL(argv[i],"hw")) { option->ordering = PI_PS_FROM_FILE; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-order")) { i++; option->ordering = PI_PS_GIVEN; option->orderPiPs = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-reordering")) { i++; if (STRING_EQUAL(argv[i],"none")) { option->reordering = CUDD_REORDER_NONE; } else if (STRING_EQUAL(argv[i],"random")) { option->reordering = CUDD_REORDER_RANDOM; } else if (STRING_EQUAL(argv[i],"bernard") || STRING_EQUAL(argv[i],"pivot")) { option->reordering = CUDD_REORDER_RANDOM_PIVOT; } else if (STRING_EQUAL(argv[i],"sifting")) { option->reordering = CUDD_REORDER_SIFT; } else if (STRING_EQUAL(argv[i],"converge")) { option->reordering = CUDD_REORDER_SIFT_CONVERGE; } else if (STRING_EQUAL(argv[i],"symm")) { option->reordering = CUDD_REORDER_SYMM_SIFT; } else if (STRING_EQUAL(argv[i],"cosymm")) { option->reordering = CUDD_REORDER_SYMM_SIFT_CONV; } else if (STRING_EQUAL(argv[i],"tree") || STRING_EQUAL(argv[i],"group")) { option->reordering = CUDD_REORDER_GROUP_SIFT; } else if (STRING_EQUAL(argv[i],"cotree") || STRING_EQUAL(argv[i],"cogroup")) { option->reordering = CUDD_REORDER_GROUP_SIFT_CONV; } else if (STRING_EQUAL(argv[i],"win2")) { option->reordering = CUDD_REORDER_WINDOW2; } else if (STRING_EQUAL(argv[i],"win3")) { option->reordering = CUDD_REORDER_WINDOW3; } else if (STRING_EQUAL(argv[i],"win4")) { option->reordering = CUDD_REORDER_WINDOW4; } else if (STRING_EQUAL(argv[i],"win2conv")) { option->reordering = CUDD_REORDER_WINDOW2_CONV; } else if (STRING_EQUAL(argv[i],"win3conv")) { option->reordering = CUDD_REORDER_WINDOW3_CONV; } else if (STRING_EQUAL(argv[i],"win4conv")) { option->reordering = CUDD_REORDER_WINDOW4_CONV; } else if (STRING_EQUAL(argv[i],"annealing")) { option->reordering = CUDD_REORDER_ANNEALING; } else if (STRING_EQUAL(argv[i],"genetic")) { option->reordering = CUDD_REORDER_GENETIC; } else if (STRING_EQUAL(argv[i],"linear")) { option->reordering = CUDD_REORDER_LINEAR; } else if (STRING_EQUAL(argv[i],"linconv")) { option->reordering = CUDD_REORDER_LINEAR_CONVERGE; } else if (STRING_EQUAL(argv[i],"exact")) { option->reordering = CUDD_REORDER_EXACT; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-autodyn")) { option->autoDyn = 3; } else if (STRING_EQUAL(argv[i],"-autodynB")) { option->autoDyn |= 1; } else if (STRING_EQUAL(argv[i],"-autodynZ")) { option->autoDyn |= 2; } else if (STRING_EQUAL(argv[i],"-automethod")) { i++; if (STRING_EQUAL(argv[i],"none")) { option->autoMethod = CUDD_REORDER_NONE; } else if (STRING_EQUAL(argv[i],"random")) { option->autoMethod = CUDD_REORDER_RANDOM; } else if (STRING_EQUAL(argv[i],"bernard") || STRING_EQUAL(argv[i],"pivot")) { option->autoMethod = CUDD_REORDER_RANDOM_PIVOT; } else if (STRING_EQUAL(argv[i],"sifting")) { option->autoMethod = CUDD_REORDER_SIFT; } else if (STRING_EQUAL(argv[i],"converge")) { option->autoMethod = CUDD_REORDER_SIFT_CONVERGE; } else if (STRING_EQUAL(argv[i],"symm")) { option->autoMethod = CUDD_REORDER_SYMM_SIFT; } else if (STRING_EQUAL(argv[i],"cosymm")) { option->autoMethod = CUDD_REORDER_SYMM_SIFT_CONV; } else if (STRING_EQUAL(argv[i],"tree") || STRING_EQUAL(argv[i],"group")) { option->autoMethod = CUDD_REORDER_GROUP_SIFT; } else if (STRING_EQUAL(argv[i],"cotree") || STRING_EQUAL(argv[i],"cogroup")) { option->autoMethod = CUDD_REORDER_GROUP_SIFT_CONV; } else if (STRING_EQUAL(argv[i],"win2")) { option->autoMethod = CUDD_REORDER_WINDOW2; } else if (STRING_EQUAL(argv[i],"win3")) { option->autoMethod = CUDD_REORDER_WINDOW3; } else if (STRING_EQUAL(argv[i],"win4")) { option->autoMethod = CUDD_REORDER_WINDOW4; } else if (STRING_EQUAL(argv[i],"win2conv")) { option->autoMethod = CUDD_REORDER_WINDOW2_CONV; } else if (STRING_EQUAL(argv[i],"win3conv")) { option->autoMethod = CUDD_REORDER_WINDOW3_CONV; } else if (STRING_EQUAL(argv[i],"win4conv")) { option->autoMethod = CUDD_REORDER_WINDOW4_CONV; } else if (STRING_EQUAL(argv[i],"annealing")) { option->autoMethod = CUDD_REORDER_ANNEALING; } else if (STRING_EQUAL(argv[i],"genetic")) { option->autoMethod = CUDD_REORDER_GENETIC; } else if (STRING_EQUAL(argv[i],"linear")) { option->autoMethod = CUDD_REORDER_LINEAR; } else if (STRING_EQUAL(argv[i],"linconv")) { option->autoMethod = CUDD_REORDER_LINEAR_CONVERGE; } else if (STRING_EQUAL(argv[i],"exact")) { option->autoMethod = CUDD_REORDER_EXACT; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-tree")) { i++; option->treefile = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-first")) { i++; option->firstReorder = (int)atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-countdead")) { option->countDead = TRUE; } else if (STRING_EQUAL(argv[i],"-growth")) { i++; option->maxGrowth = (int)atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-groupcheck")) { i++; if (STRING_EQUAL(argv[i],"check")) { option->groupcheck = CUDD_GROUP_CHECK; } else if (STRING_EQUAL(argv[i],"nocheck")) { option->groupcheck = CUDD_NO_CHECK; } else if (STRING_EQUAL(argv[i],"check2")) { option->groupcheck = CUDD_GROUP_CHECK2; } else if (STRING_EQUAL(argv[i],"check3")) { option->groupcheck = CUDD_GROUP_CHECK3; } else if (STRING_EQUAL(argv[i],"check4")) { option->groupcheck = CUDD_GROUP_CHECK4; } else if (STRING_EQUAL(argv[i],"check5")) { option->groupcheck = CUDD_GROUP_CHECK5; } else if (STRING_EQUAL(argv[i],"check6")) { option->groupcheck = CUDD_GROUP_CHECK6; } else if (STRING_EQUAL(argv[i],"check7")) { option->groupcheck = CUDD_GROUP_CHECK7; } else if (STRING_EQUAL(argv[i],"check8")) { option->groupcheck = CUDD_GROUP_CHECK8; } else if (STRING_EQUAL(argv[i],"check9")) { option->groupcheck = CUDD_GROUP_CHECK9; } else { goto usage; } } else if (STRING_EQUAL(argv[i],"-arcviolation")) { i++; option->arcviolation = (int)atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-symmviolation")) { i++; option->symmviolation = (int)atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-recomb")) { i++; option->recomb = (int)atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-drop")) { option->nodrop = FALSE; } else if (STRING_EQUAL(argv[i],"-sign")) { option->signatures = TRUE; } else if (STRING_EQUAL(argv[i],"-genetic")) { option->gaOnOff = 1; } else if (STRING_EQUAL(argv[i],"-genepop")) { option->gaOnOff = 1; i++; option->populationSize = (int)atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-genexover")) { option->gaOnOff = 1; i++; option->numberXovers = (int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-seed")) { i++; Cudd_Srandom((long)atoi(argv[i])); } else if (STRING_EQUAL(argv[i],"-dumpfile")) { i++; option->bdddump = TRUE; option->dumpfile = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-dumpblif")) { option->dumpFmt = 1; /* blif */ } else if (STRING_EQUAL(argv[i],"-dumpdaVinci")) { option->dumpFmt = 2; /* daVinci */ } else if (STRING_EQUAL(argv[i],"-dumpddcal")) { option->dumpFmt = 3; /* DDcal */ } else if (STRING_EQUAL(argv[i],"-dumpfact")) { option->dumpFmt = 4; /* factored form */ } else if (STRING_EQUAL(argv[i],"-store")) { i++; option->store = (int) atoi(argv[i]); } else if (STRING_EQUAL(argv[i],"-storefile")) { i++; option->storefile = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-loadfile")) { i++; option->load = 1; option->loadfile = util_strsav(argv[i]); } else if (STRING_EQUAL(argv[i],"-p")) { i++; option->verb = (int) atoi(argv[i]); } else { goto usage; } } if (option->store >= 0 && option->storefile == NULL) { (void) fprintf(stdout,"-storefile mandatory with -store\n"); exit(-1); } if (option->verb >= 0) { (void) printf("# %s\n", NTR_VERSION); /* echo command line and arguments */ (void) printf("#"); for (i = 0; i < argc; i++) { (void) printf(" %s", argv[i]); } (void) printf("\n"); (void) printf("# CUDD Version "); Cudd_PrintVersion(stdout); (void) fflush(stdout); } return; usage: /* convenient goto */ printf("Usage: please read man page\n"); if (i == 0) { (void) fprintf(stdout,"too few arguments\n"); } else { (void) fprintf(stdout,"option: %s is not defined\n",argv[i]); } exit(-1); } /* end of ntrReadOptions */