示例#1
0
PJ_DEF(void) pj_cis_add_str( pj_cis_t *cis, const char *str)
{
    while (*str) {
        PJ_CIS_SET(cis, *str);
	++str;
    }
}
示例#2
0
PJ_DEF(void) pj_cis_add_cis( pj_cis_t *cis, const pj_cis_t *rhs)
{
    int i;
    for (i=0; i<256; ++i) {
	if (PJ_CIS_ISSET(rhs, i))
	    PJ_CIS_SET(cis, i);
    }
}
示例#3
0
PJ_DEF(void) pj_cis_add_range(pj_cis_t *cis, int cstart, int cend)
{
    /* Can not set zero. This is the requirement of the parser. */
    pj_assert(cstart > 0);

    while (cstart != cend) {
        PJ_CIS_SET(cis, cstart);
	++cstart;
    }
}
示例#4
0
PJ_DEF(void) pj_cis_invert( pj_cis_t *cis )
{
    unsigned i;
    /* Can not set zero. This is the requirement of the parser. */
    for (i=1; i<256; ++i) {
	if (PJ_CIS_ISSET(cis,i))
            PJ_CIS_CLR(cis,i);
        else
            PJ_CIS_SET(cis,i);
    }
}
PJ_DEF(pj_status_t) pj_cis_dup( pj_cis_t *new_cis, pj_cis_t *existing)
{
    pj_status_t status;
    unsigned i;

    /* Warning: typecasting here! */
    status = pj_cis_init((pj_cis_buf_t*)existing->cis_buf, new_cis);
    if (status != PJ_SUCCESS)
        return status;

    for (i=0; i<256; ++i) {
        if (PJ_CIS_ISSET(existing, i))
            PJ_CIS_SET(new_cis, i);
        else
            PJ_CIS_CLR(new_cis, i);
    }

    return PJ_SUCCESS;
}