.. _program_listing_file_src_pdfs_PDFSegment.hpp: Program Listing for File PDFSegment.hpp ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/pdfs/PDFSegment.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef PDFSEGMENT_HPP #define PDFSEGMENT_HPP #include #include #include #include #include namespace pdfs { class PDFSegment { public: // Constructors and destructor PDFSegment(double sMin, double sMax) : sMin_(sMin), sMax_(sMax) {} PDFSegment(const PDFSegment&) = default; auto operator=(const PDFSegment&) -> PDFSegment& = default; PDFSegment(PDFSegment&&) = default; auto operator=(PDFSegment&&) -> PDFSegment& = default; virtual ~PDFSegment() = default; // Getters for the lower and upper limits of the segment [[nodiscard]] auto getMin() const -> double { return sMin_; } [[nodiscard]] auto getMax() const -> double { return sMax_; } // Evaluation functions [[nodiscard]] virtual auto operator()(double x) const -> double = 0; [[nodiscard]] virtual auto expectationValue(double a, double b) const -> double = 0; [[nodiscard]] virtual auto expectationValue() const -> double = 0; [[nodiscard]] virtual auto integral(double a, double b) const -> double = 0; // Drawing functions [[nodiscard]] virtual auto draw(double a, double b) const -> double = 0; [[nodiscard]] virtual auto draw() const -> double = 0; // Serialization virtual void toToml(toml::table& tbl) const = 0; protected: static auto segmentParser(std::ifstream& file, std::vector& tok) -> std::map; static auto segmentParserToml(toml::node_view node, std::vector& tok) -> std::map; double sMin_; double sMax_; }; } // namespace pdfs #endif // PDFSEGMENT_HPP