1 /*****************************************************************************/
5 /* Definitions for module constructor/destructors */
9 /* (C) 2000 Ullrich von Bassewitz */
11 /* D-70597 Stuttgart */
12 /* EMail: uz@musoftware.de */
15 /* This software is provided 'as-is', without any expressed or implied */
16 /* warranty. In no event will the authors be held liable for any damages */
17 /* arising from the use of this software. */
19 /* Permission is granted to anyone to use this software for any purpose, */
20 /* including commercial applications, and to alter it and redistribute it */
21 /* freely, subject to the following restrictions: */
23 /* 1. The origin of this software must not be misrepresented; you must not */
24 /* claim that you wrote the original software. If you use this software */
25 /* in a product, an acknowledgment in the product documentation would be */
26 /* appreciated but is not required. */
27 /* 2. Altered source versions must be plainly marked as such, and must not */
28 /* be misrepresented as being the original software. */
29 /* 3. This notice may not be removed or altered from any source */
32 /*****************************************************************************/
41 /*****************************************************************************/
43 /*****************************************************************************/
47 /* ConDes types. Count is only 7 because we want to encode 0..count in 3 bits */
48 #define CD_TYPE_COUNT 7 /* Number of table types */
49 #define CD_TYPE_MIN 0 /* Minimum numeric type value */
50 #define CD_TYPE_MAX 6 /* Maximum numeric type value */
52 /* ConDes priorities, zero is no valid priority and used to mark an empty
53 * (missing) decl for this type throughout the code.
55 #define CD_PRIO_NONE 0 /* No priority (no decl) */
56 #define CD_PRIO_MIN 1 /* Lowest priority */
57 #define CD_PRIO_DEF 7 /* Default priority */
58 #define CD_PRIO_MAX 32 /* Highest priority */
60 /* Predefined types */
61 #define CD_TYPE_CON 0 /* Constructor */
62 #define CD_TYPE_DES 1 /* Destructor */
64 /* When part of an export in an object file, type and priority are encoded in
65 * one byte. In this case, the following macros access the fields:
67 #define CD_GET_TYPE(v) (((v) >> 5) & 0x07)
68 #define CD_GET_PRIO(v) (((v) & 0x1F) + 1)
70 /* Macro to build the byte value: */
71 #define CD_BUILD(type,prio) ((((type) & 0x07) << 5) | (((prio) - 1) & 0x1F))