This repository has been archived by the owner on Jan 5, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
TFDerivedType.class.st
120 lines (82 loc) · 2.2 KB
/
TFDerivedType.class.st
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
Class {
#name : #TFDerivedType,
#superclass : #Object,
#classVars : [
'BOOLEAN',
'BOOLEAN32',
'OOP',
'STRING'
],
#category : #'ThreadedFFI-Types'
}
{ #category : #accessing }
TFDerivedType class >> boolean [
^ BOOLEAN ifNil: [ BOOLEAN := TFBooleanType new ]
]
{ #category : #accessing }
TFDerivedType class >> boolean32 [
^ BOOLEAN32 ifNil: [ BOOLEAN32 := TFBoolean32Type new ]
]
{ #category : #accessing }
TFDerivedType class >> objectPointer [
^ OOP ifNil: [ OOP := TFOOPType new ]
]
{ #category : #accessing }
TFDerivedType class >> string [
^ STRING ifNil: [ STRING := TFStringType new ]
]
{ #category : #accessing }
TFDerivedType >> basicType [
^ TFBasicType pointer
]
{ #category : #accessing }
TFDerivedType >> byteSize [
^ self basicType byteSize
]
{ #category : #'reading-writing' }
TFDerivedType >> callbackReadValue: anExternalAddress [
^ self readValue: anExternalAddress
]
{ #category : #'reading-writing' }
TFDerivedType >> callbackWrite: anObject into: anExternalAddress [
self write: anObject into: anExternalAddress
]
{ #category : #marshalling }
TFDerivedType >> emitFreeIfNeededOfIndex: argIndex argumentsArrayTempName: argumentsArrayTempName withBuilder: anIRBuilder [
]
{ #category : #freeing }
TFDerivedType >> freeValueIfNeeded: aCHeapValueHolder [
"Hook into me if you want to free some value sent previously to a C function"
]
{ #category : #accessing }
TFDerivedType >> getHandle [
^ self basicType getHandle
]
{ #category : #testing }
TFDerivedType >> isVoid [
^ self basicType isVoid
]
{ #category : #marshalling }
TFDerivedType >> marshallFromPrimitive: aValue [
^ aValue
]
{ #category : #marshalling }
TFDerivedType >> marshallToPrimitive: aValue [
^ aValue
]
{ #category : #'reading-writing' }
TFDerivedType >> readReturnValue: anExternalAddress [
^ self readValue: anExternalAddress
]
{ #category : #'reading-writing' }
TFDerivedType >> readValue: anExternalAddress [
self subclassResponsibility
]
{ #category : #validating }
TFDerivedType >> validate [
self basicType validate
]
{ #category : #'reading-writing' }
TFDerivedType >> write: anObject into: anExternalAddress [
self basicType write: anObject into: anExternalAddress
]