Sha256: 62a1979e285eb07ef51ea056ff33cdd57b86e9f71ab043fc972db6310a7ede90

Contents?: true

Size: 943 Bytes

Versions: 5

Compression:

Stored size: 943 Bytes

Contents

# frozen_string_literal: true

# Released under the MIT License.
# Copyright, 2014, by Masahiro Sano.
# Copyright, 2014-2022, by Samuel Williams.

require_relative 'lib/file'

module FFI
	module Clang
		class File < Pointer
			attr_reader :translation_unit

			def initialize(pointer, translation_unit)
				super pointer
				@translation_unit = translation_unit

				pointer = MemoryPointer.new(Lib::CXFileUniqueID)
				Lib.get_file_unique_id(self, pointer)
				@unique_id = Lib::CXFileUniqueID.new(pointer)
			end

			def to_s
				name
			end

			def name
				Lib.extract_string Lib.get_file_name(self)
			end

			def time
				Time.at(Lib.get_file_time(self))
			end

			def include_guarded?
				Lib.is_file_multiple_include_guarded(@translation_unit, self) != 0
			end

			def device
				@unique_id[:device]
			end

			def inode
				@unique_id[:inode]
			end

			def modification
				Time.at(@unique_id[:modification])
			end
		end
	end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ffi-clang-0.12.0 lib/ffi/clang/file.rb
ffi-clang-0.11.0 lib/ffi/clang/file.rb
ffi-clang-0.10.0 lib/ffi/clang/file.rb
ffi-clang-0.9.0 lib/ffi/clang/file.rb
ffi-clang-0.8.0 lib/ffi/clang/file.rb