diff options
Diffstat (limited to 'fluent-bit/lib/avro/src/schema.h')
-rw-r--r-- | fluent-bit/lib/avro/src/schema.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/fluent-bit/lib/avro/src/schema.h b/fluent-bit/lib/avro/src/schema.h new file mode 100644 index 00000000..3c99ee63 --- /dev/null +++ b/fluent-bit/lib/avro/src/schema.h @@ -0,0 +1,87 @@ +/* + * 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 + * + * https://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. + */ +#ifndef AVRO_SCHEMA_PRIV_H +#define AVRO_SCHEMA_PRIV_H + +#include <avro/platform.h> +#include "avro/basics.h" +#include "avro/schema.h" +#include "avro_private.h" +#include "st.h" + +struct avro_record_field_t { + int index; + char *name; + avro_schema_t type; + /* + * TODO: default values + */ +}; + +struct avro_record_schema_t { + struct avro_obj_t obj; + char *name; + char *space; + st_table *fields; + st_table *fields_byname; +}; + +struct avro_enum_schema_t { + struct avro_obj_t obj; + char *name; + char *space; + st_table *symbols; + st_table *symbols_byname; +}; + +struct avro_array_schema_t { + struct avro_obj_t obj; + avro_schema_t items; +}; + +struct avro_map_schema_t { + struct avro_obj_t obj; + avro_schema_t values; +}; + +struct avro_union_schema_t { + struct avro_obj_t obj; + st_table *branches; + st_table *branches_byname; +}; + +struct avro_fixed_schema_t { + struct avro_obj_t obj; + const char *name; + const char *space; + int64_t size; +}; + +struct avro_link_schema_t { + struct avro_obj_t obj; + avro_schema_t to; +}; + +#define avro_schema_to_record(schema_) (container_of(schema_, struct avro_record_schema_t, obj)) +#define avro_schema_to_enum(schema_) (container_of(schema_, struct avro_enum_schema_t, obj)) +#define avro_schema_to_array(schema_) (container_of(schema_, struct avro_array_schema_t, obj)) +#define avro_schema_to_map(schema_) (container_of(schema_, struct avro_map_schema_t, obj)) +#define avro_schema_to_union(schema_) (container_of(schema_, struct avro_union_schema_t, obj)) +#define avro_schema_to_fixed(schema_) (container_of(schema_, struct avro_fixed_schema_t, obj)) +#define avro_schema_to_link(schema_) (container_of(schema_, struct avro_link_schema_t, obj)) + +#endif |