예제 #1
0
    # Sort line_number_map
    out = OrderedDict()
    keylist = line_number_map.keys()
    for k in sorted(keylist):
        out[k] = line_number_map[k]
    return out


output_formats_map = {
    'abi': lambda code, contract_name, interface_codes: mk_full_signature(code, interface_codes=interface_codes),
    'bytecode': lambda code, contract_name, interface_codes: '0x' + __compile(code, interface_codes=interface_codes).hex(),
    'bytecode_runtime': lambda code, contract_name, interface_codes: '0x' + __compile(code, bytecode_runtime=True, interface_codes=interface_codes).hex(),
    'ir': lambda code, contract_name, interface_codes: optimizer.optimize(parser.parse_to_lll(code, interface_codes=interface_codes)),
    'asm': lambda code, contract_name, interface_codes: get_asm(compile_lll.compile_to_assembly(optimizer.optimize(parser.parse_to_lll(code, interface_codes=interface_codes)))),
    'source_map': lambda code, contract_name, interface_codes: get_source_map(code, contract_name, interface_codes=interface_codes),
    'method_identifiers': lambda code, contract_name, interface_codes: parser.mk_method_identifiers(code, interface_codes=interface_codes),
    'interface': lambda code, contract_name, interface_codes: extract_interface_str(code, contract_name, interface_codes=interface_codes),
    'external_interface': lambda code, contract_name, interface_codes: extract_external_interface(code, contract_name, interface_codes=interface_codes),
}


def compile_codes(codes, output_formats=['bytecode'], output_type='list', exc_handler=None, interface_codes=None):

    out = OrderedDict()
    for contract_name, code in codes.items():
        for output_format in output_formats:
            if output_format not in output_formats_map:
                raise Exception('Unsupported format type %s.' % output_format)

            try:
                out.setdefault(contract_name, {})[output_format] = output_formats_map[output_format](
예제 #2
0
    'abi':
    lambda code: mk_full_signature(code),
    'bytecode':
    lambda code: '0x' + __compile(code).hex(),
    'bytecode_runtime':
    lambda code: '0x' + __compile(code, bytecode_runtime=True).hex(),
    'ir':
    lambda code: optimizer.optimize(parser.parse_to_lll(code)),
    'asm':
    lambda code: get_asm(
        compile_lll.compile_to_assembly(
            optimizer.optimize(parser.parse_to_lll(code)))),
    'source_map':
    get_source_map,
    'method_identifiers':
    lambda code: parser.mk_method_identifiers(code)
}


def compile_codes(codes,
                  output_formats=['bytecode'],
                  output_type='list',
                  exc_handler=None):

    out = OrderedDict()
    for contract_name, code in codes.items():
        for output_format in output_formats:
            if output_format not in output_formats_map:
                raise Exception('Unsupported format type %s.' % output_format)

            try:
예제 #3
0
def _mk_method_identifiers_output(code, contract_name, interface_codes):
    return parser.mk_method_identifiers(code, interface_codes=interface_codes)