Skip to content

Commit 82a401c

Browse files
feat(starknet_os): use define_string_enum to define CairoStruct enum (#5380)
* feat(starknet_os): implement define_string_enum and use to define Scope enum * feat(starknet_os): use define_string_enum to define Ids enum * feat(starknet_os): use define_string_enum to define Const enum * feat(starknet_os): use define_string_enum to define CairoStruct enum
1 parent baa461f commit 82a401c

1 file changed

Lines changed: 49 additions & 82 deletions

File tree

  • crates/starknet_os/src/hints

crates/starknet_os/src/hints/vars.rs

Lines changed: 49 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -254,87 +254,54 @@ impl Const {
254254
}
255255
}
256256

257-
#[derive(Copy, Clone)]
258-
pub enum CairoStruct {
259-
BigInt3,
260-
BuiltinParamsPtr,
261-
BuiltinPointersPtr,
262-
CompiledClass,
263-
CompiledClassEntryPoint,
264-
CompiledClassFact,
265-
DeprecatedCompiledClass,
266-
DeprecatedCompiledClassFactPtr,
267-
DeprecatedCompiledClassPtr,
268-
DeprecatedContractEntryPoint,
269-
DictAccess,
270-
ExecutionContext,
271-
NodeEdge,
272-
NonSelectableBuiltins,
273-
OsStateUpdate,
274-
ResourceBounds,
275-
SelectableBuiltins,
276-
StateEntry,
277-
StorageReadPtr,
278-
StorageReadRequestPtr,
279-
StorageWritePtr,
280-
}
281-
282-
impl From<CairoStruct> for &'static str {
283-
fn from(struct_name: CairoStruct) -> Self {
284-
match struct_name {
285-
CairoStruct::BigInt3 => {
286-
"starkware.starknet.core.os.data_availability.bls_field.BigInt3"
287-
}
288-
CairoStruct::BuiltinParamsPtr => "starkware.starknet.core.os.builtins.BuiltinParams*",
289-
CairoStruct::BuiltinPointersPtr => {
290-
"starkware.starknet.core.os.builtins.BuiltinPointers*"
291-
}
292-
CairoStruct::CompiledClass => {
293-
"starkware.starknet.core.os.contract_class.compiled_class.CompiledClass"
294-
}
295-
CairoStruct::CompiledClassEntryPoint => {
296-
"starkware.starknet.core.os.contract_class.compiled_class.CompiledClassEntryPoint"
297-
}
298-
CairoStruct::CompiledClassFact => {
299-
"starkware.starknet.core.os.contract_class.compiled_class.CompiledClassFact"
300-
}
301-
CairoStruct::DeprecatedCompiledClass => {
302-
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
303-
DeprecatedCompiledClass"
304-
}
305-
CairoStruct::DeprecatedCompiledClassFactPtr => {
306-
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
307-
DeprecatedCompiledClassFact*"
308-
}
309-
CairoStruct::DeprecatedCompiledClassPtr => {
310-
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
311-
DeprecatedCompiledClass*"
312-
}
313-
CairoStruct::DeprecatedContractEntryPoint => {
314-
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
315-
DeprecatedContractEntryPoint"
316-
}
317-
CairoStruct::DictAccess => "starkware.cairo.common.dict_access.DictAccess",
318-
CairoStruct::ExecutionContext => {
319-
"starkware.starknet.core.os.execution.execute_entry_point.ExecutionContext"
320-
}
321-
CairoStruct::NodeEdge => "starkware.cairo.common.patricia_utils.NodeEdge",
322-
CairoStruct::NonSelectableBuiltins => {
323-
"starkware.starknet.core.os.builtins.NonSelectableBuiltins"
324-
}
325-
CairoStruct::OsStateUpdate => "starkware.starknet.core.os.state.state.OsStateUpdate",
326-
CairoStruct::ResourceBounds => "starkware.starknet.common.new_syscalls.ResourceBounds",
327-
CairoStruct::SelectableBuiltins => {
328-
"starkware.starknet.core.os.builtins.SelectableBuiltins"
329-
}
330-
CairoStruct::StateEntry => "starkware.starknet.core.os.state.state.StateEntry",
331-
CairoStruct::StorageReadPtr => "starkware.starknet.common.syscalls.StorageRead*",
332-
CairoStruct::StorageReadRequestPtr => {
333-
"starkware.starknet.core.os.storage.StorageReadRequest*"
334-
}
335-
CairoStruct::StorageWritePtr => {
336-
"starkware.starknet.common.syscalls.StorageWriteRequest*"
337-
}
338-
}
257+
define_string_enum! {
258+
#[derive(Copy, Clone)]
259+
pub enum CairoStruct {
260+
(BigInt3, "starkware.starknet.core.os.data_availability.bls_field.BigInt3"),
261+
(BuiltinParamsPtr, "starkware.starknet.core.os.builtins.BuiltinParams*"),
262+
(BuiltinPointersPtr, "starkware.starknet.core.os.builtins.BuiltinPointers*"),
263+
(CompiledClass, "starkware.starknet.core.os.contract_class.compiled_class.CompiledClass"),
264+
(
265+
CompiledClassEntryPoint,
266+
"starkware.starknet.core.os.contract_class.compiled_class.CompiledClassEntryPoint"
267+
),
268+
(
269+
CompiledClassFact,
270+
"starkware.starknet.core.os.contract_class.compiled_class.CompiledClassFact"
271+
),
272+
(
273+
DeprecatedCompiledClass,
274+
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
275+
DeprecatedCompiledClass"
276+
),
277+
(
278+
DeprecatedCompiledClassFactPtr,
279+
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
280+
DeprecatedCompiledClassFact*"
281+
),
282+
(
283+
DeprecatedCompiledClassPtr,
284+
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
285+
DeprecatedCompiledClass*"
286+
),
287+
(
288+
DeprecatedContractEntryPoint,
289+
"starkware.starknet.core.os.contract_class.deprecated_compiled_class.\
290+
DeprecatedContractEntryPoint"
291+
),
292+
(DictAccess, "starkware.cairo.common.dict_access.DictAccess"),
293+
(
294+
ExecutionContext,
295+
"starkware.starknet.core.os.execution.execute_entry_point.ExecutionContext"
296+
),
297+
(NodeEdge, "starkware.cairo.common.patricia_utils.NodeEdge"),
298+
(NonSelectableBuiltins, "starkware.starknet.core.os.builtins.NonSelectableBuiltins"),
299+
(OsStateUpdate, "starkware.starknet.core.os.state.state.OsStateUpdate"),
300+
(ResourceBounds, "starkware.starknet.common.new_syscalls.ResourceBounds"),
301+
(SelectableBuiltins, "starkware.starknet.core.os.builtins.SelectableBuiltins"),
302+
(StateEntry, "starkware.starknet.core.os.state.state.StateEntry"),
303+
(StorageReadPtr, "starkware.starknet.common.syscalls.StorageRead*"),
304+
(StorageReadRequestPtr, "starkware.starknet.core.os.storage.StorageReadRequest*"),
305+
(StorageWritePtr, "starkware.starknet.common.syscalls.StorageWriteRequest*"),
339306
}
340307
}

0 commit comments

Comments
 (0)