Listing 2: Fancier Unicode converter

        // CLASS Fancier_codecvt
class Fancier_codecvt : public Mybase {
public:
    typedef wchar_t _E;
    typedef char _To;
    typedef mbstate_t _St;

    explicit Fancier_codecvt(size_t _R = 0)
        : Mybase(_R) {}

protected:
    virtual result do_in(_St& _State,
        const _To *_F1, const _To *_L1, const _To *& _Mid1,
        _E *_F2, _E *_L2, _E *& _Mid2) const
        {_Mid1 = _F1, _Mid2 = _F2;
        _St _Mystate = _State;
        result _Ans = ok;
        for (; ; )
            if (_Mid1 == _L1 || _Mid2 == _L2)
                break;
            else if (_Mid1 + 1 == _L1)
                {_Ans = partial;
                break; }
            else if (_Mystate == 0)
                {*_Mid2 = *_Mid1++ & 0xff;
                *_Mid2 |= *_Mid1++ << 8;
                if (*_Mid2 == 0xfffe)
                    _Ans = partial;
                else if (*_Mid2 == 0xfeff)
                    {_Ans = partial;
                    _Mystate = 1; }
                else
                    {++_Mid2;
                    _Ans = ok;
                    break; }}
            else
                {*_Mid2 = *_Mid1++ << 8;
                *_Mid2 |= *_Mid1++ & 0xff;
                if (*_Mid2 == 0xfffe)
                    _Ans = partial;
                else if (*_Mid2 == 0xfeff)
                    {_Ans = partial;
                    _Mystate = 0; }
                else
                    {++_Mid2;
                    _Ans = ok;
                    break; }}
        if (_Ans == partial)
            _Mid1 = _F1, _Mid2 = _F2;
        _State = _Mystate;
        return (_Ans); }

    virtual result do_out(_St& _State,
        const _E *_F1, const _E *_L1, const _E *& _Mid1,
        _To *_F2, _To *_L2, _To *& _Mid2) const
        {_Mid1 = _F1, _Mid2 = _F2;
        if (_Mid1 == _L1 || _Mid2 == _L2)
            return (ok);
        else if (_Mid2 + 1 == _L2)
            return (partial);
        else if (*_Mid1 == 0xfffe)
            {_State = 0;
            ++_Mid1;
            *_Mid2++ = 0xfe;
            *_Mid2++ = 0xff;
            return (ok); }
        else if (*_Mid1 == 0xfeff)
            {_State = 1;
            ++_Mid1;
            *_Mid2++ = 0xff;
            *_Mid2++ = 0xfe;
            return (ok); }
        else if (_State == 0)
            {*_Mid2++ = (unsigned char)*_Mid1;
            *_Mid2++ = (unsigned char)(*_Mid1++ >> 8);
            return (ok); }
        else
            {*_Mid2++ = (unsigned char)(*_Mid1 >> 8);
            *_Mid2++ = (unsigned char)*_Mid1++;
            return (ok); }}

    virtual result do_unshift(_St& _State,
        _To *_F2, _To *_L2, _To *& _Mid2) const
        {return (ok); }

    virtual int do_length(_St& _State, const _To *_F1,
        const _To *_L1, size_t _N2) const _THROW0()
        {return ((int)(_L1 - _F1) / 2); }

    virtual bool do_always_noconv() const _THROW0()
        {return (false); }

    virtual int do_max_length() const _THROW0()
        {return (2); }

    virtual int do_encoding() const _THROW0()
        {return (0); }
    };