;;; -*- Mode: LISP; Syntax: Common-lisp; Package: ALEMBIC ; Base: 10 -*-

(in-package "ALEMBIC")

(notice "Copyright the MITRE Corporation 1997-1998.  All rights reserved.")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;                                                                  ;;;
;;;   Chinese suffix, prefix and affix predicates.		     ;;;
;;;                                                                  ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defvar *zh-name-final-chars*
    '(;; common Japanese Persname ending
      "̫"
      ;; Meyer?
      ;; ÷
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "¡" "¬" "³"
      "" "" "" "" "" ""
      "" "" "â" "÷" "" ""
      "" "" "" "Ħ" "Ī" "Ĭ"
      "ķ" "ĸ" "" "" "" ""
      "" "" "" "" "" ""
      "" "Ŧ" "ũ" "Ŭ" "ŵ" "ŷ"
      "" "" "" "" "" ""
      "Ƥ" "ƽ" "" "" "" ""
      "ǡ" "" "" "" "" ""
      "" "" "" "Ȫ" "" ""
      "" "" "" "" "" "ɣ"
      "ɪ" "ɭ" "ɯ" "ɳ" "ɺ"
      ;; ""
      "" "" "" "" "" "ʩ"
      "ʫ" "ʯ" "ʲ" "ʿ" "" "˹"
      "˼" "˿" "" "" "" ""
      "" "" "̩" "̫" "̹" ""
      "" "" "" "" "͡" "͢"
      "ͨ" "͸" "ͼ" "" "" ""
      "" "" "" "" "΢" "Τ"
      "ά" "" "" "" "" ""
      "" "" "" "ϣ" "ϼ" ""
      ""
      ;; preposition
      ;; ""
      "Ф" "Ъ" "л"
      "" "" "" "" "" ""
      "" "ѷ" "" "" "" ""
      "Ү" "Ҷ" "" "" "Ӣ" ""
      "Լ" "" "" "" "" ""
      "" "ղ" "" "֥" "ֺ" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" ""
      ))

(defvar *zh-name-initial-chars*
    '("" "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "¡" "¬" "³"
      "¶" "·" "" "" "" ""
      "" "" "" "" "" "â"
      "ë" "÷" "" "" "" ""
      "" "Ħ" "Ī" "ī" "Ĭ" "ķ"
      "" "" "" "" "" ""
      "" "" "ţ" "Ŧ" "ũ" "Ŭ"
      "ŵ" "ŷ" "" "" "" ""
      "" "" "" "Ƥ" "ƽ" ""
      "" "" "" "" "ǡ" "Ǯ"
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "ɣ" "ɪ" "ɭ"
      "ɯ" "ɳ" "" "" "" "ʥ"
      "ʩ" "ʷ" "" "˷" "˹" "˼"
      "" "" "" "" "" "̩"
      "̹" "" "" "" "" ""
      "͢" "ͨ" "ͼ" "" "" ""
      "" "" "" "Τ" "ά" "κ"
      "" "" "" "" "" ""
      "" "" "" "ϣ" "Ϥ" "ϯ"
      "" "" "Ф" "Ъ" "л" ""
      "" "" "" "" "" "Ѧ"
      "ѩ" "" "" "" "" "ҫ"
      "Ү" "Ҷ" "" "" "ӡ" "Ӣ"
      "" "" "" "Լ" "" ""
      "" "է" "" "ղ" "" ""
      "֥" "" "" "" "" ""
      "" "" ""
      ))

(defvar *zh-name-medial-chars*
    '("" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" "¡"
      "¬" "³" "¶" "·" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" "â"
      "é" "÷" "" "" "" ""
      "" "" "" "Ħ" "Ī" "Ĭ"
      "ĭ" "ķ" "ľ" "" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" "Ŧ"
      "ũ" "Ŭ" "ŵ" "ŷ" "" ""
      "" "" "" "" "" ""
      "Ƥ" "ƽ" "" "" "" ""
      "" "" "" "ǡ" "Ǯ" "ǿ"
      "" "" "" "" "" ""
      "" "ȴ" "" "" "" ""
      "" "" "" "ɣ" "ɪ" "ɭ"
      "ɯ" "ɳ" "ɺ" "ɽ" "" ""
      "" "ʢ" "ʩ" "ʲ" "ʷ" "ʿ"
      "" "˹" "˼" "˾" "˿" ""
      "" "" "" "̩" "̫" "̹"
      "" "" "" "" "" ""
      "" "͡" "͢" "ͨ" "ͼ" "ͽ"
      "" "" "" "" "" ""
      "" "Τ" "ά" "ΰ" "κ" ""
      "" "" "" "" "" ""
      "" "" "" "" "ϣ" "ϯ"
      "" "" "" "Ф" "Ъ" "л"
      "" "" "" "" "" ""
      "" "" "ѩ" "" "" ""
      "" "Ү" "Ҷ" "" "" ""
      "" "" "Ӣ" "" "" ""
      "" "" "" "Լ" "" ""
      "" "" "" "ղ" "" ""
      "" "" "" "׿" "" ""
      "" "" "" "" "" ""
      "" "" "" "" "" ""
      "" ""
      ))


(defun zh-name-suffix? (string)
  (member string *zh-name-final-chars* :test #'matching-suffix?))

(defun zh-name-prefix? (string)
  (member string *zh-name-initial-chars* :test #'matching-prefix?))

(defun zh-name-infix? (string)
  (member string *zh-name-medial-chars* :test #'matching-substring?))
	  
