PineForge v0.13.1-379-g9b50973
Deterministic PineScript v6 backtest runtime — C ABI reference
Loading...
Searching...
No Matches
na.hpp
Go to the documentation of this file.
1#pragma once
2#include <cmath>
3#include <cstdint>
4#include <limits>
5#include <type_traits>
6
7namespace pineforge {
8
9// Generic fallback: returns T{} for any default-constructible T.
10// Explicit specializations below still take precedence for primitive types.
11template<typename T>
12inline T na() {
13 static_assert(std::is_default_constructible_v<T>,
14 "na<T>() requires T to be default-constructible");
15 return T{};
16}
17template<> inline double na<double>() { return std::numeric_limits<double>::quiet_NaN(); }
18template<> inline int na<int>() { return std::numeric_limits<int>::min(); }
19template<> inline int64_t na<int64_t>() { return std::numeric_limits<int64_t>::min(); }
20template<> inline bool na<bool>() { return false; }
21
22inline bool is_na(double v) { return std::isnan(v); }
23
24// Generic integer is_na: covers int, long, long long, int64_t, etc.
25template<typename T, typename = std::enable_if_t<std::is_integral_v<T> && !std::is_same_v<T, bool>>>
26inline bool is_na(T v) { return v == std::numeric_limits<T>::min(); }
27
28} // namespace pineforge
int64_t na< int64_t >()
Definition na.hpp:19
double na< double >()
Definition na.hpp:17
bool is_na(const Line &h)
Definition drawing.hpp:42
T na()
Definition na.hpp:12
bool na< bool >()
Definition na.hpp:20
int na< int >()
Definition na.hpp:18