;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; LUSH Lisp Universal Shell
;;;   Copyright (C) 2002 Leon Bottou, Yann Le Cun, AT&T Corp, NECI.
;;; Includes parts of TL3:
;;;   Copyright (C) 1987-1999 Leon Bottou and Neuristique.
;;; Includes selected parts of SN3.2:
;;;   Copyright (C) 1991-2001 AT&T Corp.
;;;
;;; Includes information derived from the GSL (Gnu Scientific Library)
;;;   header files which are copyrighted and distributed under the GPL
;;;   by their respective authors.
;;;
;;; This program is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 2 of the License, or
;;; (at your option) any later version.
;;;
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program; if not, write to the Free Software
;;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(libload "htk/htk-config")



#? *** htk_dict

;; dummy function that adds HTK C header files in C file
(eval `(de dummy_htk_dict () ,htk-cpheader-cmd ()))

#? * (dummy_htk_dict)
#? * (initdict)
#? * (initvocab <voc>)
#? * (clearvocab <voc>)
#? * (readdictword <src> <labels> <prob> <num>)
#? * (readdict <dictfn> <voc>)
#? * (writedict <dictfn> <voc>)
#? * (showdict <voc>)
#? * (getword <voc> <wordname> <insert>)
#? * (delword <voc> <word>)
#? * (newpron <voc> <wid> <nphones> <phones> <outsym> <prob>)
#? * (delpron <voc> <word> <pron>)

;; ********************************************************


(de InitDict (  )
    #{ InitDict(  );  #} 
    ()
)


(de InitVocab (  voc )
    ((-gptr- "Vocab *") voc)  
    #{ InitVocab(  $voc  );  #} 
    ()
)


(de ClearVocab (  voc )
    ((-gptr- "Vocab *") voc)  
    #{ ClearVocab(  $voc  );  #} 
    ()
)


(de ReadDictWord (  src  labels  prob  num )
    ((-gptr- "Source *") src) 
    ((-gptr- "LabId *") labels) 
    ((-gptr- "float *") prob) 
    ((-gptr- "int*") num)  
    (int   #{ ReadDictWord(  $src   ,$labels   ,$prob   ,$num  )  #} )       ;; ReturnStatus -> int
)


(de ReadDict (  dictfn  voc )
    ((-gptr- "char *") dictfn) 
    ((-gptr- "Vocab *") voc)  
    (int   #{ ReadDict(  $dictfn   ,$voc  )  #} )       ;; ReturnStatus -> int
)


(de WriteDict (  dictfn  voc )
    ((-gptr- "char *") dictfn) 
    ((-gptr- "Vocab *") voc)  
    (int   #{ WriteDict(  $dictfn   ,$voc  )  #} )       ;; ReturnStatus -> int
)


(de ShowDict (  voc )
    ((-gptr- "Vocab *") voc)  
    #{ ShowDict(  $voc  );  #} 
    ()
)


(de GetWord (  voc  wordname  insert )
    ((-gptr- "Vocab *") voc) 
    ((-gptr- "NameCell *") wordname) 
    ((-int-) insert)  
    (gptr   #{ GetWord(  $voc   ,$wordname   ,$insert  )  #} )     ;; Word -> gptr
)



(de DelWord (  voc  word )
    ((-gptr- "Vocab *") voc) 
    ((-gptr- "struct _DictEntry *") word)  
    #{ DelWord(  $voc   ,$word  );  #} 
    ()
)


(de NewPron (  voc  wid  nphones  phones  outsym  prob )
    ((-gptr- "Vocab *") voc) 
    ((-gptr- "struct _DictEntry *") wid) 
    ((-int-) nphones) 
    ((-gptr- "LabId *") phones) 
    ((-gptr- "NameCell *") outsym) 
    ((-float-) prob)  
    #{ NewPron(  $voc   ,$wid   ,$nphones   ,$phones   ,$outsym   ,$prob  );  #} 
    ()
)


(de DelPron (  voc  word  pron )
    ((-gptr- "Vocab *") voc) 
    ((-gptr- "struct _DictEntry *") word) 
    ((-gptr- "WordPron *") pron)  
    #{ DelPron(  $voc   ,$word   ,$pron  );  #} 
    ()
)


;; ********************************************************

(dhc-make-with-libs () (list htk-libhtk)
  dummy_htk_dict
  initdict
  initvocab
  clearvocab
  readdictword
  readdict
  writedict
  showdict
  getword
  delword
  newpron
  delpron
)
