2323
2424#include < avro/Node.hh>
2525
26+ #include " iceberg/iceberg_bundle_export.h"
2627#include " iceberg/name_mapping.h"
2728#include " iceberg/result.h"
2829#include " iceberg/schema_util.h"
@@ -40,7 +41,7 @@ struct MapLogicalType : public ::avro::CustomLogicalType {
4041};
4142
4243// / \brief A visitor that converts an Iceberg type to an Avro node.
43- class ToAvroNodeVisitor {
44+ class ICEBERG_BUNDLE_EXPORT ToAvroNodeVisitor {
4445 public:
4546 Status Visit (const BooleanType& type, ::avro::NodePtr* node);
4647 Status Visit (const IntType& type, ::avro::NodePtr* node);
@@ -67,7 +68,7 @@ class ToAvroNodeVisitor {
6768};
6869
6970// / \brief A visitor that checks the presence of field IDs in an Avro schema.
70- class HasIdVisitor {
71+ class ICEBERG_BUNDLE_EXPORT HasIdVisitor {
7172 public:
7273 HasIdVisitor () = default ;
7374
@@ -137,8 +138,9 @@ class HasIdVisitor {
137138// / \param avro_node The Avro node to read data from.
138139// / \param prune_source Whether the source schema can be pruned.
139140// / \return The schema projection result.
140- Result<SchemaProjection> Project (const Schema& expected_schema,
141- const ::avro::NodePtr& avro_node, bool prune_source);
141+ ICEBERG_BUNDLE_EXPORT Result<SchemaProjection> Project (const Schema& expected_schema,
142+ const ::avro::NodePtr& avro_node,
143+ bool prune_source);
142144
143145std::string ToString (const ::avro::NodePtr& node);
144146std::string ToString (const ::avro::LogicalType& logical_type);
@@ -157,14 +159,14 @@ bool HasMapLogicalType(const ::avro::NodePtr& node);
157159// /
158160// / \param name The name to check.
159161// / \return True if the name is valid, false otherwise.
160- bool ValidAvroName (std::string_view name);
162+ ICEBERG_BUNDLE_EXPORT bool ValidAvroName (std::string_view name);
161163
162164// / \brief Create a new Avro node with field IDs from name mapping.
163165// / \param original_node The original Avro node to copy.
164166// / \param mapping The name mapping to apply field IDs from.
165167// / \return A new Avro node with field IDs applied, or an error.
166- Result<::avro::NodePtr> MakeAvroNodeWithFieldIds (const ::avro::NodePtr& original_node,
167- const NameMapping& mapping);
168+ ICEBERG_BUNDLE_EXPORT Result<::avro::NodePtr> MakeAvroNodeWithFieldIds (
169+ const ::avro::NodePtr& original_node, const NameMapping& mapping);
168170
169171// / \brief Sanitize a field name to make it compatible with Avro field name requirements.
170172// /
@@ -187,6 +189,6 @@ Result<::avro::NodePtr> MakeAvroNodeWithFieldIds(const ::avro::NodePtr& original
187189// /
188190// / \param field_name The original field name to sanitize.
189191// / \return A sanitized field name that follows Avro naming conventions.
190- std::string SanitizeFieldName (std::string_view field_name);
192+ ICEBERG_BUNDLE_EXPORT std::string SanitizeFieldName (std::string_view field_name);
191193
192194} // namespace iceberg::avro
0 commit comments