Docs for c_string_type and c_string_encoding
authorRobert Bradshaw <robertwb@gmail.com>
Tue, 26 Feb 2013 10:09:30 +0000 (02:09 -0800)
committerRobert Bradshaw <robertwb@gmail.com>
Tue, 26 Feb 2013 10:11:38 +0000 (02:11 -0800)
.# Please enter the commit message for your changes. Lines starting

CHANGES.rst
docs/src/reference/compilation.rst
docs/src/tutorial/strings.rst

index d34245e..e05a5f6 100644 (file)
@@ -22,6 +22,9 @@ Features added
 
 * Keyword arguments are supported for cdef functions.
 
+* Added c_string_type and c_string_encoding directives to more easily convert between
+  Python and C strings.
+
 Bugs fixed
 ----------
 
index e386277..71e81bf 100644 (file)
@@ -208,6 +208,15 @@ Cython code.  Here is the list of currently supported directives:
     setting from the module being compiled, unless they explicitly
     set their own language level.
 
+``c_string_type`` (bytes / str / unicode)
+    Globally set the type of an implicit coercion from char* or std::string.
+
+``c_string_encoding`` (ascii, default, utf-8, etc.)
+    Globally set the encoding to use when implicitly coercing char* or std:string
+    to a unicode object.  Coercion from a unicode object to C type is only allowed
+    when set to ``ascii`` or ``default``, the latter being utf-8 in Python 3 and
+    nearly-always ascii in Python 2.
+
 How to set directives
 ---------------------
 
index 25c5346..a3e82df 100644 (file)
@@ -5,10 +5,12 @@ Unicode and passing strings
 
 Similar to the string semantics in Python 3, Cython also strictly
 separates byte strings and unicode strings.  Above all, this means
-that there is no automatic conversion between byte strings and unicode
-strings (except for what Python 2 does in string operations).  All
-encoding and decoding must pass through an explicit encoding/decoding
-step.
+that by default there is no automatic conversion between byte strings
+and unicode strings (except for what Python 2 does in string operations).
+All encoding and decoding must pass through an explicit encoding/decoding
+step.  For simple cases, the  module-level ``c_string_type`` and
+``c_string_encoding`` directives can be used to implicitly insert these
+encoding/decoding steps to ease conversion between Python and C strings.
 
 General notes about C strings
 -----------------------------