(linenum→info "unix/slp.c:2238")

emacs/22.1/src/ccl.h

    1: /* Header for CCL (Code Conversion Language) interpreter.
    2:    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
    3:      2005, 2006, 2007
    4:      National Institute of Advanced Industrial Science and Technology (AIST)
    5:      Registration Number H14PRO021
    6: 
    7: This file is part of GNU Emacs.
    8: 
    9: GNU Emacs is free software; you can redistribute it and/or modify
   10: it under the terms of the GNU General Public License as published by
   11: the Free Software Foundation; either version 2, or (at your option)
   12: any later version.
   13: 
   14: GNU Emacs is distributed in the hope that it will be useful,
   15: but WITHOUT ANY WARRANTY; without even the implied warranty of
   16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   17: GNU General Public License for more details.
   18: 
   19: You should have received a copy of the GNU General Public License
   20: along with GNU Emacs; see the file COPYING.  If not, write to
   21: the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   22: Boston, MA 02110-1301, USA.  */
   23: 
   24: #ifndef EMACS_CCL_H
   25: #define EMACS_CCL_H
   26: 
   27: /* Macros for exit status of CCL program.  */
   28: #define CCL_STAT_SUCCESS        0 /* Terminated successfully.  */
   29: #define CCL_STAT_SUSPEND_BY_SRC 1 /* Terminated by empty input.  */
   30: #define CCL_STAT_SUSPEND_BY_DST 2 /* Terminated by output buffer full.  */
   31: #define CCL_STAT_INVALID_CMD    3 /* Terminated because of invalid
   32:                                      command.  */
   33: #define CCL_STAT_QUIT           4 /* Terminated because of quit.  */
   34: 
   35: /* Structure to hold information about running CCL code.  Read
   36:    comments in the file ccl.c for the detail of each field.  */
   37: struct ccl_program {
   38:   int idx;                      /* Index number of the CCL program.
   39:                                    -1 means that the program was given
   40:                                    by a vector, not by a program
   41:                                    name.  */
   42:   int size;                     /* Size of the compiled code.  */
   43:   Lisp_Object *prog;            /* Pointer into the compiled code.  */
   44:   int ic;                       /* Instruction Counter (index for PROG).  */
   45:   int eof_ic;                   /* Instruction Counter for end-of-file
   46:                                    processing code.  */
   47:   int reg[8];                   /* CCL registers, reg[7] is used for
   48:                                    condition flag of relational
   49:                                    operations.  */
   50:   int private_state;            /* CCL instruction may use this
   51:                                    for private use, mainly for saving
   52:                                    internal states on suspending.
   53:                                    This variable is set to 0 when ccl is
   54:                                    set up.  */
   55:   int last_block;               /* Set to 1 while processing the last
   56:                                    block. */
   57:   int status;                   /* Exit status of the CCL program.  */
   58:   int buf_magnification;        /* Output buffer magnification.  How
   59:                                    many times bigger the output buffer
   60:                                    should be than the input buffer.  */
   61:   int stack_idx;                /* How deep the call of CCL_Call is nested.  */
   62:   int eol_type;                 /* When the CCL program is used for
   63:                                    encoding by a coding system, set to
   64:                                    the eol_type of the coding system.
   65:                                    In other cases, always
   66:                                    CODING_EOL_LF.  */
   67:   int multibyte;                /* 1 if the source text is multibyte.  */
   68:   int cr_consumed;              /* Flag for encoding DOS-like EOL
   69:                                    format when the CCL program is used
   70:                                    for encoding by a coding
   71:                                    system.  */
   72:   int suppress_error;           /* If nonzero, don't insert error
   73:                                    message in the output.  */
   74:   int eight_bit_control;        /* If nonzero, ccl_driver counts all
   75:                                    eight-bit-control bytes written by
   76:                                    CCL_WRITE_CHAR.  After execution,
   77:                                    if no such byte is written, set
   78:                                    this value to zero.  */
   79: };
   80: 
   81: /* This data type is used for the spec field of the structure
   82:    coding_system.  */
   83: 
   84: struct ccl_spec {
   85:   struct ccl_program decoder;
   86:   struct ccl_program encoder;
   87:   unsigned char valid_codes[256];
   88:   int cr_carryover;             /* CR carryover flag.  */
   89:   unsigned char eight_bit_carryover[MAX_MULTIBYTE_LENGTH];
   90: };
   91: 
   92: /* Alist of fontname patterns vs corresponding CCL program.  */
   93: extern Lisp_Object Vfont_ccl_encoder_alist;
   94: 
   95: /* Setup fields of the structure pointed by CCL appropriately for the
   96:    execution of ccl program CCL_PROG (symbol or vector).  */
   97: extern int setup_ccl_program P_ ((struct ccl_program *, Lisp_Object));
   98: 
   99: /* Check if CCL is updated or not.  If not, re-setup members of CCL.  */
  100: extern int check_ccl_update P_ ((struct ccl_program *));
  101: 
  102: extern int ccl_driver P_ ((struct ccl_program *, unsigned char *,
  103:                            unsigned char *, int, int, int *));
  104: 
  105: /* Vector of CCL program names vs corresponding program data.  */
  106: extern Lisp_Object Vccl_program_table;
  107: 
  108: /* Symbols of ccl program have this property, a value of the property
  109:    is an index for Vccl_protram_table. */
  110: extern Lisp_Object Qccl_program_idx;
  111: 
  112: #endif /* EMACS_CCL_H */
  113: 
  114: /* arch-tag: 14681df7-876d-43de-bc71-6b78e23a4e3c
  115:    (do not change this comment) */
Syntax (Markdown)