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 34typedef struct { 35 double freq; 36 int units; 37} OptFrequency; 38 39typedef union { 40 unsigned long num; 41 char * str; 42 double realnum; 43 Bool bool; 44 OptFrequency freq; 45} ValueUnion; 46 47typedef enum { 48 OPTV_NONE = 0, 49 OPTV_INTEGER, 50 OPTV_STRING, /* a non-empty string */ 51 OPTV_ANYSTR, /* Any string, including an empty one */ 52 OPTV_REAL, 53 OPTV_BOOLEAN, 54 OPTV_PERCENT, 55 OPTV_FREQ 56} OptionValueType; 57 58typedef enum { 59 OPTUNITS_HZ = 1, 60 OPTUNITS_KHZ, 61 OPTUNITS_MHZ 62} OptFreqUnits; 63 64typedef struct { 65 int token; 66 const char* name; 67 OptionValueType type; 68 ValueUnion value; 69 Bool found; 70} OptionInfoRec, *OptionInfoPtr; 71 72extern _X_EXPORT int xf86SetIntOption(pointer optlist, const char *name, int deflt); 73extern _X_EXPORT double xf86SetRealOption(pointer optlist, const char *name, double deflt); 74extern _X_EXPORT char *xf86SetStrOption(pointer optlist, const char *name, char *deflt); 75extern _X_EXPORT int xf86SetBoolOption(pointer list, const char *name, int deflt ); 76extern _X_EXPORT double xf86SetPercentOption(pointer list, const char *name, double deflt ); 77extern _X_EXPORT int xf86CheckIntOption(pointer optlist, const char *name, int deflt); 78extern _X_EXPORT double xf86CheckRealOption(pointer optlist, const char *name, double deflt); 79extern _X_EXPORT char *xf86CheckStrOption(pointer optlist, const char *name, char *deflt); 80extern _X_EXPORT int xf86CheckBoolOption(pointer list, const char *name, int deflt ); 81extern _X_EXPORT double xf86CheckPercentOption(pointer list, const char *name, double deflt ); 82extern _X_EXPORT pointer xf86AddNewOption(pointer head, const char *name, const char *val ); 83extern _X_EXPORT pointer xf86NewOption(char *name, char *value ); 84extern _X_EXPORT pointer xf86NextOption(pointer list ); 85extern _X_EXPORT pointer xf86OptionListCreate(const char **options, int count, int used); 86extern _X_EXPORT pointer xf86OptionListMerge(pointer head, pointer tail); 87extern _X_EXPORT pointer xf86OptionListDuplicate(pointer list); 88extern _X_EXPORT void xf86OptionListFree(pointer opt); 89extern _X_EXPORT char *xf86OptionName(pointer opt); 90extern _X_EXPORT char *xf86OptionValue(pointer opt); 91extern _X_EXPORT void xf86OptionListReport(pointer parm); 92extern _X_EXPORT pointer xf86FindOption(pointer options, const char *name); 93extern _X_EXPORT char *xf86FindOptionValue(pointer options, const char *name); 94extern _X_EXPORT void xf86MarkOptionUsed(pointer option); 95extern _X_EXPORT void xf86MarkOptionUsedByName(pointer options, const char *name); 96extern _X_EXPORT Bool xf86CheckIfOptionUsed(pointer option); 97extern _X_EXPORT Bool xf86CheckIfOptionUsedByName(pointer options, const char *name); 98extern _X_EXPORT void xf86ShowUnusedOptions(int scrnIndex, pointer options); 99extern _X_EXPORT void xf86ProcessOptions(int scrnIndex, pointer options, OptionInfoPtr optinfo); 100extern _X_EXPORT OptionInfoPtr xf86TokenToOptinfo(const OptionInfoRec *table, int token); 101extern _X_EXPORT const char *xf86TokenToOptName(const OptionInfoRec *table, int token); 102extern _X_EXPORT Bool xf86IsOptionSet(const OptionInfoRec *table, int token); 103extern _X_EXPORT char *xf86GetOptValString(const OptionInfoRec *table, int token); 104extern _X_EXPORT Bool xf86GetOptValInteger(const OptionInfoRec *table, int token, int *value); 105extern _X_EXPORT Bool xf86GetOptValULong(const OptionInfoRec *table, int token, unsigned long *value); 106extern _X_EXPORT Bool xf86GetOptValReal(const OptionInfoRec *table, int token, double *value); 107extern _X_EXPORT Bool xf86GetOptValFreq(const OptionInfoRec *table, int token, 108 OptFreqUnits expectedUnits, double *value); 109extern _X_EXPORT Bool xf86GetOptValBool(const OptionInfoRec *table, int token, Bool *value); 110extern _X_EXPORT Bool xf86ReturnOptValBool(const OptionInfoRec *table, int token, Bool def); 111extern _X_EXPORT int xf86NameCmp(const char *s1, const char *s2); 112extern _X_EXPORT char *xf86NormalizeName(const char *s); 113extern _X_EXPORT pointer xf86ReplaceIntOption(pointer optlist, const char *name, const int val); 114extern _X_EXPORT pointer xf86ReplaceRealOption(pointer optlist, const char *name, const double val); 115extern _X_EXPORT pointer xf86ReplaceBoolOption(pointer optlist, const char *name, const Bool val); 116extern _X_EXPORT pointer xf86ReplacePercentOption(pointer optlist, const char *name, const double val); 117extern _X_EXPORT pointer xf86ReplaceStrOption(pointer optlist, const char *name, const char* val); 118#endif 119