Example #1
0
    def __out_declaration(self,stream):
        # build up the constructor argument list, the initialisation
        # list and the data members list
        if self.__exceptions:
            user_exceptions_decl = \
            "void userException(cdrStream&, _OMNI_NS(IOP_C)*, const char*);"
        else:
            user_exceptions_decl = ""

        in_arguments_decl = ""
        out_arguments_decl = ""
        if self.__has_in_args or self.__contexts:
            in_arguments_decl = "void marshalArguments(cdrStream&);\n" + \
                                "void unmarshalArguments(cdrStream&);\n"
        if self.__has_out_args or self.__has_return_value:
            out_arguments_decl = \
                              "void unmarshalReturnedValues(cdrStream&);\n" + \
                              "void marshalReturnedValues(cdrStream&);\n"
        data_members = []

        containsValues = 0
        for n, argument in enumerate(self.__arguments):
            ptype = argument.paramType()
            if idltype.containsValueType(ptype):
                if (isinstance(ptype, idltype.Declared) and
                    ptype.scopedName() == ["Messaging", "ExceptionHolder"]):
                    # We don't declare that Messaging::ExceptionHolder
                    # is a valuetype, to prevent unnecessary
                    # marshalling of it in _excep callbacks.
                    pass
                else:
                    containsValues = 1

            holder_n = "arg_" + str(n)
            argtype = types.Type(argument.paramType())
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(argtype,argument.direction())

            if s_is_var:
                storage = argtype._var()
            else:
                storage = argtype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

            if not s_is_holder:
                holder = argtype.base()
                if h_is_const:
                    holder = "const " + holder
                if argtype.array():
                    holder = holder + "_slice*"
                if h_is_ptr:
                    holder = holder + "*"
                if argtype.value() or argtype.valuebox():
                    holder = holder + "*"

                data_members.append(holder + " " + holder_n + ";")

        if self.__has_return_value:
            containsValues = (containsValues or
                              idltype.containsValueType(self.__returntype))

            returntype = types.Type(self.__returntype)
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(returntype,3)

            holder_n = "result"
            if s_is_var:
                storage = returntype._var()
            else:
                storage = returntype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

        if self.__contexts:
            data_members.append("::CORBA::Context_var ctxt;");

        if containsValues:
            contains_values = "containsValues(1);"
        else:
            contains_values = ""
        
        # Write the proxy class definition
        if self.__ami:
            tmpl = template.interface_proxy_class_ami
        else:
            tmpl = template.interface_proxy_class

        stream.out(tmpl,
                   signature = self.__signature,
                   call_descriptor = self.__name,
                   oneway = self.__oneway,
                   exn_len = len(self.__exceptions),
                   contains_values = contains_values,
                   in_arguments_decl = in_arguments_decl,
                   out_arguments_decl = out_arguments_decl,
                   user_exceptions_decl = user_exceptions_decl,
                   member_data = "\n".join(data_members))
Example #2
0
    def __out_declaration(self,stream):
        # build up the constructor argument list, the initialisation
        # list and the data members list
        ctor_args = ["LocalCallFn lcfn", "const char* op_", "size_t oplen",
                     "_CORBA_Boolean upcall=0" ]

        base_ctor = ("omniCallDescriptor(lcfn, op_, oplen, %s, _user_exns, "
                     "%d, upcall)" % (self.__oneway, len(self.__exceptions)))

        if self.__exceptions:
            user_exceptions_decl = \
            "void userException(cdrStream&,_OMNI_NS(IOP_C)*,const char*);"
        else:
            user_exceptions_decl = ""

        in_arguments_decl = ""
        out_arguments_decl = ""
        if self.__has_in_args or self.__contexts:
            in_arguments_decl = "void marshalArguments(cdrStream&);\n" + \
                                "void unmarshalArguments(cdrStream&);\n"
        if self.__has_out_args or self.__has_return_value:
            out_arguments_decl = \
                              "void unmarshalReturnedValues(cdrStream&);\n" + \
                              "void marshalReturnedValues(cdrStream&);\n"
        data_members = []
        n = -1
        containsValues = 0
        for argument in self.__arguments:
            containsValues = (containsValues or
                              idltype.containsValueType(argument.paramType()))
            n = n + 1
            holder_n = "arg_" + str(n)
            argtype = types.Type(argument.paramType())
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(argtype,argument.direction())

            if s_is_var:
                storage = argtype._var()
            else:
                storage = argtype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

            if not s_is_holder:
                holder = argtype.base()
                if h_is_const:
                    holder = "const " + holder
                if argtype.array():
                    holder = holder + "_slice*"
                if h_is_ptr:
                    holder = holder + "*"
                if argtype.value() or argtype.valuebox():
                    holder = holder + "*"

                data_members.append(holder + " " + holder_n + ";")

        if self.__has_return_value:
            containsValues = (containsValues or
                              idltype.containsValueType(self.__returntype))

            returntype = types.Type(self.__returntype)
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(returntype,3)

            holder_n = "result"
            if s_is_var:
                storage = returntype._var()
            else:
                storage = returntype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

        if self.__contexts:
            data_members.append("::CORBA::Context_var ctxt;");

        if containsValues:
            contains_values = "containsValues(1);"
        else:
            contains_values = ""
        
        # Write the proxy class definition
        stream.out(template.interface_proxy_class,
                   signature = self.__signature,
                   call_descriptor = self.__name,
                   ctor_args = string.join(ctor_args,","),
                   base_ctor = base_ctor,
                   contains_values = contains_values,
                   in_arguments_decl = in_arguments_decl,
                   out_arguments_decl = out_arguments_decl,
                   user_exceptions_decl = user_exceptions_decl,
                   member_data = string.join(data_members,"\n"))
Example #3
0
    def __out_declaration(self, stream):
        # build up the constructor argument list, the initialisation
        # list and the data members list
        if self.__exceptions:
            user_exceptions_decl = \
            "void userException(cdrStream&, _OMNI_NS(IOP_C)*, const char*);"
        else:
            user_exceptions_decl = ""

        in_arguments_decl = ""
        out_arguments_decl = ""
        if self.__has_in_args or self.__contexts:
            in_arguments_decl = "void marshalArguments(cdrStream&);\n" + \
                                "void unmarshalArguments(cdrStream&);\n"
        if self.__has_out_args or self.__has_return_value:
            out_arguments_decl = \
                              "void unmarshalReturnedValues(cdrStream&);\n" + \
                              "void marshalReturnedValues(cdrStream&);\n"
        data_members = []

        containsValues = 0
        for n, argument in enumerate(self.__arguments):
            ptype = argument.paramType()
            if idltype.containsValueType(ptype):
                if (isinstance(ptype, idltype.Declared) and ptype.scopedName()
                        == ["Messaging", "ExceptionHolder"]):
                    # We don't declare that Messaging::ExceptionHolder
                    # is a valuetype, to prevent unnecessary
                    # marshalling of it in _excep callbacks.
                    pass
                else:
                    containsValues = 1

            holder_n = "arg_" + str(n)
            argtype = types.Type(argument.paramType())
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(argtype,argument.direction())

            if s_is_var:
                storage = argtype._var()
            else:
                storage = argtype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

            if not s_is_holder:
                holder = argtype.base()
                if h_is_const:
                    holder = "const " + holder
                if argtype.array():
                    holder = holder + "_slice*"
                if h_is_ptr:
                    holder = holder + "*"
                if argtype.value() or argtype.valuebox():
                    holder = holder + "*"

                data_members.append(holder + " " + holder_n + ";")

        if self.__has_return_value:
            containsValues = (containsValues
                              or idltype.containsValueType(self.__returntype))

            returntype = types.Type(self.__returntype)
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(returntype,3)

            holder_n = "result"
            if s_is_var:
                storage = returntype._var()
            else:
                storage = returntype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

        if self.__contexts:
            data_members.append("::CORBA::Context_var ctxt;")

        if containsValues:
            contains_values = "containsValues(1);"
        else:
            contains_values = ""

        # Write the proxy class definition
        if self.__ami:
            tmpl = template.interface_proxy_class_ami
        else:
            tmpl = template.interface_proxy_class

        stream.out(tmpl,
                   signature=self.__signature,
                   call_descriptor=self.__name,
                   oneway=self.__oneway,
                   exn_len=len(self.__exceptions),
                   contains_values=contains_values,
                   in_arguments_decl=in_arguments_decl,
                   out_arguments_decl=out_arguments_decl,
                   user_exceptions_decl=user_exceptions_decl,
                   member_data="\n".join(data_members))
Example #4
0
    def __out_declaration(self, stream):
        # build up the constructor argument list, the initialisation
        # list and the data members list
        ctor_args = [
            "LocalCallFn lcfn", "const char* op_", "size_t oplen",
            "_CORBA_Boolean upcall=0"
        ]

        base_ctor = ("omniCallDescriptor(lcfn, op_, oplen, %s, _user_exns, "
                     "%d, upcall)" % (self.__oneway, len(self.__exceptions)))

        if self.__exceptions:
            user_exceptions_decl = \
            "void userException(cdrStream&,_OMNI_NS(IOP_C)*,const char*);"
        else:
            user_exceptions_decl = ""

        in_arguments_decl = ""
        out_arguments_decl = ""
        if self.__has_in_args or self.__contexts:
            in_arguments_decl = "void marshalArguments(cdrStream&);\n" + \
                                "void unmarshalArguments(cdrStream&);\n"
        if self.__has_out_args or self.__has_return_value:
            out_arguments_decl = \
                              "void unmarshalReturnedValues(cdrStream&);\n" + \
                              "void marshalReturnedValues(cdrStream&);\n"
        data_members = []
        n = -1
        containsValues = 0
        for argument in self.__arguments:
            containsValues = (containsValues or idltype.containsValueType(
                argument.paramType()))
            n = n + 1
            holder_n = "arg_" + str(n)
            argtype = types.Type(argument.paramType())
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(argtype,argument.direction())

            if s_is_var:
                storage = argtype._var()
            else:
                storage = argtype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

            if not s_is_holder:
                holder = argtype.base()
                if h_is_const:
                    holder = "const " + holder
                if argtype.array():
                    holder = holder + "_slice*"
                if h_is_ptr:
                    holder = holder + "*"
                if argtype.value() or argtype.valuebox():
                    holder = holder + "*"

                data_members.append(holder + " " + holder_n + ";")

        if self.__has_return_value:
            containsValues = (containsValues
                              or idltype.containsValueType(self.__returntype))

            returntype = types.Type(self.__returntype)
            ((h_is_const,h_is_ptr),\
             (s_is_holder,s_is_var)) = _arg_info(returntype,3)

            holder_n = "result"
            if s_is_var:
                storage = returntype._var()
            else:
                storage = returntype.base()
            storage_n = holder_n
            if not s_is_holder:
                storage_n = storage_n + "_"
            data_members.append(storage + " " + storage_n + ";")

        if self.__contexts:
            data_members.append("::CORBA::Context_var ctxt;")

        if containsValues:
            contains_values = "containsValues(1);"
        else:
            contains_values = ""

        # Write the proxy class definition
        stream.out(template.interface_proxy_class,
                   signature=self.__signature,
                   call_descriptor=self.__name,
                   ctor_args=string.join(ctor_args, ","),
                   base_ctor=base_ctor,
                   contains_values=contains_values,
                   in_arguments_decl=in_arguments_decl,
                   out_arguments_decl=out_arguments_decl,
                   user_exceptions_decl=user_exceptions_decl,
                   member_data=string.join(data_members, "\n"))