Example #1
0
void tst_model_retrieval()
{          
    memory::initialize(0);
    front_end_params params;
    params.m_model = true;


    ast_manager m;
    m.register_decl_plugins();

    family_id array_fid = m.get_family_id(symbol("array"));
    array_util au(m);
    array_decl_plugin& ad = *static_cast<array_decl_plugin *>(m.get_plugin(array_fid));


    // arr_s and select_fn creation copy-pasted from z3.cpp

    parameter sparams[2]  = { parameter(to_sort(m.mk_bool_sort())), parameter(to_sort(m.mk_bool_sort())) };
    sort_ref arr_s(m.mk_sort(array_fid, ARRAY_SORT, 2, sparams), m);

    sort * domain2[2] = {arr_s, m.mk_bool_sort()};
    func_decl_ref select_fn(
        m.mk_func_decl(array_fid, OP_SELECT, 2, arr_s->get_parameters(), 2, domain2), m);


    app_ref a1(m.mk_const(symbol("a1"), arr_s), m);
    app_ref a2(m.mk_const(symbol("a2"), arr_s), m);

    // (= true (select a1 true))
    app_ref fml(m.mk_eq(m.mk_true(),
        m.mk_app(select_fn.get(), a1, m.mk_true())), m);

    smt::context ctx(m, params);
    ctx.assert_expr(fml);
    lbool check_result = ctx.check();
    std::cout<<((check_result==l_true) ? "satisfiable" : 
                (check_result==l_false) ? "unsatisfiable" : "unknown")<<"\n";
    ref<model> model;
    ctx.get_model(model);
    model_v2_pp(std::cout, *model, false);
    expr_ref a1_val(model->get_const_interp(a1->get_decl()), m);

    app_ref fml2(m.mk_eq(a2, a1_val), m);
    ctx.assert_expr(fml2);
    std::cout<<"--------------------------\n";
    ctx.display(std::cout);
    std::cout<<"--------------------------\n";
    check_result = ctx.check();
    ctx.display(std::cout);
    std::cout<<"--------------------------\n";
    std::cout<<((check_result==l_true) ? "satisfiable" : 
                (check_result==l_false) ? "unsatisfiable" : "unknown")<<"\n";
}
Example #2
0
bool ButtonComponent::mouseUp( ci::app::MouseEvent &event, const MatrixAffine2f &world_transform )
{
  bool selected = false;
  _tracked_touch = 0;
  if( contains( event.getPos(), world_transform ) )
    selected = true;

  _is_hovering = false;
  if( selected && select_fn )
  {
    select_fn();
  }

  return false;
}
Example #3
0
bool ButtonComponent::touchesEnded( ci::app::TouchEvent &event, const MatrixAffine2f &world_transform )
{
  bool selected = false;
  for( auto &touch : event.getTouches() )
  {
    if( touch.getId() == _tracked_touch )
    {
      _tracked_touch = 0; // reset tracked touch
      _is_hovering = false;
      if( contains( touch.getPos(), world_transform ) )
      {
        selected = true;
        break;
      }
    }
  }

  if( selected && select_fn )
  { // call function last, as it may destroy this object
    select_fn();
  }
  return false;
}
Example #4
0
static struct resource_struct *get_next_ftp_noname(struct resource_struct *p, unsigned char type, void **index, unsigned char (*select_fn)(struct resource_struct *p, struct resource_struct *r, char *name, unsigned char type))
{
    struct resource_struct *r=NULL;

    if (type==FTP_TYPE_NETWORK) {

	/* there is one ftp network resource for all net workspaces/users */

	r=&ftp_network_resource;

    } else if (type==FTP_TYPE_SERVER) {
	int hashvalue=0;

	while(hashvalue<server_list.len && ! r) {

	    /* lookup in workgroup list */

	    r=get_next_element(&server_list, index, hashvalue);

	    while(r) {

		if (select_fn(p, r, NULL, type)==1) break;
		r=get_next_element(&server_list, index, hashvalue);

	    }

	    if (!r) {

		/* jump to the next hash */

		*index=NULL;
		hashvalue++;

	    } else {

		break;

	    }

	}

    }

    return r;


struct resource_struct *get_next_ftp(struct resource_struct *p, char *name, unsigned char type, void **index, unsigned char (*select_fn)(struct resource_struct *p, struct resource_struct *r, char *name, unsigned char type))
{
    struct resource_struct *r=NULL;

    if (! select_fn) select_fn=default_select_fn;

    if (! name) {

	r=get_next_ftp_noname(p, type, index, select_fn);
	goto out;

    }

    if (type==FTP_TYPE_NETWORK) {

	/* there is one smb network resource for all net workspaces/users */

	r=&ftp_network_resource;

    } else if (type==FTP_TYPE_SERVER) {
	int hashvalue;

	hashvalue=calculate_ftp_hash(name);

	/* lookup in server list */

	r=get_next_element(server_list, &index, hashvalue);

	while(r) {

	    if (select_fn(p, r, name, type)==1) break;
	    r=get_next_element(server_list, index, hashvalue);

	}

    }

    out:

    return r;

}

int ftp_groupadd(struct resource_struct *resource)
{

    if (resource->type==FTP_TYPE_SERVER) {

	/* add resource to servers */

	add_element_to_group(&server_list, (void *) resource);

    }

    return 0;

}

int smb_groupremove(struct resource_struct *resource)
{

     if (resource->type==FTP_TYPE_SERVER) {

	/* remove resource from servers */

	remove_element_from_group(&server_list, (void *) resource);

    }

    return 0;

}

static struct group_calls_struct ftp_group_calls={
	.find_role		= find_role_ftp,
	.readrecord		= NULL,
	.init			= NULL,
	.add			= NULL,
	.change			= NULL,
	.remove			= NULL,
	.close			= NULL,
	.get_next		= get_next_ftp,
	.groupadd		= ftp_groupadd,
	.groupremove		= ftp_groupremove,
	.lock			= NULL,
	.unlock			= NULL,
};

void add_group_ftp()
{
    int res=0;

    init_resource_group(&ftp_resource_group);
    add_resource_group(RESOURCE_GROUP_FTP, &ftp_resource_group, &ftp_group_calls);

    create_ftp_network_resource();

    res=initialize_group(server_list, server_hashfunction, 256);

    /* read the config */

    read_ftp_config();

    /* init ftp network role */

    snprintf(ftp_network_role.name, 128, "remote.net.ftp.network");

    ftp_network_role.directory_file=NULL;

    ftp_network_role.group=RESOURCE_GROUP_FTP;
    ftp_network_role.type=FTP_TYPE_NETWORK;

    add_role_simple(&ftp_network_role);

    /* init ftp server role */

    snprintf(ftp_server_role.name, 128, "remote.net.ftp.server");

    ftp_server_role.directory_file=NULL;

    ftp_server_role.group=RESOURCE_GROUP_FTP;
    ftp_server_role.type=FTP_TYPE_SERVER;

    add_role_simple(&ftp_server_role);

}