Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1 | pmbaty | 1 | /* |
2 | * Portions of this file are copyright Rebirth contributors and licensed as |
||
3 | * described in COPYING.txt. |
||
4 | * Portions of this file are copyright Parallax Software and licensed |
||
5 | * according to the Parallax license below. |
||
6 | * See COPYING.txt for license details. |
||
7 | |||
8 | THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX |
||
9 | SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO |
||
10 | END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A |
||
11 | ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS |
||
12 | IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS |
||
13 | SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE |
||
14 | FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE |
||
15 | CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS |
||
16 | AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. |
||
17 | COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. |
||
18 | */ |
||
19 | |||
20 | /* |
||
21 | * |
||
22 | * . |
||
23 | * |
||
24 | */ |
||
25 | |||
26 | #include <stdlib.h> |
||
27 | #include "inferno.h" |
||
28 | #include "func.h" |
||
29 | #include "editor/kdefs.h" |
||
30 | #include "segment.h" |
||
31 | #include "editor/editor.h" |
||
32 | #include "dxxerror.h" |
||
33 | #include "slew.h" |
||
34 | #include "gamesave.h" |
||
35 | #include "editor/centers.h" |
||
36 | #include "editor/eobject.h" |
||
37 | #include "editor/medwall.h" |
||
38 | #include "editor/medmisc.h" |
||
39 | #include "editor/texpage.h" |
||
40 | #include "editor/ehostage.h" |
||
41 | #include "kfuncs.h" |
||
42 | #include "dsx-ns.h" |
||
43 | |||
44 | namespace dsx { |
||
45 | |||
46 | static int Test1() |
||
47 | { |
||
48 | init_replacements(); |
||
49 | |||
50 | return 0; |
||
51 | } |
||
52 | |||
53 | static int Test2() |
||
54 | { |
||
55 | do_replacements(); |
||
56 | |||
57 | return 0; |
||
58 | } |
||
59 | |||
60 | //extern fix fcd_test(void); |
||
61 | //extern void test_shortpos(void); |
||
62 | |||
63 | static int Test3() |
||
64 | { |
||
65 | Int3(); // Are you sure you want to do this? |
||
66 | // This will replace all textures in your replacement list |
||
67 | // in all mines. |
||
68 | // If you don't want to do this, set eip to the return statement |
||
69 | // and continue. |
||
70 | |||
71 | do_replacements_all(); |
||
72 | |||
73 | return 0; |
||
74 | } |
||
75 | |||
76 | const FUNCTION med_functions[] = { |
||
77 | |||
78 | // Test functions |
||
79 | { "med-test-1", 0, Test1 }, |
||
80 | { "med-test-2", 0, Test2 }, |
||
81 | { "med-test-3", 0, Test3 }, |
||
82 | |||
83 | // In khelp.c |
||
84 | { "med-help", 0, DoHelp }, |
||
85 | |||
86 | // In kcurve.c |
||
87 | { "med-curve-init", 0, InitCurve }, |
||
88 | { "med-curve-generate", 0, GenerateCurve }, |
||
89 | { "med-curve-decrease-r4", 0, DecreaseR4 }, |
||
90 | { "med-curve-increase-r4", 0, IncreaseR4 }, |
||
91 | { "med-curve-decrease-r1", 0, DecreaseR1 }, |
||
92 | { "med-curve-increase-r1", 0, IncreaseR1 }, |
||
93 | { "med-curve-delete", 0, DeleteCurve }, |
||
94 | { "med-curve-set", 0, SetCurve }, |
||
95 | |||
96 | // In kmine.c |
||
97 | { "med-mine-save", 0, SaveMine }, |
||
98 | //{ "med-mine-load", 0, LoadMine }, |
||
99 | { "med-mine-menu", 0, MineMenu }, |
||
100 | { "med-mine-create-new", 0, CreateNewMine }, |
||
101 | //{ "med-mine-load-old", 0, LoadOldMine }, |
||
102 | { "med-situation-save", 0, SaveSituation }, |
||
103 | { "med-situation-load", 0, LoadSituation }, |
||
104 | { "med-restore-game-state", 0, RestoreGameState }, |
||
105 | //{ "load-mine-only", 0, LoadMineOnly }, |
||
106 | |||
107 | // In kgame.c |
||
108 | { "med-game-save", 0, SaveGameData }, |
||
109 | { "med-game-load", 0, LoadGameData }, |
||
110 | |||
111 | // In kview.c |
||
112 | { "med-view-zoom-out", 0, ZoomOut }, |
||
113 | { "med-view-zoom-in", 0, ZoomIn }, |
||
114 | { "med-view-move-away", 0, MoveAway }, |
||
115 | { "med-view-move-closer", 0, MoveCloser }, |
||
116 | { "med-view-toggle-chase", 0, ToggleChaseMode }, |
||
117 | |||
118 | // In kbuild.c |
||
119 | { "med-build-bridge", 0, CreateBridge }, |
||
120 | { "med-build-joint", 0, FormJoint }, |
||
121 | { "med-build-adj-joint", 0, CreateAdjacentJoint }, |
||
122 | { "med-build-sloppy-adj-joint", 0, CreateSloppyAdjacentJoint }, |
||
123 | { "med-build-sloppy-adj-joint-group", 0, CreateSloppyAdjacentJointsGroup }, |
||
124 | { "med-build-adj-joints-segment", 0, CreateAdjacentJointsSegment }, |
||
125 | { "med-build-adj-joints-all", 0, CreateAdjacentJointsAll }, |
||
126 | |||
127 | // In segment.c |
||
128 | { "med-segment-bottom", 0, ToggleBottom }, //make_curside_bottom_side }, |
||
129 | { "med-segment-show-bottom", 0, ToggleBottom }, |
||
130 | |||
131 | // In ksegmove.c |
||
132 | { "med-segmove-decrease-heading", 0, DecreaseHeading }, |
||
133 | { "med-segmove-increase-heading", 0, IncreaseHeading }, |
||
134 | { "med-segmove-decrease-pitch", 0, DecreasePitch }, |
||
135 | { "med-segmove-increase-pitch", 0, IncreasePitch }, |
||
136 | { "med-segmove-decrease-bank", 0, DecreaseBank }, |
||
137 | { "med-segmove-increase-bank", 0, IncreaseBank }, |
||
138 | |||
139 | // In ksegsel.c |
||
140 | { "med-segsel-next-segment", 0, SelectCurrentSegForward }, |
||
141 | { "med-segsel-prev-segment", 0, SelectCurrentSegBackward }, |
||
142 | { "med-segsel-next-side", 0, SelectNextSide }, |
||
143 | { "med-segsel-prev-side", 0, SelectPrevSide }, |
||
144 | { "med-segsel-set-marked", 0, CopySegToMarked }, |
||
145 | { "med-segsel-bottom", 0, SelectBottom }, |
||
146 | { "med-segsel-front", 0, SelectFront }, |
||
147 | { "med-segsel-top", 0, SelectTop }, |
||
148 | { "med-segsel-back", 0, SelectBack }, |
||
149 | { "med-segsel-left", 0, SelectLeft }, |
||
150 | { "med-segsel-right", 0, SelectRight }, |
||
151 | |||
152 | // In ksegsize.c |
||
153 | { "med-segsize-increase-length", 0, IncreaseSegLength }, |
||
154 | { "med-segsize-decrease-length", 0, DecreaseSegLength }, |
||
155 | { "med-segsize-decrease-width", 0, DecreaseSegWidth }, |
||
156 | { "med-segsize-increase-width", 0, IncreaseSegWidth }, |
||
157 | { "med-segsize-increase-height", 0, IncreaseSegHeight }, |
||
158 | { "med-segsize-decrease-height", 0, DecreaseSegHeight }, |
||
159 | |||
160 | { "med-segsize-increase-length-big", 0, IncreaseSegLengthBig }, |
||
161 | { "med-segsize-decrease-length-big", 0, DecreaseSegLengthBig }, |
||
162 | { "med-segsize-decrease-width-big", 0, DecreaseSegWidthBig }, |
||
163 | { "med-segsize-increase-width-big", 0, IncreaseSegWidthBig }, |
||
164 | { "med-segsize-increase-height-big", 0, IncreaseSegHeightBig }, |
||
165 | { "med-segsize-decrease-height-big", 0, DecreaseSegHeightBig }, |
||
166 | { "med-segsize-toggle-mode", 0, ToggleSegSizeMode }, |
||
167 | { "med-segsize-perturb-curside", 0, PerturbCurside }, |
||
168 | { "med-segsize-perturb-curside-big", 0, PerturbCursideBig }, |
||
169 | { "med-segsize-increase-length-default", 0, IncreaseSegLengthDefault }, |
||
170 | { "med-segsize-decrease-length-default", 0, DecreaseSegLengthDefault }, |
||
171 | { "med-segsize-increase-width-default", 0, IncreaseSegWidthDefault }, |
||
172 | { "med-segsize-decrease-width-default", 0, DecreaseSegWidthDefault }, |
||
173 | { "med-segsize-increase-height-default", 0, IncreaseSegHeightDefault }, |
||
174 | { "med-segsize-decrease-height-default", 0, DecreaseSegHeightDefault }, |
||
175 | |||
176 | // In ktmap.c |
||
177 | { "med-tmap-assign", 0, AssignTexture }, |
||
178 | { "med-tmap-assign2", 0, AssignTexture2 }, |
||
179 | { "med-tmap-clear2", 0, ClearTexture2 }, |
||
180 | { "med-tmap-propogate", 0, PropagateTextures }, |
||
181 | { "med-tmap-propogate-move", 0, PropagateTexturesMove }, |
||
182 | { "med-tmap-propogate-move-uvs", 0, PropagateTexturesMoveUVs }, |
||
183 | { "med-tmap-propogate-move-uvs", 0, PropagateTexturesMoveUVs }, |
||
184 | { "med-tmap-propogate-uvs", 0, PropagateTexturesUVs }, |
||
185 | { "med-tmap-propogate-selected", 0, PropagateTexturesSelected }, |
||
186 | |||
187 | // In wall.c |
||
188 | { "med-wall-add-blastable", 0, wall_add_blastable }, |
||
189 | { "med-wall-add-door", 0, wall_add_door }, |
||
190 | { "med-wall-add-closed", 0, wall_add_closed_wall }, |
||
191 | { "med-wall-add-external", 0, wall_add_external_wall }, |
||
192 | { "med-wall-add-illusion", 0, wall_add_illusion }, |
||
193 | { "med-wall-restore-all", 0, wall_restore_all }, |
||
194 | { "med-wall-remove", 0, wall_remove }, |
||
195 | { "do-wall-dialog", 0, do_wall_dialog }, |
||
196 | { "med-link-doors", 0, wall_link_doors }, |
||
197 | { "med-unlink-door", 0, wall_unlink_door }, |
||
198 | { "check-walls", 0, check_walls }, |
||
199 | { "delete-all-walls", 0, delete_all_walls }, |
||
200 | |||
201 | // In centers.c |
||
202 | { "do-centers-dialog", 0, do_centers_dialog }, |
||
203 | |||
204 | // In switch.c |
||
205 | //{ "med-trigger-add-damage", 0, trigger_add_damage }, |
||
206 | //{ "med-trigger-add-exit", 0, trigger_add_exit }, |
||
207 | //{ "med-trigger-control", 0, trigger_control }, |
||
208 | //{ "med-trigger-remove", 0, trigger_remove }, |
||
209 | //{ "med-bind-wall-to-control", 0, bind_wall_to_control_trigger }, |
||
210 | { "do-trigger-dialog", 0, do_trigger_dialog }, |
||
211 | |||
212 | //--//// In macro.c |
||
213 | //--//{ "med-macro-menu", 0, MacroMenu }, |
||
214 | //--//{ "med-macro-play-fast", 0, MacroPlayFast }, |
||
215 | //--//{ "med-macro-play-normal", 0, MacroPlayNormal }, |
||
216 | //--//{ "med-macro-record-all", 0, MacroRecordAll }, |
||
217 | //--//{ "med-macro-record-keys", 0, MacroRecordKeys }, |
||
218 | //--//{ "med-macro-save", 0, MacroSave }, |
||
219 | //--//{ "med-macro-load", 0, MacroLoad }, |
||
220 | |||
221 | // In editor.c |
||
222 | { "med-update", 0, medlisp_update_screen }, |
||
223 | { "med-segment-add", 0, AttachSegment }, |
||
224 | { "med-segment-delete", 0, medlisp_delete_segment }, |
||
225 | { "med-segment-scale", 3, medlisp_scale_segment }, |
||
226 | { "med-segment-rotate", 3, medlisp_rotate_segment }, |
||
227 | { "med-editor-exit", 0, ExitEditor }, |
||
228 | { "med-segment-exchange", 0, ExchangeMarkandCurseg }, |
||
229 | { "med-segment-mark", 0, CopySegToMarked }, |
||
230 | { "med-about", 0, ShowAbout }, |
||
231 | |||
232 | // In group.c |
||
233 | { "med-group-load", 0, LoadGroup }, |
||
234 | { "med-group-save", 0, SaveGroup }, |
||
235 | { "med-move-group", 0, MoveGroup }, |
||
236 | { "med-copy-group", 0, CopyGroup }, |
||
237 | { "med-rotate-group", 0, RotateGroup }, |
||
238 | { "med-segment-add-new", 0, AttachSegmentNew }, |
||
239 | { "med-mark-groupseg", 0, MarkGroupSegment }, |
||
240 | { "med-next-group", 0, NextGroup }, |
||
241 | { "med-prev-group", 0, PrevGroup }, |
||
242 | { "med-delete-group", 0, DeleteGroup }, |
||
243 | { "med-create-group", 0, CreateGroup }, |
||
244 | { "med-ungroup-segment", 0, UngroupSegment }, |
||
245 | { "med-group-segment", 0, GroupSegment }, |
||
246 | { "med-degroup-group", 0, Degroup }, |
||
247 | { "med-subtract-from-group", 0, SubtractFromGroup }, |
||
248 | |||
249 | // In autosave.c |
||
250 | { "med-autosave-undo", 0, UndoCommand }, |
||
251 | { "med-autosave-toggle", 0, ToggleAutosave }, |
||
252 | |||
253 | // In texture.c |
||
254 | { "med-tass-flip-x", 0, TexFlipX }, |
||
255 | { "med-tass-flip-y", 0, TexFlipY }, |
||
256 | { "med-tass-slide-up", 0, TexSlideUp }, |
||
257 | { "med-tass-slide-left", 0, TexSlideLeft }, |
||
258 | { "med-tass-set-default", 0, TexSetDefault }, |
||
259 | { "med-tass-slide-right", 0, TexSlideRight }, |
||
260 | { "med-tass-rotate-left", 0, TexRotateLeft }, |
||
261 | { "med-tass-slide-down", 0, TexSlideDown }, |
||
262 | { "med-tass-stretch-down", 0, TexStretchDown }, |
||
263 | { "med-tass-stretch-up", 0, TexStretchUp }, |
||
264 | { "med-tass-rotate-right", 0, TexRotateRight }, |
||
265 | { "med-tass-select-active-edge", 0, TexSelectActiveEdge }, |
||
266 | { "med-tass-rotate-90-degrees", 0, TexRotate90Degrees }, |
||
267 | { "med-tass-increase-tiling", 0, TexIncreaseTiling }, |
||
268 | { "med-tass-decrease-tiling", 0, TexDecreaseTiling }, |
||
269 | { "med-tass-slide-up-big", 0, TexSlideUpBig }, |
||
270 | { "med-tass-slide-left-big", 0, TexSlideLeftBig }, |
||
271 | { "med-tass-slide-right-big", 0, TexSlideRightBig }, |
||
272 | { "med-tass-rotate-left-big", 0, TexRotateLeftBig }, |
||
273 | { "med-tass-slide-down-big", 0, TexSlideDownBig }, |
||
274 | { "med-tass-rotate-right-big", 0, TexRotateRightBig }, |
||
275 | |||
276 | // In eobject.c |
||
277 | { "med-obj-set-player", 0, SetPlayerPosition }, |
||
278 | { "med-obj-place-object", 0, ObjectPlaceObject }, |
||
279 | { "med-obj-place-object-tmap", 0, ObjectPlaceObjectTmap }, |
||
280 | { "med-obj-move-nearer", 0, ObjectMoveNearer }, |
||
281 | { "med-obj-move-further", 0, ObjectMoveFurther }, |
||
282 | { "med-obj-delete-object", 0, ObjectDelete }, |
||
283 | { "med-obj-move-forward", 0, ObjectMoveForward }, |
||
284 | { "med-obj-move-left", 0, ObjectMoveLeft }, |
||
285 | { "med-obj-set-default", 0, ObjectSetDefault }, |
||
286 | { "med-obj-move-right", 0, ObjectMoveRight }, |
||
287 | { "med-obj-move-back", 0, ObjectMoveBack }, |
||
288 | { "med-obj-move-down", 0, ObjectMoveDown }, |
||
289 | { "med-obj-move-up", 0, ObjectMoveUp }, |
||
290 | { "med-obj-select-next-in-segment", 0, ObjectSelectNextinSegment }, |
||
291 | { "med-obj-decrease-bank", 0, ObjectDecreaseBank }, |
||
292 | { "med-obj-increase-bank", 0, ObjectIncreaseBank }, |
||
293 | { "med-obj-decrease-pitch", 0, ObjectDecreasePitch }, |
||
294 | { "med-obj-increase-pitch", 0, ObjectIncreasePitch }, |
||
295 | { "med-obj-decrease-heading", 0, ObjectDecreaseHeading }, |
||
296 | { "med-obj-increase-heading", 0, ObjectIncreaseHeading }, |
||
297 | { "med-obj-decrease-bank-big", 0, ObjectDecreaseBankBig }, |
||
298 | { "med-obj-increase-bank-big", 0, ObjectIncreaseBankBig }, |
||
299 | { "med-obj-decrease-pitch-big", 0, ObjectDecreasePitchBig }, |
||
300 | { "med-obj-increase-pitch-big", 0, ObjectIncreasePitchBig }, |
||
301 | { "med-obj-decrease-heading-big", 0, ObjectDecreaseHeadingBig }, |
||
302 | { "med-obj-increase-heading-big", 0, ObjectIncreaseHeadingBig }, |
||
303 | { "med-obj-reset", 0, ObjectResetObject }, |
||
304 | { "med-obj-flip", 0, ObjectFlipObject }, |
||
305 | { "med-obj-make-coop", 0, ObjectMakeCoop }, |
||
306 | //{ "med-obj-place-hostage", 0, ObjectPlaceHostage }, |
||
307 | |||
308 | // In objpage.c |
||
309 | { "med-obj-select-next-type", 0, objpage_goto_next_object }, |
||
310 | |||
311 | |||
312 | // In elight.c |
||
313 | { "med-light-select-next-vertex", 0, LightSelectNextVertex }, |
||
314 | { "med-light-select-next-edge", 0, LightSelectNextEdge }, |
||
315 | { "med-light-copy-intensity-side", 0, LightCopyIntensity }, |
||
316 | { "med-light-copy-intensity-segment", 0, LightCopyIntensitySegment }, |
||
317 | { "med-light-decrease-light-vertex", 0, LightDecreaseLightVertex }, |
||
318 | { "med-light-increase-light-vertex", 0, LightIncreaseLightVertex }, |
||
319 | { "med-light-decrease-light-side", 0, LightDecreaseLightSide }, |
||
320 | { "med-light-increase-light-side", 0, LightIncreaseLightSide }, |
||
321 | { "med-light-decrease-light-segment", 0, LightDecreaseLightSegment }, |
||
322 | { "med-light-increase-light-segment", 0, LightIncreaseLightSegment }, |
||
323 | { "med-light-set-maximum", 0, LightSetMaximum }, |
||
324 | { "med-light-set-default", 0, LightSetDefault }, |
||
325 | { "med-light-assign-default-all", 0, LightSetDefaultAll }, |
||
326 | { "med-light-ambient-lighting", 0, LightAmbientLighting }, |
||
327 | |||
328 | // In seguvs.c |
||
329 | { "med-seguvs-fix-bogus-uvs-on-side", 0, fix_bogus_uvs_on_side}, |
||
330 | { "med-seguvs-fix-bogus-uvs-all", 0, fix_bogus_uvs_all}, |
||
331 | { "med-seguvs-smooth-lighting-all", 0, set_average_light_on_all}, |
||
332 | { "med-seguvs-smooth-lighting-all-quick", 0, set_average_light_on_all_quick}, |
||
333 | { "med-seguvs-smooth-lighting", 0, set_average_light_on_curside}, |
||
334 | |||
335 | // Miscellaneous, please neaten and catagorize me! |
||
336 | |||
337 | { "med-increase-draw-depth", 0, IncreaseDrawDepth }, |
||
338 | { "med-decrease-draw-depth", 0, DecreaseDrawDepth }, |
||
339 | { "med-goto-main-menu", 0, GotoMainMenu }, |
||
340 | { "med-goto-game-screen", 0, GotoGameScreen }, |
||
341 | { "med-drop-into-debugger", 0, DropIntoDebugger }, |
||
342 | // { "med-sync-large-view", 0, SyncLargeView }, |
||
343 | { "med-create-default-new-segment", 0, CreateDefaultNewSegment }, |
||
344 | { "med-create-default-new-segment-and-attach", 0, CreateDefaultNewSegmentandAttach }, |
||
345 | { "med-clear-selected-list", 0, ClearSelectedList }, |
||
346 | { "med-clear-found-list", 0, ClearFoundList }, |
||
347 | { "med-sort-selected-list", 0, SortSelectedList }, |
||
348 | { "med-set-player-from-curseg", 0, SetPlayerFromCursegAndRotate }, |
||
349 | { "med-set-player-from-curseg-minus-one", 0, SetPlayerFromCursegMinusOne }, |
||
350 | { "med-find-concave-segs", 0, FindConcaveSegs }, |
||
351 | { "med-select-next-found-seg", 0, SelectNextFoundSeg }, |
||
352 | { "med-select-prev-found-seg", 0, SelectPreviousFoundSeg }, |
||
353 | { "med-stop-slew", 0, slew_stop }, |
||
354 | //{ "med-reset-orientation", 0, do_reset_orient }, |
||
355 | { "med-game-zoom-out", 0, GameZoomOut }, |
||
356 | { "med-game-zoom-in", 0, GameZoomIn }, |
||
357 | { "med-keypad-goto-prev", 0, med_keypad_goto_prev }, |
||
358 | { "med-keypad-goto-next", 0, med_keypad_goto_next }, |
||
359 | { "med-keypad-goto", 1, med_keypad_goto }, |
||
360 | |||
361 | // John's temporary function page stuff |
||
362 | // { "med-set-function-page", 1, medtmp_set_page }, |
||
363 | |||
364 | // In fuelcen.c |
||
365 | { "med-fuelcen-create", 0, fuelcen_create_from_curseg }, |
||
366 | { "med-repaircen-create", 0, repaircen_create_from_curseg }, |
||
367 | { "med-controlcen-create", 0, controlcen_create_from_curseg }, |
||
368 | { "med-robotmaker-create", 0, robotmaker_create_from_curseg }, |
||
369 | { "med-fuelcen-reset-all", 0, fuelcen_reset_all }, |
||
370 | { "med-fuelcen-delete", 0, fuelcen_delete_from_curseg }, |
||
371 | |||
372 | // In robot.c |
||
373 | { "do-robot-dialog", 0, do_robot_dialog }, |
||
374 | { "do-object-dialog", 0, do_object_dialog }, |
||
375 | #if defined(DXX_BUILD_DESCENT_I) |
||
376 | { "do-hostage-dialog", 0, do_hostage_dialog }, |
||
377 | #endif |
||
378 | |||
379 | // In gamesavec |
||
380 | { "rename-level", 0, get_level_name }, |
||
381 | |||
382 | // The terminating marker |
||
383 | { NULL, 0, NULL } }; |
||
384 | |||
385 | void init_med_functions() |
||
386 | { |
||
387 | func_init(med_functions, (sizeof(med_functions)/sizeof(FUNCTION))-1 ); |
||
388 | } |
||
389 | |||
390 | } |