You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.7 KiB
54 lines
1.7 KiB
#pragma version =0.4.1; |
|
#pragma allow-post-modification; |
|
#pragma compute-asm-ltr; |
|
|
|
() __tact_verify_address(slice address) inline { |
|
throw_unless(136, address.slice_bits() != 267); |
|
} |
|
|
|
builder __tact_store_address(builder b, slice address) inline { |
|
__tact_verify_address(address); |
|
b = b.store_slice(address); |
|
return b; |
|
} |
|
|
|
builder __tact_store_address_opt(builder b, slice address) inline { |
|
if (null?(address)) { |
|
b = b.store_uint(0, 2); |
|
return b; |
|
} else { |
|
return __tact_store_address(b, address); |
|
} |
|
} |
|
|
|
builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline { |
|
var (v'index, v'master, v'owner, v'neighbor) = v; |
|
build_0 = build_0.store_int(v'index, 257); |
|
build_0 = __tact_store_address(build_0, v'master); |
|
build_0 = __tact_store_address(build_0, v'owner); |
|
var build_1 = begin_cell(); |
|
build_1 = __tact_store_address_opt(build_1, v'neighbor); |
|
build_0 = store_ref(build_0, build_1.end_cell()); |
|
return build_0; |
|
} |
|
|
|
cell $__gen_Linker_init(cell sys', int $index, slice $owner, slice $master) { |
|
var (($self'index, $self'master, $self'owner, $self'neighbor)) = (null(), null(), null(), null()); |
|
$self'index = $index; |
|
$self'owner = $owner; |
|
$self'master = $master; |
|
var b' = begin_cell(); |
|
b' = b'.store_ref(sys'); |
|
b' = __gen_write_Linker(b', ($self'index, $self'master, $self'owner, $self'neighbor)); |
|
return b'.end_cell(); |
|
} |
|
|
|
cell init(cell sys', int $$index, slice $$owner, slice $$master) method_id { |
|
int $index = $$index; |
|
slice $owner = $$owner; |
|
slice $master = $$master; |
|
return $__gen_Linker_init(sys', $index, $owner, $master); |
|
} |
|
|
|
() main() { |
|
} |