Skip to content

Commit

Permalink
Complete API
Browse files Browse the repository at this point in the history
  • Loading branch information
fmoletta committed Apr 18, 2024
1 parent 3c4a417 commit cac3156
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 15 deletions.
13 changes: 1 addition & 12 deletions vm/src/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -310,17 +310,6 @@ fn get_casm_contract_builtins(
.unwrap()
.builtins
.iter()
.map(|s| match s.as_str() {
"output" => BuiltinName::output,
"range_check" => BuiltinName::range_check,
"pedersen" => BuiltinName::pedersen,
"ecdsa" => BuiltinName::ecdsa,
"keccak" => BuiltinName::keccak,
"bitwise" => BuiltinName::bitwise,
"ec_op" => BuiltinName::ec_op,
"poseidon" => BuiltinName::poseidon,
"segment_arena" => BuiltinName::segment_arena,
_ => panic!("Invalid builtin {}", s),
})
.map(|s| BuiltinName::from_str(s).expect("Invalid builtin name"))
.collect()
}
24 changes: 21 additions & 3 deletions vm/src/types/builtin_name.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ impl BuiltinName {
}
}

pub(crate) fn from_suffixed_string(suffixed_str: &String) -> Option<Self> {
match suffixed_str.as_str() {
pub fn from_str_with_suffix(suffixed_str: &str) -> Option<Self> {
match suffixed_str {
OUTPUT_BUILTIN_NAME_WITH_SUFFIX => Some(BuiltinName::output),
RANGE_CHECK_BUILTIN_NAME_WITH_SUFFIX => Some(BuiltinName::range_check),
HASH_BUILTIN_NAME_WITH_SUFFIX => Some(BuiltinName::pedersen),
Expand All @@ -102,6 +102,24 @@ impl BuiltinName {
_ => None,
}
}

pub fn from_str(str: &str) -> Option<Self> {
match str {
OUTPUT_BUILTIN_NAME => Some(BuiltinName::output),
RANGE_CHECK_BUILTIN_NAME => Some(BuiltinName::range_check),
HASH_BUILTIN_NAME => Some(BuiltinName::pedersen),
SIGNATURE_BUILTIN_NAME => Some(BuiltinName::ecdsa),
KECCAK_BUILTIN_NAME => Some(BuiltinName::keccak),
BITWISE_BUILTIN_NAME => Some(BuiltinName::bitwise),
EC_OP_BUILTIN_NAME => Some(BuiltinName::ec_op),
POSEIDON_BUILTIN_NAME => Some(BuiltinName::poseidon),
SEGMENT_ARENA_BUILTIN_NAME => Some(BuiltinName::segment_arena),
RANGE_CHECK_96_BUILTIN_NAME => Some(BuiltinName::range_check96),
ADD_MOD_BUILTIN_NAME => Some(BuiltinName::add_mod),
MUL_MOD_BUILTIN_NAME => Some(BuiltinName::mul_mod),
_ => None,
}
}
}

impl core::fmt::Display for BuiltinName {
Expand Down Expand Up @@ -137,7 +155,7 @@ pub(crate) mod serde_generic_map_impl {
let map = HashMap::<String, V>::deserialize(d)?;
// Then match keys to BuiltinName and handle invalid names
map.into_iter()
.map(|(k, v)| BuiltinName::from_suffixed_string(&k).map(|k| (k, v)))
.map(|(k, v)| BuiltinName::from_str_with_suffix(&k).map(|k| (k, v)))
.collect::<Option<HashMap<_, _>>>()
.ok_or(D::Error::custom("Invalid builtin name"))
}
Expand Down

0 comments on commit cac3156

Please sign in to comment.