[KoCo-CVS] [Commit] cjkcodecs/src iso2022common.h
Brought to you by:
perky
From: Hye-Shik C. <pe...@us...> - 2003-07-06 17:32:26
|
perky 03/07/06 10:32:25 Modified: src iso2022common.h Log: Enable G2,G3 designation by utilizing state->c. Revision Changes Path 1.2 +29 -18 cjkcodecs/src/iso2022common.h Index: iso2022common.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/iso2022common.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- iso2022common.h 2 Jun 2003 07:39:22 -0000 1.1 +++ iso2022common.h 6 Jul 2003 17:32:25 -0000 1.2 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: iso2022common.h,v 1.1 2003/06/02 07:39:22 perky Exp $ + * $Id: iso2022common.h,v 1.2 2003/07/06 17:32:25 perky Exp $ */ /* This ISO-2022 implementation is intended to comply ECMA-43 Level 1 @@ -47,14 +47,19 @@ /* STATE - 00000000 00000000 00000000 - || ||^^^^^| ||^^^^^| - || || | |+-----+---- G0 Character Set - || || | +----------- Is G0 double byte? - || |+-----+------------- G1 Character Set - || +-------------------- Is G1 double byte? - |+---------------------- Shifted in? - +----------------------- ESC Throughout + state->c[0-3] + + 00000000 + ||^^^^^| + |+-----+---- G0-3 Character Set + +----------- Is G0-3 double byte? + + state->c[4] + + 00000000 + || + |+---- Locked-Shift? + +----- ESC Throughout */ #define CHARSET_DOUBLEBYTE 0x80 @@ -77,18 +82,24 @@ #define CHARSET_DESIGN(c) ((c) & 0x7f) #define CHARSET_ISDBCS(c) ((c) & 0x80) -#define F_SHIFTED 0x010000 -#define F_ESCTHROUGHOUT 0x020000 +#define F_SHIFTED 0x01 +#define F_ESCTHROUGHOUT 0x02 + +#define STATE_SETG0(s, v) ((s)->c[0]) = (v); +#define STATE_GETG0(s) ((s)->c[0]) + +#define STATE_SETG1(s, v) ((s)->c[1]) = (v); +#define STATE_GETG1(s) ((s)->c[1]) -#define STATE_SETG0(s, v) ((s)->i) = (((s)->i) & ~0x0000ff) | (v); -#define STATE_GETG0(s) ((s)->i & 0x0000ff) +#define STATE_SETG2(s, v) ((s)->c[2]) = (v); +#define STATE_GETG2(s) ((s)->c[2]) -#define STATE_SETG1(s, v) ((s)->i) = (((s)->i) & ~0x00ff00) | ((v) << 8); -#define STATE_GETG1(s) (((s)->i & 0x00ff00) >> 8) +#define STATE_SETG3(s, v) ((s)->c[3]) = (v); +#define STATE_GETG3(s) ((s)->c[3]) -#define STATE_SETFLAG(s, f) ((s)->i) |= (f); -#define STATE_GETFLAG(s, f) ((s)->i & (f)) -#define STATE_CLEARFLAG(s, f) ((s)->i) &= ~(f); +#define STATE_SETFLAG(s, f) ((s)->c[4]) |= (f); +#define STATE_GETFLAG(s, f) ((s)->c[4] & (f)) +#define STATE_CLEARFLAG(s, f) ((s)->c[4]) &= ~(f); static int iso2022esclen(const unsigned char *s, size_t len) |