mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 09:28:40 +02:00
Error system now functional in C and C++ APIs
This commit is contained in:
@@ -27,20 +27,25 @@ void ErrorManager::get(std::vector<APIError>& errorOutput, size_t max, ErrorFilt
|
||||
if(count++ >= max)
|
||||
break; // We now have as many written to output as we can
|
||||
} else {
|
||||
it++;
|
||||
std::advance(it, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool ErrorManager::getOne(APIError& errorOutput, ErrorFilter filter) {
|
||||
std::vector<APIError> output;
|
||||
get(output, filter, 1);
|
||||
bool ErrorManager::getLastError(APIError& errorOutput, ErrorFilter filter) {
|
||||
std::lock_guard<std::mutex> lk(mutex);
|
||||
|
||||
if(output.size() == 0)
|
||||
return false;
|
||||
|
||||
errorOutput = output[0];
|
||||
return true;
|
||||
auto it = errors.rbegin();
|
||||
while(it != errors.rend()) {
|
||||
if(filter.match(*it)) {
|
||||
errorOutput = *it;
|
||||
errors.erase(std::next(it).base());
|
||||
return true;
|
||||
}
|
||||
std::advance(it, 1);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void ErrorManager::discard(ErrorFilter filter) {
|
||||
|
||||
@@ -5,4 +5,40 @@ using namespace icsneo;
|
||||
|
||||
std::vector<std::shared_ptr<Device>> icsneo::FindAllDevices() {
|
||||
return DeviceFinder::FindAll();
|
||||
}
|
||||
|
||||
size_t icsneo::ErrorCount(ErrorFilter filter) {
|
||||
return ErrorManager::GetInstance().count(filter);
|
||||
}
|
||||
|
||||
std::vector<APIError> icsneo::GetErrors(ErrorFilter filter, size_t max) {
|
||||
return ErrorManager::GetInstance().get(filter, max);
|
||||
}
|
||||
|
||||
std::vector<APIError> icsneo::GetErrors(size_t max, ErrorFilter filter) {
|
||||
return ErrorManager::GetInstance().get(max, filter);
|
||||
}
|
||||
|
||||
void icsneo::GetErrors(std::vector<APIError>& errors, ErrorFilter filter, size_t max) {
|
||||
ErrorManager::GetInstance().get(errors, filter, max);
|
||||
}
|
||||
|
||||
void icsneo::GetErrors(std::vector<APIError>& errors, size_t max, ErrorFilter filter) {
|
||||
ErrorManager::GetInstance().get(errors, max, filter);
|
||||
}
|
||||
|
||||
bool icsneo::GetLastError(APIError& error, ErrorFilter filter) {
|
||||
return ErrorManager::GetInstance().getLastError(error, filter);
|
||||
}
|
||||
|
||||
void icsneo::DiscardErrors(ErrorFilter filter) {
|
||||
ErrorManager::GetInstance().discard(filter);
|
||||
}
|
||||
|
||||
void icsneo::SetErrorLimit(size_t newLimit) {
|
||||
ErrorManager::GetInstance().setErrorLimit(newLimit);
|
||||
}
|
||||
|
||||
size_t icsneo::GetErrorLimit() {
|
||||
return ErrorManager::GetInstance().getErrorLimit();
|
||||
}
|
||||
Reference in New Issue
Block a user