1 /* ==================================================================== 2 * The Kannel Software License, Version 1.0 3 * 4 * Copyright (c) 2001-2014 Kannel Group 5 * Copyright (c) 1998-2001 WapIT Ltd. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in 17 * the documentation and/or other materials provided with the 18 * distribution. 19 * 20 * 3. The end-user documentation included with the redistribution, 21 * if any, must include the following acknowledgment: 22 * "This product includes software developed by the 23 * Kannel Group (http://www.kannel.org/)." 24 * Alternately, this acknowledgment may appear in the software itself, 25 * if and wherever such third-party acknowledgments normally appear. 26 * 27 * 4. The names "Kannel" and "Kannel Group" must not be used to 28 * endorse or promote products derived from this software without 29 * prior written permission. For written permission, please 30 * contact org@kannel.org. 31 * 32 * 5. Products derived from this software may not be called "Kannel", 33 * nor may "Kannel" appear in their name, without prior written 34 * permission of the Kannel Group. 35 * 36 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 37 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 38 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 39 * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS 40 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 41 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 42 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 43 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 44 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 45 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 46 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 47 * ==================================================================== 48 * 49 * This software consists of voluntary contributions made by many 50 * individuals on behalf of the Kannel Group. For more information on 51 * the Kannel Group, please see <http://www.kannel.org/>. 52 * 53 * Portions of this software are based upon software originally written at 54 * WapIT Ltd., Helsinki, Finland for the Kannel project. 55 */ 56 57 /* 58 * wap_events.h - definitions for wapbox events 59 * 60 * Aarno Syv�nen 61 * Lars Wirzenius 62 */ 63 64 65 #ifndef WAP_EVENTS_H 66 #define WAP_EVENTS_H 67 68 #include "gwlib/gwlib.h" 69 #include "wap_addr.h" 70 71 72 typedef struct WAPEvent WAPEvent; 73 74 /* 75 * Names of WAPEvents. 76 */ 77 typedef enum { 78 #define WAPEVENT(name, prettyname, fields) name, 79 #include "wap_events.def" 80 WAPEventNameCount 81 } WAPEventName; 82 83 84 /* 85 * The actual WAPEvent. 86 */ 87 struct WAPEvent { 88 WAPEventName type; 89 90 union { 91 #define WAPEVENT(name, prettyname, fields) struct name { fields } name; 92 #define OCTSTR(name) Octstr *name; 93 #define OPTIONAL_OCTSTR(name) Octstr *name; /* May be NULL */ 94 #define INTEGER(name) long name; 95 #define HTTPHEADER(name) List *name; 96 #define WTLSPDUS(name) List *name; 97 #define ADDRTUPLE(name) WAPAddrTuple *name; 98 #define CAPABILITIES(name) List *name; 99 #include "wap_events.def" 100 } u; 101 }; 102 103 104 105 WAPEvent *wap_event_create_real(WAPEventName type, const char *file, long line, 106 const char *func); 107 #define wap_event_create(type) \ 108 gw_claim_area(wap_event_create_real((type), __FILE__, __LINE__, __func__)) 109 void wap_event_destroy(WAPEvent *event); 110 void wap_event_destroy_item(void *event); 111 WAPEvent *wap_event_duplicate(WAPEvent *event); 112 113 const char *wap_event_name(WAPEventName type); 114 void wap_event_dump(WAPEvent *event); 115 void wap_event_assert(WAPEvent *event); 116 117 118 #endif 119