/* Header for coding system handler.
- Copyright (C) 2001-2012 Free Software Foundation, Inc.
+ Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
CODING_RESULT_SUCCESS,
CODING_RESULT_INSUFFICIENT_SRC,
CODING_RESULT_INSUFFICIENT_DST,
- CODING_RESULT_INCONSISTENT_EOL,
CODING_RESULT_INVALID_SRC,
- CODING_RESULT_INTERRUPT,
- CODING_RESULT_INSUFFICIENT_MEM
+ CODING_RESULT_INTERRUPT
};
/* Macros used for the member `mode' of the struct coding_system. */
-/* If set, recover the original CR or LF of the already decoded text
- when the decoding routine encounters an inconsistent eol format. */
-#define CODING_MODE_INHIBIT_INCONSISTENT_EOL 0x01
-
/* If set, the decoding/encoding routines treat the current data as
the last block of the whole text to be converted, and do the
appropriate finishing job. */
-#define CODING_MODE_LAST_BLOCK 0x02
+#define CODING_MODE_LAST_BLOCK 0x01
/* If set, it means that the current source text is in a buffer which
enables selective display. */
-#define CODING_MODE_SELECTIVE_DISPLAY 0x04
+#define CODING_MODE_SELECTIVE_DISPLAY 0x02
/* This flag is used by the decoding/encoding routines on the fly. If
set, it means that right-to-left text is being processed. */
-#define CODING_MODE_DIRECTION 0x08
+#define CODING_MODE_DIRECTION 0x04
-#define CODING_MODE_FIXED_DESTINATION 0x10
+#define CODING_MODE_FIXED_DESTINATION 0x08
/* If set, it means that the encoding routines produces some safe
ASCII characters (usually '?') for unsupported characters. */
-#define CODING_MODE_SAFE_ENCODING 0x20
+#define CODING_MODE_SAFE_ENCODING 0x10
/* For handling composition sequence. */
#include "composite.h"
Lisp_Object, ptrdiff_t, ptrdiff_t,
ptrdiff_t, ptrdiff_t, Lisp_Object);
-/* Macros for backward compatibility. */
+#if defined (WINDOWSNT) || defined (CYGWIN)
-#define decode_coding_region(coding, from, to) \
- decode_coding_object (coding, Fcurrent_buffer (), \
- from, CHAR_TO_BYTE (from), \
- to, CHAR_TO_BYTE (to), Fcurrent_buffer ())
+/* These functions use Lisp string objects to store the UTF-16LE
+ strings that modern versions of Windows expect. These strings are
+ not particularly useful to Lisp, and all Lisp strings should be
+ native Emacs multibyte. */
+/* Access the wide-character string stored in a Lisp string object. */
+#define WCSDATA(x) ((wchar_t *) SDATA (x))
-#define encode_coding_region(coding, from, to) \
- encode_coding_object (coding, Fcurrent_buffer (), \
- from, CHAR_TO_BYTE (from), \
- to, CHAR_TO_BYTE (to), Fcurrent_buffer ())
+/* Convert the multi-byte string in STR to UTF-16LE encoded unibyte
+ string, and store it in *BUF. BUF may safely point to STR on entry. */
+extern wchar_t *to_unicode (Lisp_Object str, Lisp_Object *buf);
+/* Convert STR, a UTF-16LE encoded string embedded in a unibyte string
+ object, to a multi-byte Emacs string and return it. This function
+ calls code_convert_string_norecord internally and has all its
+ failure modes. STR itself is not modified. */
+extern Lisp_Object from_unicode (Lisp_Object str);
-#define decode_coding_string(coding, string, nocopy) \
- decode_coding_object (coding, string, 0, 0, SCHARS (string), \
- SBYTES (string), Qt)
+#endif /* WINDOWSNT || CYGWIN */
+
+/* Macros for backward compatibility. */
#define encode_coding_string(coding, string, nocopy) \
(STRING_MULTIBYTE(string) ? \
extern Lisp_Object Qraw_text, Qemacs_mule, Qno_conversion, Qundecided;
extern Lisp_Object Qbuffer_file_coding_system;
-extern Lisp_Object Qunix, Qdos, Qmac;
+extern Lisp_Object Qunix, Qdos;
extern Lisp_Object Qtranslation_table;
extern Lisp_Object Qtranslation_table_id;