]> git.saurik.com Git - apt.git/commitdiff
Turn tolower_ascii() and isspace_ascii() into inline functions
authorJulian Andres Klode <jak@debian.org>
Tue, 29 Dec 2015 02:19:51 +0000 (03:19 +0100)
committerJulian Andres Klode <jak@debian.org>
Tue, 29 Dec 2015 02:19:51 +0000 (03:19 +0100)
To preserve compatibility, the new inline functions have _inline
as a suffix, and a macro defines the old names to refer to the
inline variants.

The old functions are still preserved for binary compatibility.

Also simplify the implementation of both functions.

apt-pkg/contrib/strutl.cc
apt-pkg/contrib/strutl.h

index 457bd73a25a98035157b35b9a1ab2a90a243f1c6..60e3156f1f20efa24f4e3280fcbc32957284dcff 100644 (file)
@@ -1369,17 +1369,17 @@ string StripEpoch(const string &VerStr)
    return VerStr.substr(i+1);
 }
                                                                        /*}}}*/
+
 // tolower_ascii - tolower() function that ignores the locale          /*{{{*/
 // ---------------------------------------------------------------------
 /* This little function is the most called method we have and tries
    therefore to do the absolut minimum - and is notable faster than
    standard tolower/toupper and as a bonus avoids problems with different
    locales - we only operate on ascii chars anyway. */
+#undef tolower_ascii
 int tolower_ascii(int const c)
 {
-   if (c >= 'A' && c <= 'Z')
-      return c + 32;
-   return c;
+   return tolower_ascii_inline(c);
 }
                                                                        /*}}}*/
 
@@ -1389,14 +1389,10 @@ int tolower_ascii(int const c)
    therefore to do the absolut minimum - and is notable faster than
    standard isspace() and as a bonus avoids problems with different
    locales - we only operate on ascii chars anyway. */
+#undef isspace_ascii
 int isspace_ascii(int const c)
 {
-   return (c == ' '
-           || c == '\f'
-           || c == '\n'
-           || c == '\r'
-           || c == '\t'
-           || c == '\v');
+   return isspace_ascii_inline(c);
 }
                                                                        /*}}}*/
 
index 6d1a1d7ee6e732f9f16d45a232476d2fe27fa6e0..a8bbc38af55ef1b04531fdb5aa23e96cdc5161da 100644 (file)
@@ -105,8 +105,22 @@ void ioprintf(std::ostream &out,const char *format,...) APT_PRINTF(2);
 void strprintf(std::string &out,const char *format,...) APT_PRINTF(2);
 char *safe_snprintf(char *Buffer,char *End,const char *Format,...) APT_PRINTF(3);
 bool CheckDomainList(const std::string &Host, const std::string &List);
-int tolower_ascii(int const c) APT_CONST APT_HOT;
-int isspace_ascii(int const c) APT_CONST APT_HOT;
+
+/* Do some compat mumbo jumbo */
+#define tolower_ascii  tolower_ascii_inline
+#define isspace_ascii  isspace_ascii_inline
+
+APT_CONST APT_HOT
+static inline int tolower_ascii_inline(int const c)
+{
+   return (c >= 'A' && c <= 'Z') ? c + 32 : c;
+}
+APT_CONST APT_HOT
+static inline int isspace_ascii_inline(int const c)
+{
+   // 9='\t',10='\n',11='\v',12='\f',13='\r',32=' '
+   return (c >= 9 && c <= 13) || c == ' ';
+}
 
 std::string StripEpoch(const std::string &VerStr);