class FFIDB::Exporters::C
Code generator for the C
programming language.
Constants
- EXTERN_QUALIFIER
- SYMBOL_INDENT
Public Instance Methods
_export_function(function, **kwargs)
click to toggle source
# File lib/ffidb/exporters/c.rb, line 16 def _export_function(function, **kwargs) parameters = function.parameters.each_value.map do |p| p_type = case when p.type.function_pointer? p.type.to_s.sub('(*)', "(*#{p.name})") when self.options[:parameter_names] == false p.type.to_s.gsub(' *', '*') else "#{p.type.to_s.gsub(' *', '*')} #{p.name}" end p_type.gsub('const char *const[]', 'const char* const*') # FIXME end print ' '*self.symbol_indent if self.symbol_indent.nonzero? print self.extern_qualifier, ' ' if self.extern_qualifier if function.type.function_pointer? print function.type.to_s.sub('(*)', "(*#{function.name}(#{parameters.join(', ')}))") else print function.type, ' ', function.name, '(' parameters.each_with_index do |p, i| print ', ' if i.nonzero? print p end print ')' end puts (self.options[:semicolon] == false ? '' : ';') end
finish()
click to toggle source
# File lib/ffidb/exporters/c.rb, line 12 def finish puts self.render_template('c.erb') end
Protected Instance Methods
extern_qualifier()
click to toggle source
# File lib/ffidb/exporters/c.rb, line 48 def extern_qualifier self.class.const_get(:EXTERN_QUALIFIER) end
symbol_indent()
click to toggle source
# File lib/ffidb/exporters/c.rb, line 44 def symbol_indent self.class.const_get(:SYMBOL_INDENT) end