[pypy-svn] r64711 - pypy/trunk/pypy/module/_locale

getxsick at codespeak.net getxsick at codespeak.net
Mon Apr 27 03:32:36 CEST 2009


Author: getxsick
Date: Mon Apr 27 03:32:33 2009
New Revision: 64711

Modified:
   pypy/trunk/pypy/module/_locale/interp_locale.py
Log:
add HAVE_LIBINTL dependence

Modified: pypy/trunk/pypy/module/_locale/interp_locale.py
==============================================================================
--- pypy/trunk/pypy/module/_locale/interp_locale.py	(original)
+++ pypy/trunk/pypy/module/_locale/interp_locale.py	Mon Apr 27 03:32:33 2009
@@ -17,6 +17,8 @@
     includes = ['locale.h', 'limits.h']
     if HAVE_LANGINFO:
         includes += ['langinfo.h']
+    if HAVE_LIBINTL:
+        includes += ['libintl.h']
     if sys.platform == 'win32':
         includes += ['windows.h']
     _compilation_info_ = ExternalCompilationInfo(
@@ -268,127 +270,132 @@
 
 strxfrm.unwrap_spec = [ObjSpace, str]
 
-_gettext = external('gettext', [rffi.CCHARP], rffi.CCHARP)
+nl_item = rffi.INT
+_nl_langinfo = external('nl_langinfo', [nl_item], rffi.CCHARP)
 
-def gettext(space, msg):
-    """gettext(msg) -> string
-    Return translation of msg."""
-    return space.wrap(rffi.charp2str(_gettext(rffi.str2charp(msg))))
-
-gettext.unwrap_spec = [ObjSpace, str]
-
-_dgettext = external('dgettext', [rffi.CCHARP, rffi.CCHARP], rffi.CCHARP)
-
-def dgettext(space, w_domain, msg):
-    """dgettext(domain, msg) -> string
-    Return translation of msg in domain."""
-    if space.is_w(w_domain, space.w_None):
-        domain = None
-        result = _dgettext(domain, rffi.str2charp(msg))
-    else:
-        domain = space.str_w(w_domain)
-        result = _dgettext(rffi.str2charp(domain), rffi.str2charp(msg))
+def nl_langinfo(space, key):
+    """nl_langinfo(key) -> string
+    Return the value for the locale information associated with key."""
 
-    return space.wrap(rffi.charp2str(result))
+    if key in constants.values():
+        result = _nl_langinfo(rffi.cast(nl_item, key))
+        return space.wrap(rffi.charp2str(result))
+    raise OperationError(space.w_ValueError,
+                         space.wrap("unsupported langinfo constant"))
 
-dgettext.unwrap_spec = [ObjSpace, W_Root, str]
+nl_langinfo.unwrap_spec = [ObjSpace, int]
 
-_dcgettext = external('dcgettext', [rffi.CCHARP, rffi.CCHARP, rffi.INT],
-                                                                rffi.CCHARP)
+#___________________________________________________________________
+# HAVE_LIBINTL dependence
 
-def dcgettext(space, w_domain, msg, category):
-    """dcgettext(domain, msg, category) -> string
-    Return translation of msg in domain and category."""
-
-    if space.is_w(w_domain, space.w_None):
-        domain = None
-        result = _dcgettext(domain, rffi.str2charp(msg),
-                            rffi.cast(rffi.INT, category))
-    else:
-        domain = space.str_w(w_domain)
-        result = _dcgettext(rffi.str2charp(domain), rffi.str2charp(msg),
-                            rffi.cast(rffi.INT, category))
+if HAVE_LIBINTL:
+    _gettext = external('gettext', [rffi.CCHARP], rffi.CCHARP)
 
-    return space.wrap(rffi.charp2str(result))
+    def gettext(space, msg):
+        """gettext(msg) -> string
+        Return translation of msg."""
+        return space.wrap(rffi.charp2str(_gettext(rffi.str2charp(msg))))
+
+    gettext.unwrap_spec = [ObjSpace, str]
+
+    _dgettext = external('dgettext', [rffi.CCHARP, rffi.CCHARP], rffi.CCHARP)
+
+    def dgettext(space, w_domain, msg):
+        """dgettext(domain, msg) -> string
+        Return translation of msg in domain."""
+        if space.is_w(w_domain, space.w_None):
+            domain = None
+            result = _dgettext(domain, rffi.str2charp(msg))
+        else:
+            domain = space.str_w(w_domain)
+            result = _dgettext(rffi.str2charp(domain), rffi.str2charp(msg))
 
-dcgettext.unwrap_spec = [ObjSpace, W_Root, str, int]
+        return space.wrap(rffi.charp2str(result))
 
+    dgettext.unwrap_spec = [ObjSpace, W_Root, str]
 
-_textdomain = external('textdomain', [rffi.CCHARP], rffi.CCHARP)
+    _dcgettext = external('dcgettext', [rffi.CCHARP, rffi.CCHARP, rffi.INT],
+                                                                rffi.CCHARP)
 
-def textdomain(space, w_domain):
-    """textdomain(domain) -> string
-    Set the C library's textdomain to domain, returning the new domain."""
+    def dcgettext(space, w_domain, msg, category):
+        """dcgettext(domain, msg, category) -> string
+        Return translation of msg in domain and category."""
+
+        if space.is_w(w_domain, space.w_None):
+            domain = None
+            result = _dcgettext(domain, rffi.str2charp(msg),
+                                rffi.cast(rffi.INT, category))
+        else:
+            domain = space.str_w(w_domain)
+            result = _dcgettext(rffi.str2charp(domain), rffi.str2charp(msg),
+                                rffi.cast(rffi.INT, category))
 
-    if space.is_w(w_domain, space.w_None):
-        domain = None
-        result = _textdomain(domain)
-    else:
-        domain = space.str_w(w_domain)
-        result = _textdomain(rffi.str2charp(domain))
+        return space.wrap(rffi.charp2str(result))
 
-    return space.wrap(rffi.charp2str(result))
+    dcgettext.unwrap_spec = [ObjSpace, W_Root, str, int]
 
-textdomain.unwrap_spec = [ObjSpace, W_Root]
 
-nl_item = rffi.INT
-_nl_langinfo = external('nl_langinfo', [nl_item], rffi.CCHARP)
+    _textdomain = external('textdomain', [rffi.CCHARP], rffi.CCHARP)
 
-def nl_langinfo(space, key):
-    """nl_langinfo(key) -> string
-    Return the value for the locale information associated with key."""
+    def textdomain(space, w_domain):
+        """textdomain(domain) -> string
+        Set the C library's textdomain to domain, returning the new domain."""
+
+        if space.is_w(w_domain, space.w_None):
+            domain = None
+            result = _textdomain(domain)
+        else:
+            domain = space.str_w(w_domain)
+            result = _textdomain(rffi.str2charp(domain))
 
-    if key in constants.values():
-        result = _nl_langinfo(rffi.cast(nl_item, key))
         return space.wrap(rffi.charp2str(result))
-    raise OperationError(space.w_ValueError,
-                         space.wrap("unsupported langinfo constant"))
 
-nl_langinfo.unwrap_spec = [ObjSpace, int]
+    textdomain.unwrap_spec = [ObjSpace, W_Root]
 
-_bindtextdomain = external('bindtextdomain', [rffi.CCHARP, rffi.CCHARP],
+    _bindtextdomain = external('bindtextdomain', [rffi.CCHARP, rffi.CCHARP],
                                                                 rffi.CCHARP)
 
-def bindtextdomain(space, domain, w_dir):
-    """bindtextdomain(domain, dir) -> string
-    Bind the C library's domain to dir."""
-
-    if space.is_w(w_dir, space.w_None):
-        dir = None
-        dirname = _bindtextdomain(rffi.str2charp(domain), dir)
-    else:
-        dir = space.str_w(w_dir)
-        dirname = _bindtextdomain(rffi.str2charp(domain), rffi.str2charp(dir))
-
-    if not dirname:
-        errno = rposix.get_errno()
-        raise OperationError(space.w_OSError, space.wrap(errno))
-    return space.wrap(rffi.charp2str(dirname))
+    def bindtextdomain(space, domain, w_dir):
+        """bindtextdomain(domain, dir) -> string
+        Bind the C library's domain to dir."""
+
+        if space.is_w(w_dir, space.w_None):
+            dir = None
+            dirname = _bindtextdomain(rffi.str2charp(domain), dir)
+        else:
+            dir = space.str_w(w_dir)
+            dirname = _bindtextdomain(rffi.str2charp(domain),
+                                        rffi.str2charp(dir))
+
+        if not dirname:
+            errno = rposix.get_errno()
+            raise OperationError(space.w_OSError, space.wrap(errno))
+        return space.wrap(rffi.charp2str(dirname))
 
-bindtextdomain.unwrap_spec = [ObjSpace, str, W_Root]
+    bindtextdomain.unwrap_spec = [ObjSpace, str, W_Root]
 
-_bind_textdomain_codeset = external('bind_textdomain_codeset',
+    _bind_textdomain_codeset = external('bind_textdomain_codeset',
                                     [rffi.CCHARP, rffi.CCHARP], rffi.CCHARP)
 
-# TODO: platform dependent
-def bind_textdomain_codeset(space, domain, w_codeset):
-    """bind_textdomain_codeset(domain, codeset) -> string
-    Bind the C library's domain to codeset."""
-
-    if space.is_w(w_codeset, space.w_None):
-        codeset = None
-        result = _bind_textdomain_codeset(rffi.str2charp(domain), codeset)
-    else:
-        codeset = space.str_w(w_codeset)
-        result = _bind_textdomain_codeset(rffi.str2charp(domain),
-                                        rffi.str2charp(codeset))
+    # TODO: platform dependent
+    def bind_textdomain_codeset(space, domain, w_codeset):
+        """bind_textdomain_codeset(domain, codeset) -> string
+        Bind the C library's domain to codeset."""
+
+        if space.is_w(w_codeset, space.w_None):
+            codeset = None
+            result = _bind_textdomain_codeset(rffi.str2charp(domain), codeset)
+        else:
+            codeset = space.str_w(w_codeset)
+            result = _bind_textdomain_codeset(rffi.str2charp(domain),
+                                            rffi.str2charp(codeset))
 
-    if not result:
-        return space.w_None
-    else:
-        return space.wrap(rffi.charp2str(result))
+        if not result:
+            return space.w_None
+        else:
+            return space.wrap(rffi.charp2str(result))
 
-bind_textdomain_codeset.unwrap_spec = [ObjSpace, str, W_Root]
+    bind_textdomain_codeset.unwrap_spec = [ObjSpace, str, W_Root]
 
 #___________________________________________________________________
 # getdefaultlocale() implementation for Windows



More information about the Pypy-commit mailing list