RPA Toolkit
added copyright headers
[rpatk.git] / rvm / rvmerror.h
1 /*
2  *  Regular Pattern Analyzer (RPA)
3  *  Copyright (c) 2009-2010 Martin Stoilov
4  *
5  *  This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  *
18  *  Martin Stoilov <martin@rpasearch.com>
19  */
20
21 #ifndef _RVMERROR_H_
22 #define _RVMERROR_H_
23
24 #define RVM_E_NONE 0
25
26 #include "rtypes.h"
27
28 typedef ruinteger rvm_error_t;
29
30 #define RVM_ERROR_BITS 16
31 #define RVM_ERROR_MASK ((1 << RVM_ERROR_BITS) - 1)
32
33 #define rvm_make_error(__m__, __c__) ((rvm_error_t)(((__m__) << RVM_ERROR_BITS) | ((__c__) & RVM_ERROR_MASK)))
34 #define rvm_set_error(__p__, __m__, __c__) do { (*(__p__) = rvm_make_error(__m__, __c__)); } while (0)
35 #define rvm_error_code(__e__) ((__e__) & RVM_ERROR_MASK)
36 #define rvm_error_module(__e__) ((__e__) >> RVM_ERROR_BITS)
37
38 #endif