コード例 #1
0
ファイル: bytes_methods.c プロジェクト: chauhraj/JyNI
PyObject*
_Py_bytes_islower(const char *cptr, Py_ssize_t len)
{
    register const unsigned char *p
        = (unsigned char *) cptr;
    register const unsigned char *e;
    int cased;

    /* Shortcut for single character strings */
    if (len == 1)
        return PyBool_FromLong(Py_ISLOWER(*p));

    /* Special case for empty strings */
    if (len == 0)
        Py_RETURN_FALSE;

    e = p + len;
    cased = 0;
    for (; p < e; p++) {
        if (Py_ISUPPER(*p))
            Py_RETURN_FALSE;
        else if (!cased && Py_ISLOWER(*p))
            cased = 1;
    }
    return PyBool_FromLong(cased);
}
コード例 #2
0
ファイル: bytes_methods.c プロジェクト: chauhraj/JyNI
void
_Py_bytes_capitalize(char *result, char *s, Py_ssize_t len)
{
        Py_ssize_t i;

        /*
        newobj = PyString_FromStringAndSize(NULL, len);
        if (newobj == NULL)
                return NULL;
        s_new = PyString_AsString(newobj);
        */
        if (0 < len) {
                int c = Py_CHARMASK(*s++);
                if (Py_ISLOWER(c))
                        *result = Py_TOUPPER(c);
                else
                        *result = c;
                result++;
        }
        for (i = 1; i < len; i++) {
                int c = Py_CHARMASK(*s++);
                if (Py_ISUPPER(c))
                        *result = Py_TOLOWER(c);
                else
                        *result = c;
                result++;
        }
}
コード例 #3
0
ファイル: bytes_methods.c プロジェクト: chauhraj/JyNI
void
_Py_bytes_title(char *result, char *s, Py_ssize_t len)
{
        Py_ssize_t i;
        int previous_is_cased = 0;

        /*
        newobj = PyString_FromStringAndSize(NULL, len);
        if (newobj == NULL)
                return NULL;
        s_new = PyString_AsString(newobj);
        */
        for (i = 0; i < len; i++) {
                int c = Py_CHARMASK(*s++);
                if (Py_ISLOWER(c)) {
                        if (!previous_is_cased)
                            c = Py_TOUPPER(c);
                        previous_is_cased = 1;
                } else if (Py_ISUPPER(c)) {
                        if (previous_is_cased)
                            c = Py_TOLOWER(c);
                        previous_is_cased = 1;
                } else
                        previous_is_cased = 0;
                *result++ = c;
        }
}
コード例 #4
0
ファイル: bytes_methods.c プロジェクト: 469306621/Languages
void
_Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len)
{
    Py_ssize_t i;

    Py_MEMCPY(result, cptr, len);

    for (i = 0; i < len; i++) {
        int c = Py_CHARMASK(result[i]);
        if (Py_ISLOWER(c))
            result[i] = Py_TOUPPER(c);
    }
}
コード例 #5
0
ファイル: bytes_methods.c プロジェクト: 469306621/Languages
void
_Py_bytes_swapcase(char *result, char *s, Py_ssize_t len)
{
    Py_ssize_t i;

    for (i = 0; i < len; i++) {
        int c = Py_CHARMASK(*s++);
        if (Py_ISLOWER(c)) {
            *result = Py_TOUPPER(c);
        }
        else if (Py_ISUPPER(c)) {
            *result = Py_TOLOWER(c);
        }
        else
            *result = c;
        result++;
    }
}
コード例 #6
0
ファイル: bytes_methods.c プロジェクト: chauhraj/JyNI
void
_Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len)
{
        Py_ssize_t i;

        /*
        newobj = PyString_FromStringAndSize(NULL, len);
        if (!newobj)
                return NULL;

        s = PyString_AS_STRING(newobj);
        */

        Py_MEMCPY(result, cptr, len);

        for (i = 0; i < len; i++) {
                int c = Py_CHARMASK(result[i]);
                if (Py_ISLOWER(c))
                        result[i] = Py_TOUPPER(c);
        }
}
コード例 #7
0
ファイル: bytes_methods.c プロジェクト: 469306621/Languages
void
_Py_bytes_title(char *result, char *s, Py_ssize_t len)
{
    Py_ssize_t i;
    int previous_is_cased = 0;

    for (i = 0; i < len; i++) {
        int c = Py_CHARMASK(*s++);
        if (Py_ISLOWER(c)) {
            if (!previous_is_cased)
                c = Py_TOUPPER(c);
            previous_is_cased = 1;
        } else if (Py_ISUPPER(c)) {
            if (previous_is_cased)
                c = Py_TOLOWER(c);
            previous_is_cased = 1;
        } else
            previous_is_cased = 0;
        *result++ = c;
    }
}
コード例 #8
0
ファイル: bytes_methods.c プロジェクト: 469306621/Languages
void
_Py_bytes_capitalize(char *result, char *s, Py_ssize_t len)
{
    Py_ssize_t i;

    if (0 < len) {
        int c = Py_CHARMASK(*s++);
        if (Py_ISLOWER(c))
            *result = Py_TOUPPER(c);
        else
            *result = c;
        result++;
    }
    for (i = 1; i < len; i++) {
        int c = Py_CHARMASK(*s++);
        if (Py_ISUPPER(c))
            *result = Py_TOLOWER(c);
        else
            *result = c;
        result++;
    }
}
コード例 #9
0
ファイル: bytes_methods.c プロジェクト: ARK4579/cpython
PyObject*
_Py_bytes_istitle(const char *cptr, Py_ssize_t len)
{
    const unsigned char *p
        = (unsigned char *) cptr;
    const unsigned char *e;
    int cased, previous_is_cased;

    /* Shortcut for single character strings */
    if (len == 1)
        return PyBool_FromLong(Py_ISUPPER(*p));

    /* Special case for empty strings */
    if (len == 0)
        Py_RETURN_FALSE;

    e = p + len;
    cased = 0;
    previous_is_cased = 0;
    for (; p < e; p++) {
        const unsigned char ch = *p;

        if (Py_ISUPPER(ch)) {
            if (previous_is_cased)
                Py_RETURN_FALSE;
            previous_is_cased = 1;
            cased = 1;
        }
        else if (Py_ISLOWER(ch)) {
            if (!previous_is_cased)
                Py_RETURN_FALSE;
            previous_is_cased = 1;
            cased = 1;
        }
        else
            previous_is_cased = 0;
    }
    return PyBool_FromLong(cased);
}