use crate::snark::marlin::{CircuitVerifyingKey, MarlinMode};
use snarkvm_curves::PairingEngine;
use std::cmp::Ordering;
#[derive(Clone)]
pub struct PreparedCircuitVerifyingKey<E: PairingEngine, MM: MarlinMode> {
pub constraint_domain_size: u64,
pub non_zero_a_domain_size: u64,
pub non_zero_b_domain_size: u64,
pub non_zero_c_domain_size: u64,
pub orig_vk: CircuitVerifyingKey<E, MM>,
}
impl<E: PairingEngine, MM: MarlinMode> Ord for PreparedCircuitVerifyingKey<E, MM> {
fn cmp(&self, other: &Self) -> Ordering {
self.orig_vk.id.cmp(&other.orig_vk.id)
}
}
impl<E: PairingEngine, MM: MarlinMode> PartialOrd for PreparedCircuitVerifyingKey<E, MM> {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl<E: PairingEngine, MM: MarlinMode> PartialEq for PreparedCircuitVerifyingKey<E, MM> {
fn eq(&self, other: &Self) -> bool {
self.orig_vk.id == other.orig_vk.id
}
}
impl<E: PairingEngine, MM: MarlinMode> Eq for PreparedCircuitVerifyingKey<E, MM> {}