summaryrefslogtreecommitdiff
path: root/Build/source/utils/xindy/rte/ordrules/ordrulei.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/xindy/rte/ordrules/ordrulei.lsp')
-rw-r--r--Build/source/utils/xindy/rte/ordrules/ordrulei.lsp111
1 files changed, 111 insertions, 0 deletions
diff --git a/Build/source/utils/xindy/rte/ordrules/ordrulei.lsp b/Build/source/utils/xindy/rte/ordrules/ordrulei.lsp
new file mode 100644
index 00000000000..c18294c2670
--- /dev/null
+++ b/Build/source/utils/xindy/rte/ordrules/ordrulei.lsp
@@ -0,0 +1,111 @@
+;; $Id: ordrulei.lsp,v 1.5 2005/05/02 21:39:53 jschrod Exp $
+;; ------------------------------------------------------------
+
+;;;
+;;; Interface definition of the ordrules module
+;;;
+
+(defpackage :ordrules
+ (:use :cl :ffi)
+ (:export :initialize
+ :add-keyword-sort-rule :add-keyword-merge-rule
+ :gen-keyword-sortkey :gen-keyword-mergekey))
+
+(in-package :ordrules)
+
+(c-lines "#include \"ordrules.h\"~%")
+
+; Common OS definitions:
+(def-c-type size_t uint)
+
+(def-c-var *string-buffer*
+ (:name "ordrules_string_buffer")
+ (:type (c-array char 1024))
+ (:alloc :NONE))
+
+(def-c-var *string-buffer-used-bytes*
+ (:name "ordrules_string_buffer_used_bytes")
+ (:type int)
+ (:alloc :NONE))
+
+(def-c-var *string-buffer-used-bytes*
+ (:name "ordrules_string_buffer_used_bytes")
+ (:type int)
+ (:alloc :NONE))
+
+(def-c-var *message-logging*
+ (:name "ordrules_msg_logging")
+ (:type int)
+ (:alloc :NONE))
+
+(def-c-var *message-buffer*
+ (:name "ordrules_msg_buffer")
+ (:type c-string)
+ (:alloc :NONE))
+
+(def-c-var *message-buffer-ptr*
+ (:name "ordrules_msg_buffer_ptr")
+ (:type int)
+ (:alloc :NONE))
+
+(def-call-out initialize
+ (:language :stdc)
+ (:name "initialize")
+ (:arguments (num-sort-tables int))
+ (:return-type int))
+
+(def-call-out add-keyword-sort-rule
+ (:language :stdc)
+ (:name "add_sort_rule")
+ (:arguments (run int)
+ (left c-string)
+ (right c-string)
+ (isreject int)
+ (ruletype int))
+ (:return-type int))
+
+(def-call-out add-keyword-merge-rule
+ (:language :stdc)
+ (:name "add_merge_rule")
+ (:arguments (left c-string)
+ (right c-string)
+ (isreject int)
+ (ruletype int))
+ (:return-type int))
+
+(def-call-out gen-keyword-sortkey
+ (:language :stdc)
+ (:name "gen_sortkey")
+ (:arguments (key c-string)
+ (run int))
+ (:return-type c-string :malloc-free))
+
+(def-call-out gen-keyword-mergekey
+ (:language :stdc)
+ (:name "gen_mergekey")
+ (:arguments (key c-string))
+ (:return-type c-string :malloc-free))
+
+#|
+
+ $Log: ordrulei.lsp,v $
+ Revision 1.5 2005/05/02 21:39:53 jschrod
+ xindy run time engine 3.0; as used for CLISP 2.33.2.
+
+ Revision 1.4 1997/10/20 11:23:12 kehr
+ New version of sorting rules. Sorting of more complex indexes (i.e.
+ French) is now possible.
+
+ Revision 1.3 1997/01/17 16:43:38 kehr
+ Several changes for new version 1.1.
+
+ Revision 1.2 1996/04/30 15:56:38 kehr
+ Renamed some of the functions to avoid conflicts with other functions
+ in other packages (only for the sake of convenience).
+
+ Revision 1.1 1996/03/27 20:29:07 kehr
+ It works. Today I had my first success in getting the FFI running with
+ the ordrules-library. The interface is defined in `ordrulei.lsp' and
+ allows direct access to the functions in `ordrules.c'.
+
+|#