Link changes for Cygwin unexec() support.
[bpt/emacs.git] / src / composite.h
index b0af3b7..5343dd5 100644 (file)
@@ -1,6 +1,7 @@
 /* Header for composite sequence handler.
    Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
    Licensed to the Free Software Foundation.
+   Copyright (C) 2001 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -19,8 +20,8 @@ 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.  */
 
-#ifndef _COMPOSITE_H
-#define _COMPOSITE_H
+#ifndef EMACS_COMPOSITE_H
+#define EMACS_COMPOSITE_H
 
 /* Methods to display a sequence of components a composition.  */
 enum composition_method {
@@ -75,7 +76,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 +91,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,19 +147,22 @@ 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 {
+  /* Number of glyphs of the composition components.  */
+  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 char width;
-
-  /* Number of glyphs of the composition components.  */
-  unsigned char glyph_len;
+  unsigned short width;
 
   /* Method of the composition.  */
   enum composition_method method;
@@ -173,10 +180,6 @@ struct composition {
      registered in composition_table.  X-offset and Y-offset of Nth
      glyph are (2N)th and (2N+1)th elements respectively.  */
   short *offsets;
-
-  /* Width, ascent, and descent pixels of the composition.  */
-  short pixel_width, ascent, descent;
-
 };
 
 /* Table of pointers to the structure `composition' indexed by
@@ -200,8 +203,15 @@ extern int get_composition_id P_ ((int, int, int, Lisp_Object, Lisp_Object));
 extern int find_composition P_ ((int, int, int *, int *, Lisp_Object *,
                                 Lisp_Object));
 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_ (());
+extern void syms_of_composite P_ ((void));
+extern void compose_text P_ ((int, int, Lisp_Object, Lisp_Object,
+                             Lisp_Object));
+extern void compose_chars_in_text P_ ((int, int, Lisp_Object));
+
+#endif /* not EMACS_COMPOSITE_H */
 
-#endif /* not _COMPOSITE_H */
+/* arch-tag: 59524d89-c645-47bd-b5e6-65e861690118
+   (do not change this comment) */