Class: FFIDB::Exporters::JSON

Inherits:
FFIDB::Exporter show all
Defined in:
lib/ffidb/exporters/json.rb

Overview

Code generator for the JSON data interchange language.

Instance Attribute Summary

Attributes inherited from FFIDB::Exporter

#options

Instance Method Summary collapse

Methods inherited from FFIDB::Exporter

#close, #debug?, #dlopen_paths_for, #emit, #export_header, for, #header?, #initialize, #verbose?

Constructor Details

This class inherits a constructor from FFIDB::Exporter

Instance Method Details

#beginObject



11
12
13
14
# File 'lib/ffidb/exporters/json.rb', line 11

def begin
  # No header, because JSON doesn't support comments
  @json = {}
end

#begin_library(library) ⇒ Object



16
17
18
19
# File 'lib/ffidb/exporters/json.rb', line 16

def begin_library(library)
  @library = library
  @json[@library&.name] ||= {}
end

#export_symbol(symbol, **kwargs) ⇒ Object Also known as: export_typedef, export_enum, export_struct, export_union, export_function



21
22
23
# File 'lib/ffidb/exporters/json.rb', line 21

def export_symbol(symbol, **kwargs)
  @json[@library&.name][symbol.name] = {kind: symbol.kind.to_s}.merge!(symbol.to_h)
end

#finishObject



34
35
36
# File 'lib/ffidb/exporters/json.rb', line 34

def finish
  puts ::JSON.pretty_generate(@json)
end

#finish_libraryObject



30
31
32
# File 'lib/ffidb/exporters/json.rb', line 30

def finish_library
  @library = nil
end