80 #define USE_THREAD_POOL1
82 #ifdef USE_THREAD_POOL
83 #include "threadpool.hpp"
89 #if defined(HAVE_LIBGRPC) && defined(HAVE_NCBI_VDB)
90 # define USE_SNPLOADER
96 # include <grpc++/grpc++.h>
107 #define NCBI_URL_BASE "https://www.ncbi.nlm.nih.gov"
137 void Init()
override;
184 template<
typename _TMethod,
typename... TArgs>
185 bool x_OneShot(_TMethod method, TArgs&& ... args);
186 template<
typename _TMethod,
typename... TArgs>
187 static void x_OneShotMethod(_TMethod method,
const CAsn2FlatApp* app, CAsn2FlatApp::TThreadStatePool::TUniqPointer thread_state, TArgs ... args);
198 #ifdef USE_THREAD_POOL
199 TThreadPool m_thread_pool;
220 unique_ptr<ncbi::grpcapi::dbsnp::primary_track::DbSnpPrimaryTrack::Stub> m_SNPTrackStub;
262 arg_desc->SetUsageContext(
"",
"Convert an ASN.1 Seq-entry into a flat report");
266 arg_desc->SetCurrentGroup(
"Input/Output Options");
272 arg_desc->SetConstraint(
"serial",
274 arg_desc->AddFlag(
"sub",
"Submission");
283 arg_desc->SetConstraint(
"type",
284 &(*
new CArgAllow_Strings,
"any",
"seq-entry",
"bioseq",
"bioseq-set",
"seq-submit"));
310 arg_desc->SetCurrentGroup(
"Batch Processing Options");
311 arg_desc->AddFlag(
"batch",
"Process NCBI release file");
313 arg_desc->AddFlag(
"c",
"Compressed file");
315 arg_desc->AddFlag(
"p",
"Propagate top descriptors");
323 arg_desc->SetCurrentGroup(
"Debugging Options - Subject to change or removal without warning");
325 arg_desc->AddFlag(
"huge",
"Use Huge files mode");
326 arg_desc->AddFlag(
"disable-huge",
"Explicitly disable huge-files mode");
327 arg_desc->SetDependency(
"disable-huge",
330 arg_desc->AddFlag(
"use_mt",
"Use multiple threads when possible");
335 "benchmark-cancel-checking",
336 "Check statistics on how often the flatfile generator checks if "
337 "it should be canceled. This also sets up SIGUSR1 to trigger "
353 auto filename = args[name].AsString();
367 <<
" is more than 1 year old. Please download the current version if it is newer." << endl;
388 if (args[
"gbload"] || args[
"id"] || args[
"ids"]) {
393 if ((args[
"enable-external"] && ! args[
"no-external"]) || args[
"policy"].AsString() ==
"external") {
397 gb_loader->CGBDataLoader::SetAlwaysLoadExternal(
true);
407 string host = cfg.
GetString(
"SNPAccess",
"host",
"");
408 string port = cfg.
GetString(
"SNPAccess",
"port",
"");
409 string hostport = host +
":" + port;
412 grpc::CreateChannel(hostport, grpc::InsecureChannelCredentials());
436 m_HugeFileMode = ! args[
"disable-huge"] && (args[
"huge"] || cfg.
GetBool(
"asn2flat",
"UseHugeFiles",
false));
439 NcbiCerr <<
"Use of -huge mode also requires use of the -i argument. Disabling -huge mode." << endl;
443 NcbiCerr <<
"Use of -huge mode is incompatible with -i /dev/stdin. Disabling -huge mode." << endl;
447 NcbiCerr <<
"Use of -huge cannot be combined with -batch. Disabling -huge mode." << endl;
451 NcbiCerr <<
"Use of -huge cannot be combined with -c. Disabling -huge mode." << endl;
468 bool has_o_args = has_o_arg || has_on_arg || has_og_arg || has_or_arg || has_op_arg || has_ou_arg;
478 auto view = args[
"view"].AsString();
506 if (id_str.empty() || id_str[0] ==
'#') {
523 m_huge_process.OpenFile(args[
"i"].AsString(), args[
"c"] ?
nullptr : &edit::CHugeFileProcess::g_supported_types);
532 if (args[
"i"] && args[
"batch"] && !args[
"c"] &&
538 if (content == CBioseq_set::GetTypeInfo()) {
547 string msg = args[
"i"] ?
"Unable to open input file" + args[
"i"].AsString() :
"Unable to read data from stdin";
571 template<
typename _TMethod,
typename... TArgs>
579 auto success = method(app,
context, std::forward<TArgs>(args)...);
583 template<
typename _TMethod,
typename... TArgs>
587 "CAsn2FlatApp::x_OneShot should be used with class member function pointers");
598 auto member = std::mem_fn(method);
600 auto calleable =
x_OneShotMethod<decltype(member), std::decay_t<TArgs>...>;
603 #ifdef USE_THREAD_POOL
604 m_thread_pool.OneShot(calleable, member,
this, std::move(thread_state), std::forward<TArgs>(args)...);
606 std::thread(calleable, member,
this, std::move(thread_state), std::forward<TArgs>(args)...).detach();
609 calleable(member,
this, std::move(thread_state), std::forward<TArgs>(args)...);
619 if (reader && seqid) {
620 auto entry = reader->LoadSeqEntry(seqid);
624 if (
auto pSubmitBlock = reader->GetSubmitBlock(); pSubmitBlock) {
626 pSeqSubmit->SetSub().Assign(*pSubmitBlock);
627 pSeqSubmit->SetData().SetEntrys().push_back(entry);
639 bool propagate =
GetArgs()[
"p" ];
675 for (
auto id: idlist) {
694 string asn_type = args[
"type"].AsString();
700 if (asn_info ==
nullptr)
702 if (asn_type ==
"seq-entry") {
703 asn_info = CSeq_entry::GetTypeInfo();
704 }
else if (asn_type ==
"bioseq") {
705 asn_info = CBioseq::GetTypeInfo();
706 }
else if (asn_type ==
"bioseq-set") {
707 asn_info = CBioseq_set::GetTypeInfo();
708 }
else if (asn_type ==
"seq-submit") {
709 asn_info = CSeq_submit::GetTypeInfo();
713 if (asn_info == CSeq_entry::GetTypeInfo()) {
718 while (! is->EndOfData()) {
724 context.m_Scope->RemoveTopLevelSeqEntry(seh);
726 }
else if (asn_info == CBioseq::GetTypeInfo()) {
731 while (! is->EndOfData()) {
737 context.m_Scope->RemoveTopLevelSeqEntry(seh);
739 }
else if (asn_info == CBioseq_set::GetTypeInfo()) {
744 while (! is->EndOfData()) {
750 context.m_Scope->RemoveTopLevelSeqEntry(seh);
752 }
else if (asn_info == CSeq_submit::GetTypeInfo()) {
753 while (! is->EndOfData()) {
756 }
else if (asn_type ==
"any") {
760 while (! is->EndOfData()) {
761 string strNextTypeName = is->PeekNextTypeName();
790 context.m_Scope->RemoveTopLevelSeqEntry(seh);
807 context.m_cleanup.BasicCleanup(sub);
815 seh =
context.m_Scope->GetSeq_entryHandle(*e);
820 seh =
context.m_Scope->AddTopLevelSeqEntry(*e);
831 context.m_Scope->RemoveTopLevelSeqEntry(seh);
842 return HandleSeqSubmit(
context, *sub);
872 HandleSeqEntryHandle(
context, seh);
898 context.m_cleanup.BasicCleanup(*tmp_se);
900 if (tmp_se->
IsSet()) {
925 return context.m_Scope->AddTopLevelSeqEntry(*se);
954 return context.m_Scope->AddTopLevelSeqEntry(*entry);
979 context.m_Scope->ResetDataAndHistory();
988 if (args[
"serial"]) {
989 const string&
val = args[
"serial"].AsString();
992 }
else if (
val ==
"binary") {
994 }
else if (
val ==
"XML") {
1002 bool bDeleteOnClose =
false;
1011 pInputStream =
new CNcbiIfstream(args[
"i"].AsString(), ios::binary);
1012 bDeleteOnClose =
true;
1014 pInputStream = &std::cin;
1035 return unique_ptr<CObjectIStream>{pI};
1056 if( args[
"benchmark-cancel-checking"] ) {
1062 bool nuc = args[
"og"] || args[
"or"] || args[
"on"];
1063 bool prot = args[
"op"];
1084 context.m_FFGenerator->SetAnnotSelector().IncludeNamedAnnotAccession(
"SNP");
1087 if (args[
"no-external"] || args[
"policy"].AsString() ==
"internal") {
1088 context.m_FFGenerator->SetAnnotSelector().SetExcludeExternal(
true);
1093 if (args[
"resolve-all"] || args[
"policy"].AsString() ==
"external") {
1094 context.m_FFGenerator->SetAnnotSelector().SetResolveAll();
1096 if (args[
"depth"]) {
1097 context.m_FFGenerator->SetAnnotSelector().SetResolveDepth(args[
"depth"].AsInteger());
1099 if (args[
"max_search_segments"]) {
1100 context.m_FFGenerator->SetAnnotSelector().SetMaxSearchSegments(args[
"max_search_segments"].AsInteger());
1102 if (args[
"max_search_time"]) {
1103 context.m_FFGenerator->SetAnnotSelector().SetMaxSearchTime(
float(args[
"max_search_time"].AsDouble()));
1121 return static_cast<ENa_strand>(args[
"strand"].AsInteger());
1153 if (args[
"location"]) {
1155 const string& locn = args[
"location"].AsString();
1168 if (args[
"strand"]) {
1178 loc.
SetInt().SetFrom(from);
1181 loc.
SetInt().SetStrand(strand);
1190 if (entry.
IsSeq()) {
1217 return it->GetSeq();
1225 return it->GetSeq();
1258 string acc_prefix = acc.substr(0, 2);
1259 if (acc_prefix ==
"NC" || acc_prefix ==
"AC" ||
1260 acc_prefix ==
"NT" || acc_prefix ==
"NW") {
1272 #ifdef USE_SNPLOADER
1280 auto snp_status = m_SNPTrackStub->ForSeqId(&
context, request, &reply);
1281 if (snp_status.ok()) {
1283 if (! na_acc.empty())
1295 if (args[
"from"] || args[
"to"] || args[
"strand"] || args[
"location"]) {
1299 context.m_FFGenerator->Generate(loc, seh.
GetScope(), *flatfile_os, { flatfile_os });
1315 if (
context.m_FFGenerator.NotEmpty()) {
1316 context.m_FFGenerator->SetFeatTree(
nullptr);
1319 if (
context.m_Scope.NotEmpty()) {
1320 context.m_Scope->ResetDataAndHistory();
1326 if (
context.m_Scope.Empty()) {
1328 context.m_Scope->AddDefaults();
1330 #ifdef USE_SNPLOADER
1331 if (m_SNPDataLoader) {
1332 context.m_Scope->AddDataLoader(m_SNPDataLoader->GetLoaderNameFromArgs());
1335 #ifdef USE_CDDLOADER
1343 if (
context.m_FFGenerator.Empty())
1353 if (args[
"o"] && args[
"format"] && args[
"format"].AsString() ==
"insdseq") {
1357 *os << (unwrap ?
"</INSDSet>" :
"<INSDSet>") << endl;
1373 int main(
int argc,
const char** argv)
1376 list<string> split_args;
1377 vector<const char*> new_argv;
1379 if (argc==2 && argv && argv[1] && strchr(argv[1],
' '))
1383 auto it = split_args.begin();
1384 while (it != split_args.end())
1387 if (
next != split_args.end() &&
1388 ((it->front() ==
'"' && it->back() !=
'"') ||
1389 (it->front() ==
'\'' && it->back() !=
'\'')))
1391 it->append(
" "); it->append(*
next);
1395 for (
auto& rec: split_args)
1397 if (rec.front()==
'\'' && rec.back()==
'\'')
1398 rec=rec.substr(1, rec.length()-2);
1400 argc = 1 +
int(split_args.size());
1401 new_argv.reserve(argc);
1402 new_argv.push_back(argv[0]);
1403 for (
const string& s : split_args)
1405 new_argv.push_back(s.c_str());
1406 std::cerr << s.c_str() <<
" ";
1411 argv = new_argv.data();
User-defined methods of the data storage class.
static const CDataLoadersUtil::TLoaders default_loaders
int main(int argc, const char **argv)
void Init() override
Initialize the application.
void x_GetLocation(const CSeq_entry_Handle &entry, const CArgs &args, CSeq_loc &loc) const
static void x_OneShotMethod(_TMethod method, const CAsn2FlatApp *app, CAsn2FlatApp::TThreadStatePool::TUniqPointer thread_state, TArgs ... args)
int x_GenerateTraditionally(unique_ptr< CObjectIStream > is, TFFContext &context, const CArgs &args) const
bool HandleSeqSubmit(TFFContext &context, CObjectIStream &is) const
TResourcePool< TFFContext > TThreadStatePool
TThreadStatePool m_state_pool
void x_FFGenerate(CSeq_entry_Handle seh, TFFContext &context) const
int x_AddSNPAnnots(CBioseq_Handle &bsh, TFFContext &context) const
bool HandleSeqId(TFFContext &context, const edit::CHugeAsnReader *reader, CConstRef< CSeq_id > seqid) const
TSeqPos x_GetTo(const CArgs &args) const
unique_ptr< CObjectIStream > x_OpenIStream(const CArgs &args) const
void HandleTextId(TFFContext &context, const string &id) const
edit::CHugeFileProcess m_huge_process
CSeq_entry_Handle ObtainSeqEntryFromBioseq(TFFContext &context, CObjectIStream &is, bool report) const
void x_CreateFlatFileGenerator(TFFContext &context, const CArgs &args) const
std::atomic< bool > m_stopit
unique_ptr< ICanceled > m_pCanceledCallback
CRef< CCDDDataLoader > m_CDDDataLoader
void x_ResetContext(TFFContext &context)
TSeqPos x_GetFrom(const CArgs &args) const
CBioseq_Handle x_DeduceTarget(const CSeq_entry_Handle &entry) const
bool HandleSeqEntryHandle(TFFContext &context, CSeq_entry_Handle seh) const
std::atomic< bool > m_Exception
bool WrapINSDSet(bool unwrap)
ENa_strand x_GetStrand(const CArgs &args) const
int Run() override
Run the application.
void x_InitNewContext(TFFContext &context)
CSeq_entry_Handle ObtainSeqEntryFromBioseqSet(TFFContext &context, CObjectIStream &is, bool report) const
bool x_OneShot(_TMethod method, TArgs &&... args)
CSeq_entry_Handle ObtainSeqEntryFromSeqEntry(TFFContext &context, CObjectIStream &is, bool report) const
CFFMultiSourceFileSet m_writers
bool SetFlatfileOstream(eFlatFileCodes _code, const string &name)
CFlatFileConfig::CGenbankBlockCallback TGenbankBlockCallback
decltype(TFFContext::m_streams) fileset_type
int x_GenerateBatchMode(unique_ptr< CObjectIStream > is)
CRef< CObjectManager > m_Objmgr
bool HandleSeqEntry(TFFContext &context, CRef< CSeq_entry > se) const
CBioseq_set_EditHandle –.
static string GetLoaderNameFromArgs(void)
static TRegisterLoaderInfo RegisterInObjectManager(CObjectManager &om, CObjectManager::EIsDefault is_default=CObjectManager::eNonDefault, CObjectManager::TPriority priority=CObjectManager::kPriority_NotSet)
static void SetupObjectManager(const CArgs &args, objects::CObjectManager &obj_mgr, TLoaders loaders=fDefault)
Set up the standard object manager data loaders according to the arguments provided above.
static void AddArgumentDescriptions(CArgDescriptions &arg_desc, TLoaders loaders=fDefault)
Add a standard set of arguments used to configure the object manager.
static void AddArgumentDescriptions(CArgDescriptions &args)
void SetHTMLFormatter(CRef< IHTMLFormatter > html_fmt)
bool ShowSNPFeatures(void) const
void FromArguments(const CArgs &args)
CFlatFileConfig & SetHideSNPFeatures(bool val=true)
bool BasicCleanup(void) const
SAnnotSelector & SetAnnotSelector(void)
CGBReleaseFile is a utility class to ease the processing of Genbank release files one Seq-entry at a ...
CGRPCClientContext – client context for NCBI gRPC services.
CGetSeqLocFromStringHelper_ReadLocFromText(CScope *scope)
virtual CRef< CSeq_loc > Seq_loc_Add(const CSeq_loc &loc1, const CSeq_loc &loc2, CSeq_loc::TOpFlags flags)
static TRegisterLoaderInfo RegisterInObjectManager(CObjectManager &om, const SLoaderParams ¶ms, CObjectManager::EIsDefault is_default=CObjectManager::eNonDefault, CObjectManager::TPriority priority=CObjectManager::kPriority_NotSet)
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
CWrapINSDSet(CAsn2FlatApp *app)
CZipStreamDecompressor – zlib based decompression stream processor.
void SetDepth(size_t depth)
void SetUseMT(bool use_mt)
fileset_type MakeNewFileset()
void Open(enum_type _enum, const std::string &filename)
static std::unique_ptr< Stub > NewStub(const std::shared_ptr< ::grpc::ChannelInterface > &channel, const ::grpc::StubOptions &options=::grpc::StubOptions())
const std::string & na_track_acc_with_filter() const
void set_gi(::uint64_t value)
Include a standard set of the NCBI C++ Toolkit most basic headers.
The NCBI C++ standard methods for dealing with std::string.
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char location[]
const CNcbiRegistry & GetConfig(void) const
Get the application's cached configuration parameters (read-only).
unsigned int TSeqPos
Type for sequence locations and lengths.
virtual const CArgs & GetArgs(void) const
Get parsed command line arguments.
int AppMain(int argc, const char *const *argv, const char *const *envp=0, EAppDiagStream diag=eDS_Default, const char *conf=NcbiEmptyCStr, const string &name=NcbiEmptyString)
Main function (entry point) for the NCBI application.
virtual void SetupArgDescriptions(CArgDescriptions *arg_desc)
Setup the command line argument descriptions.
const string & GetProgramDisplayName(void) const
Get the application's "display" name.
const CVersionAPI & GetFullVersion(void) const
Get the program version information.
void SetVersion(const CVersionInfo &version)
Set the version number for the program.
@ eTakeOwnership
An object can take ownership of another.
@ eNoOwnership
No ownership is assumed.
@ eExcludes
One argument excludes another.
@ eInputFile
Name of file (must exist and be readable)
@ eString
An arbitrary string.
@ eOutputFile
Name of file (must be writable)
@ fCheckFileHeader
Check (and skip) gzip file header on decompression stage.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
ESerialDataFormat
Data file format.
@ eSerial_AsnText
ASN.1 text.
@ eSerial_AsnBinary
ASN.1 binary.
TGi FindGi(const container &ids)
Return gi from id list if exists, return 0 otherwise.
static SIZE_TYPE ParseIDs(CBioseq::TId &ids, const CTempString &s, TParseFlags flags=fParse_Default)
Parse a string representing one or more Seq-ids, appending the results to IDS.
void GetLabel(string *label, ELabelType type=eDefault, TLabelFlags flags=fLabel_Default) const
Append a label for this Seq-id to the supplied string.
static int Score(const CRef< CSeq_id > &id)
Wrappers for use with FindBestChoice from <corelib/ncbiutil.hpp>
@ eContent
Untagged human-readable accession or the like.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
static CObjectIStream * Open(ESerialDataFormat format, CNcbiIstream &inStream, bool deleteInStream)
Create serial object reader and attach it to an input stream.
CRef< CSeq_loc > Seq_loc_Add(const CSeq_loc &loc1, const CSeq_loc &loc2, CSeq_loc::TOpFlags flags, CScope *scope)
Add two seq-locs.
TTaxId GetTaxId(const CBioseq_Handle &handle)
return the tax-id associated with a given sequence.
TLoader * GetLoader(void) const
Get pointer to the loader.
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
CDataLoader * FindDataLoader(const string &loader_name) const
Try to find a registered data loader by name.
static void SetDefaultKeepExternalAnnotsForEdit(bool keep=true)
Set new application-wide KeepExternalAnnotsForEdit flag.
TClass GetClass(void) const
TSet SelectSet(TClass set_class=CBioseq_set::eClass_not_set) const
Convert the empty Seq-entry to Bioseq-set.
CSeq_entry_Handle GetParentEntry(void) const
Get parent Seq-entry handle.
TBioseqCore GetBioseqCore(void) const
Get bioseq core structure.
CConstRef< TObject > GetCompleteObject(void) const
TInst_Mol GetInst_Mol(void) const
CConstRef< CSeq_id > GetSeqId(void) const
Get id which can be used to access this bioseq handle Throws an exception if none is available.
void Remove(ERemoveMode mode=eRemoveSeq_entry) const
void Remove(ERemoveMode mode=eRemoveSeq_entry) const
Remove current seqset-entry from its location.
CConstRef< TObject > GetCompleteObject(void) const
TSeq SelectSeq(CBioseq &seq) const
Make the empty Seq-entry be in seq state with specified Bioseq object.
CSeq_entry_EditHandle GetEditHandle(void) const
Get 'edit' version of handle.
CSeq_entry_Handle GetTopLevelEntry(void) const
Get top level Seq-entry handle.
TInst_Length GetInst_Length(void) const
bool IsSetClass(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeq_entry_Handle GetTopLevelEntry(void) const
Get top level Seq-entry handle.
SAnnotSelector & IncludeNamedAnnotAccession(const string &acc, int zoom_level=0)
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
void Reset(void)
Reset reference object.
virtual bool GetBool(const string §ion, const string &name, bool default_value, TFlags flags=0, EErrAction err_action=eThrow) const
Get boolean value of specified parameter name.
virtual string GetString(const string §ion, const string &name, const string &default_value, TFlags flags=0) const
Get the parameter string value.
@ eReturn
Return default value.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CNcbiIstream & NcbiGetlineEOL(CNcbiIstream &is, string &str, string::size_type *count=NULL)
Read from "is" to "str" the next line (taking into account platform specifics of End-of-Line)
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static string TruncateSpaces(const string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string.
@ eCurrent
Use current time. See also CCurrentTime.
void CONNECT_Init(const IRWRegistry *reg=0, CRWLock *lock=0, TConnectInitFlags flag=eConnectInit_OwnNothing, FSSLSetup ssl=0)
Init [X]CONNECT library with the specified "reg" and "lock" (ownership for either or both can be deta...
C::value_type FindBestChoice(const C &container, F score_func)
Find the best choice (lowest score) for values in a container.
static void TrapSignals(TSignalMask signals)
Sets interrupt signal handling.
@ eSignal_USR1
User defined signal 1.
const SBuildInfo & GetBuildInfo() const
Get build info (date and tag, if set)
CTime GetBuildTime(void) const
Converts 'date' parameter to CTime.
ENa_strand
strand of nucleic acid
E_Choice Which(void) const
Which variant is currently selected.
@ e_Other
for historical reasons, 'other' = 'refseq'
TSet & SetSet(void)
Select the variant.
E_Choice Which(void) const
Which variant is currently selected.
bool IsSet(void) const
Check if variant Set is selected.
TSeq & SetSeq(void)
Select the variant.
@ eClass_nuc_prot
nuc acid and coded proteins
@ eClass_gen_prod_set
genomic products, chrom+mRNA+protein
@ eClass_genbank
converted genbank
@ eClass_segset
segmented sequence + parts
@ e_not_set
No variant selected.
const TId & GetId(void) const
Get the Id member data.
list< CRef< CSeq_id > > TId
@ eMol_na
just a nucleic acid
bool IsSetData(void) const
Check if a value has been assigned to Data data member.
const TEntrys & GetEntrys(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
const TSub & GetSub(void) const
Get the Sub member data.
bool IsSetSub(void) const
Check if a value has been assigned to Sub data member.
bool IsEntrys(void) const
Check if variant Entrys is selected.
unsigned int
A callback function used to compare two keys in a database.
const struct ncbi::grid::netcache::search::fields::EXPIRES expires
const GenericPointer< typename T::ValueType > T2 value
#define NCBI_SC_VERSION_PROXY
#define NCBI_TEAMCITY_BUILD_NUMBER_PROXY
Setup interrupt signal handling.
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
std::istream & in(std::istream &in_, double &x_)
CRef< CSeq_loc > GetSeqLocFromString(const string &text, const CSeq_id *id, CGetSeqLocFromStringHelper *helper)
Utility macros and typedefs for exploring NCBI objects from seq.asn.
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
CFFMultiSourceFileSet::fileset_type m_streams
CRef< CFlatFileGenerator > m_FFGenerator
static CS_CONTEXT * context