Subversion Repositories tendra.SVN

Rev

Rev 5 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 6
Line -... Line 1...
-
 
1
/*
-
 
2
 * Copyright (c) 2002-2006 The TenDRA Project <http://www.tendra.org/>.
-
 
3
 * All rights reserved.
-
 
4
 *
-
 
5
 * Redistribution and use in source and binary forms, with or without
-
 
6
 * modification, are permitted provided that the following conditions are met:
-
 
7
 *
-
 
8
 * 1. Redistributions of source code must retain the above copyright notice,
-
 
9
 *    this list of conditions and the following disclaimer.
-
 
10
 * 2. Redistributions in binary form must reproduce the above copyright notice,
-
 
11
 *    this list of conditions and the following disclaimer in the documentation
-
 
12
 *    and/or other materials provided with the distribution.
-
 
13
 * 3. Neither the name of The TenDRA Project nor the names of its contributors
-
 
14
 *    may be used to endorse or promote products derived from this software
-
 
15
 *    without specific, prior written permission.
-
 
16
 *
-
 
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
-
 
18
 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-
 
19
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-
 
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-
 
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-
 
22
 * EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-
 
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-
 
24
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-
 
25
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-
 
26
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-
 
27
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
28
 *
-
 
29
 * $Id$
-
 
30
 */
1
/*
31
/*
2
    		 Crown Copyright (c) 1997
32
    		 Crown Copyright (c) 1997
3
    
33
    
4
    This TenDRA(r) Computer Program is subject to Copyright
34
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
35
    owned by the United Kingdom Secretary of State for Defence
Line 42... Line 72...
42
*/
72
*/
43
 
73
 
44
#include "err_ops.h"
74
#include "err_ops.h"
45
@if token
75
@if token
46
 
76
 
47
#pragma token PROC (\
77
#pragma token PROC(\
48
	EXP : int : sev,\
78
	EXP : int : sev,\
49
	EXP : int : no,\
79
	EXP : int : no,\
50
	EXP : unsigned : sz,\
80
	EXP : unsigned : sz,\
51
	EXP lvalue : ERROR : e\
81
	EXP lvalue : ERROR : e\
52
    ) STATEMENT MAKE_err_simple_args #
82
    ) STATEMENT MAKE_err_simple_args #
53
 
83
 
54
#pragma token PROC (\
84
#pragma token PROC(\
55
	EXP : ERROR : e\
85
	EXP : ERROR : e\
56
    ) STATEMENT DESTROY_err_simple_args #
86
    ) STATEMENT DESTROY_err_simple_args #
57
 
87
 
58
#pragma token PROC (\
88
#pragma token PROC(\
59
	EXP : ERROR : e,\
89
	EXP : ERROR : e,\
60
	EXP : unsigned : n,\
90
	EXP : unsigned : n,\
61
	TYPE t\
91
	TYPE t\
62
    ) EXP : PTR ( t ) : err_arg #
92
    ) EXP : PTR(t) : err_arg #
63
 
93
 
64
#pragma interface MAKE_err_simple_args DESTROY_err_simple_args err_arg
94
#pragma interface MAKE_err_simple_args DESTROY_err_simple_args err_arg
65
 
95
 
66
@else
96
@else
67
 
97
 
68
#define SIZE_err_simple		4
98
#define SIZE_err_simple		4
69
 
99
 
70
#define MAKE_err_simple_args( A, B, C, E )\
100
#define MAKE_err_simple_args(A, B, C, E)\
71
    {\
101
    {\
72
	unsigned sz_ = ( C ) ;\
102
	unsigned sz_ = (C);\
73
	c_class *err_ = GEN_c_class ( SIZE_err_simple + sz_, TYPEID_err ) ;\
103
	c_class *err_ = GEN_c_class(SIZE_err_simple + sz_, TYPEID_err);\
74
	err_->ag_tag = err_simple_tag ;\
104
	err_->ag_tag = err_simple_tag ;\
75
	COPY_int ( err_severity ( err_ ), ( A ) ) ;\
105
	COPY_int(err_severity(err_), (A));\
76
	COPY_int ( err_simple_number ( err_ ), ( B ) ) ;\
106
	COPY_int(err_simple_number(err_), (B));\
77
	COPY_unsigned ( err_simple_size ( err_ ), sz_ ) ;\
107
	COPY_unsigned(err_simple_size(err_), sz_);\
78
	( E ) = err_ ;\
108
	(E) = err_ ;\
79
    }
109
    }
80
 
110
 
81
#define DESTROY_err_simple_args( E )\
111
#define DESTROY_err_simple_args(E)\
82
    {\
112
    {\
83
	ERROR err_ = ( E ) ;\
113
	ERROR err_ = (E);\
84
	unsigned sz_ = DEREF_unsigned ( err_simple_size ( err_ ) ) ;\
114
	unsigned sz_ = DEREF_unsigned(err_simple_size(err_));\
85
	destroy_c_class ( err_, SIZE_err_simple + sz_ ) ;\
115
	destroy_c_class(err_, SIZE_err_simple + sz_);\
86
    }
116
    }
87
 
117
 
88
#define err_arg( E, A, T )\
-
 
89
	( ( E ) + ( SIZE_err_simple + ( A ) ) )
118
#define err_arg(E, A, T)	((E) + (SIZE_err_simple + (A)))
90
 
119
 
91
@endif
120
@endif
92
 
121
 
93
#endif
122
#endif