#pragma once

#include "AbstractMesh.h"

#include <string>
#include <unordered_map>

class Edge;
using EdgePtr = std::unique_ptr<Edge>;
using VecEdges = std::vector<EdgePtr>;

class LineMesh : public AbstractMesh
{
public:
    LineMesh() = default;

    ~LineMesh();

    void populate(VecNodes& nodes, VecEdges& edges);

    std::vector<std::size_t> getEdgeNodeIds() const;

    MeshType getType() const override;

    std::unique_ptr<AbstractMesh> copy() const override;

private:
    VecEdges mEdges;
};
