1 2 /* 3 * Copyright (c) 1998-2003 by The XFree86 Project, Inc. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in 13 * all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 19 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 21 * OTHER DEALINGS IN THE SOFTWARE. 22 * 23 * Except as contained in this notice, the name of the copyright holder(s) 24 * and author(s) shall not be used in advertising or otherwise to promote 25 * the sale, use or other dealings in this Software without prior written 26 * authorization from the copyright holder(s) and author(s). 27 */ 28 29 /* Option handling things that ModuleSetup procs can use */ 30 31 #ifndef _XF86_OPT_H_ 32 #define _XF86_OPT_H_ 33 #include "xf86Optionstr.h" 34 35 typedef struct { 36 double freq; 37 int units; 38 } OptFrequency; 39 40 typedef union { 41 unsigned long num; 42 const char *str; 43 double realnum; 44 Bool bool; 45 OptFrequency freq; 46 } ValueUnion; 47 48 typedef enum { 49 OPTV_NONE = 0, 50 OPTV_INTEGER, 51 OPTV_STRING, /* a non-empty string */ 52 OPTV_ANYSTR, /* Any string, including an empty one */ 53 OPTV_REAL, 54 OPTV_BOOLEAN, 55 OPTV_PERCENT, 56 OPTV_FREQ 57 } OptionValueType; 58 59 typedef enum { 60 OPTUNITS_HZ = 1, 61 OPTUNITS_KHZ, 62 OPTUNITS_MHZ 63 } OptFreqUnits; 64 65 typedef struct { 66 int token; 67 const char *name; 68 OptionValueType type; 69 ValueUnion value; 70 Bool found; 71 } OptionInfoRec, *OptionInfoPtr; 72 73 extern _X_EXPORT int xf86SetIntOption(XF86OptionPtr optlist, const char *name, 74 int deflt); 75 extern _X_EXPORT double xf86SetRealOption(XF86OptionPtr optlist, 76 const char *name, double deflt); 77 extern _X_EXPORT char *xf86SetStrOption(XF86OptionPtr optlist, const char *name, 78 const char *deflt); 79 extern _X_EXPORT int xf86SetBoolOption(XF86OptionPtr list, const char *name, 80 int deflt); 81 extern _X_EXPORT double xf86SetPercentOption(XF86OptionPtr list, 82 const char *name, double deflt); 83 extern _X_EXPORT int xf86CheckIntOption(XF86OptionPtr optlist, const char *name, 84 int deflt); 85 extern _X_EXPORT double xf86CheckRealOption(XF86OptionPtr optlist, 86 const char *name, double deflt); 87 extern _X_EXPORT char *xf86CheckStrOption(XF86OptionPtr optlist, 88 const char *name, const char *deflt); 89 extern _X_EXPORT int xf86CheckBoolOption(XF86OptionPtr list, const char *name, 90 int deflt); 91 extern _X_EXPORT double xf86CheckPercentOption(XF86OptionPtr list, 92 const char *name, double deflt); 93 extern _X_EXPORT XF86OptionPtr xf86AddNewOption(XF86OptionPtr head, 94 const char *name, 95 const char *val); 96 extern _X_EXPORT XF86OptionPtr xf86NewOption(char *name, char *value); 97 extern _X_EXPORT XF86OptionPtr xf86NextOption(XF86OptionPtr list); 98 extern _X_EXPORT XF86OptionPtr xf86OptionListCreate(const char **options, 99 int count, int used); 100 extern _X_EXPORT XF86OptionPtr xf86OptionListMerge(XF86OptionPtr head, 101 XF86OptionPtr tail); 102 extern _X_EXPORT XF86OptionPtr xf86OptionListDuplicate(XF86OptionPtr list); 103 extern _X_EXPORT void xf86OptionListFree(XF86OptionPtr opt); 104 extern _X_EXPORT char *xf86OptionName(XF86OptionPtr opt); 105 extern _X_EXPORT char *xf86OptionValue(XF86OptionPtr opt); 106 extern _X_EXPORT void xf86OptionListReport(XF86OptionPtr parm); 107 extern _X_EXPORT XF86OptionPtr xf86FindOption(XF86OptionPtr options, 108 const char *name); 109 extern _X_EXPORT const char *xf86FindOptionValue(XF86OptionPtr options, 110 const char *name); 111 extern _X_EXPORT void xf86MarkOptionUsed(XF86OptionPtr option); 112 extern _X_EXPORT void xf86MarkOptionUsedByName(XF86OptionPtr options, 113 const char *name); 114 extern _X_EXPORT Bool xf86CheckIfOptionUsed(XF86OptionPtr option); 115 extern _X_EXPORT Bool xf86CheckIfOptionUsedByName(XF86OptionPtr options, 116 const char *name); 117 extern _X_EXPORT void xf86ShowUnusedOptions(int scrnIndex, 118 XF86OptionPtr options); 119 extern _X_EXPORT void xf86ProcessOptions(int scrnIndex, XF86OptionPtr options, 120 OptionInfoPtr optinfo); 121 extern _X_EXPORT OptionInfoPtr xf86TokenToOptinfo(const OptionInfoRec * table, 122 int token); 123 extern _X_EXPORT const char *xf86TokenToOptName(const OptionInfoRec * table, 124 int token); 125 extern _X_EXPORT Bool xf86IsOptionSet(const OptionInfoRec * table, int token); 126 extern _X_EXPORT const char *xf86GetOptValString(const OptionInfoRec * table, 127 int token); 128 extern _X_EXPORT Bool xf86GetOptValInteger(const OptionInfoRec * table, 129 int token, int *value); 130 extern _X_EXPORT Bool xf86GetOptValULong(const OptionInfoRec * table, int token, 131 unsigned long *value); 132 extern _X_EXPORT Bool xf86GetOptValReal(const OptionInfoRec * table, int token, 133 double *value); 134 extern _X_EXPORT Bool xf86GetOptValFreq(const OptionInfoRec * table, int token, 135 OptFreqUnits expectedUnits, 136 double *value); 137 extern _X_EXPORT Bool xf86GetOptValBool(const OptionInfoRec * table, int token, 138 Bool *value); 139 extern _X_EXPORT Bool xf86ReturnOptValBool(const OptionInfoRec * table, 140 int token, Bool def); 141 extern _X_EXPORT int xf86NameCmp(const char *s1, const char *s2); 142 extern _X_EXPORT char *xf86NormalizeName(const char *s); 143 extern _X_EXPORT XF86OptionPtr xf86ReplaceIntOption(XF86OptionPtr optlist, 144 const char *name, 145 const int val); 146 extern _X_EXPORT XF86OptionPtr xf86ReplaceRealOption(XF86OptionPtr optlist, 147 const char *name, 148 const double val); 149 extern _X_EXPORT XF86OptionPtr xf86ReplaceBoolOption(XF86OptionPtr optlist, 150 const char *name, 151 const Bool val); 152 extern _X_EXPORT XF86OptionPtr xf86ReplacePercentOption(XF86OptionPtr optlist, 153 const char *name, 154 const double val); 155 extern _X_EXPORT XF86OptionPtr xf86ReplaceStrOption(XF86OptionPtr optlist, 156 const char *name, 157 const char *val); 158 #endif 159