static void s_InitializeECNumberMaps(void) { CFastMutexGuard GUARD(s_ECNumberMutex); if (s_ECNumberMapsInitialized) { return; } string dir; {{ string file = g_FindDataFile("ecnum_specific.txt"); if ( !file.empty() ) { dir = CDirEntry::AddTrailingPathSeparator(CDirEntry(file).GetDir()); } }} if (dir.empty()) { ERR_POST_X(2, Info << "s_InitializeECNumberMaps: " "falling back on built-in data."); } #define LOAD_EC(x) s_LoadECNumberTable \ (dir, #x, kECNum_##x, sizeof(kECNum_##x) / sizeof(*kECNum_##x), \ CProt_ref::eEC_##x) LOAD_EC(specific); LOAD_EC(ambiguous); LOAD_EC(replaced); LOAD_EC(deleted); #undef LOAD_EC s_ECNumberMapsInitialized = true; }
static void s_InitializeECNumberMaps(void) { CFastMutexGuard GUARD(s_ECNumberMutex); if (s_ECNumberMapsInitialized) { return; } string dir; const char* env_val = NULL; env_val = getenv("NCBI_ECNUM_USE_DATA_DIR_FIRST"); if (env_val != NULL && NStr::EqualNocase(env_val, "TRUE")) { string file = g_FindDataFile("ecnum_specific.txt"); if ( !file.empty() ) { dir = CDirEntry::AddTrailingPathSeparator(CDirEntry(file).GetDir()); } if (dir.empty()) { ERR_POST_X(2, Info << "s_InitializeECNumberMaps: " "falling back on built-in data."); } } #define LOAD_EC(x) s_LoadECNumberTable \ (dir, #x, kECNum_##x, sizeof(kECNum_##x) / sizeof(*kECNum_##x), \ CProt_ref::eEC_##x) s_ECNumSpecificStatus = LOAD_EC(specific); s_ECNumAmbiguousStatus = LOAD_EC(ambiguous); s_ECNumReplacedStatus = LOAD_EC(replaced); s_ECNumDeletedStatus = LOAD_EC(deleted); #undef LOAD_EC s_ECNumberMapsInitialized = true; }