FFI::ClangSourceFFIClangCodeCompletionResults

class Results

Represents code completion results.

Definitions

attr_reader :size

Signature

attribute Integer

The number of completion results.

attr_reader :results

Signature

attribute Array(Result)

The array of completion results.

def initialize(code_complete_results, translation_unit)

Initialize code completion results.

Signature

parameter code_complete_results Lib::CXCodeCompleteResults

The completion results structure.

parameter translation_unit TranslationUnit

The parent translation unit.

Implementation

def initialize(code_complete_results, translation_unit)
	super code_complete_results.pointer
	@translation_unit = translation_unit
	@code_complete_results = code_complete_results
	initialize_results
end

def self.release(pointer)

Release the completion results pointer.

Signature

parameter pointer FFI::Pointer

The pointer to release.

Implementation

def self.release(pointer)
	results = Lib::CXCodeCompleteResults.new(pointer)
	Lib.dispose_code_complete_results(results)
end

def each(&block)

Iterate over each completion result.

Signature

yields {|result| ...}

Each completion result.

parameter result Result

The completion result.

Implementation

def each(&block)
	@results.each do |token|
		block.call(token)
	end
end

def num_diagnostics

Get the number of diagnostics.

Signature

returns Integer

The number of diagnostics.

Implementation

def num_diagnostics
	Lib.get_code_complete_get_num_diagnostics(@code_complete_results)
end

def diagnostic(i)

Get a diagnostic by index.

Signature

parameter i Integer

The diagnostic index.

returns Diagnostic

The diagnostic.

Implementation

def diagnostic(i)
	Diagnostic.new(@translation_unit, Lib.get_code_complete_get_diagnostic(@code_complete_results, i))
end

def diagnostics

Get all diagnostics.

Signature

returns Array(Diagnostic)

Array of diagnostics.

Implementation

def diagnostics
	num_diagnostics.times.map {|i|
		Diagnostic.new(@translation_unit, Lib.get_code_complete_get_diagnostic(@code_complete_results, i))
	}
end

def contexts

Get the completion contexts.

Signature

returns Array(Symbol)

The completion contexts.

Implementation

def contexts
	Lib.opts_from Lib::CompletionContext, Lib.get_code_complete_get_contexts(@code_complete_results)
end

def container_usr

Get the USR of the container.

Signature

returns String

The container USR.

Implementation

def container_usr
	Lib.extract_string Lib.get_code_complete_get_container_usr(@code_complete_results)
end

def container_kind

Get the kind of the container.

Signature

returns Symbol

The container kind.

Implementation

def container_kind
	is_incomplete = MemoryPointer.new :uint
	Lib.get_code_complete_get_container_kind(@code_complete_results, is_incomplete)
end

def incomplete?

Check if the results are incomplete.

Signature

returns Boolean

True if results are incomplete.

Implementation

def incomplete?
	is_incomplete = MemoryPointer.new :uint
	Lib.get_code_complete_get_container_kind(@code_complete_results, is_incomplete)
	is_incomplete.read_uint != 0
end

def objc_selector

Get the Objective-C selector.

Signature

returns String

The Objective-C selector.

Implementation

def objc_selector
	Lib.extract_string Lib.get_code_complete_get_objc_selector(@code_complete_results)
end

def sort!

Sort the completion results in place.

Implementation

def sort!
	Lib.sort_code_completion_results(@code_complete_results[:results], @code_complete_results[:num])
	initialize_results
end

def inspect

Get a string representation of the results.

Signature

returns String

The results as a string.

Implementation

def inspect
	@results.inspect
end

def initialize_results

  • private

Signature

private

Implementation

def initialize_results
	@size = @code_complete_results[:num]
	cur_ptr = @code_complete_results[:results]
	@results = []
	@size.times {@results << Result.new(Lib::CXCompletionResult.new(cur_ptr))
														cur_ptr += Lib::CXCompletionResult.size
	}
end