Registry.cpp status/Registry.h status/PredefinedCodes.h mutex thread unordered_set sc //CopyrightEpicGames,Inc.AllRightsReserved. #include"status/Registry.h" #include"status/PredefinedCodes.h" #ifdef_MSC_VER #pragmawarning(push) #pragmawarning(disable:43654987) #endif #include<mutex> #include<thread> #include<unordered_set> #ifdef_MSC_VER #pragmawarning(pop) #endif namespacesc{ staticstd::unordered_set<int>&getRegistry(){ #ifdef__clang__ #pragmaclangdiagnosticpush #pragmaclangdiagnosticignored"-Wexit-time-destructors" #endif staticstd::unordered_set<int>registry; #ifdef__clang__ #pragmaclangdiagnosticpop #endif returnregistry; } boolStatusCodeRegistry::insert(std::initializer_list<StatusCode>statuses){ auto&registry=getRegistry(); #ifdef__clang__ #pragmaclangdiagnosticpush #pragmaclangdiagnosticignored"-Wexit-time-destructors" #endif staticstd::mutexmut; #ifdef__clang__ #pragmaclangdiagnosticpop #endif std::lock_guard<std::mutex>lock{mut}; //Zeroisareservedcode registry.insert(OK.code); boolallUnique=true; for(autos:statuses){ allUnique=allUnique&&registry.insert(s.code).second; } returnallUnique; } boolStatusCodeRegistry::contains(StatusCodestatus){ auto&registry=getRegistry(); return(registry.find(status.code)!=registry.end()); } }//namespacesc