author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 12 Aug 2015 07:32:13 +0100 | |
changeset 43 | 9327987437ae |
parent 32 | d7464405cbda |
permissions | -rw-r--r-- |
32
d7464405cbda
Package renamed from cvut:fel/cface to jv:cface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
1 |
"{ Package: 'jv:cface' }" |
22 | 2 |
|
3 |
"{ NameSpace: Cface }" |
|
4 |
||
5 |
TypeMapping subclass:#Libgit2Mapping |
|
6 |
instanceVariableNames:'' |
|
30 | 7 |
classVariableNames:'TypeNameMap' |
22 | 8 |
poolDictionaries:'' |
9 |
category:'Cface-Mappings' |
|
10 |
! |
|
11 |
||
12 |
||
30 | 13 |
!Libgit2Mapping class methodsFor:'initialization'! |
14 |
||
15 |
initialize |
|
16 |
"Invoked at system start or when the class is dynamically loaded." |
|
17 |
||
18 |
"/ please change as required (and remove this comment) |
|
19 |
||
20 |
TypeNameMap := Dictionary withKeysAndValues: #( |
|
21 |
'git_checkout_opts' GitCheckoutOptions |
|
22 |
'git_otype' GitObjectType |
|
31 | 23 |
'git_strarray' GitStringArray |
30 | 24 |
'git_error_t' GitErrorKlass |
25 |
). |
|
26 |
||
31 | 27 |
"Modified: / 30-09-2012 / 19:52:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30 | 28 |
! ! |
29 |
||
22 | 30 |
!Libgit2Mapping methodsFor:'accessing'! |
31 |
||
32 |
smalltalkNameForEnumValue:cEnumFieldType |
|
33 |
|cairoName| |
|
34 |
||
35 |
cairoName := cEnumFieldType cName. |
|
36 |
(cairoName startsWith:'GIT_') ifTrue:[ |
|
37 |
cairoName := cairoName copyFrom:5 |
|
38 |
]. |
|
39 |
^ cairoName asSymbol |
|
40 |
||
41 |
" |
|
42 |
Cface::CairoMapping new |
|
43 |
smalltalkNameForEnumValue:(Cface::CEnumValueNode new cName:'CAIRO_FONT_TYPE_TOY') |
|
44 |
||
45 |
" |
|
46 |
||
47 |
"Created: / 04-07-2008 / 11:32:01 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
48 |
"Modified: / 04-09-2012 / 16:02:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
49 |
! |
|
50 |
||
51 |
smalltalkPackage |
|
52 |
||
53 |
^#'stx:libgit' |
|
54 |
||
55 |
"Created: / 03-07-2008 / 21:14:47 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
56 |
"Modified: / 04-09-2012 / 16:01:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
57 |
! ! |
|
58 |
||
24 | 59 |
!Libgit2Mapping methodsFor:'mapping - categories'! |
60 |
||
26 | 61 |
smalltalkCategoryForDerivedType:cType |
62 |
| className class | |
|
24 | 63 |
|
26 | 64 |
className := cType smalltalkName asSymbol. |
65 |
(className notNil and:[(class := Smalltalk at: className) notNil]) ifTrue:[ |
|
66 |
^class category |
|
67 |
]. |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
68 |
^'Git-Internal-Handles' |
24 | 69 |
|
70 |
"Created: / 05-09-2012 / 11:15:13 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
71 |
! |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
72 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
73 |
smalltalkCategoryForEnum: enum |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
74 |
^'Git-Internal-Constants' |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
75 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
76 |
"Created: / 17-09-2012 / 19:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
77 |
! |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
78 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
79 |
smalltalkCategoryForStruct:struct |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
80 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
81 |
^struct cByteSize == 0 ifTrue:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
82 |
'Git-Internal-Handles' |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
83 |
] ifFalse:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
84 |
'Git-Internal-Structures' |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
85 |
] |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
86 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
87 |
"Created: / 17-09-2012 / 19:43:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
24 | 88 |
! ! |
89 |
||
26 | 90 |
!Libgit2Mapping methodsFor:'mapping - class names'! |
91 |
||
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
92 |
smalltalkClassNameForEnum:cEnum |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
93 |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
94 |
| baseName | |
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
95 |
|
30 | 96 |
TypeNameMap at: cEnum cName ifPresent:[:nm|^nm]. |
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
97 |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
98 |
baseName := self smalltalkClassNameForDerivedType:cEnum. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
99 |
baseName last = $T ifTrue:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
100 |
baseName := baseName allButLast. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
101 |
]. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
102 |
(baseName endsWith: 'Type') ifFalse:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
103 |
baseName := baseName , 'Type'. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
104 |
]. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
105 |
^baseName |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
106 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
107 |
|
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
108 |
|
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
109 |
"Answers class which should contain function call" |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
110 |
|
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
111 |
"Created: / 10-09-2012 / 09:30:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
112 |
! |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
113 |
|
26 | 114 |
smalltalkClassNameForFunction:cFunction |
115 |
"Answers class which should contain function call" |
|
116 |
||
117 |
^#GitPrimitives |
|
118 |
||
119 |
"Created: / 07-09-2012 / 15:04:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
120 |
! |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
121 |
|
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
122 |
smalltalkClassNameForStruct:cStruct |
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
123 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
124 |
| baseName | |
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
125 |
|
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
126 |
"Make GitOid a pure byte array to reduce stress on GC" |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
127 |
cStruct cName = '_git_oid' ifTrue:[ |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
128 |
cStruct ffiPointerTypeSymbol:#charPointer. |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
129 |
]. |
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
130 |
|
30 | 131 |
TypeNameMap at: cStruct cName ifPresent:[:nm|^nm]. |
132 |
||
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
133 |
baseName := self smalltalkClassNameForDerivedType:cStruct. |
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
134 |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
135 |
^ cStruct cByteSize == 0 ifTrue:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
136 |
(baseName , 'Handle') asSymbol |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
137 |
] ifFalse:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
138 |
(baseName , 'Structure') asSymbol |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
139 |
] |
28
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
140 |
|
6a2e82ddbca1
- Updates to latest GCC XML that apparently reports structure sizes in bits instead of bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
27
diff
changeset
|
141 |
"Created: / 10-09-2012 / 10:31:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
26 | 142 |
! ! |
143 |
||
27 | 144 |
!Libgit2Mapping methodsFor:'mapping - selectors'! |
145 |
||
146 |
smalltalkSelectorForFunction:cFunction |
|
147 |
| selector | |
|
148 |
||
149 |
selector := String streamContents:[:s| |
|
150 |
s nextPutAll: '_'. |
|
151 |
s nextPutAll: cFunction cName. |
|
152 |
||
153 |
cFunction arguments size > 0 ifTrue: |
|
154 |
[s nextPut:$:]. |
|
155 |
cFunction arguments size > 1 ifTrue: |
|
156 |
[(cFunction arguments copyFrom:2) do: |
|
157 |
[:argument| |
|
158 |
s |
|
159 |
nextPutAll: ("self smalltalkize: "argument cName); |
|
160 |
nextPut:$:]]]. |
|
161 |
||
162 |
^selector asSymbol |
|
163 |
||
164 |
"Created: / 07-09-2012 / 23:14:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
165 |
! ! |
|
166 |
||
22 | 167 |
!Libgit2Mapping class methodsFor:'documentation'! |
168 |
||
169 |
version_SVN |
|
170 |
^ '$Id:: $' |
|
171 |
! ! |
|
30 | 172 |
|
43
9327987437ae
Added mappings for LLVM C and LLVM C Extensions
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
173 |
|
30 | 174 |
Libgit2Mapping initialize! |