Class: SAPNW::RFC::Parameter
- Inherits:
-
Parameters::Base
- Object
- Parameters::Base
- SAPNW::RFC::Parameter
- Defined in:
- lib/sapnwrfc/parameters.rb
Overview
Base class for all Parameter types
Instance Attribute Summary (collapse)
-
- (Object) decimals
readonly
Returns the value of attribute decimals.
-
- (Object) direction
readonly
Returns the value of attribute direction.
-
- (Object) len
readonly
Returns the value of attribute len.
-
- (Object) name
readonly
Returns the value of attribute name.
-
- (Object) typdef
readonly
Returns the value of attribute typdef.
-
- (Object) type
readonly
Returns the value of attribute type.
-
- (Object) ulen
readonly
Returns the value of attribute ulen.
-
- (Object) value
Returns the value of attribute value.
Instance Method Summary (collapse)
-
- (Parameter) initialize(*parms)
constructor
constructor called only from the SAPNW::RFC::Connector#discover process def initialize(funcdesc, name, type, len, ulen, decimals).
-
- (Object) method_missing(methid, *rest, &block)
method_missing is used to pass on any method call to a parameter to the underlying native Ruby data type.
Constructor Details
- (Parameter) initialize(*parms)
constructor called only from the SAPNW::RFC::Connector#discover process def initialize(funcdesc, name, type, len, ulen, decimals)
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/sapnwrfc/parameters.rb', line 90 def initialize(*parms) parms = parms.first if parms.class == Array and parms.first.class == Hash case parms when Array # this way happens when the interface of the parameter has been discover()ed funcdesc, name, type, len, ulen, decimals, typedef = parms when Hash # This way happens when a parameter is being manually constructed raise "Missing parameter :name => #{parms.inspect}\n" unless parms.has_key?(:name) raise "Missing parameter :type => #{parms.inspect}\n" unless parms.has_key?(:type) case parms[:type] when SAPNW::RFC::CHAR, SAPNW::RFC::DATE, SAPNW::RFC::BCD, SAPNW::RFC::TIME, SAPNW::RFC::BYTE, SAPNW::RFC::TABLE, SAPNW::RFC::NUM, SAPNW::RFC::FLOAT, SAPNW::RFC::INT, SAPNW::RFC::INT2, SAPNW::RFC::INT1, SAPNW::RFC::NULL, SAPNW::RFC::STRUCTURE, SAPNW::RFC::DECF16, SAPNW::RFC::DECF34, SAPNW::RFC::XMLDATA, SAPNW::RFC::STRING, SAPNW::RFC::XSTRING, SAPNW::RFC::EXCEPTION else if parms[:type].class == SAPNW::RFC::Type parms[:typedef] = parms[:type] parms[:type] = parms[:typedef].type raise "Parameter type (#{self.class}) does not match Type type (#{parms[:typedef].inspect})\n" if self.class == SAPNW::RFC::Table and parms[:type] != SAPNW::RFC::TABLE else raise "Invalid SAPNW::RFC* type supplied (#{parms[:type]})\n" end end funcdesc = nil len = 0 ulen = 0 decimals = 0 name = parms[:name] type = parms[:type] typedef = parms[:typedef] if parms.has_key?(:typedef) len = parms[:len] if parms.has_key?(:len) ulen = parms[:ulen] if parms.has_key?(:ulen) decimals = parms[:decimals] if parms.has_key?(:decimals) else raise "invalid parameters: #{parms.inspect}\n" end @function_descriptor = funcdesc @name = name @type = type @typedef = typedef @len = len @ulen = ulen @decimals = decimals @value = nil #$stderr.print "initilised parameter(#{@name}): #{self.inspect}\n" end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(methid, *rest, &block)
method_missing is used to pass on any method call to a parameter to the underlying native Ruby data type
137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/sapnwrfc/parameters.rb', line 137 def method_missing(methid, *rest, &block) meth = methid.id2name #$stderr.print "method_missing: #{meth}\n" #$stderr.print "parameters: #{@parameters.keys.inspect}\n" if block @value.send(meth, &block) else #$stderr.print "Export method_missing - no block: #{meth}\n" @value.send(meth, *rest) end end |
Instance Attribute Details
- (Object) decimals (readonly)
Returns the value of attribute decimals
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def decimals @decimals end |
- (Object) direction (readonly)
Returns the value of attribute direction
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def direction @direction end |
- (Object) len (readonly)
Returns the value of attribute len
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def len @len end |
- (Object) name (readonly)
Returns the value of attribute name
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def name @name end |
- (Object) typdef (readonly)
Returns the value of attribute typdef
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def typdef @typdef end |
- (Object) type (readonly)
Returns the value of attribute type
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def type @type end |
- (Object) ulen (readonly)
Returns the value of attribute ulen
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def ulen @ulen end |
- (Object) value
Returns the value of attribute value
86 87 88 |
# File 'lib/sapnwrfc/parameters.rb', line 86 def value @value end |