class AutoC::Composite::Method

Type-bound C side function

Attributes

type[R]

Public Class Methods

new(type, result, name, parameters, **kws) click to toggle source
Calls superclass method
# File lib/autoc/composite.rb, line 278
def initialize(type, result, name, parameters, **kws)
  @type = type
  super(result.to_value, self.type.identifier(name), parameters, **kws)
  dependencies << self.type << self.result.to_type
  # TODO register parameters' types as dependencies
end

Public Instance Methods

method_missing(meth, *args) click to toggle source
# File lib/autoc/composite.rb, line 285
def method_missing(meth, *args) 
  if parameters.has_key?(meth) then parameters[meth]
  elsif type.respond_to?(meth) then type.send(meth, *args)
  else meth
  end
end

Private Instance Methods

render_declaration_specifier(stream) click to toggle source
# File lib/autoc/composite.rb, line 307
def render_declaration_specifier(stream)
  stream << (inline? ? 'AUTOC_INLINE ' : 'AUTOC_EXTERN ')
end
render_function_header(stream) click to toggle source
# File lib/autoc/composite.rb, line 294
def render_function_header(stream)
  if public?
    stream << %{
      /**
        #{type.ingroup}
        #{@header}
      */
    }
  else
    stream << Composite::PRIVATE
  end
end
render_implementation(stream) click to toggle source
# File lib/autoc/composite.rb, line 311
def render_implementation(stream)
  render_function_definition(stream) if live? && !inline?
end