Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert Iterator to DiscreteTraject0ry #3192

Merged
merged 1 commit into from
Nov 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions ksp_plugin/iterators.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
#include "ksp_plugin/frames.hpp"
#include "ksp_plugin/identification.hpp"
#include "ksp_plugin/plugin.hpp"
#include "physics/discrete_trajectory.hpp"
#include "physics/discrete_traject0ry.hpp"

namespace principia {
namespace ksp_plugin {

using base::not_null;
using physics::DiscreteTrajectory;
using physics::DiscreteTraject0ry;

// A wrapper for a container and an iterator into that container.
class Iterator {
Expand Down Expand Up @@ -47,31 +47,31 @@ class TypedIterator : public Iterator {
typename Container::const_iterator iterator_;
};

// A specialization for |DiscreteTrajectory<World>|.
// A specialization for |DiscreteTraject0ry<World>|.
template<>
class TypedIterator<DiscreteTrajectory<World>> : public Iterator {
class TypedIterator<DiscreteTraject0ry<World>> : public Iterator {
public:
TypedIterator(not_null<std::unique_ptr<DiscreteTrajectory<World>>> trajectory,
TypedIterator(DiscreteTraject0ry<World> trajectory,
not_null<Plugin const*> plugin);

// Obtains the element denoted by this iterator and converts it to some
// |Interchange| type using |convert|.
template<typename Interchange>
Interchange Get(
std::function<Interchange(
DiscreteTrajectory<World>::Iterator const&)> const& convert) const;
DiscreteTraject0ry<World>::iterator const&)> const& convert) const;

bool AtEnd() const override;
void Increment() override;
void Reset() override;
int Size() const override;

DiscreteTrajectory<World>::Iterator iterator() const;
DiscreteTraject0ry<World>::iterator iterator() const;
not_null<Plugin const*> plugin() const;

private:
not_null<std::unique_ptr<DiscreteTrajectory<World>>> trajectory_;
DiscreteTrajectory<World>::Iterator iterator_;
DiscreteTraject0ry<World> trajectory_;
DiscreteTraject0ry<World>::iterator iterator_;
not_null<Plugin const*> plugin_;
};

Expand Down
34 changes: 16 additions & 18 deletions ksp_plugin/iterators_body.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,46 +42,44 @@ int TypedIterator<Container>::Size() const {
return container_.size();
}

inline TypedIterator<DiscreteTrajectory<World>>::TypedIterator(
not_null<std::unique_ptr<DiscreteTrajectory<World>>> trajectory,
inline TypedIterator<DiscreteTraject0ry<World>>::TypedIterator(
DiscreteTraject0ry<World> trajectory,
not_null<Plugin const*> const plugin)
: trajectory_(std::move(trajectory)),
iterator_(trajectory_->begin()),
plugin_(plugin) {
CHECK(trajectory_->is_root());
}
iterator_(trajectory_.begin()),
plugin_(plugin) {}

template<typename Interchange>
Interchange TypedIterator<DiscreteTrajectory<World>>::Get(
Interchange TypedIterator<DiscreteTraject0ry<World>>::Get(
std::function<Interchange(
DiscreteTrajectory<World>::Iterator const&)> const& convert) const {
DiscreteTraject0ry<World>::iterator const&)> const& convert) const {
CHECK(iterator_ != trajectory_->end());
return convert(iterator_);
}

inline bool TypedIterator<DiscreteTrajectory<World>>::AtEnd() const {
return iterator_ == trajectory_->end();
inline bool TypedIterator<DiscreteTraject0ry<World>>::AtEnd() const {
return iterator_ == trajectory_.end();
}

inline void TypedIterator<DiscreteTrajectory<World>>::Increment() {
inline void TypedIterator<DiscreteTraject0ry<World>>::Increment() {
++iterator_;
}

inline void TypedIterator<DiscreteTrajectory<World>>::Reset() {
iterator_ = trajectory_->begin();
inline void TypedIterator<DiscreteTraject0ry<World>>::Reset() {
iterator_ = trajectory_.begin();
}

inline int TypedIterator<DiscreteTrajectory<World>>::Size() const {
return trajectory_->Size();
inline int TypedIterator<DiscreteTraject0ry<World>>::Size() const {
return trajectory_.size();
}

inline DiscreteTrajectory<World>::Iterator TypedIterator<
DiscreteTrajectory<World>>::iterator() const {
inline DiscreteTraject0ry<World>::iterator TypedIterator<
DiscreteTraject0ry<World>>::iterator() const {
return iterator_;
}

inline not_null<Plugin const*> TypedIterator<
DiscreteTrajectory<World>>::plugin() const {
DiscreteTraject0ry<World>>::plugin() const {
return plugin_;
}

Expand Down