libsoup r1068 - in trunk: . libsoup
- From: danw svn gnome org
- To: svn-commits-list gnome org
- Subject: libsoup r1068 - in trunk: . libsoup
- Date: Sat, 2 Feb 2008 22:14:23 +0000 (GMT)
Author: danw
Date: Sat Feb 2 22:14:23 2008
New Revision: 1068
URL: http://svn.gnome.org/viewvc/libsoup?rev=1068&view=rev
Log:
* libsoup/soup-method.h (SOUP_METHOD_GET, etc): Fix these so that
direct comparisons against them actually *are* faster than doing
strcmp, as the docs claim.
* libsoup/soup-uri.h (SOUP_URI_SCHEME_HTTP,
SOUP_URI_SCHEME_HTTPS): likewise
Added:
trunk/libsoup/soup-method.c
Modified:
trunk/ChangeLog
trunk/libsoup/Makefile.am
trunk/libsoup/soup-method.h
trunk/libsoup/soup-uri.c
trunk/libsoup/soup-uri.h
Modified: trunk/libsoup/Makefile.am
==============================================================================
--- trunk/libsoup/Makefile.am (original)
+++ trunk/libsoup/Makefile.am Sat Feb 2 22:14:23 2008
@@ -126,6 +126,7 @@
soup-message-queue.h \
soup-message-queue.c \
soup-message-server-io.c \
+ soup-method.c \
soup-misc.c \
soup-nossl.c \
soup-path-map.h \
Added: trunk/libsoup/soup-method.c
==============================================================================
--- (empty file)
+++ trunk/libsoup/soup-method.c Sat Feb 2 22:14:23 2008
@@ -0,0 +1,27 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * soup-method.c: declarations of _SOUP_METHOD_* variables
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+const char *_SOUP_METHOD_CONNECT;
+const char *_SOUP_METHOD_COPY;
+const char *_SOUP_METHOD_DELETE;
+const char *_SOUP_METHOD_GET;
+const char *_SOUP_METHOD_HEAD;
+const char *_SOUP_METHOD_LOCK;
+const char *_SOUP_METHOD_MKCOL;
+const char *_SOUP_METHOD_MOVE;
+const char *_SOUP_METHOD_OPTIONS;
+const char *_SOUP_METHOD_PATCH;
+const char *_SOUP_METHOD_POST;
+const char *_SOUP_METHOD_PROPFIND;
+const char *_SOUP_METHOD_PROPPATCH;
+const char *_SOUP_METHOD_PUT;
+const char *_SOUP_METHOD_TRACE;
+const char *_SOUP_METHOD_UNLOCK;
Modified: trunk/libsoup/soup-method.h
==============================================================================
--- trunk/libsoup/soup-method.h (original)
+++ trunk/libsoup/soup-method.h Sat Feb 2 22:14:23 2008
@@ -1,6 +1,6 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
- * Copyright (C) 2001-2002, Ximian, Inc.
+ * Copyright (C) 2008 Red Hat, Inc.
*/
#ifndef SOUP_METHOD_H
@@ -31,22 +31,44 @@
* </programlisting></informalexample>
**/
-#define SOUP_METHOD_POST (g_intern_static_string ("POST"))
-#define SOUP_METHOD_GET (g_intern_static_string ("GET"))
-#define SOUP_METHOD_HEAD (g_intern_static_string ("HEAD"))
-#define SOUP_METHOD_OPTIONS (g_intern_static_string ("OPTIONS"))
-#define SOUP_METHOD_PUT (g_intern_static_string ("PUT"))
-#define SOUP_METHOD_MOVE (g_intern_static_string ("MOVE"))
-#define SOUP_METHOD_COPY (g_intern_static_string ("COPY"))
-#define SOUP_METHOD_DELETE (g_intern_static_string ("DELETE"))
-#define SOUP_METHOD_TRACE (g_intern_static_string ("TRACE"))
-#define SOUP_METHOD_CONNECT (g_intern_static_string ("CONNECT"))
-#define SOUP_METHOD_MKCOL (g_intern_static_string ("MKCOL"))
-#define SOUP_METHOD_PROPPATCH (g_intern_static_string ("PROPPATCH"))
-#define SOUP_METHOD_PROPFIND (g_intern_static_string ("PROPFIND"))
-#define SOUP_METHOD_PATCH (g_intern_static_string ("PATCH"))
-#define SOUP_METHOD_LOCK (g_intern_static_string ("LOCK"))
-#define SOUP_METHOD_UNLOCK (g_intern_static_string ("UNLOCK"))
+/* HTTP/1.1 methods */
+#define SOUP_METHOD_OPTIONS (_SOUP_METHOD_OPTIONS ? _SOUP_METHOD_OPTIONS : (_SOUP_METHOD_OPTIONS = g_intern_static_string ("OPTIONS")))
+#define SOUP_METHOD_GET (_SOUP_METHOD_GET ? _SOUP_METHOD_GET : (_SOUP_METHOD_GET = g_intern_static_string ("GET")))
+#define SOUP_METHOD_HEAD (_SOUP_METHOD_HEAD ? _SOUP_METHOD_HEAD : (_SOUP_METHOD_HEAD = g_intern_static_string ("HEAD")))
+#define SOUP_METHOD_POST (_SOUP_METHOD_POST ? _SOUP_METHOD_POST : (_SOUP_METHOD_POST = g_intern_static_string ("POST")))
+#define SOUP_METHOD_PUT (_SOUP_METHOD_PUT ? _SOUP_METHOD_PUT : (_SOUP_METHOD_PUT = g_intern_static_string ("PUT")))
+#define SOUP_METHOD_DELETE (_SOUP_METHOD_DELETE ? _SOUP_METHOD_DELETE : (_SOUP_METHOD_DELETE = g_intern_static_string ("DELETE")))
+#define SOUP_METHOD_TRACE (_SOUP_METHOD_TRACE ? _SOUP_METHOD_TRACE : (_SOUP_METHOD_TRACE = g_intern_static_string ("TRACE")))
+#define SOUP_METHOD_CONNECT (_SOUP_METHOD_CONNECT ? _SOUP_METHOD_CONNECT : (_SOUP_METHOD_CONNECT = g_intern_static_string ("CONNECT")))
+
+/* WebDAV methods */
+#define SOUP_METHOD_PROPFIND (_SOUP_METHOD_PROPFIND ? _SOUP_METHOD_PROPFIND : (_SOUP_METHOD_PROPFIND = g_intern_static_string ("PROPFIND")))
+#define SOUP_METHOD_PROPPATCH (_SOUP_METHOD_PROPPATCH ? _SOUP_METHOD_PROPPATCH : (_SOUP_METHOD_PROPPATCH = g_intern_static_string ("PROPPATCH")))
+#define SOUP_METHOD_MKCOL (_SOUP_METHOD_MKCOL ? _SOUP_METHOD_MKCOL : (_SOUP_METHOD_MKCOL = g_intern_static_string ("MKCOL")))
+#define SOUP_METHOD_COPY (_SOUP_METHOD_COPY ? _SOUP_METHOD_COPY : (_SOUP_METHOD_COPY = g_intern_static_string ("COPY")))
+#define SOUP_METHOD_MOVE (_SOUP_METHOD_MOVE ? _SOUP_METHOD_MOVE : (_SOUP_METHOD_MOVE = g_intern_static_string ("MOVE")))
+#define SOUP_METHOD_LOCK (_SOUP_METHOD_LOCK ? _SOUP_METHOD_LOCK : (_SOUP_METHOD_LOCK = g_intern_static_string ("LOCK")))
+#define SOUP_METHOD_UNLOCK (_SOUP_METHOD_UNLOCK ? _SOUP_METHOD_UNLOCK : (_SOUP_METHOD_UNLOCK = g_intern_static_string ("UNLOCK")))
+
+/* Do not use these variables directly; use the macros above, which
+ * ensure that they get initialized properly.
+ */
+extern const char *_SOUP_METHOD_OPTIONS;
+extern const char *_SOUP_METHOD_GET;
+extern const char *_SOUP_METHOD_HEAD;
+extern const char *_SOUP_METHOD_POST;
+extern const char *_SOUP_METHOD_PUT;
+extern const char *_SOUP_METHOD_DELETE;
+extern const char *_SOUP_METHOD_TRACE;
+extern const char *_SOUP_METHOD_CONNECT;
+
+extern const char *_SOUP_METHOD_PROPFIND;
+extern const char *_SOUP_METHOD_PROPPATCH;
+extern const char *_SOUP_METHOD_MKCOL;
+extern const char *_SOUP_METHOD_COPY;
+extern const char *_SOUP_METHOD_MOVE;
+extern const char *_SOUP_METHOD_LOCK;
+extern const char *_SOUP_METHOD_UNLOCK;
G_END_DECLS
Modified: trunk/libsoup/soup-uri.c
==============================================================================
--- trunk/libsoup/soup-uri.c (original)
+++ trunk/libsoup/soup-uri.c Sat Feb 2 22:14:23 2008
@@ -81,19 +81,15 @@
static char *uri_decoded_copy (const char *str, int length);
static char *uri_normalized_copy (const char *str, int length, const char *unescape_extra);
-static const char *http_scheme, *https_scheme;
+const char *_SOUP_URI_SCHEME_HTTP, *_SOUP_URI_SCHEME_HTTPS;
static inline const char *
soup_uri_get_scheme (const char *scheme, int len)
{
if (len == 4 && !strncmp (scheme, "http", 4)) {
- if (G_UNLIKELY (!http_scheme))
- http_scheme = g_intern_static_string ("http");
- return http_scheme;
+ return SOUP_URI_SCHEME_HTTP;
} else if (len == 5 && !strncmp (scheme, "https", 5)) {
- if (G_UNLIKELY (!https_scheme))
- https_scheme = g_intern_static_string ("https");
- return https_scheme;
+ return SOUP_URI_SCHEME_HTTPS;
} else {
char *lower_scheme;
@@ -107,9 +103,9 @@
static inline guint
soup_scheme_default_port (const char *scheme)
{
- if (scheme == http_scheme)
+ if (scheme == SOUP_URI_SCHEME_HTTP)
return 80;
- else if (scheme == https_scheme)
+ else if (scheme == SOUP_URI_SCHEME_HTTPS)
return 443;
else
return 0;
@@ -339,7 +335,8 @@
}
/* HTTP-specific stuff */
- if (uri->scheme == http_scheme || uri->scheme == https_scheme) {
+ if (uri->scheme == SOUP_URI_SCHEME_HTTP ||
+ uri->scheme == SOUP_URI_SCHEME_HTTPS) {
if (!uri->host) {
soup_uri_free (uri);
return NULL;
@@ -754,8 +751,8 @@
gboolean
soup_uri_uses_default_port (SoupURI *uri)
{
- g_return_val_if_fail (uri->scheme == http_scheme ||
- uri->scheme == https_scheme, FALSE);
+ g_return_val_if_fail (uri->scheme == SOUP_URI_SCHEME_HTTP ||
+ uri->scheme == SOUP_URI_SCHEME_HTTPS, FALSE);
return uri->port == soup_scheme_default_port (uri->scheme);
}
Modified: trunk/libsoup/soup-uri.h
==============================================================================
--- trunk/libsoup/soup-uri.h (original)
+++ trunk/libsoup/soup-uri.h Sat Feb 2 22:14:23 2008
@@ -30,8 +30,9 @@
GType soup_uri_get_type (void);
#define SOUP_TYPE_URI (soup_uri_get_type ())
-#define SOUP_URI_SCHEME_HTTP (g_intern_static_string ("http"))
-#define SOUP_URI_SCHEME_HTTPS (g_intern_static_string ("https"))
+#define SOUP_URI_SCHEME_HTTP (_SOUP_URI_SCHEME_HTTP ? _SOUP_URI_SCHEME_HTTP : (_SOUP_URI_SCHEME_HTTP = g_intern_static_string ("http")))
+#define SOUP_URI_SCHEME_HTTPS (_SOUP_URI_SCHEME_HTTPS ? _SOUP_URI_SCHEME_HTTPS : (_SOUP_URI_SCHEME_HTTPS = g_intern_static_string ("https")))
+extern const char *_SOUP_URI_SCHEME_HTTP, *_SOUP_URI_SCHEME_HTTPS;
SoupURI *soup_uri_new_with_base (SoupURI *base,
const char *uri_string);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]