예제 #1
0
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++;
        }
}
예제 #2
0
파일: codecs.c 프로젝트: 3lnc/cpython
static
PyObject *normalizestring(const char *string)
{
    size_t i;
    size_t len = strlen(string);
    char *p;
    PyObject *v;

    if (len > PY_SSIZE_T_MAX) {
        PyErr_SetString(PyExc_OverflowError, "string is too large");
        return NULL;
    }

    p = PyMem_Malloc(len + 1);
    if (p == NULL)
        return PyErr_NoMemory();
    for (i = 0; i < len; i++) {
        char ch = string[i];
        if (ch == ' ')
            ch = '-';
        else
            ch = Py_TOLOWER(Py_CHARMASK(ch));
        p[i] = ch;
    }
    p[i] = '\0';
    v = PyUnicode_FromString(p);
    if (v == NULL)
        return NULL;
    PyMem_Free(p);
    return v;
}
예제 #3
0
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
파일: codecs.c 프로젝트: 0xcc/python-read
static
PyObject *normalizestring(const char *string)
{
    register size_t i;
    size_t len = strlen(string);
    char *p;
    PyObject *v;

    if (len > PY_SSIZE_T_MAX) {
        PyErr_SetString(PyExc_OverflowError, "string is too large");
        return NULL;
    }

    v = PyString_FromStringAndSize(NULL, len);
    if (v == NULL)
        return NULL;
    p = PyString_AS_STRING(v);
    for (i = 0; i < len; i++) {
        register char ch = string[i];
        if (ch == ' ')
            ch = '-';
        else
            ch = Py_TOLOWER(Py_CHARMASK(ch));
        p[i] = ch;
    }
    return v;
}
예제 #5
0
void
_Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len)
{
    Py_ssize_t i;

    for (i = 0; i < len; i++) {
        result[i] = Py_TOLOWER((unsigned char) cptr[i]);
    }
}
예제 #6
0
void
_Py_bytes_lower(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_ISUPPER(c))
            result[i] = Py_TOLOWER(c);
    }
}
예제 #7
0
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++;
    }
}
예제 #8
0
void
_Py_bytes_lower(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_ISUPPER(c))
                        result[i] = Py_TOLOWER(c);
        }
}
예제 #9
0
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;
    }
}
예제 #10
0
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++;
    }
}