void model_implicant::assign_value(expr* e, expr* val) { rational r; if (m.is_true(val)) { set_true(e); } else if (m.is_false(val)) { set_false(e); } else if (m_arith.is_numeral(val, r)) { set_number(e, r); } else if (m.is_value(val)) { set_value(e, val); } else { IF_VERBOSE(3, verbose_stream() << "Not evaluated " << mk_pp(e, m) << " := " << mk_pp(val, m) << "\n";); TRACE("pdr", tout << "Variable is not tracked: " << mk_pp(e, m) << " := " << mk_pp(val, m) << "\n";);
cube_list* negate_cube(cube* c, int var) { cube_list* result = new_cube_list(var); for (int i = 1; i <= var; i++) { val value = c->values[i]; if (value == t) { cube* cn = new_cube(var); set_false(cn, i); add_cube(result, cn); } else if (value == f) { cube* cn = new_cube(var); set_true(cn, i); add_cube(result, cn); } } return result; }
int main (int argc, char ** argv) { KR_API * db; KRNET_API isp; char * ip; int opt; char * datafile = NULL; short onlyisp = 0; short onlynation = 0; short printrange = 0; short printtype = KRISP_GET_COUNTRY; bool verbose = false; char err[1024]; #ifdef HAVE_GETOPT_LONG while ( (opt = getopt_long (argc, argv, "f:hinr:v", long_options, (int *) 0)) != EOF ) { #else while ( (opt = getopt (argc, argv, "f:hinr:v")) != EOF ) { #endif switch (opt) { case 'f' : datafile = optarg; break; case 'i' : if ( onlynation > 0 ) { fprintf (stderr, "ERROR: Can't use -n option and -i option togather\n"); return 1; } onlyisp++; break; case 'n' : if ( onlyisp > 0 ) { fprintf (stderr, "ERROR: Can't use -n option and -i option togather\n"); return 1; } onlynation++; break; case 'r' : printrange++; if ( ! strcasecmp ("country", optarg) ) printtype = KRISP_GET_COUNTRY; else if ( ! strcasecmp ("isp", optarg) ) printtype = KRISP_GET_ISP; else { fprintf (stderr, "ERROR: Wrong value of -r option\n"); return 1; } break; case 'v' : set_true (verbose); break; default: usage (PNAME); } } if ( argc - optind < 1 || argc == 1 ) { usage (PNAME); return 1; } #ifdef _WIN32 { WORD wVerReq = MAKEWORD (2, 2); // Call WinSock 2.2 WSADATA wsaData; int nErrStatus; if ( (nErrStatus = WSAStartup (wVerReq, &wsaData)) != 0 ) { fprintf (stderr, "Error: Failed initialize WSAStartup\n"); return 1; } } #endif /* database open */ if ( kr_open (&db, datafile, err) == false ) { fprintf (stderr, "ERROR Connect: %s\n", err); WSA_Cleanup; return 1; } db->db_time_stamp_interval = 0; isp.verbose = verbose; db->verbose = verbose; ip = argv[optind]; SAFECPY_256 (isp.ip, ip); if ( kr_search (&isp, db) ) { fprintf (stderr, "ERROR: %s\n", isp.err); kr_close (&db); WSA_Cleanup; return 1; } if ( verbose ) fprintf (stderr, "\n"); if ( strlen (isp.err) ) printf ("Error: %s\n", isp.err); if ( onlyisp ) { printf ("%s\n", isp.icode); } else if ( onlynation ) { printf ("%s\n", isp.ccode); } else { #ifdef HAVE_ICONV_H char * lcharset; iconv_t cd; char * ispname, * to; size_t flen, tlen; char * srcname = (char *) isp.iname; #if defined _WIN32 lcharset = "CP949"; #else lcharset = confirm_local_charset (); #endif flen = strlen (srcname); if ( lcharset == NULL || ! strcmp (DB_CHARSET, lcharset) ) { tlen = 1; cd = (iconv_t)(-1); } else { tlen = ! strcmp (lcharset, "UTF8") ? flen * 4 + 1 : flen + 1; cd = iconv_open (lcharset, DB_CHARSET); } if ( cd == (iconv_t)(-1) ) { ispname = strdup (isp.iname); goto noconvert; } if ( (ispname = (char *) malloc (sizeof (char) * tlen)) == NULL ) { ispname = strdup (isp.iname); goto noconvert; } memset (ispname, 0, sizeof (char) * tlen); to = ispname; iconv (cd, &srcname, &flen, &to, &tlen); switch ( errno ) { case E2BIG : case EILSEQ : case EINVAL : strcpy (ispname, isp.iname); break; } noconvert: printf ("%s (%s): %s (%s)\n", ip, isp.ip, ispname, isp.icode); #else printf ("%s (%s): %s (%s)\n", ip, isp.ip, isp.iname, isp.icode); #endif #ifdef HAVE_ICONV_H if ( cd != (iconv_t)(-1) ) iconv_close (cd); SAFEFREE (ispname); #endif printf ("SUBNET : %s\n", long2ip (isp.netmask)); printf ( "NETWORK : %s\n", long2ip (network (isp.start, isp.netmask)) ); printf ( "BROADCAST : %s\n", long2ip (broadcast(isp.start, isp.netmask)) ); printf ("DB RANGE : %s - ", long2ip (isp.start)); printf ("%s\n", long2ip (isp.end)); printf ("NATION : %s (%s)\n", isp.cname, isp.ccode); } if ( printrange ) { KRNET_REQ_RANGE range; int i; ulong mask; char start[16]; char end[16]; range.code = printtype; range.verbose = verbose; range.ranges = NULL; range.count = 0; SAFECPY_1024 ( range.data, (printtype == KRISP_GET_COUNTRY) ? isp.ccode : isp.iname ); if ( kr_range (&range, db) ) { fprintf (stderr, "ERROR: %s\n", range.err); SAFEFREE (range.ranges); kr_close (&db); WSA_Cleanup; return 1; } printf ( "\nRange Traget: %s (%d line%s)\n\n", range.data, range.count, range.count ? "s" : "" ); for ( i=0; i<range.count; i++ ) { long2ip_r (range.ranges[i].start, start); mask = guess_netmask (range.ranges[i].start, range.ranges[i].end); if ( network (range.ranges[i].start, mask) == range.ranges[i].start ) printf ("%s/%d\n", start, long2prefix (mask)); else printf ("%s %s\n", start, long2ip_r (range.ranges[i].end, end)); } SAFEFREE (range.ranges); printf ("\n"); } /* database close */ kr_close (&db); WSA_Cleanup; return 0; }