-- addDependentFile examples/golden/macros/macro_typedef_scope.h
{-| __C declaration:__ @T1@

    __defined at:__ @macros\/macro_typedef_scope.h 4:9@

    __exported by:__ @macros\/macro_typedef_scope.h@
-}
newtype T1
    = T1 {unwrapT1 :: CInt}
      {- ^ __C declaration:__ @T1@

           __defined at:__ @macros\/macro_typedef_scope.h 4:9@

           __exported by:__ @macros\/macro_typedef_scope.h@
      -}
    deriving stock (Eq, Ord, Read, Show)
    deriving newtype (StaticSize,
                      ReadRaw,
                      WriteRaw,
                      Storable,
                      HasFFIType,
                      Prim,
                      Bitfield,
                      Bits,
                      Bounded,
                      Enum,
                      FiniteBits,
                      Integral,
                      Ix,
                      Num,
                      Real)
instance TyEq ty (CFieldType T1 "unwrapT1") =>
         HasField "unwrapT1" (Ptr T1) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapT1")
instance HasCField T1 "unwrapT1"
    where type CFieldType T1 "unwrapT1" = CInt
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @T2@

    __defined at:__ @macros\/macro_typedef_scope.h 5:12@

    __exported by:__ @macros\/macro_typedef_scope.h@
-}
newtype T2
    = T2 {unwrapT2 :: T1}
      {- ^ __C declaration:__ @T2@

           __defined at:__ @macros\/macro_typedef_scope.h 5:12@

           __exported by:__ @macros\/macro_typedef_scope.h@
      -}
    deriving stock (Eq, Ord, Read, Show)
    deriving newtype (StaticSize,
                      ReadRaw,
                      WriteRaw,
                      Storable,
                      HasFFIType,
                      Prim,
                      Bitfield,
                      Bits,
                      Bounded,
                      Enum,
                      FiniteBits,
                      Integral,
                      Ix,
                      Num,
                      Real)
instance TyEq ty (CFieldType T2 "unwrapT2") =>
         HasField "unwrapT2" (Ptr T2) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapT2")
instance HasCField T2 "unwrapT2"
    where type CFieldType T2 "unwrapT2" = T1
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @T3@

    __defined at:__ @macros\/macro_typedef_scope.h 6:9@

    __exported by:__ @macros\/macro_typedef_scope.h@
-}
newtype T3
    = T3 {unwrapT3 :: T2}
      {- ^ __C declaration:__ @T3@

           __defined at:__ @macros\/macro_typedef_scope.h 6:9@

           __exported by:__ @macros\/macro_typedef_scope.h@
      -}
    deriving stock (Eq, Ord, Read, Show)
    deriving newtype (StaticSize,
                      ReadRaw,
                      WriteRaw,
                      Storable,
                      HasFFIType,
                      Prim,
                      Bitfield,
                      Bits,
                      Bounded,
                      Enum,
                      FiniteBits,
                      Integral,
                      Ix,
                      Num,
                      Real)
instance TyEq ty (CFieldType T3 "unwrapT3") =>
         HasField "unwrapT3" (Ptr T3) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapT3")
instance HasCField T3 "unwrapT3"
    where type CFieldType T3 "unwrapT3" = T2
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @T4@

    __defined at:__ @macros\/macro_typedef_scope.h 7:12@

    __exported by:__ @macros\/macro_typedef_scope.h@
-}
newtype T4
    = T4 {unwrapT4 :: T3}
      {- ^ __C declaration:__ @T4@

           __defined at:__ @macros\/macro_typedef_scope.h 7:12@

           __exported by:__ @macros\/macro_typedef_scope.h@
      -}
    deriving stock (Eq, Ord, Read, Show)
    deriving newtype (StaticSize,
                      ReadRaw,
                      WriteRaw,
                      Storable,
                      HasFFIType,
                      Prim,
                      Bitfield,
                      Bits,
                      Bounded,
                      Enum,
                      FiniteBits,
                      Integral,
                      Ix,
                      Num,
                      Real)
instance TyEq ty (CFieldType T4 "unwrapT4") =>
         HasField "unwrapT4" (Ptr T4) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapT4")
instance HasCField T4 "unwrapT4"
    where type CFieldType T4 "unwrapT4" = T3
          offset# = \_ -> \_ -> 0
