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 
18 // Non-public Thrift schema serialization utilities
19 
20 #pragma once
21 
22 #include <memory>
23 #include <vector>
24 
25 #include "parquet/platform.h"
26 #include "parquet/schema.h"
27 #include "parquet/types.h"
28 
29 namespace parquet {
30 
31 namespace format {
32 class SchemaElement;
33 }
34 
35 namespace schema {
36 
37 // ----------------------------------------------------------------------
38 // Conversion from Parquet Thrift metadata
39 
40 PARQUET_EXPORT
41 std::shared_ptr<SchemaDescriptor> FromParquet(
42     const std::vector<format::SchemaElement>& schema);
43 
44 PARQUET_EXPORT
45 std::unique_ptr<Node> Unflatten(const format::SchemaElement* elements, int length);
46 
47 // ----------------------------------------------------------------------
48 // Conversion to Parquet Thrift metadata
49 
50 PARQUET_EXPORT
51 void ToParquet(const GroupNode* schema, std::vector<format::SchemaElement>* out);
52 
53 }  // namespace schema
54 }  // namespace parquet
55