module Data.LLVM.Types.Dwarf (
module Data.Dwarf,
DW_TAG(..),
dw_tag
) where
import Data.Dwarf hiding ( DW_TAG(..) )
deriving instance Ord DW_LANG
deriving instance Ord DW_VIRTUALITY
deriving instance Ord DW_ATE
deriving instance Ord DW_TAG
data DW_TAG
= DW_TAG_array_type
| DW_TAG_class_type
| DW_TAG_entry_point
| DW_TAG_enumeration_type
| DW_TAG_formal_parameter
| DW_TAG_imported_declaration
| DW_TAG_label
| DW_TAG_lexical_block
| DW_TAG_member
| DW_TAG_pointer_type
| DW_TAG_reference_type
| DW_TAG_compile_unit
| DW_TAG_string_type
| DW_TAG_structure_type
| DW_TAG_subroutine_type
| DW_TAG_typedef
| DW_TAG_union_type
| DW_TAG_unspecified_parameters
| DW_TAG_variant
| DW_TAG_common_block
| DW_TAG_common_inclusion
| DW_TAG_inheritance
| DW_TAG_inlined_subroutine
| DW_TAG_module
| DW_TAG_ptr_to_member_type
| DW_TAG_set_type
| DW_TAG_subrange_type
| DW_TAG_with_stmt
| DW_TAG_access_declaration
| DW_TAG_base_type
| DW_TAG_catch_block
| DW_TAG_const_type
| DW_TAG_constant
| DW_TAG_enumerator
| DW_TAG_file_type
| DW_TAG_friend
| DW_TAG_namelist
| DW_TAG_namelist_item
| DW_TAG_packed_type
| DW_TAG_subprogram
| DW_TAG_template_type_parameter
| DW_TAG_template_value_parameter
| DW_TAG_thrown_type
| DW_TAG_try_block
| DW_TAG_variant_part
| DW_TAG_variable
| DW_TAG_volatile_type
| DW_TAG_dwarf_procedure
| DW_TAG_restrict_type
| DW_TAG_interface_type
| DW_TAG_namespace
| DW_TAG_imported_module
| DW_TAG_unspecified_type
| DW_TAG_partial_unit
| DW_TAG_imported_unit
| DW_TAG_condition
| DW_TAG_shared_type
| DW_TAG_auto_variable
| DW_TAG_arg_variable
| DW_TAG_return_variable
deriving (Show, Eq)
dw_tag :: (Num a, Show a, Ord a) => a -> Maybe DW_TAG
dw_tag 0x01 = return DW_TAG_array_type
dw_tag 0x02 = return DW_TAG_class_type
dw_tag 0x03 = return DW_TAG_entry_point
dw_tag 0x04 = return DW_TAG_enumeration_type
dw_tag 0x05 = return DW_TAG_formal_parameter
dw_tag 0x08 = return DW_TAG_imported_declaration
dw_tag 0x0a = return DW_TAG_label
dw_tag 0x0b = return DW_TAG_lexical_block
dw_tag 0x0d = return DW_TAG_member
dw_tag 0x0f = return DW_TAG_pointer_type
dw_tag 0x10 = return DW_TAG_reference_type
dw_tag 0x11 = return DW_TAG_compile_unit
dw_tag 0x12 = return DW_TAG_string_type
dw_tag 0x13 = return DW_TAG_structure_type
dw_tag 0x15 = return DW_TAG_subroutine_type
dw_tag 0x16 = return DW_TAG_typedef
dw_tag 0x17 = return DW_TAG_union_type
dw_tag 0x18 = return DW_TAG_unspecified_parameters
dw_tag 0x19 = return DW_TAG_variant
dw_tag 0x1a = return DW_TAG_common_block
dw_tag 0x1b = return DW_TAG_common_inclusion
dw_tag 0x1c = return DW_TAG_inheritance
dw_tag 0x1d = return DW_TAG_inlined_subroutine
dw_tag 0x1e = return DW_TAG_module
dw_tag 0x1f = return DW_TAG_ptr_to_member_type
dw_tag 0x20 = return DW_TAG_set_type
dw_tag 0x21 = return DW_TAG_subrange_type
dw_tag 0x22 = return DW_TAG_with_stmt
dw_tag 0x23 = return DW_TAG_access_declaration
dw_tag 0x24 = return DW_TAG_base_type
dw_tag 0x25 = return DW_TAG_catch_block
dw_tag 0x26 = return DW_TAG_const_type
dw_tag 0x27 = return DW_TAG_constant
dw_tag 0x28 = return DW_TAG_enumerator
dw_tag 0x29 = return DW_TAG_file_type
dw_tag 0x2a = return DW_TAG_friend
dw_tag 0x2b = return DW_TAG_namelist
dw_tag 0x2c = return DW_TAG_namelist_item
dw_tag 0x2d = return DW_TAG_packed_type
dw_tag 0x2e = return DW_TAG_subprogram
dw_tag 0x2f = return DW_TAG_template_type_parameter
dw_tag 0x30 = return DW_TAG_template_value_parameter
dw_tag 0x31 = return DW_TAG_thrown_type
dw_tag 0x32 = return DW_TAG_try_block
dw_tag 0x33 = return DW_TAG_variant_part
dw_tag 0x34 = return DW_TAG_variable
dw_tag 0x35 = return DW_TAG_volatile_type
dw_tag 0x36 = return DW_TAG_dwarf_procedure
dw_tag 0x37 = return DW_TAG_restrict_type
dw_tag 0x38 = return DW_TAG_interface_type
dw_tag 0x39 = return DW_TAG_namespace
dw_tag 0x3a = return DW_TAG_imported_module
dw_tag 0x3b = return DW_TAG_unspecified_type
dw_tag 0x3c = return DW_TAG_partial_unit
dw_tag 0x3d = return DW_TAG_imported_unit
dw_tag 0x3f = return DW_TAG_condition
dw_tag 0x40 = return DW_TAG_shared_type
dw_tag 0x100 = return DW_TAG_auto_variable
dw_tag 0x101 = return DW_TAG_arg_variable
dw_tag 0x102 = return DW_TAG_return_variable
dw_tag n | 0x4080 <= n && n <= 0xffff = Nothing
dw_tag _ = Nothing