# class WIN32OLE::Param

### Public Class Methods

new(method, n) → WIN32OLE_PARAM object click to toggle source

Returns WIN32OLE_PARAM object which represents OLE parameter information. 1st argument should be WIN32OLE_METHOD object. 2nd argument ‘n’ is n-th parameter of the method specified by 1st argument.

    tobj = WIN32OLE_TYPE.new('Microsoft Scripting Runtime', 'IFileSystem')
    method = WIN32OLE_METHOD.new(tobj, 'CreateTextFile')
    param = WIN32OLE_PARAM.new(method, 2) # => #<WIN32OLE_PARAM:Overwrite=true>

    static VALUE
    foleparam_initialize(VALUE self, VALUE olemethod, VALUE n)
    {
        int idx;
        if (!rb_obj_is_kind_of(olemethod, cWIN32OLE_METHOD)) {
            rb_raise(rb_eTypeError, "1st parameter must be WIN32OLE_METHOD object");
        }
        idx = RB_FIX2INT(n);
        return oleparam_ole_param(self, olemethod, idx);
    }

### Public Instance Methods

WIN32OLE_PARAM#default click to toggle source

Returns default value. If the default value does not exist, this method returns nil.

    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
    method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
    method.params.each do |param|
      if param.default
        puts "#{param.name} (= #{param.default})"
      else
        puts "#{param}"
      end
    end

    The above script result is following:
        Filename
        FileFormat
        Password
        WriteResPassword
        ReadOnlyRecommended
        CreateBackup
        AccessMode (= 1)
        ConflictResolution
        AddToMru
        TextCodepage
        TextVisualLayout

    static VALUE
    foleparam_default(VALUE self)
    {
        struct oleparamdata *pparam;
        TypedData_Get_Struct(self, struct oleparamdata, &oleparam_datatype, pparam);
        return ole_param_default(pparam->pTypeInfo, pparam->method_index,
                                 pparam->index);
    }

WIN32OLE_PARAM#input? click to toggle source

Returns true if the parameter is input.

    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
    method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
    param1 = method.params[0]
    puts param1.input? # => true

    static VALUE
    foleparam_input(VALUE self)
    {
        struct oleparamdata *pparam;
        TypedData_Get_Struct(self, struct oleparamdata, &oleparam_datatype, pparam);
        return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
                                   pparam->index, PARAMFLAG_FIN);
    }

WIN32OLE_PARAM#inspect → String click to toggle source

Returns the parameter name with class name. If the parameter has default value, then returns name=value string with class name.

    static VALUE
    foleparam_inspect(VALUE self)
    {
        VALUE detail = foleparam_name(self);
        VALUE defval = foleparam_default(self);
        if (defval != Qnil) {
            rb_str_cat2(detail, "=");
            rb_str_concat(detail, rb_inspect(defval));
        }
        return make_inspect("WIN32OLE_PARAM", detail);
    }

WIN32OLE_PARAM#name click to toggle source

Returns name.

    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
    method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
    param1 = method.params[0]
    puts param1.name # => Filename

    static VALUE
    foleparam_name(VALUE self)
    {
        return rb_ivar_get(self, rb_intern("name"));
    }

Also aliased as: to_s
WIN32OLE_PARAM#ole_type click to toggle source

Returns OLE type of WIN32OLE_PARAM object(parameter of OLE method).

    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
    method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
    param1 = method.params[0]
    puts param1.ole_type # => VARIANT

    static VALUE
    foleparam_ole_type(VALUE self)
    {
        struct oleparamdata *pparam;
        TypedData_Get_Struct(self, struct oleparamdata, &oleparam_datatype, pparam);
        return ole_param_ole_type(pparam->pTypeInfo, pparam->method_index,
                                  pparam->index);
    }

WIN32OLE_PARAM#ole_type_detail click to toggle source

Returns detail information of type of argument.

    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'IWorksheetFunction')
    method = WIN32OLE_METHOD.new(tobj, 'SumIf')
    param1 = method.params[0]
    p param1.ole_type_detail # => ["PTR", "USERDEFINED", "Range"]

    static VALUE
    foleparam_ole_type_detail(VALUE self)
    {
        struct oleparamdata *pparam;
        TypedData_Get_Struct(self, struct oleparamdata, &oleparam_datatype, pparam);
        return ole_param_ole_type_detail(pparam->pTypeInfo, pparam->method_index,
                                         pparam->index);
    }

WIN32OLE_PARAM#optional? click to toggle source

Returns true if argument is optional.

    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
    method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
    param1 = method.params[0]
    puts "#{param1.name} #{param1.optional?}" # => Filename true

    static VALUE
    foleparam_optional(VALUE self)
    {
        struct oleparamdata *pparam;
        TypedData_Get_Struct(self, struct oleparamdata, &oleparam_datatype, pparam);
        return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
                                   pparam->index, PARAMFLAG_FOPT);
    }

WIN32OLE#output? click to toggle source

Returns true if argument is output.

    tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'DWebBrowserEvents')
    method = WIN32OLE_METHOD.new(tobj, 'NewWindow')
    method.params.each do |param|
      puts "#{param.name} #{param.output?}"
    end

    The result of above script is following:
      URL false
      Flags false
      TargetFrameName false
      PostData false
      Headers false
      Processed true

    static VALUE
    foleparam_output(VALUE self)
    {
        struct oleparamdata *pparam;
        TypedData_Get_Struct(self, struct oleparamdata, &oleparam_datatype, pparam);
        return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
                                   pparam->index, PARAMFLAG_FOUT);
    }

WIN32OLE_PARAM#retval? click to toggle source

Returns true if argument is return value.

    tobj = WIN32OLE_TYPE.new('DirectX 7 for Visual Basic Type Library',
                             'DirectPlayLobbyConnection')
    method = WIN32OLE_METHOD.new(tobj, 'GetPlayerShortName')
    param = method.params[0]
    puts "#{param.name} #{param.retval?}"  # => name true

    static VALUE
    foleparam_retval(VALUE self)
    {
        struct oleparamdata *pparam;
        TypedData_Get_Struct(self, struct oleparamdata, &oleparam_datatype, pparam);
        return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
                                   pparam->index, PARAMFLAG_FRETVAL);
    }

WIN32OLE_PARAM#name

Returns name.

    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
    method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
    param1 = method.params[0]
    puts param1.name # => Filename

Alias for: name