/* $Id: RNA_gen.cpp 618378 2020-10-19 16:39:55Z kans $
 * ===========================================================================
 *
 *                            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.
 *
 * ===========================================================================
 *
 * Author:  .......
 *
 * File Description:
 *   .......
 *
 * Remark:
 *   This code was originally generated by application DATATOOL
 *   using the following specifications:
 *   'seqfeat.asn'.
 */

// standard includes
#include <ncbi_pch.hpp>
#include <util/static_set.hpp>

// generated includes
#include <objects/seqfeat/RNA_gen.hpp>

// generated classes

BEGIN_NCBI_SCOPE

BEGIN_objects_SCOPE // namespace ncbi::objects::

// destructor
CRNA_gen::~CRNA_gen(void)
{
}


static const char* const kAcceptedClasses[] = {
    "antisense_RNA",
    "autocatalytically_spliced_intron",
    "circRNA",
    "guide_RNA",
    "hammerhead_ribozyme",
    "lncRNA",
    "miRNA",
    "other",
    "piRNA",
    "pre_miRNA",
    "rasiRNA",
    "ribozyme",
    "RNase_MRP_RNA",
    "RNase_P_RNA",
    "scaRNA",
    "scRNA",
    "sgRNA",
    "siRNA",
    "snoRNA",
    "snRNA",
    "SRP_RNA",
    "telomerase_RNA",
    "vault_RNA",
    "Y_RNA",
};
typedef CStaticArraySet<const char*, PNocase_CStr> TAcceptedClasses;
DEFINE_STATIC_ARRAY_MAP(TAcceptedClasses,
    sc_AcceptedClasses, kAcceptedClasses);

vector<string> CRNA_gen::GetncRNAClassList()
{
    vector<string> choices;

    TAcceptedClasses::const_iterator it = sc_AcceptedClasses.begin();
    while (it != sc_AcceptedClasses.end()) {
        choices.push_back(*it);
        ++it;
    }
    return choices;
}


bool CRNA_gen::IsLegalClass(const string& val)
{
    TAcceptedClasses::const_iterator it =
        sc_AcceptedClasses.find(val.c_str());
    return (it != sc_AcceptedClasses.end());
}

bool CRNA_gen::FixncRNAClassValue(string& val)
{
    TAcceptedClasses::const_iterator it =
        sc_AcceptedClasses.find(val.c_str());

    string original = val;
    if (it != sc_AcceptedClasses.end()) {
        val = *it;
    }

    return original != val;
}

bool CRNA_gen::IsLegalClass() const
{
    if (IsSetClass()) {
        return IsLegalClass(GetClass());
    }
    return false;
}

END_objects_SCOPE // namespace ncbi::objects::

END_NCBI_SCOPE

/* Original file checksum: lines: 57, chars: 1718, CRC32: 737cf1b8 */
