#ifndef VaeaPrimeList_D_HPP
#defineVaeaPrimeList_D_HPP#include<stdio.h>#include<stdint.h>#include<stddef.h>#include<stdbool.h>#include<memory>#include<functional>#include<optional>#include<cstdlib>#include"diplomat_runtime.hpp"namespacediplomat{namespacecapi{structVaeaPrimeList;}// namespace capi
}// namespace
/**
* Result of prime generation: a list of primes.
*/classVaeaPrimeList{public:/**
* Generates `count` NTT-friendly 28-bit primes for polynomial size `n`.
*/inlinestatic std::unique_ptr<VaeaPrimeList>generate(size_tn,size_tcount);/**
* Returns the number of primes in the list.
*/inlinesize_tlen()const;/**
* Returns the prime at the given index (0-based).
*/inlineuint32_tget(size_tindex)const;inlineconst diplomat::capi::VaeaPrimeList*AsFFI()const;inline diplomat::capi::VaeaPrimeList*AsFFI();inlinestaticconst VaeaPrimeList*FromFFI(const diplomat::capi::VaeaPrimeList*ptr);inlinestatic VaeaPrimeList*FromFFI(diplomat::capi::VaeaPrimeList*ptr);inlinestaticvoid operator delete(void* ptr);private:VaeaPrimeList()=delete;VaeaPrimeList(const VaeaPrimeList&)=delete;VaeaPrimeList(VaeaPrimeList&&)noexcept=delete;
VaeaPrimeList operator=(const VaeaPrimeList&)=delete;
VaeaPrimeList operator=(VaeaPrimeList&&)noexcept=delete;staticvoid operator delete[](void*,size_t)=delete;};#endif// VaeaPrimeList_D_HPP