]> code.delx.au - gnu-emacs/blobdiff - src/composite.h
*** empty log message ***
[gnu-emacs] / src / composite.h
index 41be8fdcac78e1d0393b69ab8effe8f130dec9e2..5c19f8aa56e632edcc2489c0a81f32380dcd018a 100644 (file)
@@ -1,6 +1,9 @@
 /* Header for composite sequence handler.
-   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
-   Licensed to the Free Software Foundation.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005,
+                 2006 Free Software Foundation, Inc.
+   Copyright (C) 1997
+     National Institute of Advanced Industrial Science and Technology (AIST)
+     Registration Number H14PRO021
 
 This file is part of GNU Emacs.
 
@@ -16,8 +19,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 #ifndef EMACS_COMPOSITE_H
 #define EMACS_COMPOSITE_H
@@ -75,7 +78,7 @@ extern Lisp_Object composition_temp;
 #define COMPOSITION_MODIFICATION_FUNC(prop)    \
   (COMPOSITION_REGISTERD_P (prop)              \
    ? XCDR (XCDR (XCDR (prop)))                 \
-   : XCDR (prop))
+   : CONSP (prop) ? XCDR (prop) : Qnil)
 
 /* Return the method of composition.  */
 #define COMPOSITION_METHOD(prop)                                       \
@@ -90,17 +93,20 @@ extern Lisp_Object composition_temp;
 
 /* Return 1 iff the composition is valid.  It is valid if length of
    the composition equals to (END - START).  */
-#define COMPOSITION_VALID_P(start, end, prop)                                \
-  (CONSP (prop)                                                                      \
-   && (COMPOSITION_REGISTERD_P (prop)                                        \
-       ? (COMPOSITION_ID (prop) >= 0                                         \
-         && COMPOSITION_ID (prop) <= n_compositions                          \
-         && CONSP (XCDR (prop)))                                             \
-       : (composition_temp = XCAR (prop),                                    \
-         (CONSP (composition_temp)                                           \
-          && (composition_temp = XCDR (composition_temp),                    \
-              (NILP (composition_temp) || STRINGP (composition_temp)         \
-               || VECTORP (composition_temp) || CONSP (composition_temp))))))\
+#define COMPOSITION_VALID_P(start, end, prop)                  \
+  (CONSP (prop)                                                        \
+   && (COMPOSITION_REGISTERD_P (prop)                          \
+       ? (COMPOSITION_ID (prop) >= 0                           \
+         && COMPOSITION_ID (prop) <= n_compositions            \
+         && CONSP (XCDR (prop)))                               \
+       : (composition_temp = XCAR (prop),                      \
+         (CONSP (composition_temp)                             \
+          && (composition_temp = XCDR (composition_temp),      \
+              (NILP (composition_temp)                         \
+               || STRINGP (composition_temp)                   \
+               || VECTORP (composition_temp)                   \
+               || INTEGERP (composition_temp)                  \
+               || CONSP (composition_temp))))))                \
    && (end - start) == COMPOSITION_LENGTH (prop))
 
 /* Return the Nth glyph of composition specified by CMP.  CMP is a
@@ -143,23 +149,23 @@ extern Lisp_Object composition_temp;
 
    When a composition is assigned an ID number (by
    get_composition_id), this structure is allocated for the
-   composition and linked in composition_table[ID].  
+   composition and linked in composition_table[ID].
 
    Identical compositions appearing at different places have the same
    ID, and thus share the same instance of this structure.  */
 
 struct composition {
-  /* How many columns the overall glyphs occupy on the screen.  This
-     gives an approximate value for column calculation in
-     Fcurrent_column, and etc.  */
-  unsigned char width;
-
   /* Number of glyphs of the composition components.  */
-  unsigned char glyph_len;
+  unsigned glyph_len;
 
   /* Width, ascent, and descent pixels of the composition.  */
   short pixel_width, ascent, descent;
 
+  /* How many columns the overall glyphs occupy on the screen.  This
+     gives an approximate value for column calculation in
+     Fcurrent_column, and etc.  */
+  unsigned short width;
+
   /* Method of the composition.  */
   enum composition_method method;
 
@@ -202,8 +208,11 @@ extern void update_compositions P_ ((int, int, int));
 extern void make_composition_value_copy P_ ((Lisp_Object));
 extern void compose_region P_ ((int, int, Lisp_Object, Lisp_Object,
                                Lisp_Object));
-extern void syms_of_composition P_ ((void));
+extern void syms_of_composite P_ ((void));
 extern void compose_text P_ ((int, int, Lisp_Object, Lisp_Object,
                              Lisp_Object));
 
 #endif /* not EMACS_COMPOSITE_H */
+
+/* arch-tag: 59524d89-c645-47bd-b5e6-65e861690118
+   (do not change this comment) */