56 const string & name_list,
59 : m_AliasSets (atlas),
60 m_IsProtein (prot_nucl ==
'p'),
66 m_TotalLengthStats (-1),
70 m_NeedTotalsScan (-1),
74 if (name_list.size() && prot_nucl !=
'-') {
87 vector<CSeqDB_Substring> dbs;
93 for(
size_t i = 0;
i<dbs.size();
i++) {
100 const string & dbname_list,
108 m_AliasSets(alias_sets),
109 m_ExpandLinks(expand_links)
165 m_ThisName (m_DBPath,
dbname, prot_nucl,
'a',
'l'),
166 m_AliasSets (alias_sets),
167 m_ExpandLinks (expand_links)
198 resolved = (*i).second;
201 return ! resolved.
empty();
272 resolved_path =
CSeqDB_Path(resolved_bp, prot_nucl,
'a',
'l');
276 if (! resolved_path.
Valid()) {
285 p_or_n =
"nucleotide";
289 string msg(
"SeqDB: Internal error: bad sequence type for database [");
312 oss <<
"No alias or index file found for " << p_or_n
313 <<
" database [" <<
m_DBList[
i].GetBasePathS()
314 <<
"] in search path [" << search_path <<
"]";
316 string msg(oss.str());
324 string dir_name, base_name;
341 size_t common =
m_DBList[0].GetBasePathS().size();
345 if (
m_DBList[
i].GetBasePathS().size() < common) {
346 common =
m_DBList[
i].GetBasePathS().size();
359 while(memcmp(
first.c_str(),
412 const char * spacep = p;
414 while((spacep < ep) && ((*spacep !=
' ') && (*spacep !=
'\t')))
420 while((spacep < ep) && ((*spacep ==
' ') || (*spacep ==
'\t')))
424 while((spacep < ep) && ((ep[-1] ==
' ') || (ep[-1] ==
'\t')))
429 for(
size_t i = 0;
i<
value.size();
i++) {
489 vector<const char *> &
offsets)
491 size_t keylen =
key.size();
493 const char * last_keyp = ep - keylen;
495 for(
const char * p = bp; p < last_keyp; p++) {
498 for(
size_t i = 0;
i < keylen;
i++) {
499 if (p[
i] !=
key[
i]) {
512 const char * p2 = p - 1;
515 if ((*p2) !=
' ' && (*p2) !=
'\t') {
528 for(p2 = p + keylen; p2 < ep && !
SEQDB_ISEOL(*p2); p2++)
549 string key(
"ALIAS_FILE");
558 const char * ep = bp + (size_t) length;
568 size_t last_start =
offsets.size() - 2;
574 for(
size_t i = 0;
i < last_start;
i += 2) {
583 string msg(
"Alias set file: syntax error near offset "
633 const string & file_data = group[alias_fname.
GetFileNameS()];
635 if (file_data.empty()) {
642 *bp = file_data.data();
643 *ep = file_data.data() + file_data.size();
656 bool has_group_file =
false;
660 if (! has_group_file) {
665 *ep = (*bp) + length;
687 string name_s, value_s;
691 while((p < ep) && (*p ==
' ')) {
695 const char * eolp = p;
742 situation =
"passed to CSeqDB::CSeqDB().";
744 situation =
string(
"found in alias file [")
750 string(
"No database names were ") + situation);
777 string dir_name, base_name;
805 CSeqDB_Path new_db_path( base, prot_nucl,
'a',
'l' );
807 if ( recurse.
Exists(new_db_path) ) {
810 "Illegal configuration: DB alias files are mutually recursive.");
834 CSeqDB_Path new_local_vol_path(local_base, prot_nucl,
'i',
'n' );
842 CSeqDB_Path new_vol_path( base, prot_nucl,
'i',
'n' );
853 string dir_name, base_name;
894 string dir_name, base_name;
895 result.FindDirName().GetString(dir_name);
896 result.FindBaseName().GetString(base_name);
900 normal_name =
result.GetBasePathS();
919 oss <<
"Could not find volume or alias file ("
920 <<
m_DBList[
i].GetBasePathS() <<
") referenced in alias file ("
938 volset.
insert(path->GetBasePathS());
941 ITERATE(vector<CSeqDB_BasePath>, path, (*iter)->m_VolNames) {
942 volset.
insert(path->GetBasePathS());
945 volset.
insert(((*sub)->m_ThisName).GetPathS());
952 vols.push_back(*iter);
961 alias->push_back(*iter);
971 vols.
insert(iter->GetBasePathS());
975 if (alias_base !=
"-") {
980 (*iter)->x_FindVolumePaths(vols, alias);
1058 return "MAX_SEQ_LENGTH";
1113 return "MIN_SEQ_LENGTH";
1244 return "STATS_NSEQ";
1345 return "STATS_TOTLEN";
1433 return "OID_MASK_TYPE";
1519 if (vars.
find(
"NSEQ") != vars.
end() &&
1520 vars.
find(
"LENGTH") != vars.
end()) {
1528 if (vars.
find(
"GILIST") != vars.
end()) {
1535 if (vars.
find(
"TILIST") != vars.
end()) {
1542 if (vars.
find(
"SEQIDLIST") != vars.
end()) {
1546 if (vars.
find(
"TAXIDLIST") != vars.
end()) {
1551 if (vars.
find(
"OIDLIST") != vars.
end()) {
1585 (*node)->WalkNodes( walker, volset );
1589 if (
const CSeqDBVol * vptr = volset.
GetVol(volname->GetBasePathS())) {
1605 (*node)->WalkNodes( explorer, volset );
1609 if (
const CSeqDBVol * vptr = volset.
GetVol(volname->GetBasePathS())) {
1718 (**node).CompleteAliasFileValues(volset);
1737 (**node).GetAliasFileValues(afv);
1751 vector <CTempString> masks;
1754 mask_list.push_back(
string(*
mask));
1781 afv[v->
GetVolName() + extn].push_back(values);
1886 (*node)->BuildFilterTree( *subtree );
1974 int last_oid = INT_MAX;
1975 bool has_range =
false;
2007 int oid_mask_type = 0;
2016 const string & gilname = gil_iter->second;
2018 if (gilname.find(
" ") != gilname.npos) {
2021 ") has multiple GI lists (" + gilname +
").";
2034 const string & tilname = til_iter->second;
2036 if (tilname.find(
" ") != tilname.npos) {
2039 ") has multiple TI lists (" + tilname +
").";
2052 const string & silname = sil_iter->second;
2054 if (silname.find(
" ") != silname.npos) {
2057 ") has multiple SEQID lists (" + silname +
").";
2076 const string & taxid_name = taxid_iter->second;
2077 if (taxid_name.find(
" ") != taxid_name.npos) {
2079 ") has multiple Tax ids lists (" + taxid_name +
").";
2093 (**sn).ComputeMasks(has_filters);
@ eOidList
Data is a list of discontiguous ordinal ids (indices)
void SetFrame(const string &frame)
void Log(const string &name, const char *value, CDebugDumpFormatter::EValueType type=CDebugDumpFormatter::eValue, const string &comment=kEmptyStr)
CSeqDBAliasSets m_AliasSets
Combined alias files.
int m_MembBit
Membership bit.
void GetAliasFileValues(TAliasFileValues &afv, const CSeqDBVolSet &volset)
Get Name/Value Data From Alias Files.
Int8 GetNumSeqsStats(const CSeqDBVolSet &volset) const
Get the number of sequences available.
bool m_HasTitle
True if we have the database title.
bool m_HasFilters
Are there filters for this database?
Uint8 GetTotalLength(const CSeqDBVolSet &volset) const
Get the total length of the set of databases.
vector< string > m_AliasNames
The cached output of the topmost node's FindVolumePaths(recursive).
Int4 m_MinLength
Shortest sequence length.
void x_ComputeMasks()
Compute filtering options for all volumes.
Uint8 GetTotalLengthStats(const CSeqDBVolSet &volset) const
Get the total length of the set of databases.
bool m_IsProtein
True if this is a protein database.
bool NeedTotalsScan(const CSeqDBVolSet &volset) const
Check whether a db scan is need to compute correct totals.
Int4 GetMinLength(const CSeqDBVolSet &volset) const
Get the number of sequences available.
Int8 GetNumOIDs(const CSeqDBVolSet &volset) const
Get the size of the OID range.
int GetOidMaskType(const CSeqDBVolSet &volset) const
Get the Oid Mask Type.
Int8 m_TotalLength
Total length.
Int8 m_NumOIDs
Number of OIDs.
Int8 m_NumSeqs
Number of sequences.
int m_NumSeqsStats
Number of sequences for statistics purposes.
CRef< CSeqDB_FilterTree > m_TopTree
Filter tree representing all alias file filtering.
int m_NeedTotalsScan
1 if we need a totals scan, 0 if not, -1 if not known.
CSeqDBAliasFile(CSeqDBAtlas &atlas, const string &name_list, char prot_nucl, bool expand_links=true)
Constructor.
int m_OidMaskType
Oid Mask Type.
string GetTitle(const CSeqDBVolSet &volset) const
Get the title.
void DebugDump(CDebugDumpContext ddc, unsigned int depth) const
Dump debug information for this object.
Uint8 GetVolumeLength(const CSeqDBVolSet &volset) const
Get the sum of the volume lengths.
Int8 m_VolumeLength
Total length ignoring filtering.
string m_Title
Database title.
CRef< CSeqDBAliasNode > m_Node
This is the alias node tree's "artificial" topmost node, which aggregates the user provided database ...
Int8 GetNumSeqs(const CSeqDBVolSet &volset) const
Get the number of sequences available.
vector< string > m_VolumeNames
The cached output of the topmost node's FindVolumePaths(recursive).
Int8 m_TotalLengthStats
Total length for statistics purposes.
CRef< CSeqDB_FilterTree > GetFilterTree()
Get filtering tree for all volumes.
int GetMembBit(const CSeqDBVolSet &volset) const
Get the membership bit.
void x_ResolveNames(char prot_nucl, CSeqDBLockHold &locked)
Name resolution.
void x_ExpandAliases(const CSeqDB_BasePath &this_name, char prot_nucl, CSeqDBAliasStack &recurse, CSeqDBLockHold &locked)
Expand a node of the alias node tree recursively.
TVolNames m_VolNames
Set of volume names associated with this node.
void ComputeMasks(bool &has_filters)
Computes the masking information for each alias node.
vector< bool > m_SkipLocal
Should we skip local DB search for this DBLIST?
Uint8 GetTotalLength(const CSeqDBVolSet &volset) const
Get the total length of the set of databases.
void x_ReadValues(const CSeqDB_Path &fn, CSeqDBLockHold &locked)
Read the alias file.
void x_ReadLine(const char *bp, const char *ep, string &name_s, string &value_s)
Read one line of the alias file.
void WalkNodes(CSeqDB_AliasWalker *walker, const CSeqDBVolSet &volset) const
Apply a simple visitor to each node of the alias node tree.
int GetMembBit(const CSeqDBVolSet &volset) const
Get the membership bit.
Uint8 GetVolumeLength(const CSeqDBVolSet &volset) const
Get the sum of the volume lengths.
bool NeedTotalsScan(const CSeqDBVolSet &volset) const
Check whether a db scan is need to compute correct totals.
Int4 GetMinLength(const CSeqDBVolSet &volset) const
Get the number of sequences available.
void x_Tokenize(const string &dbnames)
Tokenize (split) the list of database names.
vector< CRef< CSeqDB_AliasMask > > m_NodeMasks
Mask objects for this node.
vector< CSeqDB_BasePath > TVolNames
Type used to store a set of volume names for each node.
bool m_HasGiMask
Do we have Gi masks for the top node? (only applicable to the top node)
void FindVolumePaths(vector< string > &vols, vector< string > *alias, bool recursive) const
Get the list of volume names.
void GetAliasFileValues(TAliasFileValues &afv) const
Get Name/Value Data From Alias Files.
CSeqDB_DirName m_DBPath
The common prefix for the DB paths.
void CompleteAliasFileValues(const CSeqDBVolSet &volset)
Add computed values to alias node lacking them.
void x_AppendSubNode(CSeqDB_BasePath &node_path, char prot_nucl, CSeqDBAliasStack &recurse, CSeqDBLockHold &locked)
Append a subnode to this alias node.
void GetMaskList(vector< string > &mask_list)
Get Gi-based Mask Names From Alias Files.
vector< CSeqDB_BasePath > m_DBList
Tokenized version of DBLIST.
CSeqDBAtlas & m_Atlas
The memory management layer for this SeqDB instance.
Int8 GetNumSeqsStats(const CSeqDBVolSet &volset) const
Get the number of sequences available.
TVarList m_Values
List of KEY/VALUE pairs from this alias file.
string GetTitle(const CSeqDBVolSet &volset) const
Get the title.
int GetOidMaskType(const CSeqDBVolSet &volset) const
Get the Oid Mask Type.
void x_ReadAliasFile(CSeqDBFileMemMap &lease, const CSeqDB_Path &fname, const char **bp, const char **ep, CSeqDBLockHold &locked)
Get the contents of an alias file.
TSubNodeList m_SubNodes
List of subnodes contained by this node.
vector< CRef< CSeqDBAliasNode > > TSubNodeList
Type used to store the set of subnodes for this node.
Int8 GetNumSeqs(const CSeqDBVolSet &volset) const
Get the number of sequences available.
void x_FindVolumePaths(set< string > &vols, set< string > &alias) const
Build a list of volume names used by the alias node tree.
void BuildFilterTree(class CSeqDB_FilterTree &ftree) const
Build the filter tree for this node and its children.
Int8 GetNumOIDs(const CSeqDBVolSet &volset) const
Get the size of the OID range.
bool m_ExpandLinks
Do not expand link when resolving paths.
CSeqDBAliasSets & m_AliasSets
Combined alias files.
CSeqDBAliasNode(CSeqDBAtlas &atlas, const string &name_list, char prot_nucl, CSeqDBAliasSets &alias_sets, bool expand_links)
Public Constructor.
CSeqDB_Path m_ThisName
Filename of this alias file.
Uint8 GetTotalLengthStats(const CSeqDBVolSet &volset) const
Get the total length of the set of databases.
bool x_FindBlastDBPath(const string &dbname, char dbtype, bool exact, string &resolved)
Find a file given a partial path and name.
bool ReadAliasFile(const CSeqDB_Path &dbpath, const char **bp, const char **ep, CSeqDBLockHold &locked)
Read an alias file given the path.
bool FindBlastDBPath(const CSeqDB_Path &dbname, CSeqDB_Path &resolved)
Find a file given a partial path and name.
void x_ReadAliasSetFile(const CSeqDB_Path &group_fname, CSeqDBLockHold &locked)
Read the contents of the group alias file.
void x_DbToIndexName(const CSeqDB_Path &fname, CSeqDB_Path &index_name, CSeqDB_FileName &alias_name)
Find the path of a group index from an alias file name.
CSeqDBAtlas & m_Atlas
Reference to the memory management layer.
map< string, string > m_PathLookup
Caches results of FindBlastDBPath.
bool FindAliasPath(const CSeqDB_Path &dbpath, CSeqDB_Path *resolved, CSeqDBLockHold &locked)
Resolve the alias file path.
TAliasGroupMap m_Groups
Alias groups.
bool Exists(const CSeqDB_Path &name)
Check whether the stack contains the specified string.
void Push(const CSeqDB_Path &name)
Push a new string onto to the stack.
void Pop()
Remove the top element of the stack.
unsigned Size()
Return the number of in-use elements.
bool GetFileSizeL(const string &fname, TIndx &length)
Get size of a file.
bool DoesFileExist(const string &fname)
Check if file exists.
CNcbiStreamoff TIndx
The type used for file offsets.
const char * GetFileDataPtr(const string &fname, TIndx offset)
Get a pointer to the specified offset.
const CSeqDBVol * GetVol(int i) const
Find a volume by index.
int GetNumVols() const
Get the number of volumes.
const string & GetVolName() const
Get the volume name.
int GetNumOIDs() const
Get the number of OIDs for this volume.
string GetTitle() const
Get the volume title.
int GetMinLength() const
Get the length of the smallest sequence in this volume.
int GetMaxLength() const
Get the length of the largest sequence in this volume.
Uint8 GetVolumeLength() const
Get the total length of this volume (in bases).
CSeqDBAliasExplorer class.
virtual bool Explore(const TVarList &values)=0
This will be called with the map of key/value pairs associated with this alias file.
virtual void Accumulate(const CSeqDBVol &volumes)=0
This will be called with each CVolume that is in the alias file tree structure (in order of traversal...
Something else yet again etc.
virtual void AddString(const string &)=0
This will be called with the value associated with this key in the alias file.
virtual void Accumulate(const CSeqDBVol &)=0
This will be called with each CVolume that is in the alias file tree structure (in order of traversal...
virtual const char * GetFileKey() const =0
Override to provide the alias file KEY name for the type of summary data you want to gather,...
CSeqDB_Substring FindBaseName() const
Return the portion of this path representing the base name.
const string & GetBasePathS() const
Return this path as a string.
CSeqDB_Substring FindDirName() const
Return the portion of this path representing the directory.
void Assign(const CSeqDB_Substring &sub)
Assign a new directory name from a substring.
const string & GetDirNameS() const
Get the directory name as a string.
void Assign(const CSeqDB_Substring &sub)
Assign a new filename to this object.
const string & GetFileNameS() const
Get the filename as a string.
CSeqDB_Substring GetFileNameSub() const
Get the filename as a substring.
Tree of nodes describing filtering of database sequences.
void AddVolume(const CSeqDB_BasePath &vol)
Attach a volume to this node.
void SetName(string name)
Set the node name.
void AddFilters(const TFilters &filters)
Add filters to this node.
void AddNode(CRef< CSeqDB_FilterTree > node)
Add a child node to this node.
Test for completeness of GI list alias file values.
virtual void Accumulate(const CSeqDBVol &)
Collect data from the volume.
bool m_NeedScan
True unless/until a node with incomplete totals was found.
virtual bool Explore(const TVarList &vars)
Explore the values in this alias file.
bool NeedScan() const
Returns true if a scan is required.
CSeqDB_IdListValuesTest()
Constructor.
Walker for MAX_SEQ_LENGTH field of alias file.
virtual void AddString(const string &value)
Collect data from an alias file.
virtual const char * GetFileKey() const
This provides the alias file key used for this field.
int m_Value
The maximum sequence length.
CSeqDB_MaxLengthWalker()
Constructor.
int GetMaxLength()
Returns the maximum sequence length.
virtual void Accumulate(const CSeqDBVol &vol)
Collect data from the volume.
Walker for membership bit.
CSeqDB_MembBitWalker()
Constructor.
virtual void AddString(const string &value)
Collect data from an alias file.
int m_Value
The membership bit.
virtual const char * GetFileKey() const
This provides the alias file key used for this field.
virtual void Accumulate(const CSeqDBVol &)
Collect data from the volume.
int GetMembBit() const
Returns the membership bit.
int GetMinLength()
Returns the maximum sequence length.
int m_Value
The maximum sequence length.
virtual void AddString(const string &value)
Collect data from an alias file.
virtual const char * GetFileKey() const
This provides the alias file key used for this field.
virtual void Accumulate(const CSeqDBVol &vol)
Collect data from the volume.
CSeqDB_MinLengthWalker()
Constructor.
Walker for OID count accumulation.
virtual const char * GetFileKey() const
This disables the key; the spaces would not be preserved, so this is a non-matchable string in this c...
Walker for STATS_NSEQ field of alias file.
virtual const char * GetFileKey() const
This does the same calculation as above but uses another key.
virtual void Accumulate(const CSeqDBVol &vol)
STATS_NSEQ field.
Walker for NSEQ field of alias file.
Int8 GetNum() const
Returns the accumulated number of OIDs.
Int8 m_Value
The accumulated number of OIDs.
virtual void Accumulate(const CSeqDBVol &vol)
Collect data from the volume.
virtual void AddString(const string &value)
Collect data from an alias file.
virtual const char * GetFileKey() const
This provides the alias file key used for this field.
CSeqDB_NSeqsWalker()
Constructor.
Walker for oid mask type.
virtual void Accumulate(const CSeqDBVol &)
Collect data from the volume.
virtual const char * GetFileKey() const
This provides the alias file key used for this field.
int m_Value
The oid mask type.
CSeqDB_OidMaskTypeWalker()
Constructor.
virtual void AddString(const string &value)
Collect data from an alias file.
int GetOidMaskType() const
Returns the oid mask type.
CSeqDB_Substring FindDirName() const
Returns the portion of this path containing the directory.
const string & GetPathS() const
Get the path as a string.
CSeqDB_Substring FindBasePath() const
Returns the portion of this path containing the base path.
void ReplaceFilename(const CSeqDB_Path &dir_src, const CSeqDB_Substring &fname)
Combines the directory from a path with a filename.
CSeqDB_Substring FindFileName() const
Returns the portion of this path containing the file name.
CSeqDB_Substring FindBaseName() const
Returns the portion of this path containing the base name.
bool Valid() const
Returns true if this object has a value.
void GetString(string &s) const
Return the data by assigning it to a string.
void EraseFront(int n)
Disinclude data from the beginning of the string.
Walker for TITLE field of alias file.
string GetTitle()
Returns the database title string.
virtual void Accumulate(const CSeqDBVol &vol)
Collect data from a volume.
string m_Value
The title string we are accumulating.
virtual const char * GetFileKey() const
This provides the alias file key used for this field.
virtual void AddString(const string &value)
Collect data from an alias file.
Walker for total length stats accumulation.
virtual void Accumulate(const CSeqDBVol &vol)
STATS_TOTLEN field.
virtual const char * GetFileKey() const
This does the same calculation as above but uses another key.
Walker for total length accumulation.
virtual void AddString(const string &value)
Collect data from an alias file.
virtual const char * GetFileKey() const
This provides the alias file key used for this field.
virtual void Accumulate(const CSeqDBVol &vol)
Collect data from the volume.
Uint8 m_Value
The accumulated volume length.
CSeqDB_TotalLengthWalker()
Constructor.
Uint8 GetLength() const
Returns the accumulated volume length.
Walker for volume length accumulation.
virtual const char * GetFileKey() const
This disables the key; the spaces would not be preserved, so this is a non-matchable string in this c...
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator end() const
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
The NCBI C++ standard methods for dealing with std::string.
static unsigned char depth[2 *(256+1+29)+1]
bool Empty(const CNcbiOstrstream &src)
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
@ eFollowLinks
Follow symbolic links.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
static string NormalizePath(const string &path, EFollowLinks follow_links=eIgnoreLinks)
Normalize a path.
static char GetPathSeparator(void)
Get path separator symbol specific for the current platform.
static string GetCwd(void)
Get the current working directory.
virtual bool Exists(void) const
Check existence of file.
virtual void DebugDump(CDebugDumpContext ddc, unsigned int depth) const
Define method for dumping debug information.
void Reset(void)
Reset reference object.
bool Empty(void) const THROWS_NONE
Check if CRef is empty – not pointing to any object, which means having a null value.
int32_t Int4
4-byte (32-bit) signed integer
int64_t Int8
8-byte (64-bit) signed integer
uint64_t Uint8
8-byte (64-bit) unsigned integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
NCBI_NS_STD::string::size_type SIZE_TYPE
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t to string.
static Int8 StringToInt8(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to Int8.
static Uint8 StringToUInt8(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to Uint8.
static unsigned int StringToUInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to unsigned int.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
char * dbname(DBPROCESS *dbproc)
Get name of current database.
unsigned int
A callback function used to compare two keys in a database.
constexpr auto sort(_Init &&init)
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
#define INT4_MAX
largest nubmer represented by signed int
Defines classes: CDirEntry, CFile, CDir, CSymLink, CMemoryFile, CFileUtil, CFileLock,...
static PCRE2_SIZE * offsets
static void s_SeqDB_FindOffsets(const char *bp, const char *ep, const string &key, vector< const char * > &offsets)
Find starting points of included data in the group alias file.
static void s_SeqDB_ReadLine(const char *bp, const char *ep, string &name, string &value)
Parse a name-value pair.
Defines database alias file access classes.
const string kSeqDBGroupAliasFileName
The name of the group alias file name expected at each directory For more documentation,...
bool SeqDB_CompareVolume(const string &volpath1, const string &volpath2)
Compares two volume file names and determine the volume order.
File access objects for CSeqDB.
string SeqDB_FindBlastDBPath(const string &file_name, char dbtype, string *sp, bool exact, CSeqDBAtlas &atlas)
Finds a file in the search path.
void SeqDB_SplitQuoted(const string &dbname, vector< CSeqDB_Substring > &dbs, bool keep_quote=false)
Combine and quote list of database names.
void SeqDB_JoinDelim(string &a, const string &b, const string &delim)
Join two strings with a delimiter.
#define SEQDB_ISEOL(x)
Macro for EOL chars.
void s_SeqDB_QuickAssign(string &dst, const char *bp, const char *ep)
Higher Performance String Assignment.
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
@ eTiList
Filter a BLAST database via TIs (Trace IDs)
@ eTaxIdList
Filter a BLAST database via Taxonomy Id list.
@ eGiList
Filter a BLAST database via GIs.