module InvocationSupport
Shared helpers for preparing libclang invocation arguments and options.
Definitions
def args_pointer_from(command_line_args)
Convert command line arguments to a pointer array for libclang.
Signature
-
parameter
command_line_argsArray(String) The command line arguments.
-
returns
Array(FFI::MemoryPointer, Array(FFI::MemoryPointer)) The pointer array and string buffers that back it.
Implementation
def args_pointer_from(command_line_args)
args_pointer = MemoryPointer.new(:pointer, command_line_args.length)
strings = command_line_args.map do |arg|
MemoryPointer.from_string(arg.to_s)
end
args_pointer.put_array_of_pointer(0, strings) unless strings.empty?
return args_pointer, strings
end
def normalized_command_line_args(command_line_args)
Normalize command line arguments and inject libclang support flags.
Signature
-
parameter
command_line_argsArray(String) | String | Nil Compiler arguments for parsing.
-
returns
Array(String) The normalized compiler arguments.
Implementation
def normalized_command_line_args(command_line_args)
command_line_args = Array(command_line_args)
# Inject -resource-dir if libclang can't find it on its own:
command_line_args + Lib.args.command_line_args(command_line_args)
end
def translation_unit_options_bitmask_from(opts)
Convert translation unit options to a bitmask.
Signature
-
parameter
optsArray(Symbol) The translation unit options.
-
returns
Integer The resulting bitmask.
Implementation
def translation_unit_options_bitmask_from(opts)
Lib.bitmask_from(Lib::TranslationUnitFlags, opts)
end