PineForge unreleased
Deterministic PineScript v6 backtest runtime — C ABI reference
Loading...
Searching...
No Matches
drawing.hpp File Reference
#include <array>
#include <atomic>
#include <vector>
#include <deque>
#include <exception>
#include <memory>
#include <new>
#include <optional>
#include <string>
#include <algorithm>
#include <cstdint>
#include <limits>
#include <stdexcept>
#include <cmath>
#include <type_traits>
#include <utility>
#include <pineforge/na.hpp>
#include <pineforge/run_failure.hpp>
Include dependency graph for drawing.hpp:

Go to the source code of this file.

Data Structures

struct  pineforge::Line
 
struct  pineforge::Box
 
struct  pineforge::Label
 
struct  pineforge::Linefill
 
struct  pineforge::ChartPoint
 
struct  pineforge::LineRec
 
struct  pineforge::BoxRec
 
struct  pineforge::LabelRec
 
struct  pineforge::LinefillRec
 
struct  pineforge::DrawingAllocationDiagnostic
 
struct  pineforge::DrawingAllocationResult
 
struct  pineforge::pine_drawing_error
 
struct  pineforge::pine_drawing_id_exhausted
 
struct  pineforge::detail::drawing_record_traits< Rec >
 
struct  pineforge::detail::drawing_record_traits< LineRec >
 
struct  pineforge::detail::drawing_record_traits< BoxRec >
 
struct  pineforge::detail::drawing_record_traits< LabelRec >
 
struct  pineforge::detail::drawing_record_traits< LinefillRec >
 
struct  pineforge::detail::DrawingStaleSink< Rec, Builtin >
 
struct  pineforge::detail::DrawingStaleSink< Rec, true >
 
class  pineforge::detail::DrawingRecordStore< Rec >
 
union  pineforge::detail::DrawingRecordStore< Rec >::Block::Slot
 
struct  pineforge::DrawingBoundConfig
 
struct  pineforge::detail::BoundDrawingState< Rec >
 
struct  pineforge::detail::BoundDrawingState< Rec >::Slot
 
struct  pineforge::detail::BoundDrawingState< Rec >::DirectoryEntry
 
class  pineforge::DrawingArena< Rec >
 
struct  pineforge::detail::DrawingBuiltinAccess
 

Namespaces

namespace  pineforge
 
namespace  pineforge::detail
 

Enumerations

enum class  pineforge::XLoc : int {
  pineforge::bar_index = 0 ,
  pineforge::bar_time = 1
}
 
enum class  pineforge::YLoc : int {
  pineforge::price = 0 ,
  pineforge::abovebar = 1 ,
  pineforge::belowbar = 2
}
 
enum class  pineforge::DrawingKind : std::uint8_t {
  pineforge::line ,
  pineforge::box ,
  pineforge::label ,
  pineforge::linefill
}
 
enum class  pineforge::DrawingAccessStatus : std::uint8_t {
  pineforge::invalid ,
  pineforge::stale ,
  pineforge::present
}
 
enum class  pineforge::DrawingAllocationStatus : std::uint8_t {
  pineforge::ok ,
  pineforge::drawing_slot_bound_exceeded ,
  pineforge::pine_drawing_id_exhausted
}
 

Functions

bool pineforge::is_na (const Line &h)
 
bool pineforge::is_na (const Box &h)
 
bool pineforge::is_na (const Label &h)
 
bool pineforge::is_na (const Linefill &h)
 
bool pineforge::is_na (const ChartPoint &p)
 
template<class Rec>
constexpr DrawingKind pineforge::detail::drawing_kind_of () noexcept
 
template<class Rec>
Rec pineforge::detail::drawing_missing_value () noexcept
 
template<class Rec>
const Rec & pineforge::detail::drawing_missing_record () noexcept
 
template<class Rec>
constexpr const char * pineforge::detail::drawing_object_name () noexcept
 
void pineforge::detail::drawing_na_error (const char *object, const char *what)
 
void pineforge::detail::drawing_argument_error (const char *function, const char *argument, const char *rule, const char *what)
 
template<class Rec>
constexpr const char * pineforge::detail::drawing_count_field () noexcept
 
void pineforge::detail::drawing_id_exhausted_error (const char *object)
 
DrawingBoundConfig pineforge::drawing_bound (std::int32_t slot_bound, std::uint32_t pending_creation_slots=1)
 
template<class Rec>
DrawingBoundConfig pineforge::detail::drawing_bound_from_declared_count (std::int32_t declared_count=50, std::uint32_t pending_creation_slots=1)
 
DrawingBoundConfig pineforge::detail::drawing_bound_from_linefill_sample (std::int32_t sampled_bound=kDrawingLinefillObservedBound, std::uint32_t pending_creation_slots=1)
 
template<class Rec>
DrawingBoundConfig pineforge::drawing_bound_from_declared_count (std::int32_t declared_count=50, std::uint32_t pending_creation_slots=1)
 
DrawingBoundConfig pineforge::drawing_bound_from_linefill_sample (std::int32_t sampled_bound=detail::kDrawingLinefillObservedBound, std::uint32_t pending_creation_slots=1)
 
template<class Rec, class Handle>
Rec & pineforge::pf_require_live (DrawingArena< Rec > &a, Handle h)
 
template<class Rec, class Handle>
const Rec & pineforge::pf_require_live (const DrawingArena< Rec > &a, Handle h)
 
template<class Handle, class Rec>
Handle pineforge::detail::drawing_builtin_allocate (DrawingArena< Rec > &arena, Rec &&record)
 
int64_t pineforge::pf_point_x (const ChartPoint &p, XLoc xloc)
 
Line pineforge::pf_line_new (DrawingArena< LineRec > &a, int64_t x1, double y1, int64_t x2, double y2, XLoc xloc=XLoc::bar_index, bool el=false, bool er=false)
 
Line pineforge::pf_line_new_pts (DrawingArena< LineRec > &a, ChartPoint p1, ChartPoint p2, XLoc xloc=XLoc::bar_index)
 
int64_t pineforge::pf_line_get_x1 (DrawingArena< LineRec > &a, Line h)
 
int64_t pineforge::pf_line_get_x2 (DrawingArena< LineRec > &a, Line h)
 
double pineforge::pf_line_get_y1 (DrawingArena< LineRec > &a, Line h)
 
double pineforge::pf_line_get_y2 (DrawingArena< LineRec > &a, Line h)
 
void pineforge::pf_line_set_x1 (DrawingArena< LineRec > &a, Line h, int64_t v)
 
void pineforge::pf_line_set_x2 (DrawingArena< LineRec > &a, Line h, int64_t v)
 
void pineforge::pf_line_set_y1 (DrawingArena< LineRec > &a, Line h, double v)
 
void pineforge::pf_line_set_y2 (DrawingArena< LineRec > &a, Line h, double v)
 
void pineforge::pf_line_set_xy1 (DrawingArena< LineRec > &a, Line h, int64_t x, double y)
 
void pineforge::pf_line_set_xy2 (DrawingArena< LineRec > &a, Line h, int64_t x, double y)
 
void pineforge::pf_line_set_first_point (DrawingArena< LineRec > &a, Line h, ChartPoint p)
 
void pineforge::pf_line_set_second_point (DrawingArena< LineRec > &a, Line h, ChartPoint p)
 
void pineforge::pf_line_set_xloc (DrawingArena< LineRec > &a, Line h, int64_t x1, int64_t x2, XLoc xloc)
 
double pineforge::pf_line_get_price (DrawingArena< LineRec > &a, Line h, int64_t x)
 
Line pineforge::pf_line_copy (DrawingArena< LineRec > &a, Line h)
 
void pineforge::pf_line_delete (DrawingArena< LineRec > &a, Line h)
 
Box pineforge::pf_box_new (DrawingArena< BoxRec > &a, int64_t left, double top, int64_t right, double bottom, XLoc xloc=XLoc::bar_index)
 
Box pineforge::pf_box_new_pts (DrawingArena< BoxRec > &a, ChartPoint top_left, ChartPoint bottom_right, XLoc xloc=XLoc::bar_index)
 
int64_t pineforge::pf_box_get_left (DrawingArena< BoxRec > &a, Box h)
 
int64_t pineforge::pf_box_get_right (DrawingArena< BoxRec > &a, Box h)
 
double pineforge::pf_box_get_top (DrawingArena< BoxRec > &a, Box h)
 
double pineforge::pf_box_get_bottom (DrawingArena< BoxRec > &a, Box h)
 
void pineforge::pf_box_set_left (DrawingArena< BoxRec > &a, Box h, int64_t v)
 
void pineforge::pf_box_set_right (DrawingArena< BoxRec > &a, Box h, int64_t v)
 
void pineforge::pf_box_set_top (DrawingArena< BoxRec > &a, Box h, double v)
 
void pineforge::pf_box_set_bottom (DrawingArena< BoxRec > &a, Box h, double v)
 
void pineforge::pf_box_set_lefttop (DrawingArena< BoxRec > &a, Box h, int64_t left, double top)
 
void pineforge::pf_box_set_rightbottom (DrawingArena< BoxRec > &a, Box h, int64_t right, double bottom)
 
void pineforge::pf_box_set_top_left_point (DrawingArena< BoxRec > &a, Box h, ChartPoint p)
 
void pineforge::pf_box_set_bottom_right_point (DrawingArena< BoxRec > &a, Box h, ChartPoint p)
 
void pineforge::pf_box_set_xloc (DrawingArena< BoxRec > &a, Box h, int64_t left, int64_t right, XLoc xloc)
 
Box pineforge::pf_box_copy (DrawingArena< BoxRec > &a, Box h)
 
void pineforge::pf_box_delete (DrawingArena< BoxRec > &a, Box h)
 
Label pineforge::pf_label_new (DrawingArena< LabelRec > &a, int64_t x, double y, std::string text, XLoc xloc=XLoc::bar_index, YLoc yloc=YLoc::price)
 
Label pineforge::pf_label_new_pt (DrawingArena< LabelRec > &a, ChartPoint point, std::string text, YLoc yloc=YLoc::price)
 
int64_t pineforge::pf_label_get_x (DrawingArena< LabelRec > &a, Label h)
 
double pineforge::pf_label_get_y (DrawingArena< LabelRec > &a, Label h)
 
std::string pineforge::pf_label_get_text (DrawingArena< LabelRec > &a, Label h)
 
void pineforge::pf_label_set_x (DrawingArena< LabelRec > &a, Label h, int64_t v)
 
void pineforge::pf_label_set_y (DrawingArena< LabelRec > &a, Label h, double v)
 
void pineforge::pf_label_set_xy (DrawingArena< LabelRec > &a, Label h, int64_t x, double y)
 
void pineforge::pf_label_set_point (DrawingArena< LabelRec > &a, Label h, ChartPoint p)
 
void pineforge::pf_label_set_xloc (DrawingArena< LabelRec > &a, Label h, int64_t x, XLoc xloc)
 
void pineforge::pf_label_set_yloc (DrawingArena< LabelRec > &a, Label h, YLoc yloc)
 
void pineforge::pf_label_set_text (DrawingArena< LabelRec > &a, Label h, std::string text)
 
Label pineforge::pf_label_copy (DrawingArena< LabelRec > &a, Label h)
 
void pineforge::pf_label_delete (DrawingArena< LabelRec > &a, Label h)
 
Linefill pineforge::pf_linefill_new (DrawingArena< LinefillRec > &a, Line l1, Line l2)
 
Line pineforge::pf_linefill_get_line1 (DrawingArena< LinefillRec > &a, Linefill h)
 
Line pineforge::pf_linefill_get_line2 (DrawingArena< LinefillRec > &a, Linefill h)
 
void pineforge::pf_linefill_delete (DrawingArena< LinefillRec > &a, Linefill h)
 
template<class... A>
void pineforge::pf_noop (A &&...)
 

Variables

template<class Rec>
constexpr bool pineforge::detail::is_builtin_drawing_record_v = drawing_record_traits<Rec>::builtin
 
constexpr std::int64_t pineforge::detail::kDrawingIdExclusive
 
constexpr std::int32_t pineforge::detail::kDrawingObservedSlack = 5
 
constexpr std::int32_t pineforge::detail::kDrawingLinefillObservedBound = 10