1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/* automatically generated by rust-bindgen */

pub type std_nullptr_t = * const :: std :: os :: raw :: c_void ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; 
 /// A Unicode codepoint 
 pub type EmojicodeChar = u32 ; 
 /// A byte-code instruction 
 pub type EmojicodeInstruction = u32 ; 
 /// There is an object pointer a the given index 
 pub const ObjectVariableType_Simple : ObjectVariableType = 0 ; 
 /// There is an object pointer a the given index if the value at @c condition is truthy 
 pub const ObjectVariableType_Condition : ObjectVariableType = 1 ; 
 /// There is an object pointer a the given index if the value at @c condition is truthy 
 pub const ObjectVariableType_Box : ObjectVariableType = 2 ; 
 /// There is an object pointer a the given index if the value at @c condition is truthy 
 pub const ObjectVariableType_ConditionalSkip : ObjectVariableType = 3 ; pub type ObjectVariableType = i32 ; pub const ContextType_None : ContextType = 0 ; pub const ContextType_Object : ContextType = 1 ; pub const ContextType_ValueReference : ContextType = 2 ; pub type ContextType = i32 ; pub type Emojicode_EmojicodeInteger = int_fast64_t ; 
 /// A one-Emojicode-word large value without type information. 
 # [ repr ( C ) ] # [ derive ( Copy , Clone ) ] pub union Emojicode_Value { pub raw : Emojicode_EmojicodeInteger , pub character : EmojicodeChar , pub doubl : f64 , pub object : * mut Emojicode_Object , pub klass : * mut Emojicode_Class , pub value : * mut Emojicode_Value , _bindgen_union_align : u64 , } # [ test ] fn bindgen_test_layout_Emojicode_Value ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_Value > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( Emojicode_Value ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_Value > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_Value ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Value > ( ) ) ) . raw as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Value ) , "::" , stringify ! ( raw ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Value > ( ) ) ) . character as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Value ) , "::" , stringify ! ( character ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Value > ( ) ) ) . doubl as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Value ) , "::" , stringify ! ( doubl ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Value > ( ) ) ) . object as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Value ) , "::" , stringify ! ( object ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Value > ( ) ) ) . klass as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Value ) , "::" , stringify ! ( klass ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Value > ( ) ) ) . value as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Value ) , "::" , stringify ! ( value ) ) ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5Value15makeNothingnessEv" ] pub fn Emojicode_Value_makeNothingness ( this : * mut Emojicode_Value ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5Value11optionalSetES0_" ] pub fn Emojicode_Value_optionalSet ( this : * mut Emojicode_Value , value : Emojicode_Value ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5Value10storeErrorEl" ] pub fn Emojicode_Value_storeError ( this : * mut Emojicode_Value , error : Emojicode_EmojicodeInteger ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5Value16setValueForErrorES0_" ] pub fn Emojicode_Value_setValueForError ( this : * mut Emojicode_Value , value : Emojicode_Value ) ; } extern "C" { 
 /// Returns an undefined Value 
 # [ link_name = "\u{1}_ZN9Emojicode5ValueC1Ev" ] pub fn Emojicode_Value_Value ( this : * mut Emojicode_Value ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ValueC1Eb" ] pub fn Emojicode_Value_Value1 ( this : * mut Emojicode_Value , raw : bool ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ValueC1El" ] pub fn Emojicode_Value_Value2 ( this : * mut Emojicode_Value , raw : Emojicode_EmojicodeInteger ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ValueC1Ej" ] pub fn Emojicode_Value_Value3 ( this : * mut Emojicode_Value , raw : EmojicodeChar ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ValueC1EPNS_6ObjectE" ] pub fn Emojicode_Value_Value4 ( this : * mut Emojicode_Value , object : * mut Emojicode_Object ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ValueC1EPS0_" ] pub fn Emojicode_Value_Value5 ( this : * mut Emojicode_Value , value : * mut Emojicode_Value ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ValueC1Ed" ] pub fn Emojicode_Value_Value6 ( this : * mut Emojicode_Value , doubl : f64 ) ; } impl Emojicode_Value { # [ inline ] pub unsafe fn makeNothingness ( & mut self ) { Emojicode_Value_makeNothingness ( self ) } # [ inline ] pub unsafe fn optionalSet ( & mut self , value : Emojicode_Value ) { Emojicode_Value_optionalSet ( self , value ) } # [ inline ] pub unsafe fn storeError ( & mut self , error : Emojicode_EmojicodeInteger ) { Emojicode_Value_storeError ( self , error ) } # [ inline ] pub unsafe fn setValueForError ( & mut self , value : Emojicode_Value ) { Emojicode_Value_setValueForError ( self , value ) } # [ inline ] pub unsafe fn new ( ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Value_Value ( & mut __bindgen_tmp ) ; __bindgen_tmp } # [ inline ] pub unsafe fn new1 ( raw : bool ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Value_Value1 ( & mut __bindgen_tmp , raw ) ; __bindgen_tmp } # [ inline ] pub unsafe fn new2 ( raw : Emojicode_EmojicodeInteger ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Value_Value2 ( & mut __bindgen_tmp , raw ) ; __bindgen_tmp } # [ inline ] pub unsafe fn new3 ( raw : EmojicodeChar ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Value_Value3 ( & mut __bindgen_tmp , raw ) ; __bindgen_tmp } # [ inline ] pub unsafe fn new4 ( object : * mut Emojicode_Object ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Value_Value4 ( & mut __bindgen_tmp , object ) ; __bindgen_tmp } # [ inline ] pub unsafe fn new5 ( value : * mut Emojicode_Value ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Value_Value5 ( & mut __bindgen_tmp , value ) ; __bindgen_tmp } # [ inline ] pub unsafe fn new6 ( doubl : f64 ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Value_Value6 ( & mut __bindgen_tmp , doubl ) ; __bindgen_tmp } } # [ repr ( C ) ] # [ derive ( Copy , Clone ) ] pub struct Emojicode_Object { pub __bindgen_anon_1 : Emojicode_Object__bindgen_ty_1 , 
 /// The size of this object: the size of the Object struct and the value area. 
 pub size : usize , } # [ repr ( C ) ] # [ derive ( Copy , Clone ) ] pub union Emojicode_Object__bindgen_ty_1 { 
 /// The class of the object 
 pub klass : * mut Emojicode_Class , 
 /// Used by the Garbage Collector, do not change! 
 pub newLocation : * mut Emojicode_Object , _bindgen_union_align : u64 , } # [ test ] fn bindgen_test_layout_Emojicode_Object__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_Object__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( Emojicode_Object__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_Object__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_Object__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Object__bindgen_ty_1 > ( ) ) ) . klass as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Object__bindgen_ty_1 ) , "::" , stringify ! ( klass ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Object__bindgen_ty_1 > ( ) ) ) . newLocation as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Object__bindgen_ty_1 ) , "::" , stringify ! ( newLocation ) ) ) ; } # [ test ] fn bindgen_test_layout_Emojicode_Object ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_Object > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( Emojicode_Object ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_Object > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_Object ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Object > ( ) ) ) . size as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Object ) , "::" , stringify ! ( size ) ) ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode6Object19variableDestinationEj" ] pub fn Emojicode_Object_variableDestination ( this : * mut Emojicode_Object , index : EmojicodeInstruction ) -> * mut Emojicode_Value ; } impl Emojicode_Object { # [ inline ] pub unsafe fn variableDestination ( & mut self , index : EmojicodeInstruction ) -> * mut Emojicode_Value { Emojicode_Object_variableDestination ( self , index ) } } extern "C" { 
 /// You can use this function to call a callable object. It’s internally Garbage-Collector safe. 
 # [ link_name = "\u{1}_ZN9Emojicode21executeCallableExternEPNS_6ObjectEPNS_5ValueEmPNS_6ThreadES3_" ] pub fn Emojicode_executeCallableExtern ( callable : * mut Emojicode_Object , args : * mut Emojicode_Value , argsSize : usize , thread : * mut Emojicode_Thread , destination : * mut Emojicode_Value ) ; } pub type Emojicode_FunctionFunctionPointer = :: std :: option :: Option < unsafe extern "C" fn ( thread : * mut Emojicode_Thread ) > ; 
 /// The version of a package. Must follow semantic versioning 2.0 http://semver.org 
 # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_PackageVersion { 
 /// The major version 
 pub major : u16 , 
 /// The minor version 
 pub minor : u16 , } # [ test ] fn bindgen_test_layout_Emojicode_PackageVersion ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_PackageVersion > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( Emojicode_PackageVersion ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_PackageVersion > ( ) , 2usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_PackageVersion ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_PackageVersion > ( ) ) ) . major as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_PackageVersion ) , "::" , stringify ! ( major ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_PackageVersion > ( ) ) ) . minor as * const _ as usize } , 2usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_PackageVersion ) , "::" , stringify ! ( minor ) ) ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode14PackageVersionC1Ett" ] pub fn Emojicode_PackageVersion_PackageVersion ( this : * mut Emojicode_PackageVersion , major : u16 , minor : u16 ) ; } impl Emojicode_PackageVersion { # [ inline ] pub unsafe fn new ( major : u16 , minor : u16 ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_PackageVersion_PackageVersion ( & mut __bindgen_tmp , major , minor ) ; __bindgen_tmp } } 
 /// Used to signify the compiler that from the @c from -th instruction to the to @c to -th instruction the variable at
/// index @c variableIndex contains an object reference. 
 # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_ObjectVariableRecord { pub variableIndex : :: std :: os :: raw :: c_uint , pub condition : :: std :: os :: raw :: c_uint , pub type_ : ObjectVariableType , } # [ test ] fn bindgen_test_layout_Emojicode_ObjectVariableRecord ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_ObjectVariableRecord > ( ) , 12usize , concat ! ( "Size of: " , stringify ! ( Emojicode_ObjectVariableRecord ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_ObjectVariableRecord > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_ObjectVariableRecord ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_ObjectVariableRecord > ( ) ) ) . variableIndex as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_ObjectVariableRecord ) , "::" , stringify ! ( variableIndex ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_ObjectVariableRecord > ( ) ) ) . condition as * const _ as usize } , 4usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_ObjectVariableRecord ) , "::" , stringify ! ( condition ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_ObjectVariableRecord > ( ) ) ) . type_ as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_ObjectVariableRecord ) , "::" , stringify ! ( type_ ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_FunctionObjectVariableRecord { pub _base : Emojicode_ObjectVariableRecord , pub from : :: std :: os :: raw :: c_int , pub to : :: std :: os :: raw :: c_int , } # [ test ] fn bindgen_test_layout_Emojicode_FunctionObjectVariableRecord ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_FunctionObjectVariableRecord > ( ) , 20usize , concat ! ( "Size of: " , stringify ! ( Emojicode_FunctionObjectVariableRecord ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_FunctionObjectVariableRecord > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_FunctionObjectVariableRecord ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_FunctionObjectVariableRecord > ( ) ) ) . from as * const _ as usize } , 12usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_FunctionObjectVariableRecord ) , "::" , stringify ! ( from ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_FunctionObjectVariableRecord > ( ) ) ) . to as * const _ as usize } , 16usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_FunctionObjectVariableRecord ) , "::" , stringify ! ( to ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_Block { 
 /// A pointer to the first instruction 
 pub instructions : * mut EmojicodeInstruction , 
 /// The number of instructions in this block 
 pub instructionCount : :: std :: os :: raw :: c_uint , } # [ test ] fn bindgen_test_layout_Emojicode_Block ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_Block > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( Emojicode_Block ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_Block > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_Block ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Block > ( ) ) ) . instructions as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Block ) , "::" , stringify ! ( instructions ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Block > ( ) ) ) . instructionCount as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Block ) , "::" , stringify ! ( instructionCount ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_Function { 
 /// Number of arguments taken by this function 
 pub argumentCount : :: std :: os :: raw :: c_int , 
 /// The frame size needed to execute this function. 
 pub frameSize : :: std :: os :: raw :: c_int , pub objectVariableRecords : * mut Emojicode_FunctionObjectVariableRecord , pub objectVariableRecordsCount : :: std :: os :: raw :: c_uint , pub context : ContextType , pub block : Emojicode_Block , 
 /// A native function connect to this function 
 pub handler : Emojicode_FunctionFunctionPointer , } # [ test ] fn bindgen_test_layout_Emojicode_Function ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_Function > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( Emojicode_Function ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_Function > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_Function ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Function > ( ) ) ) . argumentCount as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Function ) , "::" , stringify ! ( argumentCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Function > ( ) ) ) . frameSize as * const _ as usize } , 4usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Function ) , "::" , stringify ! ( frameSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Function > ( ) ) ) . objectVariableRecords as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Function ) , "::" , stringify ! ( objectVariableRecords ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Function > ( ) ) ) . objectVariableRecordsCount as * const _ as usize } , 16usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Function ) , "::" , stringify ! ( objectVariableRecordsCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Function > ( ) ) ) . context as * const _ as usize } , 20usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Function ) , "::" , stringify ! ( context ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Function > ( ) ) ) . block as * const _ as usize } , 24usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Function ) , "::" , stringify ! ( block ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Function > ( ) ) ) . handler as * const _ as usize } , 40usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Function ) , "::" , stringify ! ( handler ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_ProtocolDispatchTable { pub protocolsTable : * mut * mut * mut Emojicode_Function , pub protocolsOffset : uint_fast16_t , pub protocolsMaxIndex : uint_fast16_t , } # [ test ] fn bindgen_test_layout_Emojicode_ProtocolDispatchTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_ProtocolDispatchTable > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( Emojicode_ProtocolDispatchTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_ProtocolDispatchTable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_ProtocolDispatchTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_ProtocolDispatchTable > ( ) ) ) . protocolsTable as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_ProtocolDispatchTable ) , "::" , stringify ! ( protocolsTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_ProtocolDispatchTable > ( ) ) ) . protocolsOffset as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_ProtocolDispatchTable ) , "::" , stringify ! ( protocolsOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_ProtocolDispatchTable > ( ) ) ) . protocolsMaxIndex as * const _ as usize } , 16usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_ProtocolDispatchTable ) , "::" , stringify ! ( protocolsMaxIndex ) ) ) ; } extern "C" { # [ link_name = "\u{1}_ZNK9Emojicode21ProtocolDispatchTable8dispatchEmm" ] pub fn Emojicode_ProtocolDispatchTable_dispatch ( this : * const Emojicode_ProtocolDispatchTable , protocolIndex : uint_fast16_t , functionIndex : uint_fast16_t ) -> * mut Emojicode_Function ; } extern "C" { # [ link_name = "\u{1}_ZNK9Emojicode21ProtocolDispatchTable10conformsToEm" ] pub fn Emojicode_ProtocolDispatchTable_conformsTo ( this : * const Emojicode_ProtocolDispatchTable , protocolIndex : uint_fast16_t ) -> bool ; } impl Emojicode_ProtocolDispatchTable { # [ inline ] pub unsafe fn dispatch ( & self , protocolIndex : uint_fast16_t , functionIndex : uint_fast16_t ) -> * mut Emojicode_Function { Emojicode_ProtocolDispatchTable_dispatch ( self , protocolIndex , functionIndex ) } # [ inline ] pub unsafe fn conformsTo ( & self , protocolIndex : uint_fast16_t ) -> bool { Emojicode_ProtocolDispatchTable_conformsTo ( self , protocolIndex ) } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_Class { pub methodsVtable : * mut * mut Emojicode_Function , pub initializersVtable : * mut * mut Emojicode_Function , pub protocolTable : Emojicode_ProtocolDispatchTable , 
 /// The class’s superclass 
 pub superclass : * mut Emojicode_Class , pub instanceVariableRecords : * mut Emojicode_ObjectVariableRecord , pub instanceVariableRecordsCount : :: std :: os :: raw :: c_uint , 
 /// Marker FunctionPointer for GC 
 pub mark : :: std :: option :: Option < unsafe extern "C" fn ( self_ : * mut Emojicode_Object ) > , pub deinit : :: std :: option :: Option < unsafe extern "C" fn ( self_ : * mut Emojicode_Object ) > , 
 /// The exact size of the object when allocated.
    /// /// Equivalent to @c alignSize(valueSize + size for instance variables + sizeof(Object)) 
 pub size : usize , pub valueSize : usize , } # [ test ] fn bindgen_test_layout_Emojicode_Class ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_Class > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( Emojicode_Class ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_Class > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_Class ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . methodsVtable as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( methodsVtable ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . initializersVtable as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( initializersVtable ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . protocolTable as * const _ as usize } , 16usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( protocolTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . superclass as * const _ as usize } , 40usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( superclass ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . instanceVariableRecords as * const _ as usize } , 48usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( instanceVariableRecords ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . instanceVariableRecordsCount as * const _ as usize } , 56usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( instanceVariableRecordsCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . mark as * const _ as usize } , 64usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( mark ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . deinit as * const _ as usize } , 72usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( deinit ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . size as * const _ as usize } , 80usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( size ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Class > ( ) ) ) . valueSize as * const _ as usize } , 88usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Class ) , "::" , stringify ! ( valueSize ) ) ) ; } extern "C" { 
 /// Returns true if @c a inherits from class @c from 
 # [ link_name = "\u{1}_ZNK9Emojicode5Class12inheritsFromEPS0_" ] pub fn Emojicode_Class_inheritsFrom ( this : * const Emojicode_Class , from : * mut Emojicode_Class ) -> bool ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ClassC1Ev" ] pub fn Emojicode_Class_Class ( this : * mut Emojicode_Class ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode5ClassC1EPFvPNS_6ObjectEE" ] pub fn Emojicode_Class_Class1 ( this : * mut Emojicode_Class , mark : :: std :: option :: Option < unsafe extern "C" fn ( arg1 : * mut Emojicode_Object ) > ) ; } impl Emojicode_Class { # [ inline ] pub unsafe fn inheritsFrom ( & self , from : * mut Emojicode_Class ) -> bool { Emojicode_Class_inheritsFrom ( self , from ) } # [ inline ] pub unsafe fn new ( ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Class_Class ( & mut __bindgen_tmp ) ; __bindgen_tmp } # [ inline ] pub unsafe fn new1 ( mark : :: std :: option :: Option < unsafe extern "C" fn ( arg1 : * mut Emojicode_Object ) > ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_Class_Class1 ( & mut __bindgen_tmp , mark ) ; __bindgen_tmp } } extern "C" { 
 /// Converts the string to a UTF8 char array and returns it.
/// @warning The returned pointer points into an object allocated by the Emojicode memory manager. It must not be free’d
/// and will not survive the imminent garbage collector cycle. 
 # [ link_name = "\u{1}_ZN9Emojicode15stringToCStringEPNS_6ObjectE" ] pub fn Emojicode_stringToCString ( str : * mut Emojicode_Object ) -> * const :: std :: os :: raw :: c_char ; } extern "C" { 
 /// Creates a string from a UTF8 C string. The string must be null terminated! 
 # [ link_name = "\u{1}_ZN9Emojicode14stringFromCharEPKc" ] pub fn Emojicode_stringFromChar ( cstring : * const :: std :: os :: raw :: c_char ) -> * mut Emojicode_Object ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Emojicode_RetainedObjectPointer { pub retainListPointer_ : * mut * mut Emojicode_Object , } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode21RetainedObjectPointer10nullobjectE" ] pub static mut Emojicode_RetainedObjectPointer_nullobject : * mut Emojicode_Object ; } # [ test ] fn bindgen_test_layout_Emojicode_RetainedObjectPointer ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_RetainedObjectPointer > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( Emojicode_RetainedObjectPointer ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_RetainedObjectPointer > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_RetainedObjectPointer ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_RetainedObjectPointer > ( ) ) ) . retainListPointer_ as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_RetainedObjectPointer ) , "::" , stringify ! ( retainListPointer_ ) ) ) ; } extern "C" { 
 /// Returns an ordinary pointer to the retained object.
/// /// @warning This pointer is only valid until the next garbage collector cycle. This does, of course, not pose a
/// /// problem if you store the pointer into another object that can be reached by the garbage collector or if you
/// /// return it. 
 # [ link_name = "\u{1}_ZNK9Emojicode21RetainedObjectPointer17unretainedPointerEv" ] pub fn Emojicode_RetainedObjectPointer_unretainedPointer ( this : * const Emojicode_RetainedObjectPointer ) -> * mut Emojicode_Object ; } extern "C" { 
 /// Constructs a RetainedObjectPointer that will always evaluate to @c nullptr. 
 # [ link_name = "\u{1}_ZN9Emojicode21RetainedObjectPointerC1EDn" ] pub fn Emojicode_RetainedObjectPointer_RetainedObjectPointer ( this : * mut Emojicode_RetainedObjectPointer , n : std_nullptr_t ) ; } impl Emojicode_RetainedObjectPointer { # [ inline ] pub unsafe fn unretainedPointer ( & self ) -> * mut Emojicode_Object { Emojicode_RetainedObjectPointer_unretainedPointer ( self ) } # [ inline ] pub unsafe fn new ( n : std_nullptr_t ) -> Self { let mut __bindgen_tmp = :: std :: mem :: uninitialized ( ) ; Emojicode_RetainedObjectPointer_RetainedObjectPointer ( & mut __bindgen_tmp , n ) ; __bindgen_tmp } } # [ repr ( C ) ] # [ derive ( Copy , Clone ) ] pub struct Emojicode_StackFrame { pub returnPointer : * mut Emojicode_StackFrame , pub returnFutureStack : * mut Emojicode_StackFrame , pub destination : * mut Emojicode_Value , pub executionPointer : * mut EmojicodeInstruction , pub function : * mut Emojicode_Function , pub argPushIndex : :: std :: os :: raw :: c_uint , pub thisContext : Emojicode_Value , } # [ test ] fn bindgen_test_layout_Emojicode_StackFrame ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_StackFrame > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( Emojicode_StackFrame ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_StackFrame > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_StackFrame ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_StackFrame > ( ) ) ) . returnPointer as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_StackFrame ) , "::" , stringify ! ( returnPointer ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_StackFrame > ( ) ) ) . returnFutureStack as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_StackFrame ) , "::" , stringify ! ( returnFutureStack ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_StackFrame > ( ) ) ) . destination as * const _ as usize } , 16usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_StackFrame ) , "::" , stringify ! ( destination ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_StackFrame > ( ) ) ) . executionPointer as * const _ as usize } , 24usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_StackFrame ) , "::" , stringify ! ( executionPointer ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_StackFrame > ( ) ) ) . function as * const _ as usize } , 32usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_StackFrame ) , "::" , stringify ! ( function ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_StackFrame > ( ) ) ) . argPushIndex as * const _ as usize } , 40usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_StackFrame ) , "::" , stringify ! ( argPushIndex ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_StackFrame > ( ) ) ) . thisContext as * const _ as usize } , 48usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_StackFrame ) , "::" , stringify ! ( thisContext ) ) ) ; } extern "C" { # [ link_name = "\u{1}_ZN9Emojicode10StackFrame19variableDestinationEi" ] pub fn Emojicode_StackFrame_variableDestination ( this : * mut Emojicode_StackFrame , index : :: std :: os :: raw :: c_int ) -> * mut Emojicode_Value ; } impl Emojicode_StackFrame { # [ inline ] pub unsafe fn variableDestination ( & mut self , index : :: std :: os :: raw :: c_int ) -> * mut Emojicode_Value { Emojicode_StackFrame_variableDestination ( self , index ) } } # [ repr ( C ) ] pub struct Emojicode_Thread { pub stackLimit_ : * mut Emojicode_StackFrame , pub stackBottom_ : * mut Emojicode_StackFrame , pub stack_ : * mut Emojicode_StackFrame , pub futureStack_ : * mut Emojicode_StackFrame , pub threadBefore_ : * mut Emojicode_Thread , pub threadAfter_ : * mut Emojicode_Thread , pub retainList : [ * mut Emojicode_Object ; 100usize ] , pub retainPointer : * mut * mut Emojicode_Object , } # [ test ] fn bindgen_test_layout_Emojicode_Thread ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Emojicode_Thread > ( ) , 856usize , concat ! ( "Size of: " , stringify ! ( Emojicode_Thread ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Emojicode_Thread > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Emojicode_Thread ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . stackLimit_ as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( stackLimit_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . stackBottom_ as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( stackBottom_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . stack_ as * const _ as usize } , 16usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( stack_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . futureStack_ as * const _ as usize } , 24usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( futureStack_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . threadBefore_ as * const _ as usize } , 32usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( threadBefore_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . threadAfter_ as * const _ as usize } , 40usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( threadAfter_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . retainList as * const _ as usize } , 48usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( retainList ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < Emojicode_Thread > ( ) ) ) . retainPointer as * const _ as usize } , 848usize , concat ! ( "Offset of field: " , stringify ! ( Emojicode_Thread ) , "::" , stringify ! ( retainPointer ) ) ) ; } extern "C" { 
 /// Pops the stack associated with this thread 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread8popStackEv" ] pub fn Emojicode_Thread_popStack ( this : * mut Emojicode_Thread ) ; } extern "C" { 
 /// Pushes a new stack frame 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread9pushStackENS_5ValueEiiPNS_8FunctionEPS1_Pj" ] pub fn Emojicode_Thread_pushStack ( this : * mut Emojicode_Thread , self_ : Emojicode_Value , frameSize : :: std :: os :: raw :: c_int , argCount : :: std :: os :: raw :: c_int , function : * mut Emojicode_Function , destination : * mut Emojicode_Value , executionPointer : * mut EmojicodeInstruction ) ; } extern "C" { 
 /// Pushes the reserved stack frame onto the stack 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread17pushReservedFrameEv" ] pub fn Emojicode_Thread_pushReservedFrame ( this : * mut Emojicode_Thread ) ; } extern "C" { 
 /// Reserves a new stack frame which can later be pushed with @c stackPushReservedFrame
/// /// @returns A pointer to the memory reserved for the variables. 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread12reserveFrameENS_5ValueEiPNS_8FunctionEPS1_Pj" ] pub fn Emojicode_Thread_reserveFrame ( this : * mut Emojicode_Thread , self_ : Emojicode_Value , size : :: std :: os :: raw :: c_int , function : * mut Emojicode_Function , destination : * mut Emojicode_Value , executionPointer : * mut EmojicodeInstruction ) -> * mut Emojicode_StackFrame ; } extern "C" { # [ link_name = "\u{1}_ZNK9Emojicode6Thread17currentStackFrameEv" ] pub fn Emojicode_Thread_currentStackFrame ( this : * const Emojicode_Thread ) -> * mut Emojicode_StackFrame ; } extern "C" { 
 /// Returns the content of the variable slot at the specific index from the stack associated with this thread 
 # [ link_name = "\u{1}_ZNK9Emojicode6Thread8variableEi" ] pub fn Emojicode_Thread_variable ( this : * const Emojicode_Thread , index : :: std :: os :: raw :: c_int ) -> Emojicode_Value ; } extern "C" { 
 /// Returns a pointer to the variable slot at the specific index from the stack associated with this thread 
 # [ link_name = "\u{1}_ZNK9Emojicode6Thread19variableDestinationEi" ] pub fn Emojicode_Thread_variableDestination ( this : * const Emojicode_Thread , index : :: std :: os :: raw :: c_int ) -> * mut Emojicode_Value ; } extern "C" { 
 /// Returns the value on which the method was called. 
 # [ link_name = "\u{1}_ZNK9Emojicode6Thread11thisContextEv" ] pub fn Emojicode_Thread_thisContext ( this : * const Emojicode_Thread ) -> Emojicode_Value ; } extern "C" { 
 /// Returns the object on which the method was called. 
 # [ link_name = "\u{1}_ZNK9Emojicode6Thread10thisObjectEv" ] pub fn Emojicode_Thread_thisObject ( this : * const Emojicode_Thread ) -> * mut Emojicode_Object ; } extern "C" { 
 /// Consumes the next instruction from the current stack frame’s execution pointer, i.e. returns the value to which
/// /// the pointer currently points and increments the pointer. 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread18consumeInstructionEv" ] pub fn Emojicode_Thread_consumeInstruction ( this : * mut Emojicode_Thread ) -> EmojicodeInstruction ; } extern "C" { 
 /// Leaves the function currently executed. Effectively sets the execution pointer of
/// /// the current stack frame to the null pointer. 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread18returnFromFunctionEv" ] pub fn Emojicode_Thread_returnFromFunction ( this : * mut Emojicode_Thread ) ; } extern "C" { 
 /// Leaves the function and sets the value of the return destination to the given value. 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread18returnFromFunctionENS_5ValueE" ] pub fn Emojicode_Thread_returnFromFunction1 ( this : * mut Emojicode_Thread , value : Emojicode_Value ) ; } extern "C" { 
 /// Leaves the function and sets the value of the return destination to Nothingness. (See @c makeNothingness()) 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread29returnNothingnessFromFunctionEv" ] pub fn Emojicode_Thread_returnNothingnessFromFunction ( this : * mut Emojicode_Thread ) ; } extern "C" { 
 /// Leaves the function and sets the value of the return destination to the given value. The destination is treated
/// /// as optional. (See @c optionalSet()) 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread25returnOEValueFromFunctionENS_5ValueE" ] pub fn Emojicode_Thread_returnOEValueFromFunction ( this : * mut Emojicode_Thread , value : Emojicode_Value ) ; } extern "C" { 
 /// Leaves the function and sets the value of the return destination to an error with the given value. 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread23returnErrorFromFunctionEl" ] pub fn Emojicode_Thread_returnErrorFromFunction ( this : * mut Emojicode_Thread , error : Emojicode_EmojicodeInteger ) ; } extern "C" { 
 /// Retains the given object.
/// /// This method is used in native function code to "retain" an object, i.e. to prevent the object from being
/// /// deallocated by the garbage collector and to keep a pointer to it.
/// /// @warning You must retain all objects which you wish to keep, before you perform a potentially garbage-collector
/// /// invoking operation. As well, you must "release" the object before your function returns by calling @c release().
/// /// @returns A @c RetainedObjectPointer pointing to the retained object. 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread6retainEPNS_6ObjectE" ] pub fn Emojicode_Thread_retain ( this : * mut Emojicode_Thread , object : * mut Emojicode_Object ) -> Emojicode_RetainedObjectPointer ; } extern "C" { 
 /// Release @c n objects previously retained by @c retain().
/// /// @warning Releasing more objects than you retained leads to undefined behavior. 
 # [ link_name = "\u{1}_ZN9Emojicode6Thread7releaseEi" ] pub fn Emojicode_Thread_release ( this : * mut Emojicode_Thread , n : :: std :: os :: raw :: c_int ) ; } extern "C" { 
 /// Returns the this object as a retained object pointer. This method is only provided to allow convenient passing
/// /// of the this object as retained object pointer. The this object itself is, of course, retained already in the
/// /// stack frame and calls to @c thisObject() will always return a valid object pointer.
/// /// @attention Unlike after a call to @c retain() you must not call @c release() for a call to this method. 
 # [ link_name = "\u{1}_ZNK9Emojicode6Thread20thisObjectAsRetainedEv" ] pub fn Emojicode_Thread_thisObjectAsRetained ( this : * const Emojicode_Thread ) -> Emojicode_RetainedObjectPointer ; } extern "C" { 
 /// Returns the object pointer in the given variable slot as retained object pointer. This method is only provided
/// /// to allow convenient passing of the object pointer as retained object pointer as variables are naturally always
/// /// retained.
/// /// @attention Unlike after a call to @c retain() you must not call @c release() for a call to this method. 
 # [ link_name = "\u{1}_ZNK9Emojicode6Thread31variableObjectPointerAsRetainedEi" ] pub fn Emojicode_Thread_variableObjectPointerAsRetained ( this : * const Emojicode_Thread , index : :: std :: os :: raw :: c_int ) -> Emojicode_RetainedObjectPointer ; } impl Emojicode_Thread { # [ inline ] pub unsafe fn popStack ( & mut self ) { Emojicode_Thread_popStack ( self ) } # [ inline ] pub unsafe fn pushStack ( & mut self , self_ : Emojicode_Value , frameSize : :: std :: os :: raw :: c_int , argCount : :: std :: os :: raw :: c_int , function : * mut Emojicode_Function , destination : * mut Emojicode_Value , executionPointer : * mut EmojicodeInstruction ) { Emojicode_Thread_pushStack ( self , self_ , frameSize , argCount , function , destination , executionPointer ) } # [ inline ] pub unsafe fn pushReservedFrame ( & mut self ) { Emojicode_Thread_pushReservedFrame ( self ) } # [ inline ] pub unsafe fn reserveFrame ( & mut self , self_ : Emojicode_Value , size : :: std :: os :: raw :: c_int , function : * mut Emojicode_Function , destination : * mut Emojicode_Value , executionPointer : * mut EmojicodeInstruction ) -> * mut Emojicode_StackFrame { Emojicode_Thread_reserveFrame ( self , self_ , size , function , destination , executionPointer ) } # [ inline ] pub unsafe fn currentStackFrame ( & self ) -> * mut Emojicode_StackFrame { Emojicode_Thread_currentStackFrame ( self ) } # [ inline ] pub unsafe fn variable ( & self , index : :: std :: os :: raw :: c_int ) -> Emojicode_Value { Emojicode_Thread_variable ( self , index ) } # [ inline ] pub unsafe fn variableDestination ( & self , index : :: std :: os :: raw :: c_int ) -> * mut Emojicode_Value { Emojicode_Thread_variableDestination ( self , index ) } # [ inline ] pub unsafe fn thisContext ( & self ) -> Emojicode_Value { Emojicode_Thread_thisContext ( self ) } # [ inline ] pub unsafe fn thisObject ( & self ) -> * mut Emojicode_Object { Emojicode_Thread_thisObject ( self ) } # [ inline ] pub unsafe fn consumeInstruction ( & mut self ) -> EmojicodeInstruction { Emojicode_Thread_consumeInstruction ( self ) } # [ inline ] pub unsafe fn returnFromFunction ( & mut self ) { Emojicode_Thread_returnFromFunction ( self ) } # [ inline ] pub unsafe fn returnFromFunction1 ( & mut self , value : Emojicode_Value ) { Emojicode_Thread_returnFromFunction1 ( self , value ) } # [ inline ] pub unsafe fn returnNothingnessFromFunction ( & mut self ) { Emojicode_Thread_returnNothingnessFromFunction ( self ) } # [ inline ] pub unsafe fn returnOEValueFromFunction ( & mut self , value : Emojicode_Value ) { Emojicode_Thread_returnOEValueFromFunction ( self , value ) } # [ inline ] pub unsafe fn returnErrorFromFunction ( & mut self , error : Emojicode_EmojicodeInteger ) { Emojicode_Thread_returnErrorFromFunction ( self , error ) } # [ inline ] pub unsafe fn retain ( & mut self , object : * mut Emojicode_Object ) -> Emojicode_RetainedObjectPointer { Emojicode_Thread_retain ( self , object ) } # [ inline ] pub unsafe fn release ( & mut self , n : :: std :: os :: raw :: c_int ) { Emojicode_Thread_release ( self , n ) } # [ inline ] pub unsafe fn thisObjectAsRetained ( & self ) -> Emojicode_RetainedObjectPointer { Emojicode_Thread_thisObjectAsRetained ( self ) } # [ inline ] pub unsafe fn variableObjectPointerAsRetained ( & self , index : :: std :: os :: raw :: c_int ) -> Emojicode_RetainedObjectPointer { Emojicode_Thread_variableObjectPointerAsRetained ( self , index ) } }