Edit

kc3-lang/libevent/include/event2/keyvalq_struct.h

Branch :

  • Show log

    Commit

  • Author : Nick Mathewson
    Date : 2010-09-02 11:36:44
    Hash : ca9048f1
    Message : Move evkeyvalq into a separate header for evhttp_parse_query users The evhttp_parse_query API is a bit misdesigned; all the other evkeyvalq stuff is abstract and lets you get away with having a header stub, but evhttp_parse_query seems to require that you instantiate an empty evkeyvalq of your own.

  • include/event2/keyvalq_struct.h
  • /*
     * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
     * Copyright (c) 2007-2010 Niels Provos and Nick Mathewson
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     * 1. Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     * 2. Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     * 3. The name of the author may not be used to endorse or promote products
     *    derived from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    #ifndef _EVENT2_EVENT_KEYVALQ_STRUCT_H_
    #define _EVENT2_EVENT_KEYVALQ_STRUCT_H_
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    /* Fix so that people don't have to run with <sys/queue.h> */
    /* XXXX This code is duplicated with event_struct.h */
    #ifndef TAILQ_ENTRY
    #define _EVENT_DEFINED_TQENTRY
    #define TAILQ_ENTRY(type)						\
    struct {								\
    	struct type *tqe_next;	/* next element */			\
    	struct type **tqe_prev;	/* address of previous next element */	\
    }
    #endif /* !TAILQ_ENTRY */
    
    #ifndef TAILQ_HEAD
    #define _EVENT_DEFINED_TQHEAD
    #define TAILQ_HEAD(name, type)			\
    struct name {					\
    	struct type *tqh_first;			\
    	struct type **tqh_last;			\
    }
    #endif
    
    /*
     * Key-Value pairs.  Can be used for HTTP headers but also for
     * query argument parsing.
     */
    struct evkeyval {
    	TAILQ_ENTRY(evkeyval) next;
    
    	char *key;
    	char *value;
    };
    
    TAILQ_HEAD (evkeyvalq, evkeyval);
    
    /* XXXX This code is duplicated with event_struct.h */
    #ifdef _EVENT_DEFINED_TQENTRY
    #undef TAILQ_ENTRY
    #endif
    
    #ifdef _EVENT_DEFINED_TQHEAD
    #undef TAILQ_HEAD
    #endif
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif