Exemplo n.º 1
0
    def __init__(self, desc):
        if type(desc) is not types.IntType: raise CORBA.INTERNAL()
        if desc not in [
                tv_null, tv_void, tv_short, tv_long, tv_ushort, tv_ulong,
                tv_float, tv_double, tv_boolean, tv_char, tv_octet, tv_any,
                tv_TypeCode, tv_Principal, tv_longlong, tv_ulonglong,
                tv_longdouble, tv_wchar
        ]:
            raise CORBA.INTERNAL()

        self._d = desc
        self._k = CORBA.TCKind._item(desc)
Exemplo n.º 2
0
 def __init__(self, desc, parent):
     if type(desc) is not types.TupleType or \
        desc[0] != tv_value_box:
         raise CORBA.INTERNAL()
     self._d = desc
     self._k = CORBA.tk_value_box
     self._p = parent
Exemplo n.º 3
0
 def __init__(self, desc):
     if type(desc) is not types.TupleType or \
        desc[0] not in [ tv_objref,
                         tv_abstract_interface,
                         tv_local_interface ]:
         raise CORBA.INTERNAL()
     self._d = desc
     self._k = CORBA.TCKind._items[desc[0]]
Exemplo n.º 4
0
 def __init__(self, desc):
     if type(desc) is not types.TupleType or \
        desc[0] != tv_enum:
         raise CORBA.INTERNAL()
     self._d = desc
     self._k = CORBA.tk_enum
Exemplo n.º 5
0
def createTypeCode(d, parent=None):
    try:
        r = basicTypeCodes.get(d)
        if r is not None:
            return r
    except TypeError:
        # Happens if d contains a mutable object
        pass

    if type(d) is not types.TupleType:
        raise CORBA.INTERNAL()

    k = d[0]

    if k == tv_string: return TypeCode_string(d)
    elif k == tv_wstring: return TypeCode_wstring(d)
    elif k == tv_fixed: return TypeCode_fixed(d)

    elif k in [tv_objref, tv_abstract_interface, tv_local_interface]:
        tc = typeCodeMapping.get(d[1])
        if tc is None:
            tc = TypeCode_objref(d)
        return tc

    elif k == tv_struct:
        tc = typeCodeMapping.get(d[2])
        if tc is None:
            tc = TypeCode_struct(d, parent)
        return tc

    elif k == tv_union:
        tc = typeCodeMapping.get(d[2])
        if tc is None:
            tc = TypeCode_union(d, parent)
        return tc

    elif k == tv_enum:
        tc = typeCodeMapping.get(d[1])
        if tc is None:
            tc = TypeCode_enum(d)
        return tc

    elif k == tv_sequence:
        return TypeCode_sequence(d, parent)
    elif k == tv_array:
        return TypeCode_array(d, parent)

    elif k == tv_alias:
        tc = typeCodeMapping.get(d[1])
        if tc is None:
            tc = TypeCode_alias(d, parent)
        return tc

    elif k == tv_except:
        tc = typeCodeMapping.get(d[2])
        if tc is None:
            tc = TypeCode_except(d, parent)
        return tc

    elif k == tv_value:
        tc = typeCodeMapping.get(d[2])
        if tc is None:
            tc = TypeCode_value(d, parent)
        return tc

    elif k == tv_value_box:
        tc = typeCodeMapping.get(d[2])
        if tc is None:
            tc = TypeCode_value_box(d, parent)
        return tc

    elif k == tv__indirect:
        if type(d[1][0]) == types.StringType:
            nd = omniORB.findType(d[1][0])
            if nd is None:
                raise CORBA.BAD_TYPECODE(
                    omniORB.BAD_TYPECODE_InvalidIndirection,
                    CORBA.COMPLETED_NO)
            d[1][0] = nd
        return createTypeCode(d[1][0], parent)

    raise CORBA.INTERNAL()
Exemplo n.º 6
0
def r_getCompactDescriptor(d, seen, ind):
    if type(d) is types.TupleType:
        k = d[0]
    else:
        k = d

    if k == tv_short: r = d
    elif k == tv_long: r = d
    elif k == tv_ushort: r = d
    elif k == tv_ulong: r = d
    elif k == tv_float: r = d
    elif k == tv_double: r = d
    elif k == tv_boolean: r = d
    elif k == tv_char: r = d
    elif k == tv_octet: r = d
    elif k == tv_any: r = d
    elif k == tv_TypeCode: r = d
    elif k == tv_Principal: r = d
    elif k == tv_string: r = d
    elif k == tv_objref: r = d
    elif k == tv_longlong: r = d
    elif k == tv_ulonglong: r = d
    elif k == tv_longdouble: r = d

    elif k == tv_struct:
        c = list(d)
        c[3] = ""
        for i in range(4, len(c), 2):
            c[i] = ""
            c[i + 1] = r_getCompactDescriptor(d[i + 1], seen, ind)

        r = tuple(c)
        seen[d[2]] = r
        seen[id(d)] = r

    elif k == tv_union:
        c = list(d)
        c[3] = ""
        c[4] = r_getCompactDescriptor(d[4], seen, ind)

        m = []
        for u in d[6]:
            m.append((u[0], "", r_getCompactDescriptor(u[2], seen, ind)))

        c[6] = tuple(m)

        if d[7] is not None:
            c[7] = (d[7][0], "", r_getCompactDescriptor(d[7][2], seen, ind))

        r = tuple(c)
        seen[d[2]] = r
        seen[id(d)] = r

    elif k == tv_enum:
        m = []
        for e in d[3]:
            m.append(omniORB.AnonymousEnumItem(e._v))
        r = (k, d[1], "", tuple(m))

    elif k == tv_sequence:
        r = (k, r_getCompactDescriptor(d[1], seen, ind), d[2])

    elif k == tv_array:
        r = (k, r_getCompactDescriptor(d[1], seen, ind), d[2])

    elif k == tv_alias:
        r = (k, d[1], "", r_getCompactDescriptor(d[3], seen, ind))

    elif k == tv_except:
        c = list(d)
        c[3] = ""
        for i in range(4, len(c), 2):
            c[i] = ""
            c[i + 1] = r_getCompactDescriptor(d[i + 1], seen, ind)

        r = tuple(c)

    elif k == tv_value:
        c = list(d)
        c[3] = ""
        for i in range(7, len(c), 3):
            c[i] = ""
            c[i + 1] = r_getCompactDescriptor(d[i + 1], seen, ind)

        r = tuple(c)
        seen[d[2]] = r
        seen[id(d)] = r

    elif k == tv_value_box:
        c = list(d)
        c[3] = ""
        c[4] = r_getCompactDescriptor(d[4], seen, ind)
        r = tuple(c)
        seen[d[2]] = r
        seen[id(d)] = r

    elif k == tv_abstract_interface:
        r = d

    elif k == tv_local_interface:
        r = d

    elif k == tv__indirect:
        l = [d[1][0]]
        ind.append(l)
        r = (k, l)

    else:
        raise CORBA.INTERNAL()

    return r