package Ġsoftware . amazon . aw ssdk . forge . native Ċ Ċ import Ġsoftware . amazon . aw ssdk . forge . compiler . Architecture Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Type Ċ import Ġkotlin . reflect . type Of Ċ Ċ abstract Ġclass ĠNative Type < T >( val Ġsize : Ġkotlin . Int , Ġopen Ġval Ġc type : ĠString , Ġval Ġdefault : ĠT ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġmust Ġbe Ġset Ġby Ġthe Ġcompiler Ġbefore Ġbeing Ġused ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġarch Ġ: ĠArchitecture ĊĠĠĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠInt < T >( size : Ġkotlin . Int , Ġc type : ĠString ) ĊĠĠĠ Ġ: ĠNative Type < kotlin . Int >( size , Ġc type , Ġ 0 ) Ċ Ċ class ĠBool Ġ: ĠNative Type < kotlin . Boolean >( 1 , Ġ"_ Bool ", Ġfalse ) Ċ Ċ class ĠInt 3 2 Ġ: ĠInt < kotlin . Int >( 4 , Ġ" int 3 2 _ t ") Ċ class ĠUInt 3 2 Ġ: ĠInt < kotlin . Int >( 4 , Ġ" uint 3 2 _ t ") Ċ Ċ class ĠInt 6 4 Ġ: ĠInt < kotlin . Long >( 8 , Ġ" int 6 4 _ t ") Ċ class ĠUInt 6 4 Ġ: ĠInt < kotlin . Long >( 8 , Ġ" uint 6 4 _ t ") Ċ Ċ class ĠUint 8 Ġ: ĠInt < kotlin . Char >( 1 , Ġ" uint 8 _ t ") Ċ class ĠChar Ġ: ĠInt < kotlin . Char >( 1 , Ġ" char ") Ċ Ċ class ĠFloat ĊĠĠĠ Ġ: ĠNative Type < kotlin . Float >( 4 , Ġ" float ", Ġ 0 . 0 f ) Ċ Ċ class ĠDouble ĊĠĠĠ Ġ: ĠNative Type < kotlin . Double >( 8 , Ġ" double ", Ġ 0 . 0 ) Ċ Ċ class ĠVoid ĊĠĠĠ Ġ: ĠNative Type < java . lang . Void ? >( 0 , Ġ" void ", Ġnull ) Ċ Ċ @ Opt In ( Experimental Std lib Api :: class ) Ċ class ĠCString ĊĠĠĠ Ġ: ĠNative Type < kotlin . String >( Pointer < Char >( type Of < Pointer < Char >> ()). size , Ġ" char *", Ġ"") Ċ Ċ class ĠPointer < in ĠT Ġ: ĠAny >( private Ġval Ġpointer Type : ĠK Type ) ĊĠĠĠ Ġ: ĠNative Type < kotlin . Long >( if Ġ( arch . bits Ġ== Ġ 3 2 ) Ġ 4 Ġelse Ġ 8 , Ġ" void *", Ġ 0 ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġk class Ġ= Ġthis . pointer Type . to Point ee K Class () ĊĠĠĠ Ġval Ġk type Ġ= Ġk class . simple Name Ġ+ Ġ" ?" ĊĊĠĠĠ Ġprivate Ġval Ġpoint ee Type Ġ= Ġpointer Type . to Point ee K Type () ĊĠĠĠ Ġoverride Ġval Ġc type Ġ= Ġresolve C type () ĊĊĠĠĠ Ġprivate Ġfun Ġresolve C type () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSpecial Ġcase Ġresource Ġtagged Ġtypes ĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġk class . annotations . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . annotation Class Ġ== ĠResource :: class ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( resource Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( resource Ġas ĠResource ). ctype Ġ+ Ġ"*" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġthe Ġc type Ġfrom Ġthe Ġnative Ġtype ĊĠĠĠĠĠĠĠ Ġreturn Ġ(( point ee Type . classifier Ġas ĠK Class < *> ). construct ors . first (). call () Ġas ĠNative Type < *> ). ctype Ġ+ Ġ"*" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK Type . to Point ee K Type () Ġ: ĠK Type Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( this . arguments . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . arguments [ 0 ]. type !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK Type . to Point ee K Class () Ġ: ĠK Class < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġto Point ee K Type (). classifier Ġas ĠK Class < *> ĊĠĠĠ Ġ} Ċ } Ċ