// PGTwoII_PerProtein.h

#ifndef PERPROTEIN_H
#define PERPROTEIN_H


#include <string>
#include <vector>

using namespace std;

class PerProtein
{
public:
  PerProtein();
  PerProtein(const PerProtein & rval);

  void InitiatePerProtein(const std::string & OneProtein,
                          const char & FirstPrefix,
                          const int & ProteinIndexInput);
  // For a given protein, find all occurence of one amino acid subtype(FirstPrefix);

  void UpdateCurrentPrefix(const PerProtein & InputProtein,
                           const string & OneProtein,
                           const char & NewPrefix,
                           const int & Lower,
                           const int & Upper);
  // For a given protein, find all occurence of new prefix within the distance of
  // Max_Pat_Length to the start of the motif;
  // If not, delete CurrentPrefix and EndOfPrefix pair;

  void CopyPart(const PerProtein & rval);
  // Make a copy of one PerProtein Obj;

  int GetRealProteinIndex();
  int GetNumberOfPositions();
  int GetLengthOfProtein();

private:
  int RealProteinIndex;
  int NumberOfPositions;
  int LengthOfProtein;
  vector<int> CurrentPrefix;
};

#endif // PERPROTEIN_H

