,
"PLASMID",
"SPECIES",
"STRAIN",
"TISSUE",
"TRANSPOSON",
nullptr 124 if(name.find(
'.') == string_view::npos)
129 autoit = tokens.begin();
131 for(;
next(it) != tokens.end(); ++it)
165bptr = dbp.
mBuf.
ptr+ col_data;
166eptr = bptr + dbp.
mBuf.
len;
167 while(
isdigit(*bptr) == 0 && bptr < eptr)
189 for(ptr1 =
str; *ptr1 !=
'\0';) {
194 while(*ptr1 !=
'\0'&& *ptr1 !=
';')
197 while(*ptr1 ==
';'|| *ptr1 ==
' ')
247 for(ptr2 = ptr1; ptr2 !=
str&& *ptr2 !=
' ';)
257prbp->
vol.assign(ptr2, ptr1);
264prbp->
pages.assign(ptr1, ptr2);
266std::vector<Char> pages(ptr1, ptr2);
269prbp->
pages.assign(pages.begin(), pages.end());
302 for(
str+= 4; *
str==
' ';)
324prbp->
affil.assign(ptr2, ptr1);
326 while(*ptr1 ==
','|| *ptr1 ==
' ')
329 if(prbp->
country!=
"U.S.A.")
340 if(! prbp->
year.empty())
366 if(! prbp || !
str||
str[0] ==
'\0')
378 while(*p ==
' '|| *p ==
'\t'|| *p ==
';')
386 if(prbp->
muid== 0)
396 if(prbp->
doi.empty())
397prbp->
doi= (q + 4);
455 while(
len> 0 &&
str[
len- 1] ==
';') {
460 switch(subdbp.mType) {
474 for(s =
str+ 8; *s ==
' ';)
487 for(s =
str; *s ==
'\"'|| *s ==
' '|| *s ==
'\t'||
488*s ==
'\n'|| *s ==
';';)
492 for(p = s; *p !=
'\0';)
494 for(p--; *p ==
'\"'|| *p ==
' '|| *p ==
'\t'||
495*p ==
'\n'|| *p ==
';';
528 static const char*
months[12] = {
"JAN",
"FEB",
"MAR",
"APR",
"MAY",
"JUN",
"JUL",
"AUG",
"SEP",
"OCT",
"NOV",
"DEC"};
530 for(s =
str; *s !=
'\0'&& *s !=
')';)
539 for(cal = 0; cal < 12; cal++) {
559 intcur_year = now.
GetYear();
561 if(year < 1900 || year > cur_year) {
575new_title->SetName(title_str);
576title.
Set().push_back(new_title);
588 if(prbp->
year.empty())
593 if(! prbp->
vol.empty()) {
594 if(prbp->
vol.front() ==
'0')
600 if(! prbp->
pages.empty()) {
601 if(prbp->
pages.front() ==
'0')
621 while(! prbp->
journal.empty() && prbp->
journal.back() ==
'.')
624bptr = prbp->
journal.c_str();
625 for(s = bptr; *s !=
'('&& *s !=
'\0';)
640sub.
SetImp().SetDate(*date);
644 for(s = bptr; *s !=
')'&& *s !=
'\0';)
669 if(! prbp || prbp->
journal.empty())
683 stringtemp1 = bptr.substr(0, ed_pos);
684 const char* temp2 = &bptr[ed_pos];
696 autohere = tokens.begin();
697 for(
autoit = tokens.begin(); it != tokens.end(); ++it) {
703 for(
autoit = tokens.begin(); it != tokens.end(); ++it) {
704 len+= it->size() + 2;
709title.reserve(
len);
710 for(
autoit = tokens.begin(); it != tokens.end(); ++it) {
712title.append(
", ");
720 if(authors.
Empty()
) {
732 else if((page =
StringIStr(temp2,
"P.")) != 0)
738 for(temp2 = page; *temp2 !=
'\0'&& *temp2 !=
',';)
741book.
SetImp().SetPages(
string(page, temp2));
744 const Char* eptr = bptr.c_str() + bptr.size() - 1;
754 const Char* year = eptr;
760book.
SetImp().SetDate(*date);
764 while(*temp2 ==
' ')
766 if(*temp2 !=
'(') {
773 for(p = year; p > temp2 && (*p ==
' '|| *p ==
',');)
778book.
SetImp().SetPub().SetStr(affil);
782 if(vol_pos !=
NPOS) {
783vol = bptr.c_str() + 4;
784 for(s = vol; *s !=
'\0'&&
isdigit(*s) != 0;)
787book.
SetImp().SetVolume(
string(vol, s));
821 if(! prbp || prbp->
journal.empty())
824std::vector<Char> bptr(prbp->
journal.begin(), prbp->
journal.end());
828 if(eds_pos ==
NPOS)
831ptr = &bptr[0] + eds_pos;
837 for(ptr += 6; *ptr ==
';'|| *ptr ==
' '|| *ptr ==
'\t';)
840 if(! p || p == ptr) {
846 for(p--; *p ==
' '|| *p ==
'\t'|| *p ==
','; p--) {
853 if(p == ptr && *p ==
'\0') {
860 for(q += 3, p = q; *q >=
'0'&& *q <=
'9';)
862 if(q == p || (*q !=
':'&& *q !=
'-')) {
869 for(p = q; *q >=
'0'&& *q <=
'9';)
871 if(q == p || *q !=
'-') {
881 while(*q >=
'0'&& *q <=
'9')
883 if(*(q - 1) ==
'-') {
890 for(p = q; *q ==
' '|| *q ==
',';)
892 if(q == p || *q ==
'\0') {
908 for(p--; *p ==
' '|| *p ==
'\t'|| *p ==
','; p--) {
915 if(p == q && *p ==
'\0') {
923publisher =
StringSave(string_view(q, p - q));
926 for(p++, q = p; *p >=
'0'&& *p <=
'9';)
928 if(p - q != 4 || *p !=
')') {
940imp.
SetPub().SetStr(publisher);
976 if(! prbp || prbp->
journal.empty())
982 for(q = p; *q !=
' '&& *q !=
','&& *q !=
'\0';)
994 for(
char& c : num)
995 if(
'a'<= c && c <=
'z')
999 for(
charc : num) {
1000 if(! (
'A'<= c && c <=
'Z'))
1005country[0] = num[0];
1006country[1] = num[1];
1013 while(*q !=
'\0'&&
isdigit(*q) == 0)
1021 if(! std_date || std_date.
Empty()) {
1055 boolis_set =
false;
1056 if(! prbp->
journal.empty()) {
1059}
else if(! prbp->
cit.empty()) {
1061prbp->
cit.clear();
1065 if(prbp->
title&& ! prbp->
title->empty()) {
1117 if(prbp->
title&& ! prbp->
title->empty())
1127 if(! prbp->
journal.empty()) {
1129title->SetJta(prbp->
journal);
1130 journal.SetTitle().Set().push_back(title);
1136 id->SetOther().SetDb(
"AGRICOLA");
1137 id->SetOther().SetTag().SetStr(prbp->
agricola);
1139article.
SetIds().Set().push_back(
id);
1142 if(! prbp->
doi.empty()) {
1144 id->SetDoi().Set(prbp->
doi);
1146article.
SetIds().Set().push_back(
id);
1201ret->SetPub().Set().push_back(pub);
1204 if(prbp->
muid> 0) {
1207ret->SetPub().Set().push_back(pub);
1213ret->SetPub().Set().push_back(pub);
1218 boolis_set =
false;
1225 msg=
"Thesis format error (CitGen created)";
1229 msg=
"Article format error (CitGen created)";
1235 msg=
"Submission format error (CitGen created)";
1239 msg=
"Book format error (CitGen created)";
1245 msg=
"Patent format error (cit-gen created)";
1257ret->SetPub().Set().push_back(pub);
1259 if(! prbp->
comment.empty())
1260ret->SetComment(prbp->
comment);
1270 if(! prbp->
title)
User-defined methods of the data storage class.
User-defined methods of the data storage class.
@Pubdesc.hpp User-defined methods of the data storage class.
struct DataBlk::@1166 mBuf
#define ERR_REFERENCE_IllegalFormat
#define ERR_REFERENCE_Patent
#define ERR_REFERENCE_Fail_to_parse
#define ERR_REFERENCE_MultipleIdentifiers
#define ERR_REFERENCE_UnkRefRcToken
#define ERR_REFERENCE_IllegalDate
#define ERR_REFERENCE_UnkRefSubType
#define ERR_REFERENCE_YearEquZero
int fta_atoi(string_view sv)
bool StringEquNI(const char *s1, const char *s2, size_t n)
bool StringEquN(const char *s1, const char *s2, size_t n)
size_t StringLen(const char *s)
#define FtaErrPost(sev, level,...)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char * str(char *buf, int n)
SStrictId_Entrez::TId TEntrezId
TEntrezId type for entrez ids which require the same strictness as TGi.
#define ENTREZ_ID_FROM(T, value)
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CRef is not empty â pointing to an object and has a non-null value.
bool Empty(void) const THROWS_NONE
Check if CRef is empty â not pointing to any object, which means having a null value.
int16_t Int2
2-byte (16-bit) signed integer
int32_t Int4
4-byte (32-bit) signed integer
char Char
Alias for char.
uint16_t Uint2
2-byte (16-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 int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static void TrimSuffixInPlace(string &str, const CTempString suffix, ECase use_case=eCase)
Trim suffix from a string (in-place)
static string Sanitize(CTempString str, TSS_Flags flags=fSS_print)
Sanitize a string, allowing only specified classes of characters.
static bool Equal(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2, ECase use_case=eCase)
Test for equality of a substring with another string.
static string TruncateSpaces(const string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string.
@ fAllowTrailingSymbols
Ignore trailing non-numerics characters.
@ eTrunc_End
Truncate trailing whitespace only.
@ eNocase
Case insensitive compare.
@ eCurrent
Use current time. See also CCurrentTime.
void ResetImp(void)
Reset Imp data member.
void SetPages(const TPages &value)
Assign a value to Pages data member.
void SetIds(TIds &value)
Assign a value to Ids data member.
bool IsSetAffil(void) const
author affiliation Check if a value has been assigned to Affil data member.
void SetTitle(TTitle &value)
Assign a value to Title data member.
void SetAuthors(TAuthors &value)
Assign a value to Authors data member.
void SetDate(TDate &value)
Assign a value to Date data member.
bool IsSetPub(void) const
publisher, required for book Check if a value has been assigned to Pub data member.
void SetDoc_type(const TDoc_type &value)
Assign a value to Doc_type data member.
void SetTitle(TTitle &value)
Assign a value to Title data member.
const TAuthors & GetAuthors(void) const
Get the Authors member data.
void SetFrom(TFrom &value)
Assign a value to From data member.
void SetAuthors(TAuthors &value)
Assign a value to Authors data member.
void SetCountry(const TCountry &value)
Assign a value to Country data member.
void SetSerial_number(TSerial_number value)
Assign a value to Serial_number data member.
bool IsSetAuthors(void) const
not necessarily authors of the paper Check if a value has been assigned to Authors data member.
void SetAuthors(TAuthors &value)
Assign a value to Authors data member.
void SetPub(TPub &value)
Assign a value to Pub data member.
void SetImp(TImp &value)
Assign a value to Imp data member.
bool IsSetDate(void) const
replaces imp, will become required Check if a value has been assigned to Date data member.
void SetNumber(const TNumber &value)
Assign a value to Number data member.
void SetCit(TCit &value)
Assign a value to Cit data member.
void SetCit(const TCit &value)
Assign a value to Cit data member.
void SetVolume(const TVolume &value)
Assign a value to Volume data member.
void SetAuthors(TAuthors &value)
Assign a value to Authors data member.
void SetDate(TDate &value)
Assign a value to Date data member.
void SetType(TType value)
Assign a value to Type data member.
bool IsSetDate(void) const
date of publication Check if a value has been assigned to Date data member.
void SetTitle(const TTitle &value)
Assign a value to Title data member.
const TImp & GetImp(void) const
Get the Imp member data.
void SetMedium(TMedium value)
Assign a value to Medium data member.
void SetTitle(const TTitle &value)
Assign a value to Title data member.
bool IsSetImp(void) const
this only used to get date.
void SetPrepub(TPrepub value)
Assign a value to Prepub data member.
void SetImp(TImp &value)
Assign a value to Imp data member.
void SetDate_issue(TDate_issue &value)
Assign a value to Date_issue data member.
void SetAuthors(TAuthors &value)
Assign a value to Authors data member.
Tdata & Set(void)
Assign a value to data member.
@ ePrepub_in_press
accepted, not published
void SetYear(TYear value)
Assign a value to Year data member.
void SetMonth(TMonth value)
Assign a value to Month data member.
TStd & SetStd(void)
Select the variant.
TYear GetYear(void) const
Get the Year member data.
TStr & SetStr(void)
Select the variant.
TPmid & SetPmid(void)
Select the variant.
TMuid & SetMuid(void)
Select the variant.
TMan & SetMan(void)
Select the variant.
TSub & SetSub(void)
Select the variant.
TGen & SetGen(void)
Select the variant.
TPatent & SetPatent(void)
Select the variant.
TArticle & SetArticle(void)
Select the variant.
const CharType(& source)[N]
User-defined methods of the data storage class.
CRef< CPub > journal(ParserPtr pp, char *bptr, char *eptr, CRef< CAuth_list > &auth_list, CRef< CTitle::C_E > &title, bool has_muid, CRef< CCit_art > &cit_art, Int4 er)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static void CkSPComTopics(ParserPtr pp, const char *str)
static string ParseYear(const char *str)
static void SetCitTitle(CTitle &title, const string &title_str)
static bool GetImprintPtr(ParRefBlkPtr prbp, CImprint &imp)
static bool GetCitGen(ParRefBlkPtr prbp, CCit_gen &cit_gen)
static CRef< CDate > get_s_date(const Char *str, bool bstring)
static bool GetCitBook(ParRefBlkPtr prbp, CCit_art &article)
static void DisrootImprint(CCit_sub &sub)
static void GetSprotIds(ParRefBlk *prbp, char *str)
static bool GetCitPatent(ParRefBlkPtr prbp, Parser::ESource source, CCit_pat &pat)
const char * ParFlat_SPRefRcToken[]
static CRef< CPubdesc > GetPubRef(ParRefBlkPtr prbp, Parser::ESource source)
static bool GetCitBookOld(ParRefBlkPtr prbp, CCit_art &article)
static ParRefBlkPtr SprotRefString(ParserPtr pp, const DataBlk &dbp, Uint2 col_data)
static bool GetCitSubmit(ParRefBlkPtr prbp, CCit_sub &sub)
static void ParseRLDataSP(ParserPtr pp, ParRefBlkPtr prbp, char *str)
static bool NotName(string_view name)
static Int4 GetDataFromRN(const DataBlk &dbp, Uint2 col_data)
static bool ParseJourLine(ParserPtr pp, ParRefBlkPtr prbp, const char *str)
static void FreeParRefBlkPtr(ParRefBlkPtr prbp)
CRef< CPubdesc > sp_refs(ParserPtr pp, const DataBlk &dbp, Uint2 col_data)
static bool GetCitLetThesis(ParRefBlkPtr prbp, CCit_let &cit_let)
static bool GetCitArticle(ParRefBlkPtr prbp, CCit_art &article)
CRef< CAuth_list > authors
void PointToNextToken(char *&ptr)
string GetBlkDataReplaceNewLine(string_view instr, Uint2 indent)
CRef< CDate_std > get_full_date(string_view date_view, bool is_ref, Parser::ESource source)
Int2 fta_StringMatch(const Char **array, string_view text)
string GetTheCurrentToken(char **ptr)
Char * StringIStr(const Char *where, const Char *what)
void CleanTailNonAlphaChar(string &str)
void get_auth_from_toks(TTokenList::const_iterator beg, TTokenList::const_iterator end, ERefFormat format, CRef< CAuth_list > &auths)
TTokenList get_tokens(string_view str, string_view delimeter)
CRef< CDate > get_date(const Char *year)
void get_auth(string_view pt, ERefFormat format, string_view jour, CRef< CAuth_list > &auths)
Int4 valid_pages_range(char *pages, const Char *title, Int4 er, bool inpress)
void get_auth_consortium(string_view str, CRef< CAuth_list > &auths)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4