DNA Calib 1.1
Project brief
Provider.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "status/Defs.h"
6#include "status/StatusCode.h"
7
8#ifdef _MSC_VER
9 #pragma warning(push)
10 #pragma warning(disable : 4365 4987)
11#endif
12#include <stdio.h>
13
14#include <algorithm>
15#include <array>
16#ifdef _MSC_VER
17 #pragma warning(pop)
18#endif
19
20namespace sc {
21
23 public:
24 explicit StatusProvider(std::initializer_list<StatusCode> statuses);
25
26 static void reset();
27 static StatusCode get();
28 static bool isOk();
29 static void set(StatusCode status);
30
31 template<typename ... Args>
32 static void set(StatusCode status, Args&& ... args) {
33 std::array<char, 512> buffer{};
34 #if !defined(__clang__) && defined(__GNUC__)
35 #pragma GCC diagnostic push
36 #pragma GCC diagnostic ignored "-Wformat-security"
37 #endif
38 // The returned number of bytes to be written does not include the null terminator
39 const auto neededSize = snprintf(nullptr, 0ul, status.message, args ...) + 1;
40 const auto size = std::min(buffer.size(), static_cast<std::size_t>(neededSize));
41 snprintf(buffer.data(), size, status.message, args ...);
42 #if !defined(__clang__) && defined(__GNUC__)
43 #pragma GCC diagnostic pop
44 #endif
45 status.message = buffer.data();
46 set(status);
47 }
48
49};
50
51} // namespace sc
OPTIONAL RESULT_VARIABLE found set("${module_name}_FOUND" ${found} PARENT_SCOPE) endfunction() module_exists(CMakeModulesExtra) if(NOT CMakeModulesExtra_FOUND) include(CMakeModulesExtraLoader) endif() include(CMakeModulesExtra) list(APPEND CMAKE_MODULE_PATH $
Definition: DNACalib/CMakeLists.txt:22
Definition: Provider.h:22
static void set(StatusCode status, Args &&... args)
Definition: Provider.h:32
Definition: Provider.h:20
#define SCAPI
Definition: status/Defs.h:26
Definition: StatusCode.h:11
const char * message
Definition: StatusCode.h:13