# Path: cle/backends/elf/variable.py
# class Variable:
#     """
#     Variable for DWARF
#     from a DW_TAG_variable or DW_TAG_formal_parameter
#     """
#     def __init__(self, name: Optional[str], type_: Optional[VariableType], decl_file: Optional[str], decl_line: Optional[int],
#                  addr: Optional[int]=None, sort: str = ""):
#         self.name = name
#         self.type = type_
#         self.decl_file = decl_file
#         self.decl_line = decl_line
#         self.addr = addr
#         # sort = 'stack' | 'register' | 'global'
#         self.sort = sort
# 
# Path: cle/backends/elf/subprogram.py
# class Subprogram:
#     """
#     DW_TAG_subprogram for DWARF
#     """
#     local_variables: List[Variable] = []
# 
#     def __init__(self, name, low_pc, high_pc,) -> None:
#         self.name = name
#         self.low_pc = low_pc
#         self.high_pc = high_pc


import os.path
from typing import Dict, List
from .variable import Variable
from .subprogram import Subprogram



class CompilationUnit:
    """
    CompilationUnit for DWARF
    See http://dwarfstd.org/doc/DWARF5.pdf page 60
    """

# Path: cle/backends/elf/variable.py
# class Variable:
#     """
#     Variable for DWARF
#     from a DW_TAG_variable or DW_TAG_formal_parameter
#     """
#     def __init__(self, name: Optional[str], type_: Optional[VariableType], decl_file: Optional[str], decl_line: Optional[int],
#                  addr: Optional[int]=None, sort: str = ""):
#         self.name = name
#         self.type = type_
#         self.decl_file = decl_file
#         self.decl_line = decl_line
#         self.addr = addr
#         # sort = 'stack' | 'register' | 'global'
#         self.sort = sort
# 
# Path: cle/backends/elf/subprogram.py
# class Subprogram:
#     """
#     DW_TAG_subprogram for DWARF
#     """
#     local_variables: List[Variable] = []
# 
#     def __init__(self, name, low_pc, high_pc,) -> None:
#         self.name = name
#         self.low_pc = low_pc
#         self.high_pc = high_pc


# Path: cle/backends/elf/compilation_unit.py
import os.path
from typing import Dict, List
from .variable import Variable
from .subprogram import Subprogram




class CompilationUnit:
    """
    CompilationUnit for DWARF
    See http://dwarfstd.org/doc/DWARF5.pdf page 60
    """

    functions: Dict[int, Subprogram] = {}