Exemple #1
0
static void
js_item_eventsub(void *opaque, prop_event_t event, ...)
{
  js_item_t *ji = opaque;
  va_list ap;

  va_start(ap, event);

  switch(event) {
  default:
    break;

  case PROP_DESTROYED:
    js_event_destroy_handlers(ji->ji_model->jm_cx, &ji->ji_event_handlers);
    prop_unsubscribe(ji->ji_eventsub);
    ji->ji_eventsub = NULL;
    ji->ji_model->jm_subs--;
    JS_RemoveRoot(ji->ji_model->jm_cx, &ji->ji_this);
    prop_tag_clear(ji->ji_root, ji->ji_model);
    break;

  case PROP_EXT_EVENT:
    js_event_dispatch(ji->ji_model->jm_cx, &ji->ji_event_handlers,
		      va_arg(ap, event_t *), JSVAL_TO_OBJECT(ji->ji_this));
    break;
  }
  va_end(ap);
}
Exemple #2
0
static void
js_clear_props(jni_subscription_t *js)
{
  jni_prop_t *jp;
  while((jp = LIST_FIRST(&js->js_props)) != NULL) {
    prop_tag_clear(jp->jp_prop, js);
    jni_property_unexport_from_sub(js, jp);
  }
}
Exemple #3
0
static void
src_cb(void *opaque, prop_event_t event, ...)
{
  prop_reorder_t *pr = opaque;
  va_list ap;
  prop_t *p, *out;
  prop_vec_t *pv;
  int i;

  va_start(ap, event);

  switch(event) {
  case PROP_ADD_CHILD:
  case PROP_ADD_CHILD_BEFORE:
    add_child(pr, va_arg(ap, prop_t *));
    break;

  case PROP_ADD_CHILD_VECTOR:
  case PROP_ADD_CHILD_VECTOR_DIRECT:
    pv = va_arg(ap, prop_vec_t *);
    for(i = 0; i < prop_vec_len(pv); i++)
      add_child(pr, prop_vec_get(pv, i));
    break;

  case PROP_DEL_CHILD:
    p = va_arg(ap, prop_t *);
    out = prop_tag_clear(p, pr);
    prop_destroy0(out);
    break;

  case PROP_MOVE_CHILD:
    break;

  case PROP_SET_VOID:
    break;

  case PROP_SET_DIR:
  case PROP_REQ_DELETE_VECTOR:
  case PROP_HAVE_MORE_CHILDS_YES:
  case PROP_HAVE_MORE_CHILDS_NO:
  case PROP_WANT_MORE_CHILDS:
    break;

  default:
    printf("Cant handle event %d\n", event);
    abort();
  }
}
Exemple #4
0
static void
src_cb(void *opaque, prop_event_t event, ...)
{
  prop_concat_source_t *pcs = opaque;
  prop_concat_t *pc = pcs->pcs_pc;
  prop_t *p, *q, *out, *before;
  va_list ap;
  va_start(ap, event);

  switch(event) {
  case PROP_ADD_CHILD:
    p = va_arg(ap, prop_t *);
    out = prop_create_root(NULL);
    prop_tag_set(p, pcs, out);
    prop_link0(p, out, NULL, 0);

    prop_set_parent0(out, pc->pc_dst, find_next_out(pcs), NULL);

    if(pcs->pcs_count == 0) {
      pcs->pcs_first = out;
      if(pcs->pcs_header != NULL)
	prop_set_parent0(pcs->pcs_header, pc->pc_dst, out, NULL);
    }
    pcs->pcs_count++;
    break;

  case PROP_ADD_CHILD_BEFORE:
    p = va_arg(ap, prop_t *);
    out = prop_create_root(NULL);
    prop_tag_set(p, pcs, out);
    prop_link0(p, out, NULL, 0);

    q = va_arg(ap, prop_t *);
    before = prop_tag_get(q, pcs);
    assert(before != NULL);
    prop_set_parent0(out, pc->pc_dst, before, NULL);
    
    pcs->pcs_count++;
    break;

    


  case PROP_DEL_CHILD:
    p = va_arg(ap, prop_t *);
    out = prop_tag_clear(p, pcs);
    before = TAILQ_NEXT(out, hp_parent_link);
    prop_destroy0(out);

    pcs->pcs_count--;
    if(pcs->pcs_count == 0) {
      pcs->pcs_first = NULL;
      if(pcs->pcs_header != NULL)
	prop_unparent0(pcs->pcs_header, NULL);
    } else if(pcs->pcs_first == out) {
      pcs->pcs_first = before;
    }

    break;

  case PROP_MOVE_CHILD:
    p = va_arg(ap, prop_t *);
    q = va_arg(ap, prop_t *);
    prop_move0(prop_tag_get(p, pcs),
	       q != NULL ? prop_tag_get(q, pcs) : find_next_out(pcs), NULL);
    break;

  case PROP_SET_VOID:
    break;

  case PROP_SET_DIR:
  case PROP_REQ_DELETE_VECTOR:
  case PROP_HAVE_MORE_CHILDS:
  case PROP_WANT_MORE_CHILDS:
    break;

  default:
    printf("Cant handle event %d\n", event);
    abort();
  }
}