(syms_of_ntproc) <w32-get-true-file-attributes>: Doc fix.
[bpt/emacs.git] / src / ccl.h
index af3a92d..18c6ae1 100644 (file)
--- a/src/ccl.h
+++ b/src/ccl.h
@@ -1,14 +1,17 @@
 /* Header for CCL (Code Conversion Language) interpreter.
    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 /* Header for CCL (Code Conversion Language) interpreter.
    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-     2005, 2006, 2007
+     2005, 2006, 2007, 2008
      National Institute of Advanced Industrial Science and Technology (AIST)
      Registration Number H14PRO021
      National Institute of Advanced Industrial Science and Technology (AIST)
      Registration Number H14PRO021
+   Copyright (C) 2003
+     National Institute of Advanced Industrial Science and Technology (AIST)
+     Registration Number H13PRO009
 
 This file is part of GNU Emacs.
 
 GNU Emacs is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 
 This file is part of GNU Emacs.
 
 GNU Emacs 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, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -59,16 +62,14 @@ struct ccl_program {
                                   many times bigger the output buffer
                                   should be than the input buffer.  */
   int stack_idx;               /* How deep the call of CCL_Call is nested.  */
                                   many times bigger the output buffer
                                   should be than the input buffer.  */
   int stack_idx;               /* How deep the call of CCL_Call is nested.  */
-  int eol_type;                        /* When the CCL program is used for
-                                  encoding by a coding system, set to
-                                  the eol_type of the coding system.
-                                  In other cases, always
-                                  CODING_EOL_LF.  */
-  int multibyte;               /* 1 if the source text is multibyte.  */
+  int src_multibyte;           /* 1 if the input buffer is multibyte.  */
+  int dst_multibyte;           /* 1 if the output buffer is multibyte.  */
   int cr_consumed;             /* Flag for encoding DOS-like EOL
                                   format when the CCL program is used
                                   for encoding by a coding
                                   system.  */
   int cr_consumed;             /* Flag for encoding DOS-like EOL
                                   format when the CCL program is used
                                   for encoding by a coding
                                   system.  */
+  int consumed;
+  int produced;
   int suppress_error;          /* If nonzero, don't insert error
                                   message in the output.  */
   int eight_bit_control;       /* If nonzero, ccl_driver counts all
   int suppress_error;          /* If nonzero, don't insert error
                                   message in the output.  */
   int eight_bit_control;       /* If nonzero, ccl_driver counts all
@@ -76,19 +77,22 @@ struct ccl_program {
                                   CCL_WRITE_CHAR.  After execution,
                                   if no such byte is written, set
                                   this value to zero.  */
                                   CCL_WRITE_CHAR.  After execution,
                                   if no such byte is written, set
                                   this value to zero.  */
+  int quit_silently;           /* If nonzero, don't append "CCL:
+                                  Quitted" to the generated text when
+                                  CCL program is quitted. */
 };
 
 /* This data type is used for the spec field of the structure
    coding_system.  */
 
 struct ccl_spec {
 };
 
 /* This data type is used for the spec field of the structure
    coding_system.  */
 
 struct ccl_spec {
-  struct ccl_program decoder;
-  struct ccl_program encoder;
-  unsigned char valid_codes[256];
+  struct ccl_program ccl;
   int cr_carryover;            /* CR carryover flag.  */
   unsigned char eight_bit_carryover[MAX_MULTIBYTE_LENGTH];
 };
 
   int cr_carryover;            /* CR carryover flag.  */
   unsigned char eight_bit_carryover[MAX_MULTIBYTE_LENGTH];
 };
 
+#define CODING_SPEC_CCL_PROGRAM(coding) ((coding)->spec.ccl.ccl)
+
 /* Alist of fontname patterns vs corresponding CCL program.  */
 extern Lisp_Object Vfont_ccl_encoder_alist;
 
 /* Alist of fontname patterns vs corresponding CCL program.  */
 extern Lisp_Object Vfont_ccl_encoder_alist;
 
@@ -99,8 +103,8 @@ extern int setup_ccl_program P_ ((struct ccl_program *, Lisp_Object));
 /* Check if CCL is updated or not.  If not, re-setup members of CCL.  */
 extern int check_ccl_update P_ ((struct ccl_program *));
 
 /* Check if CCL is updated or not.  If not, re-setup members of CCL.  */
 extern int check_ccl_update P_ ((struct ccl_program *));
 
-extern int ccl_driver P_ ((struct ccl_program *, unsigned char *,
-                          unsigned char *, int, int, int *));
+extern void ccl_driver P_ ((struct ccl_program *, int *, int *, int, int,
+                           Lisp_Object));
 
 /* Vector of CCL program names vs corresponding program data.  */
 extern Lisp_Object Vccl_program_table;
 
 /* Vector of CCL program names vs corresponding program data.  */
 extern Lisp_Object Vccl_program_table;
@@ -109,6 +113,16 @@ extern Lisp_Object Vccl_program_table;
    is an index for Vccl_protram_table. */
 extern Lisp_Object Qccl_program_idx;
 
    is an index for Vccl_protram_table. */
 extern Lisp_Object Qccl_program_idx;
 
+extern Lisp_Object Qccl, Qcclp;
+
+EXFUN (Fccl_program_p, 1);
+
+#define CHECK_CCL_PROGRAM(x)                   \
+  do {                                         \
+    if (NILP (Fccl_program_p (x)))             \
+      wrong_type_argument (Qcclp, (x));        \
+  } while (0);
+
 #endif /* EMACS_CCL_H */
 
 /* arch-tag: 14681df7-876d-43de-bc71-6b78e23a4e3c
 #endif /* EMACS_CCL_H */
 
 /* arch-tag: 14681df7-876d-43de-bc71-6b78e23a4e3c