#ifndef __CURVEPOINT_HPP #define __CURVEPOINT_HPP #include #include #include "Scalar.hpp" #include "print_helpers.hpp" extern "C" { #include "curvepoint_fp.h" } class Curvepoint { public: Curvepoint(); Curvepoint(const curvepoint_fp_t input); Curvepoint operator+(const Curvepoint& b) const; Curvepoint operator*(const Scalar& mult) const; bool operator==(const Curvepoint& b) const; bool operator<(const Curvepoint& b) const; bool operator>(const Curvepoint& b) const; bool operator<=(const Curvepoint& b) const; bool operator>=(const Curvepoint& b) const; bool operator!=(const Curvepoint& b) const; void make_affine(); friend class CurvepointHash; friend std::ostream& operator<<(std::ostream& os, const Curvepoint& output); friend std::istream& operator>>(std::istream& is, Curvepoint& input); private: curvepoint_fp_t point; }; class CurvepointHash { public: size_t operator()(const Curvepoint& x) const; }; #endif