Ejemplo n.º 1
0
def check_wellformedness(context_, target, node_):
    ris = get_roleinstantiation_children(node_)

    tree = context_.get_visible_global(target)
    rparamlist = roledecllist_get_roledecl_children(
                     globalprotocoldecl_get_roledecllist_child(tree))

    # Section 4.6.3 -- lengts of role-instantiation-list and target
    # role-decl-list are the same
    if len(ris) != len(rparamlist):
        util.report_error("Bad number of role arguments, expected: " + \
                          str(len(rparamlist)))

    croles = context_.get_roles()
    rparams = rparamlist.__iter__()
    rolemap = {}  # params -> args (as strings --
                  # maybe should do ROLE node_, as for argmap)
    for ri in ris:
        ours = roleinstantiation_get_arg(ri)
        next = rparams.next()
        theirs = roledecl_get_role_name(next)
        # Section 4.6.3 -- every role argument is bound and distinct
        if (ours not in croles) or ours in rolemap.values():
            util.report_error("Bad role argument: " + ours)
        if roleinstantiation_has_parameter_child(ri):
            tmp = roleinstantiation_get_parameter(ri)
            if theirs != tmp: 
                # Section 4.6.3 -- every instantiation parameter corresponds to
                # the declared parameter in the protocol declaration
                util.report_error("Bad role parameter: " + theirs + ", " +tmp)
        rolemap[roledecl_get_declaration_name(next)] = ours

    return rolemap
Ejemplo n.º 2
0
def check_wellformedness(context_, target, node_):
    ris = get_roleinstantiation_children(node_)

    tree = context_.get_visible_global(target)
    rparamlist = roledecllist_get_roledecl_children(
                     globalprotocoldecl_get_roledecllist_child(tree))

    # Section 4.6.3 -- lengts of role-instantiation-list and target
    # role-decl-list are the same
    if len(ris) != len(rparamlist):
        util.report_error("Bad number of role arguments, expected: " + \
                          str(len(rparamlist)))

    croles = context_.get_roles()
    rparams = rparamlist.__iter__()
    rolemap = {}  # params -> args (as strings --
                  # maybe should do ROLE node_, as for argmap)
    for ri in ris:
        ours = roleinstantiation_get_arg(ri)
        next = rparams.next()
        theirs = roledecl_get_role_name(next)
        # Section 4.6.3 -- every role argument is bound and distinct
        if (ours not in croles) or ours in rolemap.values():
            util.report_error("Bad role argument: " + ours)
        if roleinstantiation_has_parameter_child(ri):
            tmp = roleinstantiation_get_parameter(ri)
            if theirs != tmp: 
                # Section 4.6.3 -- every instantiation parameter corresponds to
                # the declared parameter in the protocol declaration
                util.report_error("Bad role parameter: " + theirs + ", " +tmp)
        rolemap[roledecl_get_declaration_name(next)] = ours

    return rolemap
Ejemplo n.º 3
0
def _project_all(context_):
    for _, module_ in context_.get_modules().items():
        clone = context_.set_current_module(module_get_full_name(module_))
        clone = build_visibility(clone, module_)
        for (proto, gpd) in clone.get_visible_globals().items():
            full_global_name = globalprotocoldecl_get_full_name(gpd)
            rdl = globalprotocoldecl_get_roledecllist_child(gpd)
            #rolemap = roledecllist_get_rolemap(rdl) 
            #for role_ in globalprotocoldecl_get_role_names(gpd):
            for rd in roledecllist_get_roledecl_children(rdl):
                dname = roledecl_get_declaration_name(rd)
                role_ = roledecl_get_role_name(rd)
                full_local_name = globaldo_get_projected_member_name(
                                      full_global_name, role_)
                                      #full_global_name, rolemap[role_])
                if context_.has_projection(full_local_name):
                    break
                projector = Projector()
                lpd = projector.project_globalprotocoldecl(clone, gpd, dname)#, rolemap)
                #full_name = lpd.get_full_name(clone)
                context_ = context_.add_projection(full_local_name, lpd)
                
                #print "Projected", full_global_name, "for", role_ + ":\n", \
                #      lpd.pretty_print()
    return context_
Ejemplo n.º 4
0
def get_rolemap(node_):
    rolemap = {}
    for rd in get_roledecl_children(node_):
        alias = roledecl_get_alias_name(rd)
        name = roledecl_get_role_name(rd)
        if alias:
            rolemap[alias] = name
            #rolemap[name] = alias
        else:
            rolemap[name] = name
    return rolemap
Ejemplo n.º 5
0
def get_rolemap(node_):
    rolemap = {}
    for rd in get_roledecl_children(node_):
        alias = roledecl_get_alias_name(rd)
        name = roledecl_get_role_name(rd)
        if alias:
            rolemap[alias] = name
            #rolemap[name] = alias
        else:
            rolemap[name] = name
    return rolemap
Ejemplo n.º 6
0
def get_target_parameter(rd_list, ri_list, rolearg):
    roleparam = None
    rd_iter = roledecllist_get_roledecl_children(rd_list).__iter__()
    for ri in roleinstantiationlist_get_roleinstantiation_children(ri_list):
        rd = rd_iter.next()
        if roleinstantiation_get_arg(ri) == rolearg:
            if roleinstantiation_get_parameter_child(ri):
                roleparam = roleinstantiation_get_parameter(ri)
            else:
                roleparam = roledecl_get_role_name(rd)
                # actually, this else case subsumes the first case
            break
    return roleparam
Ejemplo n.º 7
0
def get_target_parameter(rd_list, ri_list, rolearg):
    roleparam = None
    rd_iter = roledecllist_get_roledecl_children(rd_list).__iter__()
    for ri in roleinstantiationlist_get_children(ri_list):
        rd = rd_iter.next()
        if roleinstantiation_get_arg(ri) == rolearg:
            if roleinstantiation_get_parameter_child(ri):
                roleparam = roleinstantiation_get_parameter(ri)
            else:
                roleparam = roledecl_get_role_name(rd)
                # actually, this else case subsumes the first case
            break
    return roleparam
Ejemplo n.º 8
0
 def get_target_parameter(self, context_):
     gpd = context_.get_visible_global(self.get_target())
     ri_list = self.get_roleinstantiations()
     rolearg = self.local_role
     rd_list = globalprotocoldecl_get_roledecllist_child(gpd)
     roleparam = None
     rd_iter = roledecllist_get_roledecl_children(rd_list).__iter__()
     for (a, p) in ri_list:
         rd = rd_iter.next()
         if a == rolearg:
             if p:
                 roleparam = p
             else:
                 roleparam = roledecl_get_role_name(rd)
                 # actually, this else case subsumes the first case
             break
     return roleparam
Ejemplo n.º 9
0
 def get_target_parameter(self, context_):
     gpd = context_.get_visible_global(self.get_target())
     ri_list = self.get_roleinstantiations()
     rolearg = self.local_role
     rd_list = globalprotocoldecl_get_roledecllist_child(gpd)
     roleparam = None
     rd_iter = roledecllist_get_roledecl_children(rd_list).__iter__()
     for (a, p) in ri_list:
         rd = rd_iter.next()
         if a == rolearg:
             if p:
                 roleparam = p
             else:
                 roleparam = roledecl_get_role_name(rd)
                 # actually, this else case subsumes the first case
             break
     return roleparam
Ejemplo n.º 10
0
def get_role_names(node_):
    # Not aliases (for projection and role instantiation)
    roles = []
    for rd in get_roledecl_children(node_):
        roles.append(roledecl_get_role_name(rd))
    return roles
Ejemplo n.º 11
0
def get_role_names(node_):
    # Not aliases (for projection and role instantiation)
    roles = []
    for rd in get_roledecl_children(node_):
        roles.append(roledecl_get_role_name(rd))
    return roles