FFI::ClangSourceFFIClangStringSet

class StringSet

Represents a set of strings returned by libclang.

Definitions

attr_reader :size

Signature

attribute r

size

returns Integer

The number of strings in the set.

def initialize(string_set)

Initialize a string set from a CXStringSet pointer.

Signature

parameter string_set Lib::CXStringSet | FFI::Pointer | Nil

The CXStringSet to extract.

Implementation

def initialize(string_set)
	@strings = []
	@size = 0
	
	return if string_set.nil?
	
	string_set = Lib::CXStringSet.new(string_set) if string_set.is_a?(FFI::Pointer)
	return if string_set.pointer.null?
	
	begin
		@size = string_set[:count]
		strings = string_set[:strings]
		return if strings.null?
		
		@size.times do |i|
			@strings << Lib.get_string(Lib::CXString.new(strings + (i * Lib::CXString.size)))
		end
	ensure
		Lib.dispose_string_set(string_set)
	end
end

def each(&block)

Iterate over each string.

Signature

yields {|string| ...}

Each string in the set.

parameter string String

The extracted string.

returns Enumerator

If no block is given.

Implementation

def each(&block)
	return to_enum(__method__) unless block_given?
	
	@strings.each(&block)
	
	self
end