]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/arrow/r/R/field.R
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / r / R / field.R
diff --git a/ceph/src/arrow/r/R/field.R b/ceph/src/arrow/r/R/field.R
new file mode 100644 (file)
index 0000000..d10ee78
--- /dev/null
@@ -0,0 +1,84 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#' @include arrow-package.R
+#' @title Field class
+#' @usage NULL
+#' @format NULL
+#' @docType class
+#' @description `field()` lets you create an `arrow::Field` that maps a
+#' [DataType][data-type] to a column name. Fields are contained in
+#' [Schemas][Schema].
+#' @section Methods:
+#'
+#' - `f$ToString()`: convert to a string
+#' - `f$Equals(other)`: test for equality. More naturally called as `f == other`
+#'
+#' @rdname Field
+#' @name Field
+#' @export
+Field <- R6Class("Field",
+  inherit = ArrowObject,
+  public = list(
+    ToString = function() {
+      prettier_dictionary_type(Field__ToString(self))
+    },
+    Equals = function(other, ...) {
+      inherits(other, "Field") && Field__Equals(self, other)
+    },
+    export_to_c = function(ptr) ExportField(self, ptr)
+  ),
+  active = list(
+    name = function() {
+      Field__name(self)
+    },
+    nullable = function() {
+      Field__nullable(self)
+    },
+    type = function() {
+      Field__type(self)
+    }
+  )
+)
+Field$create <- function(name, type, metadata, nullable = TRUE) {
+  assert_that(inherits(name, "character"), length(name) == 1L)
+  type <- as_type(type, name)
+  assert_that(missing(metadata), msg = "metadata= is currently ignored")
+  Field__initialize(enc2utf8(name), type, nullable)
+}
+#' @include arrowExports.R
+Field$import_from_c <- ImportField
+
+#' @param name field name
+#' @param type logical type, instance of [DataType]
+#' @param metadata currently ignored
+#' @param nullable TRUE if field is nullable
+#'
+#' @examplesIf arrow_available()
+#' field("x", int32())
+#' @rdname Field
+#' @export
+field <- Field$create
+
+.fields <- function(.list, nullable = TRUE) {
+  if (length(.list)) {
+    assert_that(!is.null(nms <- names(.list)))
+    map2(nms, .list, field)
+  } else {
+    list()
+  }
+}