Skip to content

Commit

Permalink
refactor(transient-vector): consts and removes unnecessary includes
Browse files Browse the repository at this point in the history
  • Loading branch information
Samy-33 committed Mar 10, 2024
1 parent 7f750fc commit d7be321
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 33 deletions.
14 changes: 6 additions & 8 deletions include/cpp/jank/runtime/obj/transient_vector.hpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#pragma once

#include <jank/runtime/object.hpp>

namespace jank::runtime
{
template <>
Expand All @@ -13,7 +11,7 @@ namespace jank::runtime
using persistent_type = static_object<object_type::persistent_vector>;

static_object() = default;
static_object(static_object &&) = default;
static_object(static_object &&) noexcept = default;
static_object(static_object const &) = default;
static_object(detail::native_persistent_vector const &d);
static_object(detail::native_persistent_vector &&d);
Expand Down Expand Up @@ -41,13 +39,13 @@ namespace jank::runtime
native_box<persistent_type> to_persistent();

/* behavior::callable */
object_ptr call(object_ptr) const;
object_ptr call(object_ptr const) const;

/* behavior::associatively_readable */
object_ptr get(object_ptr idx) const;
object_ptr get(object_ptr idx, object_ptr fallback) const;
object_ptr get_entry(object_ptr key) const;
native_bool contains(object_ptr key) const;
object_ptr get(object_ptr const idx) const;
object_ptr get(object_ptr const idx, object_ptr const fallback) const;
object_ptr get_entry(object_ptr const idx) const;
native_bool contains(object_ptr const elem) const;

void assert_active() const;

Expand Down
3 changes: 0 additions & 3 deletions src/cpp/jank/runtime/behavior/callable.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "jank/runtime/obj/persistent_vector.hpp"
#include <iostream>

#include <fmt/core.h>

#include <jank/runtime/behavior/callable.hpp>
Expand Down
4 changes: 2 additions & 2 deletions src/cpp/jank/runtime/obj/transient_hash_map.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace jank::runtime
{
obj::transient_hash_map::static_object(runtime::detail::native_persistent_hash_map &&d)
: data{ d.transient() }
: data{ std::move(d).transient() }
{
}

Expand All @@ -15,7 +15,7 @@ namespace jank::runtime
}

obj::transient_hash_map::static_object(runtime::detail::native_transient_hash_map &&d)
: data{ d }
: data{ std::move(d) }
{
}

Expand Down
32 changes: 12 additions & 20 deletions src/cpp/jank/runtime/obj/transient_vector.cpp
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
#include <jank/runtime/detail/object_util.hpp>
#include <jank/runtime/erasure.hpp>
#include <jank/runtime/obj/persistent_vector_sequence.hpp>
#include <jank/runtime/util.hpp>
#include <jank/runtime/obj/native_function_wrapper.hpp>
#include <jank/runtime/obj/transient_vector.hpp>
#include <jank/type.hpp>

namespace jank::runtime
{
obj::transient_vector::static_object(runtime::detail::native_persistent_vector &&d)
: data{ d.transient() }
: data{ std::move(d).transient() }
{
}

Expand All @@ -19,7 +11,7 @@ namespace jank::runtime
}

obj::transient_vector::static_object(runtime::detail::native_transient_vector &&d)
: data{ d }
: data{ std::move(d) }
{
}

Expand Down Expand Up @@ -90,7 +82,7 @@ namespace jank::runtime
}
}

object_ptr obj::transient_vector::get(object_ptr idx) const
object_ptr obj::transient_vector::get(object_ptr const idx) const
{
assert_active();
if(idx->type == object_type::integer)
Expand All @@ -110,7 +102,7 @@ namespace jank::runtime
}
}

object_ptr obj::transient_vector::get(object_ptr idx, object_ptr fallback) const
object_ptr obj::transient_vector::get(object_ptr const idx, object_ptr const fallback) const
{
assert_active();
if(idx->type == object_type::integer)
Expand All @@ -130,30 +122,30 @@ namespace jank::runtime
}
}

object_ptr obj::transient_vector::get_entry(object_ptr const key) const
object_ptr obj::transient_vector::get_entry(object_ptr const idx) const
{
if(key->type == object_type::integer)
if(idx->type == object_type::integer)
{
auto const i(expect_object<obj::integer>(key)->data);
auto const i(expect_object<obj::integer>(idx)->data);
if(i < 0 || data.size() <= static_cast<size_t>(i))
{
return obj::nil::nil_const();
}
/* TODO: Map entry type? */
return make_box<obj::persistent_vector>(key, data[i]);
return make_box<obj::persistent_vector>(idx, data[i]);
}
else
{
throw std::runtime_error{ fmt::format("get_entry on a vector must be an integer; found {}",
runtime::detail::to_string(key)) };
runtime::detail::to_string(idx)) };
}
}

native_bool obj::transient_vector::contains(object_ptr const key) const
native_bool obj::transient_vector::contains(object_ptr const elem) const
{
if(key->type == object_type::integer)
if(elem->type == object_type::integer)
{
auto const i(expect_object<obj::integer>(key)->data);
auto const i(expect_object<obj::integer>(elem)->data);
return i >= 0 && static_cast<size_t>(i) < data.size();
}
else
Expand Down

0 comments on commit d7be321

Please sign in to comment.