Unify Framework Lib 1.6.0
cc.h
Go to the documentation of this file.
1
11/*
12 * Copyright (c) 2003, Adam Dunkels.
13 * All rights reserved.
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 * 1. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above
21 * copyright notice, this list of conditions and the following
22 * disclaimer in the documentation and/or other materials provided
23 * with the distribution.
24 * 3. The name of the author may not be used to endorse or promote
25 * products derived from this software without specific prior
26 * written permission.
27 *
28 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
29 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
30 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
32 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
34 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
36 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
37 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *
40 * This file is part of the Contiki desktop OS
41 *
42 * $Id: cc.h,v 1.6 2008/07/02 08:35:29 adamdunkels Exp $
43 *
44 */
45#ifndef __CC_H__
46#define __CC_H__
47
48#include "contiki-conf.h"
49
54#if CC_CONF_REENTRANT_ARGS
55#define CC_REENTRANT_ARG reentrant
56#else /* CC_CONF_REGISTER_ARGS */
57#define CC_REENTRANT_ARG
58#endif /* CC_CONF_REGISTER_ARGS */
59
60
61#if CC_CONF_ALIGN_PACK
62#define CC_ALIGN_PACK __attribute__((__packed__))
63#else /* CC_CONF_REGISTER_ARGS */
64#define CC_ALIGN_PACK
65#endif /* CC_CONF_REGISTER_ARGS */
66
67
72#if CC_CONF_REGISTER_ARGS
73#define CC_REGISTER_ARG register
74#else /* CC_CONF_REGISTER_ARGS */
75#define CC_REGISTER_ARG
76#endif /* CC_CONF_REGISTER_ARGS */
77
82#if CC_CONF_FUNCTION_POINTER_ARGS
83#define CC_FUNCTION_POINTER_ARGS 1
84#else /* CC_CONF_FUNCTION_POINTER_ARGS */
85#define CC_FUNCTION_POINTER_ARGS 0
86#endif /* CC_CONF_FUNCTION_POINTER_ARGS */
87
92#ifdef CC_CONF_FASTCALL
93#define CC_FASTCALL CC_CONF_FASTCALL
94#else /* CC_CONF_FASTCALL */
95#define CC_FASTCALL
96#endif /* CC_CONF_FASTCALL */
97
101#ifdef CC_CONF_CONST_FUNCTION_BUG
102#define CC_CONST_FUNCTION
103#else /* CC_CONF_FASTCALL */
104#define CC_CONST_FUNCTION const
105#endif /* CC_CONF_FASTCALL */
106
110#if CC_CONF_UNSIGNED_CHAR_BUGS
111#define CC_UNSIGNED_CHAR_BUGS 1
112#else /* CC_CONF_UNSIGNED_CHAR_BUGS */
113#define CC_UNSIGNED_CHAR_BUGS 0
114#endif /* CC_CONF_UNSIGNED_CHAR_BUGS */
115
119#if CC_CONF_DOUBLE_HASH
120#define CC_DOUBLE_HASH 1
121#else /* CC_CONF_DOUBLE_HASH */
122#define CC_DOUBLE_HASH 0
123#endif /* CC_CONF_DOUBLE_HASH */
124
125#ifdef CC_CONF_INLINE
126#define CC_INLINE CC_CONF_INLINE
127#else /* CC_CONF_INLINE */
128#define CC_INLINE
129#endif /* CC_CONF_INLINE */
130
134#ifdef CC_CONF_ASSIGN_AGGREGATE
135#define CC_ASSIGN_AGGREGATE(dest, src) CC_CONF_ASSIGN_AGGREGATE(dest, src)
136#else /* CC_CONF_ASSIGN_AGGREGATE */
137#define CC_ASSIGN_AGGREGATE(dest, src) *dest = *src
138#endif /* CC_CONF_ASSIGN_AGGREGATE */
139
140#if CC_CONF_NO_VA_ARGS
141#define CC_NO_VA_ARGS CC_CONF_NO_VA_ARGS
142#else
143#define CC_NO_VA_ARGS 0
144#endif
145
146#ifndef NULL
147#define NULL 0
148#endif /* NULL */
149
150#define CC_CONCAT2(s1, s2) s1##s2
158#define CC_CONCAT(s1, s2) CC_CONCAT2(s1, s2)
159
160#endif /* __CC_H__ */