blob: 239f9325e6571cbfd67499e409098374a16a6b60 (
plain) (
blame)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
unit Sword;
interface
function SWMgr_getPrefixPath(h: integer): PChar; cdecl; external 'libsword.so';
function SWMgr_new: integer; cdecl; external 'libsword.so';
procedure SWMgr_delete(h: integer); cdecl; external 'libsword.so';
function SWMgr_getModulesIterator(h: integer) : integer; cdecl; external 'libsword.so';
function SWMgr_getModuleByName(h: integer; name: PChar) : integer; cdecl; external 'libsword.so';
procedure ModList_iterator_next(h: integer); cdecl; external 'libsword.so';
function ModList_iterator_val(h: integer) : integer; cdecl; external 'libsword.so';
function SWModule_getType(h: integer) : PChar; cdecl; external 'libsword.so';
function SWModule_getName(h: integer) : PChar; cdecl; external 'libsword.so';
function SWModule_getDescription(h: integer) : PChar; cdecl; external 'libsword.so';
function SWModule_getStripText(h: integer) : PChar; cdecl; external 'libsword.so';
function SWModule_getRenderText(h: integer) : PChar; cdecl; external 'libsword.so';
function SWModule_getKeyText(h: integer) : PChar; cdecl; external 'libsword.so';
procedure SWModule_setKeyText(h: integer; key: PChar); cdecl; external 'libsword.so';
procedure SWModule_begin(h: integer); cdecl; external 'libsword.so';
procedure SWModule_next(h: integer); cdecl; external 'libsword.so';
procedure SWModule_previous(h: integer); cdecl; external 'libsword.so';
type
SWModule = class(TObject)
private
handle : integer;
public
constructor Create(handle : integer);
function getType : String;
function getName : String;
function getDescription : String;
function getStripText : String;
function getRenderText : WideString;
function getKeyText : String;
procedure setKeyText(keyText : String);
procedure modBegin;
procedure modNext;
procedure modPrevious;
end;
ModIterator = class(TObject)
private
handle : integer;
public
constructor Create(handle : integer);
procedure next;
function getValue : SWModule;
end;
SWMgr = class(TObject)
private
handle : integer;
public
constructor Create;
destructor Destroy; override;
function getPrefixPath : String;
function getModulesIterator : ModIterator;
function getModuleByName(name: String) : SWModule;
end;
implementation
constructor SWMgr.Create;
var
yohan : integer;
begin
yohan := SWMgr_new;
handle := yohan;
end;
destructor SWMgr.Destroy;
begin
SWMgr_delete(handle);
end;
function SWMgr.getPrefixPath() : String;
var
stuff : String;
pstuff : PChar;
begin
pstuff := SWMgr_getPrefixPath(handle);
stuff := String(pstuff);
Result := stuff;
end;
function SWMgr.getModulesIterator : ModIterator;
begin
Result := ModIterator.Create(SWMgr_getModulesIterator(handle));
end;
function SWMgr.getModuleByName(name: String) : SWModule;
var
modHandle : Integer;
begin
modHandle := SWMgr_getModuleByName(handle, PChar(name));
if (modHandle <> 0) then
Result := SWModule.Create(modHandle)
else Result := nil;
end;
{ ModIterator methods --------------------------------------------- }
constructor ModIterator.Create(handle : integer);
begin
Self.handle := handle;
end;
procedure ModIterator.next;
begin
ModList_iterator_next(handle);
end;
function ModIterator.getValue : SWModule;
var
modHandle : Integer;
begin
modHandle := ModList_iterator_val(handle);
if (modHandle <> 0) then
Result := SWModule.Create(modHandle)
else Result := nil;
end;
{ SWModule methods --------------------------------------------- }
constructor SWModule.Create(handle : integer);
begin
Self.handle := handle;
end;
function SWModule.getType : String;
begin
Result := String(SWModule_getType(handle));
end;
function SWModule.getName : String;
begin
Result := String(SWModule_getName(handle));
end;
function SWModule.getDescription : String;
begin
Result := String(SWModule_getDescription(handle));
end;
function SWModule.getStripText : String;
begin
Result := String(SWModule_getStripText(handle));
end;
function SWModule.getRenderText : WideString;
begin
Result := WideString(SWModule_getRenderText(handle));
end;
function SWModule.getKeyText : String;
begin
Result := String(SWModule_getKeyText(handle));
end;
procedure SWModule.setKeyText(keyText: String);
begin
SWModule_setKeyText(handle, PChar(keyText));
end;
procedure SWModule.modBegin;
begin
SWModule_begin(handle);
end;
procedure SWModule.modNext;
begin
SWModule_next(handle);
end;
procedure SWModule.modPrevious;
begin
SWModule_previous(handle);
end;
end.
|