summaryrefslogtreecommitdiffstats
path: root/src/arrow/java/vector/src/main/codegen/templates/BaseWriter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/arrow/java/vector/src/main/codegen/templates/BaseWriter.java')
-rw-r--r--src/arrow/java/vector/src/main/codegen/templates/BaseWriter.java131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/arrow/java/vector/src/main/codegen/templates/BaseWriter.java b/src/arrow/java/vector/src/main/codegen/templates/BaseWriter.java
new file mode 100644
index 000000000..4d63fb73e
--- /dev/null
+++ b/src/arrow/java/vector/src/main/codegen/templates/BaseWriter.java
@@ -0,0 +1,131 @@
+/*
+ * 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.
+ */
+
+<@pp.dropOutputFile />
+<@pp.changeOutputFile name="/org/apache/arrow/vector/complex/writer/BaseWriter.java" />
+
+
+<#include "/@includes/license.ftl" />
+
+package org.apache.arrow.vector.complex.writer;
+
+<#include "/@includes/vv_imports.ftl" />
+
+/*
+ * File generated from ${.template_name} using FreeMarker.
+ */
+@SuppressWarnings("unused")
+public interface BaseWriter extends AutoCloseable, Positionable {
+ int getValueCapacity();
+ void writeNull();
+
+ public interface StructWriter extends BaseWriter {
+
+ Field getField();
+
+ /**
+ * Whether this writer is a struct writer and is empty (has no children).
+ *
+ * <p>
+ * Intended only for use in determining whether to add dummy vector to
+ * avoid empty (zero-column) schema, as in JsonReader.
+ * </p>
+ * @return whether the struct is empty
+ */
+ boolean isEmptyStruct();
+
+ <#list vv.types as type><#list type.minor as minor>
+ <#assign lowerName = minor.class?uncap_first />
+ <#if lowerName == "int" ><#assign lowerName = "integer" /></#if>
+ <#assign upperName = minor.class?upper_case />
+ <#assign capName = minor.class?cap_first />
+ <#if minor.typeParams?? >
+ ${capName}Writer ${lowerName}(String name<#list minor.typeParams as typeParam>, ${typeParam.type} ${typeParam.name}</#list>);
+ </#if>
+ ${capName}Writer ${lowerName}(String name);
+ </#list></#list>
+
+ void copyReaderToField(String name, FieldReader reader);
+ StructWriter struct(String name);
+ ListWriter list(String name);
+ MapWriter map(String name);
+ MapWriter map(String name, boolean keysSorted);
+ void start();
+ void end();
+ }
+
+ public interface ListWriter extends BaseWriter {
+ void startList();
+ void endList();
+ StructWriter struct();
+ ListWriter list();
+ MapWriter map();
+ MapWriter map(boolean keysSorted);
+ void copyReader(FieldReader reader);
+
+ <#list vv.types as type><#list type.minor as minor>
+ <#assign lowerName = minor.class?uncap_first />
+ <#if lowerName == "int" ><#assign lowerName = "integer" /></#if>
+ <#assign upperName = minor.class?upper_case />
+ <#assign capName = minor.class?cap_first />
+ ${capName}Writer ${lowerName}();
+ </#list></#list>
+ }
+
+ public interface MapWriter extends ListWriter {
+ void startMap();
+ void endMap();
+
+ void startEntry();
+ void endEntry();
+
+ MapWriter key();
+ MapWriter value();
+ }
+
+ public interface ScalarWriter extends
+ <#list vv.types as type><#list type.minor as minor><#assign name = minor.class?cap_first /> ${name}Writer, </#list></#list> BaseWriter {}
+
+ public interface ComplexWriter {
+ void allocate();
+ void clear();
+ void copyReader(FieldReader reader);
+ StructWriter rootAsStruct();
+ ListWriter rootAsList();
+
+ void setPosition(int index);
+ void setValueCount(int count);
+ void reset();
+ }
+
+ public interface StructOrListWriter {
+ void start();
+ void end();
+ StructOrListWriter struct(String name);
+ StructOrListWriter listoftstruct(String name);
+ StructOrListWriter list(String name);
+ boolean isStructWriter();
+ boolean isListWriter();
+ VarCharWriter varChar(String name);
+ IntWriter integer(String name);
+ BigIntWriter bigInt(String name);
+ Float4Writer float4(String name);
+ Float8Writer float8(String name);
+ BitWriter bit(String name);
+ VarBinaryWriter binary(String name);
+ }
+}