Skip to content

Commit

Permalink
Moved inline implementation to src files (#354)
Browse files Browse the repository at this point in the history
* Moved inline implementation to src files

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
JohanMabille and pre-commit-ci[bot] authored Feb 13, 2025
1 parent cfd2949 commit bf3a430
Show file tree
Hide file tree
Showing 14 changed files with 680 additions and 502 deletions.
11 changes: 7 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,14 @@ else()
${SPARROW_SOURCE_DIR}/arrow_array_schema_proxy.cpp
${SPARROW_SOURCE_DIR}/arrow_interface/arrow_array.cpp
${SPARROW_SOURCE_DIR}/arrow_interface/arrow_schema.cpp
${SPARROW_SOURCE_DIR}/layout/fixed_width_binary_array/fixed_width_binary_array_utils.cpp
${SPARROW_SOURCE_DIR}/layout/run_end_encoded_array.cpp
${SPARROW_SOURCE_DIR}/list_value.cpp
${SPARROW_SOURCE_DIR}/layout/fixed_width_binary_layout/fixed_width_binary_array_utils.cpp
${SPARROW_SOURCE_DIR}/layout/list_layout/list_value.cpp
${SPARROW_SOURCE_DIR}/layout/null_array.cpp
${SPARROW_SOURCE_DIR}/layout/run_end_encoded_layout/run_end_encoded_array.cpp
${SPARROW_SOURCE_DIR}/layout/struct_layout/struct_array.cpp
${SPARROW_SOURCE_DIR}/layout/struct_layout/struct_value.cpp
${SPARROW_SOURCE_DIR}/layout/union_array.cpp
${SPARROW_SOURCE_DIR}/record_batch.cpp
${SPARROW_SOURCE_DIR}/struct_value.cpp
${SPARROW_SOURCE_DIR}/types/data_type.cpp
)
endif()
Expand Down
7 changes: 4 additions & 3 deletions include/sparrow/layout/list_layout/list_value.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#pragma once

#include <ostream>

#include "sparrow/config/config.hpp"
#include "sparrow/layout/array_wrapper.hpp"
#include "sparrow/types/data_traits.hpp"
Expand Down Expand Up @@ -64,10 +66,9 @@ struct std::formatter<sparrow::list_value>
-> decltype(ctx.out());
};

inline std::ostream& operator<<(std::ostream& os, const sparrow::list_value& value)
namespace sparrow
{
os << std::format("{}", value);
return os;
SPARROW_API std::ostream& operator<<(std::ostream& os, const sparrow::list_value& value);
}

#endif
205 changes: 24 additions & 181 deletions include/sparrow/layout/null_array.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,55 +89,56 @@ namespace sparrow
using const_value_range = std::ranges::subrange<const_value_iterator>;
using const_bitmap_range = std::ranges::subrange<const_bitmap_iterator>;

null_array(
SPARROW_API null_array(
size_t length,
std::optional<std::string_view> name = std::nullopt,
std::optional<std::string_view> metadata = std::nullopt
);

explicit null_array(arrow_proxy);
SPARROW_API explicit null_array(arrow_proxy);

[[nodiscard]] std::optional<std::string_view> name() const;
[[nodiscard]] std::optional<std::string_view> metadata() const;
[[nodiscard]] SPARROW_API std::optional<std::string_view> name() const;
[[nodiscard]] SPARROW_API std::optional<std::string_view> metadata() const;

[[nodiscard]] size_type size() const;
[[nodiscard]] SPARROW_API size_type size() const;

[[nodiscard]] reference operator[](size_type i);
[[nodiscard]] const_reference operator[](size_type i) const;
[[nodiscard]] SPARROW_API reference operator[](size_type i);
[[nodiscard]] SPARROW_API const_reference operator[](size_type i) const;

[[nodiscard]] iterator begin();
[[nodiscard]] iterator end();
[[nodiscard]] SPARROW_API iterator begin();
[[nodiscard]] SPARROW_API iterator end();

[[nodiscard]] const_iterator begin() const;
[[nodiscard]] const_iterator end() const;
[[nodiscard]] SPARROW_API const_iterator begin() const;
[[nodiscard]] SPARROW_API const_iterator end() const;

[[nodiscard]] const_iterator cbegin() const;
[[nodiscard]] const_iterator cend() const;
[[nodiscard]] SPARROW_API const_iterator cbegin() const;
[[nodiscard]] SPARROW_API const_iterator cend() const;

[[nodiscard]] reference front();
[[nodiscard]] const_reference front() const;
[[nodiscard]] SPARROW_API reference front();
[[nodiscard]] SPARROW_API const_reference front() const;

[[nodiscard]] reference back();
[[nodiscard]] const_reference back() const;
[[nodiscard]] SPARROW_API reference back();
[[nodiscard]] SPARROW_API const_reference back() const;

[[nodiscard]] const_value_range values() const;
[[nodiscard]] const_bitmap_range bitmap() const;
[[nodiscard]] SPARROW_API const_value_range values() const;
[[nodiscard]] SPARROW_API const_bitmap_range bitmap() const;

private:

[[nodiscard]] static arrow_proxy
[[nodiscard]] SPARROW_API static arrow_proxy
create_proxy(size_t length, std::optional<std::string_view> name, std::optional<std::string_view> metadata);

[[nodiscard]] difference_type ssize() const;
[[nodiscard]] SPARROW_API difference_type ssize() const;

[[nodiscard]] arrow_proxy& get_arrow_proxy();
[[nodiscard]] const arrow_proxy& get_arrow_proxy() const;
[[nodiscard]] SPARROW_API arrow_proxy& get_arrow_proxy();
[[nodiscard]] SPARROW_API const arrow_proxy& get_arrow_proxy() const;

arrow_proxy m_proxy;

friend class detail::array_access;
};

SPARROW_API
bool operator==(const null_array& lhs, const null_array& rhs);

/*********************************
Expand Down Expand Up @@ -191,164 +192,6 @@ namespace sparrow
{
return m_index < rhs.m_index;
}

/*****************************
* null_array implementation *
*****************************/

inline null_array::null_array(
size_t length,
std::optional<std::string_view> name,
std::optional<std::string_view> metadata
)
: m_proxy(create_proxy(length, std::move(name), std::move(metadata)))
{
}

inline arrow_proxy null_array::create_proxy(
size_t length,
std::optional<std::string_view> name,
std::optional<std::string_view> metadata
)
{
using namespace std::literals;
ArrowSchema schema = make_arrow_schema(
"n"sv,
std::move(name),
std::move(metadata),
std::nullopt,
0,
nullptr,
nullptr
);

using buffer_type = sparrow::buffer<std::uint8_t>;
std::vector<buffer_type> arr_buffs = {};

ArrowArray arr = make_arrow_array(
static_cast<int64_t>(length),
static_cast<int64_t>(length),
0,
std::move(arr_buffs),
0,
nullptr,
nullptr
);
return arrow_proxy{std::move(arr), std::move(schema)};
}

inline null_array::null_array(arrow_proxy proxy)
: m_proxy(std::move(proxy))
{
SPARROW_ASSERT_TRUE(m_proxy.data_type() == data_type::NA);
}

inline std::optional<std::string_view> null_array::name() const
{
return m_proxy.name();
}

inline std::optional<std::string_view> null_array::metadata() const
{
return m_proxy.metadata();
}

inline auto null_array::size() const -> size_type
{
return m_proxy.length();
}

inline auto null_array::operator[](size_type i) -> reference
{
SPARROW_ASSERT_TRUE(i < size());
return *(begin());
}

inline auto null_array::operator[](size_type i) const -> const_reference
{
SPARROW_ASSERT_TRUE(i < size());
return *(cbegin());
}

inline auto null_array::begin() -> iterator
{
return iterator(0);
}

inline auto null_array::end() -> iterator
{
return iterator(ssize());
}

inline auto null_array::begin() const -> const_iterator
{
return cbegin();
}

inline auto null_array::end() const -> const_iterator
{
return cend();
}

inline auto null_array::cbegin() const -> const_iterator
{
return const_iterator(0);
}

inline auto null_array::cend() const -> const_iterator
{
return const_iterator(ssize());
}

inline auto null_array::front() -> reference
{
return *begin();
}

inline auto null_array::front() const -> const_reference
{
return *cbegin();
}

inline auto null_array::back() -> reference
{
return *(end() - 1);
}

inline auto null_array::back() const -> const_reference
{
return *(cend() - 1);
}

inline auto null_array::values() const -> const_value_range
{
return std::ranges::subrange(const_value_iterator(0), const_value_iterator(ssize()));
}

inline auto null_array::bitmap() const -> const_bitmap_range
{
return std::ranges::subrange(const_bitmap_iterator(0), const_bitmap_iterator(ssize()));
}

inline auto null_array::ssize() const -> difference_type
{
return static_cast<difference_type>(size());
}

inline arrow_proxy& null_array::get_arrow_proxy()
{
return m_proxy;
}

inline const arrow_proxy& null_array::get_arrow_proxy() const
{
return m_proxy;
}

inline bool operator==(const null_array& lhs, const null_array& rhs)
{
return lhs.size() == rhs.size();
}
}

#if defined(__cpp_lib_format)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,27 +139,13 @@ struct std::formatter<sparrow::run_end_encoded_array>
return ctx.begin(); // Simple implementation
}

auto format(const sparrow::run_end_encoded_array& ar, std::format_context& ctx) const
{
std::format_to(ctx.out(), "Run end encoded [size={}] <", ar.size());

std::for_each(
ar.cbegin(),
sparrow::next(ar.cbegin(), ar.size() - 1),
[&ctx](const auto& value)
{
std::format_to(ctx.out(), "{}, ", value);
}
);

return std::format_to(ctx.out(), "{}>", ar.back());
}
SPARROW_API auto format(const sparrow::run_end_encoded_array& ar, std::format_context& ctx) const
-> decltype(ctx.out());
};

inline std::ostream& operator<<(std::ostream& os, const sparrow::run_end_encoded_array& value)
namespace sparrow
{
os << std::format("{}", value);
return os;
SPARROW_API std::ostream& operator<<(std::ostream& os, const sparrow::run_end_encoded_array& value);
}

#endif
Loading

0 comments on commit bf3a430

Please sign in to comment.