-// -----------------------------------------
-// SamHeaderValidatorPrivate implementation
-
-class SamHeaderValidator::SamHeaderValidatorPrivate {
-
- // ctor & dtor
- public:
- SamHeaderValidatorPrivate(const SamHeader& header);
- ~SamHeaderValidatorPrivate(void) { }
-
- // 'public' methods
- public:
- bool Validate(bool verbose);
-
- // internal validation methods
- private:
-
- // validate header metadata
- bool ValidateMetadata(void);
- bool ValidateVersion(void);
- bool ContainsOnlyDigits(const string& s);
- bool ValidateSortOrder(void);
- bool ValidateGroupOrder(void);
-
- // validate sequence dictionary
- bool ValidateSequenceDictionary(void);
- bool ContainsUniqueSequenceNames(void);
- bool CheckNameFormat(const string& name);
- bool ValidateSequence(const SamSequence& seq);
- bool CheckLengthInRange(const string& length);
-
- // validate read group dictionary
- bool ValidateReadGroupDictionary(void);
- bool ValidateReadGroup(const SamReadGroup& rg);
- bool ContainsUniqueIDsAndPlatformUnits(void);
- bool CheckReadGroupID(const string& id);
- bool CheckSequencingTechnology(const string& technology);
- bool Is454(const string& technology);
- bool IsHelicos(const string& technology);
- bool IsIllumina(const string& technology);
- bool IsPacBio(const string& technology);
- bool IsSolid(const string& technology);
-
- // validate program data
- bool ValidateProgramData(void);
- bool ContainsUniqueProgramIds(void);
- bool ValidatePreviousProgramIds(void);
-
- // error reporting
- private:
- void AddError(const string& message);
- void AddWarning(const string& message);
- void PrintErrorMessages(void);
- void PrintWarningMessages(void);
-
- // data members
- private:
- const SamHeader& m_header;
- const SamHeaderVersion m_version;
-
- bool m_isVerboseOutput;
- const string ERROR_PREFIX;
- const string WARN_PREFIX;
- const string NEWLINE;
- vector<string> m_errorMessages;
- vector<string> m_warningMessages;
-};
-
-SamHeaderValidator::SamHeaderValidatorPrivate::SamHeaderValidatorPrivate(const SamHeader& header)