diff options
-rw-r--r-- | Modules/stropmodule.c | 191 |
1 files changed, 162 insertions, 29 deletions
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c index 6de624e..0f1ef95 100644 --- a/Modules/stropmodule.c +++ b/Modules/stropmodule.c @@ -31,6 +31,11 @@ PERFORMANCE OF THIS SOFTWARE. /* strop module */ +static char strop_module__doc__[] = +"Common string manipulations, optimized for speed\n\ +Always use \"import string\" rather than referencing\n\ +this module directly"; + #include "Python.h" #ifdef HAVE_LIMITS_H @@ -101,7 +106,6 @@ split_whitespace(s, len, maxsplit) i = len; } - } } return list; @@ -111,6 +115,17 @@ split_whitespace(s, len, maxsplit) } +static char splitfields__doc__[] = +"split(str [,sep [,maxsplit]]) -> list of strings\n\ +splitfields(str [,sep [,maxsplit]]) -> list of strings\n\ +\n\ +Return a list of the words in the string s, using sep as the\n\ +delimiter string. If maxsplit is nonzero, splits into at most\n\ +maxsplit words If sep is not specified, any whitespace string\n\ +is a separator. Maxsplit defaults to 0.\n\ +\n\ +(split and splitfields are synonymous)"; + static PyObject * strop_splitfields(self, args) PyObject *self; /* Not used */ @@ -172,6 +187,16 @@ strop_splitfields(self, args) } +static char joinfields__doc__[] = +"join(list [,sep]) -> string\n\ +joinfields(list [,sep]) -> string\n\ +\n\ +Return a string composed of the words in list, with\n\ +intervening occurences of sep. The default separator is a\n\ +single space.\n\ +\n\ +(joinfields and join are synonymous)"; + static PyObject * strop_joinfields(self, args) PyObject *self; /* Not used */ @@ -289,6 +314,16 @@ strop_joinfields(self, args) return res; } + +static char find__doc__[] = +"find(s, sub [,start [,end]]) -> in\n\ +\n\ +Return the lowest index in s where substring sub is found,\n\ +such that sub is contained within s[start,end]. Optional\n\ +arguments start and end are interpreted as in slice notation.\n\ +\n\ +Return -1 on failure."; + static PyObject * strop_find(self, args) PyObject *self; /* Not used */ @@ -324,6 +359,15 @@ strop_find(self, args) } +static char rfind__doc__[] = +"rfind(s, sub [,start [,end]]) -> int\n\ +\n\ +Return the highest index in s where substring sub is found,\n\ +such that sub is contained within s[start,end]. Optional\n\ +arguments start and end are interpreted as in slice notation.\n\ +\n\ +Return -1 on failure."; + static PyObject * strop_rfind(self, args) PyObject *self; /* Not used */ @@ -358,6 +402,7 @@ strop_rfind(self, args) return PyInt_FromLong(-1L); } + static PyObject * do_strip(args, striptype) PyObject *args; @@ -376,7 +421,6 @@ do_strip(args, striptype) i++; } } - j = len; if (striptype != LEFTSTRIP) { @@ -395,6 +439,12 @@ do_strip(args, striptype) } +static char strip__doc__[] = +"strip(s) -> string\n\ +\n\ +Return a copy of the string s with leading and trailing\n\ +whitespace removed."; + static PyObject * strop_strip(self, args) PyObject *self; /* Not used */ @@ -403,6 +453,12 @@ strop_strip(self, args) return do_strip(args, BOTHSTRIP); } + +static char lstrip__doc__[] = +"lstrip(s) -> string\n\ +\n\ +Return a copy of the string s with leading whitespace removed."; + static PyObject * strop_lstrip(self, args) PyObject *self; /* Not used */ @@ -411,6 +467,12 @@ strop_lstrip(self, args) return do_strip(args, LEFTSTRIP); } + +static char rstrip__doc__[] = +"rstrip(s) -> string\n\ +\n\ +Return a copy of the string s with trailing whitespace removed."; + static PyObject * strop_rstrip(self, args) PyObject *self; /* Not used */ @@ -420,6 +482,11 @@ strop_rstrip(self, args) } +static char lower__doc__[] = +"lower(s) -> string\n\ +\n\ +Return a copy of the string s converted to lowercase."; + static PyObject * strop_lower(self, args) PyObject *self; /* Not used */ @@ -455,6 +522,11 @@ strop_lower(self, args) } +static char upper__doc__[] = +"upper(s) -> string\n\ +\n\ +Return a copy of the string s converted to uppercase."; + static PyObject * strop_upper(self, args) PyObject *self; /* Not used */ @@ -490,6 +562,12 @@ strop_upper(self, args) } +static char capitalize__doc__[] = +"capitalize(s) -> string\n\ +\n\ +Return a copy of the string s with only its first character\n\ +capitalized."; + static PyObject * strop_capitalize(self, args) PyObject *self; /* Not used */ @@ -534,6 +612,12 @@ strop_capitalize(self, args) } +static char swapcase__doc__[] = +"swapcase(s) -> string\n\ +\n\ +Return a copy of the string s with upper case characters\n\ +converted to lowercase and vice versa."; + static PyObject * strop_swapcase(self, args) PyObject *self; /* Not used */ @@ -574,6 +658,16 @@ strop_swapcase(self, args) } +static char atoi__doc__[] = +"atoi(s [,base]) -> int\n\ +\n\ +Return the integer represented by the string s in the given\n\ +base, which defaults to 10. The string s must consist of one\n\ +or more digits, possibly preceded by a sign. If base is 0, it\n\ +is chosen from the leading characters of s, 0 for octal, 0x or\n\ +0X for hexadecimal. If base is 16, a preceding 0x or 0X is\n\ +accepted."; + static PyObject * strop_atoi(self, args) PyObject *self; /* Not used */ @@ -622,6 +716,17 @@ strop_atoi(self, args) } +static char atol__doc__[] = +"atol(s [,base]) -> long\n\ +\n\ +Return the long integer represented by the string s in the\n\ +given base, which defaults to 10. The string s must consist\n\ +of one or more digits, possibly preceded by a sign. If base\n\ +is 0, it is chosen from the leading characters of s, 0 for\n\ +octal, 0x or 0X for hexadecimal. If base is 16, a preceding\n\ +0x or 0X is accepted. A trailing L or l is not accepted,\n\ +unless base is 0."; + static PyObject * strop_atol(self, args) PyObject *self; /* Not used */ @@ -663,6 +768,11 @@ strop_atol(self, args) } +static char atof__doc__[] = +"atof(s) -> float\n\ +\n\ +Return the floating point number represented by the string s."; + static PyObject * strop_atof(self, args) PyObject *self; /* Not used */ @@ -701,6 +811,13 @@ strop_atof(self, args) } +static char maketrans__doc__[] = +"maketrans(frm, to) -> string\n\ +\n\ +Return a translation table (a string of 256 bytes long)\n\ +suitable for use in string.translate. The strings frm and to\n\ +must be of the same length."; + static PyObject * strop_maketrans(self, args) PyObject *self; /* Not used */ @@ -732,6 +849,14 @@ strop_maketrans(self, args) } +static char translate__doc__[] = +"translate(s,table [,deletechars]) -> string\n\ +\n\ +Return a copy of the string s, where all characters occurring\n\ +in the optional argument deletechars are removed, and the\n\ +remaining characters have been mapped through the given\n\ +translation table, which must be a string of length 256."; + static PyObject * strop_translate(self, args) PyObject *self; @@ -779,7 +904,7 @@ strop_translate(self, args) for (i = 0; i < 256; i++) trans_table[i] = Py_CHARMASK(table[i]); - for (i = 0; i < dellen; i++) + for (i = 0; i < dellen; i++) trans_table[(int) Py_CHARMASK(del_table[i])] = -1; for (i = inlen; --i >= 0; ) { @@ -796,7 +921,7 @@ strop_translate(self, args) } /* Fix the size of the resulting string */ if (inlen > 0 &&_PyString_Resize(&result, output-output_start)) - return NULL; + return NULL; return result; } @@ -811,7 +936,7 @@ strop_translate(self, args) Locates the first occurance in the memory pointed to by MEM of the contents of memory pointed to by PAT. Returns the index into MEM if found, or -1 if not found. If len of PAT is greater than length of - MEM, the function returns -1. + MEM, the function returns -1. */ static int mymemfind(mem, len, pat, pat_len) char *mem; @@ -861,16 +986,16 @@ static int mymemcnt(mem, len, pat, pat_len) return nfound; } -/* +/* mymemreplace Return a string in which all occurences of PAT in memory STR are - replaced with SUB. + replaced with SUB. If length of PAT is less than length of STR or there are no occurences of PAT in STR, then the original string is returned. Otherwise, a new string is allocated here and returned. - + on return, out_len is: the length of output string, or -1 if the input string is returned, or @@ -942,7 +1067,14 @@ static char *mymemreplace(str, len, pat, pat_len, sub, sub_len, count, out_len) } -static PyObject* +static char replace__doc__[] = +"replace (str, old, new[, maxsplit]) -> string\n\ +\n\ +Return a copy of string str with all occurrences of substring\n\ +old replaced by new. If the optional argument maxsplit is\n\ +given, only the first maxsplit occurrences are replaced."; + +static PyObject * strop_replace(self, args) PyObject *self; /* Not used */ PyObject *args; @@ -978,25 +1110,25 @@ strop_replace(self, args) static PyMethodDef strop_methods[] = { - {"atof", strop_atof}, - {"atoi", strop_atoi, 1}, - {"atol", strop_atol, 1}, - {"capitalize", strop_capitalize}, - {"find", strop_find, 1}, - {"join", strop_joinfields, 1}, - {"joinfields", strop_joinfields, 1}, - {"lstrip", strop_lstrip}, - {"lower", strop_lower}, - {"maketrans", strop_maketrans, 1}, - {"replace", strop_replace, 1}, - {"rfind", strop_rfind, 1}, - {"rstrip", strop_rstrip}, - {"split", strop_splitfields, 1}, - {"splitfields", strop_splitfields, 1}, - {"strip", strop_strip}, - {"swapcase", strop_swapcase}, - {"translate", strop_translate, 1}, - {"upper", strop_upper}, + {"atof", strop_atof, 1, atof__doc__}, + {"atoi", strop_atoi, 1, atoi__doc__}, + {"atol", strop_atol, 1, atol__doc__}, + {"capitalize", strop_capitalize, 1, capitalize__doc__}, + {"find", strop_find, 1, find__doc__}, + {"join", strop_joinfields, 1, joinfields__doc__}, + {"joinfields", strop_joinfields, 1, joinfields__doc__}, + {"lstrip", strop_lstrip, 1, lstrip__doc__}, + {"lower", strop_lower, 1, lower__doc__}, + {"maketrans", strop_maketrans, 1, maketrans__doc__}, + {"replace", strop_replace, 1, replace__doc__}, + {"rfind", strop_rfind, 1, rfind__doc__}, + {"rstrip", strop_rstrip, 1,rstrip__doc__}, + {"split", strop_splitfields, 1, splitfields__doc__}, + {"splitfields", strop_splitfields, 1, splitfields__doc__}, + {"strip", strop_strip, 1, strip__doc__}, + {"swapcase", strop_swapcase, 1, swapcase__doc__}, + {"translate", strop_translate, 1, translate__doc__}, + {"upper", strop_upper, 1, upper__doc__}, {NULL, NULL} /* sentinel */ }; @@ -1007,7 +1139,8 @@ initstrop() PyObject *m, *d, *s; char buf[256]; int c, n; - m = Py_InitModule("strop", strop_methods); + m = Py_InitModule4("strop", strop_methods, strop_module__doc__, + (PyObject*)NULL, PYTHON_API_VERSION); d = PyModule_GetDict(m); /* Create 'whitespace' object */ |