pkg/kamailio/fedora/16: Updated rel in .spec to dev2
[sip-router] / lvalue.h
1 /* 
2  * $Id$
3  * 
4  * Copyright (C) 2008 iptelorg GmbH
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 /**
19  * @file 
20  * @brief lvalues (assignment)
21  */
22 /* 
23  * History:
24  * --------
25  *  2008-11-30  initial version (andrei)
26  */
27
28 #ifndef __lvalue_h_
29 #define __lvalue_h_
30
31 #include "rvalue.h"
32 #include "usr_avp.h"
33 #include "pvar.h"
34 #include "parser/msg_parser.h"
35 #include "action.h"
36
37 union lval_u{
38         pv_spec_t pvs;
39         avp_spec_t avps;
40 };
41
42 enum lval_type{
43         LV_NONE, LV_AVP, LV_PVAR
44 };
45
46 struct lvalue{
47         enum lval_type type;
48         union lval_u lv;
49 };
50
51 /* lval operators */
52 #define EQ_T 254 /* k compatibility */
53
54
55
56 /** eval rve and assign the result to lv
57  * lv=eval(rve)
58  *
59  * @param h  - script context
60  * @param msg - sip msg
61  * @param lv - lvalue
62  * @param rve - rvalue expression
63  * @return >= 0 on success (expr. bool value), -1 on error
64  */
65 int lval_assign(struct run_act_ctx* h, struct sip_msg* msg, 
66                                 struct lvalue* lv, struct rval_expr* rve);
67 #endif /* __lvalue_h_*/