1# Licensed to the Apache Software Foundation (ASF) under one 2# or more contributor license agreements. See the NOTICE file 3# distributed with this work for additional information 4# regarding copyright ownership. The ASF licenses this file 5# to you under the Apache License, Version 2.0 (the 6# "License"); you may not use this file except in compliance 7# with the License. You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, 12# software distributed under the License is distributed on an 13# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14# KIND, either express or implied. See the License for the 15# specific language governing permissions and limitations 16# under the License. 17 18require "arrow/block-closable" 19 20module Arrow 21 class Loader < GObjectIntrospection::Loader 22 class << self 23 def load 24 super("Arrow", Arrow) 25 end 26 end 27 28 private 29 def post_load(repository, namespace) 30 require_libraries 31 require_extension_library 32 end 33 34 def require_libraries 35 require "arrow/column-containable" 36 require "arrow/field-containable" 37 require "arrow/generic-filterable" 38 require "arrow/generic-takeable" 39 require "arrow/record-containable" 40 41 require "arrow/array" 42 require "arrow/array-builder" 43 require "arrow/bigdecimal-extension" 44 require "arrow/buffer" 45 require "arrow/chunked-array" 46 require "arrow/column" 47 require "arrow/compression-type" 48 require "arrow/csv-loader" 49 require "arrow/csv-read-options" 50 require "arrow/data-type" 51 require "arrow/date32-array" 52 require "arrow/date32-array-builder" 53 require "arrow/date64-array" 54 require "arrow/date64-array-builder" 55 require "arrow/decimal128" 56 require "arrow/decimal128-array" 57 require "arrow/decimal128-array-builder" 58 require "arrow/decimal128-data-type" 59 require "arrow/dense-union-data-type" 60 require "arrow/dictionary-data-type" 61 require "arrow/field" 62 require "arrow/file-output-stream" 63 require "arrow/group" 64 require "arrow/list-array-builder" 65 require "arrow/list-data-type" 66 require "arrow/null-array" 67 require "arrow/null-array-builder" 68 require "arrow/path-extension" 69 require "arrow/record" 70 require "arrow/record-batch" 71 require "arrow/record-batch-builder" 72 require "arrow/record-batch-file-reader" 73 require "arrow/record-batch-stream-reader" 74 require "arrow/rolling-window" 75 require "arrow/schema" 76 require "arrow/slicer" 77 require "arrow/sparse-union-data-type" 78 require "arrow/struct-array" 79 require "arrow/struct-array-builder" 80 require "arrow/struct-data-type" 81 require "arrow/table" 82 require "arrow/table-formatter" 83 require "arrow/table-list-formatter" 84 require "arrow/table-table-formatter" 85 require "arrow/table-loader" 86 require "arrow/table-saver" 87 require "arrow/tensor" 88 require "arrow/time" 89 require "arrow/time32-array" 90 require "arrow/time32-array-builder" 91 require "arrow/time32-data-type" 92 require "arrow/time64-array" 93 require "arrow/time64-array-builder" 94 require "arrow/time64-data-type" 95 require "arrow/timestamp-array" 96 require "arrow/timestamp-array-builder" 97 require "arrow/timestamp-data-type" 98 require "arrow/writable" 99 end 100 101 def require_extension_library 102 require "arrow.so" 103 end 104 105 def load_object_info(info) 106 super 107 108 klass = @base_module.const_get(rubyish_class_name(info)) 109 if klass.method_defined?(:close) 110 klass.extend(BlockClosable) 111 end 112 end 113 114 def load_method_info(info, klass, method_name) 115 case klass.name 116 when /Array\z/ 117 case method_name 118 when "values" 119 method_name = "values_raw" 120 end 121 end 122 123 case klass.name 124 when /Builder\z/ 125 case method_name 126 when "append" 127 return 128 else 129 super 130 end 131 when "Arrow::StringArray" 132 case method_name 133 when "get_value" 134 method_name = "get_raw_value" 135 when "get_string" 136 method_name = "get_value" 137 end 138 super(info, klass, method_name) 139 when "Arrow::Date32Array", 140 "Arrow::Date64Array", 141 "Arrow::Decimal128Array", 142 "Arrow::Time32Array", 143 "Arrow::Time64Array", 144 "Arrow::TimestampArray" 145 case method_name 146 when "get_value" 147 method_name = "get_raw_value" 148 end 149 super(info, klass, method_name) 150 else 151 super 152 end 153 end 154 end 155end 156