1/*****************************************************************************/
2/* */
3/* feature.h */
4/* */
5/* Subroutines for the emulation features */
6/* */
7/* */
8/* */
9/* (C) 2000-2013, Ullrich von Bassewitz */
10/* Roemerstrasse 52 */
11/* D-70794 Filderstadt */
12/* EMail: uz@cc65.org */
13/* */
14/* */
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. */
18/* */
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: */
22/* */
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 */
30/* distribution. */
31/* */
32/*****************************************************************************/
33
34
35
36#ifndef FEATURE_H
37#define FEATURE_H
38
39
40
41/* common */
42#include "strbuf.h"
43
44
45
46/*****************************************************************************/
47/* Data */
48/*****************************************************************************/
49
50
51
52typedef enum {
53 FEAT_UNKNOWN = -1,
54 FEAT_DOLLAR_IS_PC,
55 FEAT_LABELS_WITHOUT_COLONS,
56 FEAT_LOOSE_STRING_TERM,
57 FEAT_LOOSE_CHAR_TERM,
58 FEAT_AT_IN_IDENTIFIERS,
59 FEAT_DOLLAR_IN_IDENTIFIERS,
60 FEAT_LEADING_DOT_IN_IDENTIFIERS,
61 FEAT_ORG_PER_SEG,
62 FEAT_PC_ASSIGNMENT,
63 FEAT_MISSING_CHAR_TERM,
64 FEAT_UBIQUITOUS_IDENTS,
65 FEAT_C_COMMENTS,
66 FEAT_FORCE_RANGE,
67 FEAT_UNDERLINE_IN_NUMBERS,
68 FEAT_ADDRSIZE,
69 FEAT_BRACKET_AS_INDIRECT,
70 FEAT_STRING_ESCAPES,
71
72 /* Special value: Number of features available */
73 FEAT_COUNT
74} feature_t;
75
76
77
78/*****************************************************************************/
79/* Code */
80/*****************************************************************************/
81
82
83
84feature_t FindFeature (const StrBuf* Key);
85/* Find the feature in a table and return the corresponding enum value. If the
86** feature is invalid, return FEAT_UNKNOWN.
87*/
88
89feature_t SetFeature (const StrBuf* Key);
90/* Find the feature and set the corresponding flag if the feature is known.
91** In any case, return the feature found. An invalid Key will return
92** FEAT_UNKNOWN.
93*/
94
95
96
97/* End of feature.h */
98
99#endif
100