#ifndef _RESIDUE_H_
#define _RESIDUE_H_

#include "Atom.hpp"
#include <unordered_map>
#include <boost/optional/optional.hpp>

struct Chain;

class Residue
{
public:
	int resSeq;
	std::string resName;

private:
	std::unordered_map<int, int> serialToAtomInVectorMap;

public:

	std::vector<Atom> atoms;
	std::unordered_map<std::string, std::vector<Atom>::iterator> getAtomNameToMutableAtomMap();
	boost::optional<Atom &> findAtom(int atomId);
	boost::optional<const Atom &> findAtom(int atomId) const;
	void fillMap();
};

#endif
