author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 19 Sep 2012 18:08:33 +0000 | |
changeset 30 | 00a634ebfc34 |
parent 29 | 91d5e0a30fa4 |
child 31 | e79ba7cdb57c |
permissions | -rw-r--r-- |
22 | 1 |
"{ Package: 'cvut:fel/cface' }" |
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 |
|
23 |
'git_error_t' GitErrorKlass |
|
24 |
). |
|
25 |
||
26 |
"Modified: / 19-09-2012 / 18:32:00 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
27 |
! ! |
|
28 |
||
22 | 29 |
!Libgit2Mapping methodsFor:'accessing'! |
30 |
||
31 |
smalltalkNameForEnumValue:cEnumFieldType |
|
32 |
|cairoName| |
|
33 |
||
34 |
cairoName := cEnumFieldType cName. |
|
35 |
(cairoName startsWith:'GIT_') ifTrue:[ |
|
36 |
cairoName := cairoName copyFrom:5 |
|
37 |
]. |
|
38 |
^ cairoName asSymbol |
|
39 |
||
40 |
" |
|
41 |
Cface::CairoMapping new |
|
42 |
smalltalkNameForEnumValue:(Cface::CEnumValueNode new cName:'CAIRO_FONT_TYPE_TOY') |
|
43 |
||
44 |
" |
|
45 |
||
46 |
"Created: / 04-07-2008 / 11:32:01 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
47 |
"Modified: / 04-09-2012 / 16:02:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
48 |
! |
|
49 |
||
50 |
smalltalkPackage |
|
51 |
||
52 |
^#'stx:libgit' |
|
53 |
||
54 |
"Created: / 03-07-2008 / 21:14:47 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
55 |
"Modified: / 04-09-2012 / 16:01:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
56 |
! ! |
|
57 |
||
24 | 58 |
!Libgit2Mapping methodsFor:'mapping - categories'! |
59 |
||
26 | 60 |
smalltalkCategoryForDerivedType:cType |
61 |
| className class | |
|
24 | 62 |
|
26 | 63 |
className := cType smalltalkName asSymbol. |
64 |
(className notNil and:[(class := Smalltalk at: className) notNil]) ifTrue:[ |
|
65 |
^class category |
|
66 |
]. |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
67 |
^'Git-Internal-Handles' |
24 | 68 |
|
69 |
"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
|
70 |
! |
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 |
smalltalkCategoryForEnum: enum |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
73 |
^'Git-Internal-Constants' |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
74 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
75 |
"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
|
76 |
! |
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 |
smalltalkCategoryForStruct:struct |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
79 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
80 |
^struct cByteSize == 0 ifTrue:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
81 |
'Git-Internal-Handles' |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
82 |
] ifFalse:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
83 |
'Git-Internal-Structures' |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
84 |
] |
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 |
"Created: / 17-09-2012 / 19:43:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
24 | 87 |
! ! |
88 |
||
26 | 89 |
!Libgit2Mapping methodsFor:'mapping - class names'! |
90 |
||
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
|
91 |
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
|
92 |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
93 |
| 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
|
94 |
|
30 | 95 |
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
|
96 |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
97 |
baseName := self smalltalkClassNameForDerivedType:cEnum. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
98 |
baseName last = $T ifTrue:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
99 |
baseName := baseName allButLast. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
100 |
]. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
101 |
(baseName endsWith: 'Type') ifFalse:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
102 |
baseName := baseName , 'Type'. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
103 |
]. |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
104 |
^baseName |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
105 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
106 |
|
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
|
107 |
|
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 |
"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
|
109 |
|
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 |
"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
|
111 |
! |
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 |
|
26 | 113 |
smalltalkClassNameForFunction:cFunction |
114 |
"Answers class which should contain function call" |
|
115 |
||
116 |
^#GitPrimitives |
|
117 |
||
118 |
"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
|
119 |
! |
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 |
smalltalkClassNameForStruct:cStruct |
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
122 |
|
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
123 |
| 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
|
124 |
|
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 |
"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
|
126 |
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
|
127 |
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
|
128 |
]. |
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 |
|
30 | 130 |
TypeNameMap at: cStruct cName ifPresent:[:nm|^nm]. |
131 |
||
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
132 |
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
|
133 |
|
29
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
134 |
^ cStruct cByteSize == 0 ifTrue:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
135 |
(baseName , 'Handle') asSymbol |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
136 |
] ifFalse:[ |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
137 |
(baseName , 'Structure') asSymbol |
91d5e0a30fa4
- Cface::SmalltalkXGenerator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
138 |
] |
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
|
139 |
|
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 |
"Created: / 10-09-2012 / 10:31:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
26 | 141 |
! ! |
142 |
||
27 | 143 |
!Libgit2Mapping methodsFor:'mapping - selectors'! |
144 |
||
145 |
smalltalkSelectorForFunction:cFunction |
|
146 |
| selector | |
|
147 |
||
148 |
selector := String streamContents:[:s| |
|
149 |
s nextPutAll: '_'. |
|
150 |
s nextPutAll: cFunction cName. |
|
151 |
||
152 |
cFunction arguments size > 0 ifTrue: |
|
153 |
[s nextPut:$:]. |
|
154 |
cFunction arguments size > 1 ifTrue: |
|
155 |
[(cFunction arguments copyFrom:2) do: |
|
156 |
[:argument| |
|
157 |
s |
|
158 |
nextPutAll: ("self smalltalkize: "argument cName); |
|
159 |
nextPut:$:]]]. |
|
160 |
||
161 |
^selector asSymbol |
|
162 |
||
163 |
"Created: / 07-09-2012 / 23:14:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
164 |
! ! |
|
165 |
||
22 | 166 |
!Libgit2Mapping class methodsFor:'documentation'! |
167 |
||
168 |
version_SVN |
|
169 |
^ '$Id:: $' |
|
170 |
! ! |
|
30 | 171 |
|
172 |
Libgit2Mapping initialize! |