#ifndef AUTOGENERATEDEXTENDEDCLEANUP__HPP
#define AUTOGENERATEDEXTENDEDCLEANUP__HPP

/* $Id: autogenerated_extended_cleanup.hpp 497140 2016-04-04 18:31:44Z bollin $
 * ===========================================================================
 *
 *                            PUBLIC DOMAIN NOTICE
 *               National Center for Biotechnology Information
 *
 *  This software/database is a "United States Government Work" under the
 *  terms of the United States Copyright Act.  It was written as part of
 *  the author's official duties as a United States Government employee and
 *  thus cannot be copyrighted.  This software/database is freely available
 *  to the public for use. The National Library of Medicine and the U.S.
 *  Government have not placed any restriction on its use or reproduction.
 *
 *  Although all reasonable efforts have been taken to ensure the accuracy
 *  and reliability of the software and data, the NLM and the U.S.
 *  Government do not and cannot warrant the performance or results that
 *  may be obtained by using this software or data. The NLM and the U.S.
 *  Government disclaim all warranties, express or implied, including
 *  warranties of performance, merchantability or fitness for any particular
 *  purpose.
 *
 *  Please cite the author in any work or product based on this material.
 *
 * ===========================================================================
 *
 */ 
/// This file was generated by application DATATOOL
///
/// ATTENTION:
///   Don't edit or commit this file into SVN as this file will
///   be overridden (by DATATOOL) without warning!

#include <objects/seqset/Seq_entry.hpp>
#include <objects/seq/Bioseq.hpp>
#include <objects/seq/Seq_annot.hpp>
#include <objects/seqfeat/Seq_feat.hpp>
#include <objects/seqfeat/SeqFeatData.hpp>
#include <objects/seqfeat/BioSource.hpp>
#include <objects/seqfeat/Org_ref.hpp>
#include <objects/seqfeat/OrgName.hpp>
#include <objects/seqfeat/MultiOrgName.hpp>
#include <objects/seqfeat/Gene_ref.hpp>
#include <objects/seqfeat/Imp_feat.hpp>
#include <objects/seqfeat/Prot_ref.hpp>
#include <objects/seq/Pubdesc.hpp>
#include <objects/seqfeat/Txinit.hpp>
#include <objects/seqfeat/SeqFeatXref.hpp>
#include <objects/seq/Annot_descr.hpp>
#include <objects/seq/Annotdesc.hpp>
#include <objects/seq/Seq_descr.hpp>
#include <objects/seq/Seqdesc.hpp>
#include <objects/seqblock/GB_block.hpp>
#include <objects/seq/Seq_inst.hpp>
#include <objects/seq/Seq_ext.hpp>
#include <objects/seq/Map_ext.hpp>
#include <objects/seqset/Bioseq_set.hpp>
#include <objects/submit/Seq_submit.hpp>

#include "newcleanupp.hpp"


BEGIN_SCOPE(ncbi)
BEGIN_SCOPE(objects)

class CAutogeneratedExtendedCleanup { 
public: 
  CAutogeneratedExtendedCleanup(
    CScope & scope,
    CNewCleanup_imp & newCleanup ) : 
    m_Scope(scope), 
    m_NewCleanup(newCleanup), 
    m_LastArg_ExtendedCleanupSeqFeat(NULL),
    m_Dummy(0)
  { } 

  void ExtendedCleanupSeqEntry( CSeq_entry & arg0 );
  void ExtendedCleanupSeqSubmit( CSeq_submit & arg0 );
  void ExtendedCleanupSeqAnnot( CSeq_annot & arg0 );
  void ExtendedCleanupBioseq( CBioseq & arg0 );
  void ExtendedCleanupBioseqSet( CBioseq_set & arg0 );
  void ExtendedCleanupSeqFeat( CSeq_feat & arg0_raw );

private: 
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_orgname_lineage_ETC( std::string & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_E1798_ETC( COrgName & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_orgname_name_hybrid_hybrid_E( COrgName & arg0 );
  template< typename Tcontainer_ncbi_cref_corgname_ >
void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_orgname_name_hybrid_hybrid( Tcontainer_ncbi_cref_corgname_ & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_orgname_name_hybrid( CMultiOrgName & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_orgname_name( COrgName::C_Name & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_orgname1799_ETC( COrgName & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_orgname_ETC( COrgName & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_org_ETC( COrg_ref & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_org_ETC( COrg_ref & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_biosrc_ETC( CBioSource & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_biosrc_ETC( CBioSource & arg0 );
  void x_ExtendedCleanupSeqFeat_data_data_gene_gene( CGene_ref & arg0 );
  void x_ExtendedCleanupSeqFeat_data_data_gene( CGene_ref & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_imp_imp_ETC( CImp_feat & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_imp_ETC( CImp_feat & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_txinit_protein_E_E_ETC( CProt_ref & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_txinit_protein_E_ETC( CProt_ref & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_pub_pub_ETC( CPubdesc & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_pub_ETC( CPubdesc & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_txinit_gene_E_E_ETC( CGene_ref & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_txinit_gene_E_ETC( CGene_ref & arg0 );
  template< typename Tcontainer_ncbi_cref_cgene_ref_ >
void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_txinit_gene_ETC( Tcontainer_ncbi_cref_cgene_ref_ & arg0 );
  template< typename Tcontainer_ncbi_cref_cprot_ref_ >
void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_txinit_protein_ETC( Tcontainer_ncbi_cref_cprot_ref_ & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_txinit_ETC( CTxinit & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_txinit_ETC( CTxinit & arg0 );
  void x_ExtendedCleanupSeqFeat_data_data( CSeqFeatData & arg0 );
  void x_ExtendedCleanupSeqFeat_data( CSeqFeatData & arg0 );
  void x_ExtendedCleanupSeqFeat_except_text_ETC( std::string & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_data_ETC( CSeqFeatData & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_data_ETC( CSeqFeatData & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_E_ETC( CSeqFeatXref & arg0 );
  void x_ExtendedCleanupSeqFeat_xref_E_ETC( CSeqFeatXref & arg0 );
  template< typename Tcontainer_ncbi_cref_cseqfeatxref_ >
void x_ExtendedCleanupSeqFeat_xref_ETC( Tcontainer_ncbi_cref_cseqfeatxref_ & arg0 );
  void x_ExtendedCleanupSeqAnnot_data_ftable_E( CSeq_feat & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_feat_ >
void x_ExtendedCleanupSeqAnnot_data_ftable( Tcontainer_ncbi_cref_cseq_feat_ & arg0 );
  void x_ExtendedCleanupSeqAnnot_data( CSeq_annot::C_Data & arg0 );
  void x_ExtendedCleanupBioseqSet_annot_E_E_desc_desc_E_E_ETC( CAnnotdesc & arg0 );
  void x_ExtendedCleanupBioseqSet_annot_E_E_desc_desc_E_ETC( CAnnotdesc & arg0 );
  template< typename Tcontainer_ncbi_cref_cannotdesc_ >
void x_ExtendedCleanupBioseqSet_annot_E_E_desc_desc_ETC( Tcontainer_ncbi_cref_cannotdesc_ & arg0 );
  void x_ExtendedCleanupBioseqSet_annot_E_E_desc_ETC( CAnnot_descr & arg0 );
  void x_ExtendedCleanupBioseq_annot_E( CSeq_annot & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_annot_ >
void x_ExtendedCleanupBioseq_annot( Tcontainer_ncbi_cref_cseq_annot_ & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E_seq_seq_descr_descr_E_E_genbank_genbank_ETC( CGB_block & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E_seq_seq_descr_descr_E_E_genbank_ETC( CGB_block & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E_seq_seq_descr_descr_E_E_ETC( CSeqdesc & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E_seq_seq_descr_descr_E_ETC( CSeqdesc & arg0 );
  template< typename Tcontainer_ncbi_cref_cseqdesc_ >
void x_ExtendedCleanupBioseqSet_seq_set_E_E_seq_seq_descr_descr_ETC( Tcontainer_ncbi_cref_cseqdesc_ & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E_seq_seq_descr_ETC( CSeq_descr & arg0 );
  void x_ExtendedCleanupBioseq_inst_inst_ext_ext_map_map_E( CSeq_feat & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_feat_ >
void x_ExtendedCleanupBioseq_inst_inst_ext_ext_map_map( Tcontainer_ncbi_cref_cseq_feat_ & arg0 );
  void x_ExtendedCleanupBioseq_inst_inst_ext_ext_map( CMap_ext & arg0 );
  void x_ExtendedCleanupBioseq_inst_inst_ext_ext( CSeq_ext & arg0 );
  void x_ExtendedCleanupBioseq_inst_inst_ext( CSeq_ext & arg0 );
  void x_ExtendedCleanupBioseq_inst_inst( CSeq_inst & arg0 );
  void x_ExtendedCleanupBioseq_inst( CSeq_inst & arg0 );
  void x_ExtendedCleanupSeqEntry_seq( CBioseq & arg0 );
  void x_ExtendedCleanupSeqEntry_set_set_annot_E( CSeq_annot & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_annot_ >
void x_ExtendedCleanupSeqEntry_set_set_annot( Tcontainer_ncbi_cref_cseq_annot_ & arg0 );
  void x_ExtendedCleanupSeqEntry_set_set_seq_set_E( CSeq_entry & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_entry_ >
void x_ExtendedCleanupSeqEntry_set_set_seq_set( Tcontainer_ncbi_cref_cseq_entry_ & arg0 );
  void x_ExtendedCleanupSeqEntry_set_set_ETC( CBioseq_set & arg0 );
  void x_ExtendedCleanupSeqEntry_set( CBioseq_set & arg0 );
  void x_ExtendedCleanupSeqSubmit_data_annots_E( CSeq_annot & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_annot_ >
void x_ExtendedCleanupSeqSubmit_data_annots( Tcontainer_ncbi_cref_cseq_annot_ & arg0 );
  void x_ExtendedCleanupSeqSubmit_data_entrys_E( CSeq_entry & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_entry_ >
void x_ExtendedCleanupSeqSubmit_data_entrys( Tcontainer_ncbi_cref_cseq_entry_ & arg0 );
  void x_ExtendedCleanupSeqSubmit_data( CSeq_submit::C_Data & arg0 );
  void x_ExtendedCleanupBioseqSet_annot_E( CSeq_annot & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_annot_ >
void x_ExtendedCleanupBioseqSet_annot( Tcontainer_ncbi_cref_cseq_annot_ & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E_seq( CBioseq & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E_set( CBioseq_set & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E_E( CSeq_entry & arg0 );
  void x_ExtendedCleanupBioseqSet_seq_set_E( CSeq_entry & arg0 );
  template< typename Tcontainer_ncbi_cref_cseq_entry_ >
void x_ExtendedCleanupBioseqSet_seq_set( Tcontainer_ncbi_cref_cseq_entry_ & arg0 );

  CScope & m_Scope;
  CNewCleanup_imp & m_NewCleanup;

  CSeq_feat* m_LastArg_ExtendedCleanupSeqFeat;

  int m_Dummy;
}; // end of CAutogeneratedExtendedCleanup

END_SCOPE(objects)
END_SCOPE(ncbi)

#endif /* AUTOGENERATEDEXTENDEDCLEANUP__HPP */
