|  | bits shared by the stringobject and unicodeobject implementations (and | 
|  | possibly other modules, in a not too distant future). | 
|  |  | 
|  | the stuff in here is included into relevant places; see the individual | 
|  | source files for details. | 
|  |  | 
|  | -------------------------------------------------------------------- | 
|  | the following defines used by the different modules: | 
|  |  | 
|  | STRINGLIB_CHAR | 
|  |  | 
|  | the type used to hold a character (char or Py_UNICODE) | 
|  |  | 
|  | STRINGLIB_EMPTY | 
|  |  | 
|  | a PyObject representing the empty string, only to be used if | 
|  | STRINGLIB_MUTABLE is 0 | 
|  |  | 
|  | Py_ssize_t STRINGLIB_LEN(PyObject*) | 
|  |  | 
|  | returns the length of the given string object (which must be of the | 
|  | right type) | 
|  |  | 
|  | PyObject* STRINGLIB_NEW(STRINGLIB_CHAR*, Py_ssize_t) | 
|  |  | 
|  | creates a new string object | 
|  |  | 
|  | STRINGLIB_CHAR* STRINGLIB_STR(PyObject*) | 
|  |  | 
|  | returns the pointer to the character data for the given string | 
|  | object (which must be of the right type) | 
|  |  | 
|  | int STRINGLIB_CHECK_EXACT(PyObject *) | 
|  |  | 
|  | returns true if the object is an instance of our type, not a subclass | 
|  |  | 
|  | STRINGLIB_MUTABLE | 
|  |  | 
|  | must be 0 or 1 to tell the cpp macros in stringlib code if the object | 
|  | being operated on is mutable or not |