switch(cd->type.prefix.tag) { case TD_INT8:
switch(XPT_TDP_TAG(cd->type.prefix)) { case TD_INT8:
XPT_DoConstDescriptor(XPTCursor *cursor, XPTConstDescriptor **cdp){    XPTMode mode = cursor->state->mode;    XPTConstDescriptor *cd;    if (mode == XPT_DECODE)        cd = PR_NEWZAP(XPTConstDescriptor);    else        cd = *cdp;        if (!XPT_DoCString(&cursor, &cd->name) ||        !XPT_DoTypeDescriptor(&cursor, &cd->type)) {        goto error;    }    switch(cd->type.prefix.tag) {    case TD_INT8:        XPT_Do8(cursor, &cd->value.i8);        break;    case TD_INT16:        XPT_Do16(cursor, &cd->value.i16);        break;    case TD_INT32:        XPT_Do32(cursor, &cd->value.i32);        break;    case TD_INT64:        XPT_Do64(cursor, &cd->value.i64);        break;    case TD_UINT8:        XPT_Do8(cursor, &cd->value.ui8);        break;    case TD_UINT16:        XPT_Do16(cursor, &cd->value.ui16);        break;    case TD_UINT32:        XPT_Do32(cursor, &cd->value.ui32);        break;    case TD_UINT64:        XPT_Do64(cursor, &cd->value.ui64);        break;    case TD_CHAR:        XPT_Do8(cursor, &cd->value.ch);        break;    case TD_WCHAR:        XPT_Do16(cursor, &cd->value.wch);        break;    case TD_PBSTR:        if (cd->type.prefix.is_pointer == 1) {            XPT_DoString(cursor, &cd->value.string);            break;        }        goto error;    default:        goto error;    }    return PR_TRUE;    XPT_ERROR_HANDLE(cd);    }