Module: FFI::LWGeom

Extended by:
Library
Defined in:
lib/ffi/lwgeom.rb,
lib/ffi/lwgeom/gbox.rb,
lib/ffi/lwgeom/geom.rb

Defined Under Namespace

Classes: GBOX, Geom

Constant Summary collapse

LIB_PATH =
find_lib('liblwgeom*').freeze
VARIANT_WKB_ISO =
0x01
VARIANT_WKB_SFSQL =
0x02
VARIANT_WKB_EXTENDED =
0x04
VARIANT_WKB_NDR =
0x08
VARIANT_WKB_XDR =
0x10
VARIANT_WKB_HEX =
0x20
VARIANT_WKT_ISO =
0x01
VARIANT_WKT_SFSQL =
0x02
VARIANT_WKT_EXTENDED =
0x04
LW_PARSER_CHECK_NONE =
0
LW_PARSER_CHECK_MINPOINTS =
1
LW_PARSER_CHECK_ODD =
2
LW_PARSER_CHECK_CLOSURE =
4
LW_PARSER_CHECK_ZCLOSURE =
8

Class Method Summary collapse

Class Method Details

.find_lib(lib) ⇒ String

Returns Path to the library file.

Parameters:

  • lib (String)

    Name of the library file to find.

Returns:

  • (String)

    Path to the library file.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ffi/lwgeom.rb', line 10

def self.find_lib(lib)
  lib_file_name = "#{lib}.#{FFI::Platform::LIBSUFFIX}*"

  if (lwgeom_library_path = ENV['LWGEOM_LIBRARY_PATH'])
    if File.exist?(lwgeom_library_path) && File.file?(lwgeom_library_path)
      return lwgeom_library_path
    end

    result = Dir[File.join(lwgeom_library_path, lib_file_name)].compact

    if (f = result.first)
      return f
    end

    raise "library '#{lib}' not found"
  end

  search_paths.map do |search_path|
    Dir.glob(search_path).map do |path|
      Dir.glob(File.join(path, lib_file_name))
    end
  end.flatten.uniq.first
end

.search_pathsArray<String>

Returns List of paths to search for libs in.

Returns:

  • (Array<String>)

    List of paths to search for libs in.



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ffi/lwgeom.rb', line 35

def self.search_paths
  return [ENV['LWGEOM_LIBRARY_PATH']] if ENV['LWGEOM_LIBRARY_PATH']

  @search_paths ||= begin
    paths = ENV['PATH'].split(File::PATH_SEPARATOR)

    unless FFI::Platform.windows?
      paths += %w[/usr/local/{lib64,lib} /opt/local/{lib64,lib} /usr/{lib64,lib} /usr/lib/{x86_64,i386}-linux-gnu]
    end

    paths
  end
end