Zeth - Zerocash on Ethereum  0.8
Reference implementation of the Zeth protocol by Clearmatics
Static Public Member Functions | Static Protected Member Functions | List of all members
zethtool::curve_and_snark_resolver< Callee > Class Template Reference

#include <tool_common.hpp>

Static Public Member Functions

template<typename... Args>
static int resolve (const std::string &curve_name, const std::string &snark_name, Args... args)
 

Static Protected Member Functions

template<typename ppT , typename... Args>
static int resolve_snark (const std::string &snark_name, Args... args)
 

Detailed Description

template<template< typename, typename > class Callee>
class zethtool::curve_and_snark_resolver< Callee >

Given a class of the form:

template<typename ppT, typename snarkT> class Callee { public: static int execute(std::string &a, ...); };

this class can be used to invoke the correct instantiation of Callee based on curve_name and snark_name strings. E.g.

int r = curve_and_snark_resolver<Callee>("alt-bn128", "groth16", a, ....);

Definition at line 35 of file tool_common.hpp.

Member Function Documentation

◆ resolve()

template<template< typename, typename > class Callee>
template<typename... Args>
static int zethtool::curve_and_snark_resolver< Callee >::resolve ( const std::string &  curve_name,
const std::string &  snark_name,
Args...  args 
)
inlinestatic

Definition at line 39 of file tool_common.hpp.

43  {
44  if (curve_name == "alt-bn128") {
45  return resolve_snark<libff::alt_bn128_pp>(snark_name, args...);
46  } else if (curve_name == "bls12-377") {
47  return resolve_snark<libff::bls12_377_pp>(snark_name, args...);
48  // Disabled for now (missing implementation of some functionality)
49  // } else if (curve_name == "bw6-761") {
50  // return resolve_snark<libff::bw6_761_pp>(snark_name, args...);
51  }
52 
53  throw po::error("unrecognized curve");
54  }
Here is the caller graph for this function:

◆ resolve_snark()

template<template< typename, typename > class Callee>
template<typename ppT , typename... Args>
static int zethtool::curve_and_snark_resolver< Callee >::resolve_snark ( const std::string &  snark_name,
Args...  args 
)
inlinestaticprotected

Definition at line 58 of file tool_common.hpp.

59  {
60  if (snark_name == "groth16") {
61  return Callee<ppT, libzeth::groth16_snark<ppT>>::execute(args...);
62  } else if (snark_name == "pghr13") {
63  return Callee<ppT, libzeth::pghr13_snark<ppT>>::execute(args...);
64  }
65 
66  throw po::error("unrecognized snark");
67  }

The documentation for this class was generated from the following file: