コード例 #1
0
static void post_init(grib_accessor* a)
{
  grib_accessor_lookup* self = (grib_accessor_lookup*)a; 
  if(self->real_name )
    grib_dependency_observe_expression(a,self->real_name );

}
コード例 #2
0
ファイル: action_class_if.c プロジェクト: VibertJ/GribApi.NET
static int create_accessor( grib_section* p, grib_action* act, grib_loader *h)
{
    grib_action_if* a = (grib_action_if*)act;
    grib_action* next = NULL;
    int ret = 0;
    long lres=0;

    grib_accessor* as = NULL;
    grib_section*  gs = NULL;

    as = grib_accessor_factory(p, act,0,NULL);
    if(!as)return GRIB_INTERNAL_ERROR;
    gs = as->sub_section;
    grib_push_accessor(as,p->block);

    if ((ret=grib_expression_evaluate_long(p->h,a->expression,&lres)) != GRIB_SUCCESS)
        return ret;

    if(lres)
        next = a->block_true;
    else
        next = a->block_false;

    if(p->h->context->debug > 1)
    {
        printf("EVALUATE create_accessor_handle ");
        grib_expression_print(p->h->context,a->expression,p->h);
        printf(" [%s][_if%p]\n", (next == a->block_true ? "true":"false"), (void*)a);

        /*grib_dump_action_branch(stdout,next,5);*/
    }

    gs->branch = next;
    grib_dependency_observe_expression(as,a->expression);

    while(next){

        ret = grib_create_accessor(gs, next, h);
        if(ret != GRIB_SUCCESS) return ret;
        next= next->next;
    }

    return GRIB_SUCCESS;
}
コード例 #3
0
static void  add_dependency(grib_expression* g, grib_accessor* observer)
{
    grib_expression_binop* e = (grib_expression_binop*)g;
    grib_dependency_observe_expression(observer,e->left);
    grib_dependency_observe_expression(observer,e->right);
}
コード例 #4
0
static void  add_dependency(grib_expression* g, grib_accessor* observer){
	grib_expression_unop* e = (grib_expression_unop*)g;
	grib_dependency_observe_expression(observer,e->exp);
}
コード例 #5
0
static void  add_dependency(grib_expression* g, grib_accessor* observer){
  grib_expression_string_compare* e = (grib_expression_string_compare*)g;
  grib_dependency_observe_expression(observer,e->left);
  grib_dependency_observe_expression(observer,e->right);
}