Esempio n. 1
0
def eval_ndp_approx_lower(r, context):
    from mcdp_lang.eval_ndp_imp import eval_ndp
    from mcdp_dp.dp_transformations import get_dp_bounds

    nl = r.level
    ndp = eval_ndp(r.ndp, context)
    dp = ndp.get_dp()
    mcdp_dev_warning('make it better')
    dpl, _ = get_dp_bounds(dp, nl, 1)

    fnames = ndp.get_fnames()
    rnames = ndp.get_rnames()
    rnames = rnames if len(rnames) > 1 else rnames[0]
    fnames = fnames if len(fnames) > 1 else fnames[0]
    ndp2 = SimpleWrap(dpl, fnames, rnames)
    return ndp2
Esempio n. 2
0
def eval_ndp_approx_lower(r, context):
    from mcdp_lang.eval_ndp_imp import eval_ndp
    from mcdp_dp.dp_transformations import get_dp_bounds

    nl = r.level
    ndp = eval_ndp(r.ndp, context)
    dp = ndp.get_dp()
    mcdp_dev_warning('make it better')
    dpl, _ = get_dp_bounds(dp, nl, 1)

    fnames = ndp.get_fnames()
    rnames = ndp.get_rnames()
    rnames = rnames if len(rnames) > 1 else rnames[0]
    fnames = fnames if len(fnames) > 1 else fnames[0]
    ndp2 = SimpleWrap(dpl, fnames, rnames)
    return ndp2
Esempio n. 3
0
    def specialize_(self, parameter_assignment, context):
        for v in parameter_assignment.values():
            check_isinstance(v, NamedDP)

        for k, v in self.parameters.items():

            if not k in parameter_assignment:
                msg = 'Parameter not specified.'
                raise_desc(DPSemanticError, msg, missing=k)
            
            proposed = parameter_assignment[k]
            try:
                check_same_interface(v,  proposed)
            except DifferentInterface as e:
                msg = ('Cannot specialize the template because '
                       'the interface is different.')
                raise_wrapped(DPSemanticError, e, msg,
                              interface=describe_interface(v),
                              proposed=describe_interface(proposed),
                              compact=True)
        
        if hasattr(self, MCDPConstants.ATTR_LOAD_LIBNAME):
            libname = getattr(self, MCDPConstants.ATTR_LOAD_LIBNAME)
            if libname is None:
                mcdp_dev_warning('Tmp fix: can this ever be none?')
                c = context.child()
            else:
                library = context.load_library(libname)
                c = library._generate_context_with_hooks()
        else:
            c = context.child()

        for k, v in parameter_assignment.items():
            c.var2model[k] = v

        from mcdp_lang.eval_ndp_imp import eval_ndp
        return eval_ndp(self.template_code, c)
Esempio n. 4
0
    def specialize_(self, parameter_assignment, context):
        for v in parameter_assignment.values():
            check_isinstance(v, NamedDP)

        for k, v in self.parameters.items():

            if not k in parameter_assignment:
                msg = 'Parameter not specified.'
                raise_desc(DPSemanticError, msg, missing=k)
            
            proposed = parameter_assignment[k]
            try:
                check_same_interface(v,  proposed)
            except DifferentInterface as e:
                msg = ('Cannot specialize the template because '
                       'the interface is different.')
                raise_wrapped(DPSemanticError, e, msg,
                              interface=describe_interface(v),
                              proposed=describe_interface(proposed),
                              compact=True)
        
        if hasattr(self, ATTR_LOAD_LIBNAME):
            libname = getattr(self, ATTR_LOAD_LIBNAME)
            if libname is None:
                mcdp_dev_warning('Tmp fix: can this ever be none?')
                c = context.child()
            else:
                library = context.load_library(libname)
                c = library._generate_context_with_hooks()
        else:
            c = context.child()

        for k, v in parameter_assignment.items():
            c.var2model[k] = v

        from mcdp_lang.eval_ndp_imp import eval_ndp
        return eval_ndp(self.template_code, c)