~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

TidyLib
tidy/src/config.h

Version: ~ [ 1.0 ] ~

** Warning: Cannot open xref database.

1 #ifndef __CONFIG_H__ 2 #define __CONFIG_H__ 3 4 /* config.h -- read config file and manage config properties 5 6 (c) 1998-2005 (W3C) MIT, ERCIM, Keio University 7 See tidy.h for the copyright notice. 8 9 CVS Info : 10 11 $Author: arnaud02 $ 12 $Date: 2005/03/31 13:10:34 $ 13 $Revision: 1.10 $ 14 15 config files associate a property name with a value. 16 17 // comments can start at the beginning of a line 18 # comments can start at the beginning of a line 19 name: short values fit onto one line 20 name: a really long value that 21 continues on the next line 22 23 property names are case insensitive and should be less than 24 60 characters in length and must start at the begining of 25 the line, as whitespace at the start of a line signifies a 26 line continuation. 27 28 */ 29 30 #include "forward.h" 31 #include "tidy.h" 32 #include "streamio.h" 33 34 struct _tidy_option; 35 typedef struct _tidy_option TidyOptionImpl; 36 37 typedef Bool (ParseProperty)( TidyDocImpl* doc, const TidyOptionImpl* opt ); 38 39 struct _tidy_option 40 { 41 TidyOptionId id; 42 TidyConfigCategory category; /* put 'em in groups */ 43 ctmbstr name; /* property name */ 44 TidyOptionType type; /* string, int or bool */ 45 ulong dflt; /* factory default */ 46 ParseProperty* parser; /* parsing method, read-only if NULL */ 47 const ctmbstr* pickList; /* pick list */ 48 }; 49 50 51 typedef struct _tidy_config 52 { 53 ulong value[ N_TIDY_OPTIONS + 1 ]; /* current config values */ 54 ulong snapshot[ N_TIDY_OPTIONS + 1 ]; /* Snapshot of values to be restored later */ 55 56 /* track what tags user has defined to eliminate unnecessary searches */ 57 uint defined_tags; 58 59 uint c; /* current char in input stream */ 60 StreamIn* cfgIn; /* current input source */ 61 62 } TidyConfigImpl; 63 64 65 typedef struct { 66 TidyOptionId opt; /**< Identifier. */ 67 ctmbstr doc; /**< HTML text */ 68 TidyOptionId const *links; /**< Cross references. 69 Last element must be 'TidyUnknownOption'. */ 70 } TidyOptionDoc; 71 72 73 const TidyOptionImpl* lookupOption( ctmbstr optnam ); 74 const TidyOptionImpl* getOption( TidyOptionId optId ); 75 76 TidyIterator getOptionList( TidyDocImpl* doc ); 77 const TidyOptionImpl* getNextOption( TidyDocImpl* doc, TidyIterator* iter ); 78 79 TidyIterator getOptionPickList( const TidyOptionImpl* option ); 80 ctmbstr getNextOptionPick( const TidyOptionImpl* option, TidyIterator* iter ); 81 82 const TidyOptionDoc* tidyOptGetDocDesc( TidyOptionId optId ); 83 84 void InitConfig( TidyDocImpl* doc ); 85 void FreeConfig( TidyDocImpl* doc ); 86 87 Bool SetOptionValue( TidyDocImpl* doc, TidyOptionId optId, ctmbstr val ); 88 Bool SetOptionInt( TidyDocImpl* doc, TidyOptionId optId, ulong val ); 89 Bool SetOptionBool( TidyDocImpl* doc, TidyOptionId optId, Bool val ); 90 91 Bool ResetOptionToDefault( TidyDocImpl* doc, TidyOptionId optId ); 92 void ResetConfigToDefault( TidyDocImpl* doc ); 93 void TakeConfigSnapshot( TidyDocImpl* doc ); 94 void ResetConfigToSnapshot( TidyDocImpl* doc ); 95 96 void CopyConfig( TidyDocImpl* docTo, TidyDocImpl* docFrom ); 97 98 /* 99 Todd Lewis contributed this code for expanding 100 ~/foo or ~your/foo according to $HOME and your 101 user name. This will only work on Unix systems. 102 */ 103 ctmbstr ExpandTilde(ctmbstr filename); 104 105 int ParseConfigFile( TidyDocImpl* doc, ctmbstr cfgfil ); 106 int ParseConfigFileEnc( TidyDocImpl* doc, 107 ctmbstr cfgfil, ctmbstr charenc ); 108 109 int SaveConfigFile( TidyDocImpl* doc, ctmbstr cfgfil ); 110 int SaveConfigSink( TidyDocImpl* doc, TidyOutputSink* sink ); 111 112 /* returns false if unknown option, missing parameter, or 113 option doesn't use parameter 114 */ 115 Bool ParseConfigOption( TidyDocImpl* doc, ctmbstr optnam, ctmbstr optVal ); 116 Bool ParseConfigValue( TidyDocImpl* doc, TidyOptionId optId, ctmbstr optVal ); 117 118 /* ensure that char encodings are self consistent */ 119 Bool AdjustCharEncoding( TidyDocImpl* doc, int encoding ); 120 121 /* ensure that config is self consistent */ 122 void AdjustConfig( TidyDocImpl* doc ); 123 124 Bool ConfigDiffThanDefault( TidyDocImpl* doc ); 125 Bool ConfigDiffThanSnapshot( TidyDocImpl* doc ); 126 127 int CharEncodingId( ctmbstr charenc ); 128 ctmbstr CharEncodingName( int encoding ); 129 ctmbstr CharEncodingOptName( int encoding ); 130 131 void SetEmacsFilename( TidyDocImpl* doc, ctmbstr filename ); 132 133 134 #ifdef _DEBUG 135 136 /* Debug lookup functions will be type-safe and assert option type match */ 137 ulong _cfgGet( TidyDocImpl* doc, TidyOptionId optId ); 138 Bool _cfgGetBool( TidyDocImpl* doc, TidyOptionId optId ); 139 TidyTriState _cfgGetAutoBool( TidyDocImpl* doc, TidyOptionId optId ); 140 ctmbstr _cfgGetString( TidyDocImpl* doc, TidyOptionId optId ); 141 142 #define cfg(doc, id) _cfgGet( (doc), (id) ) 143 #define cfgBool(doc, id) _cfgGetBool( (doc), (id) ) 144 #define cfgAutoBool(doc, id) _cfgGetAutoBool( (doc), (id) ) 145 #define cfgStr(doc, id) _cfgGetString( (doc), (id) ) 146 147 #else 148 149 /* Release build macros for speed */ 150 #define cfg(doc, id) ((doc)->config.value[ (id) ]) 151 #define cfgBool(doc, id) ((Bool) cfg(doc, id)) 152 #define cfgAutoBool(doc, id) ((TidyTriState) cfg(doc, id)) 153 #define cfgStr(doc, id) ((ctmbstr) cfg(doc, id)) 154 155 #endif /* _DEBUG */ 156 157 158 159 /* parser for integer values */ 160 ParseProperty ParseInt; 161 162 /* parser for 't'/'f', 'true'/'false', 'y'/'n', 'yes'/'no' or '1'/'' */ 163 ParseProperty ParseBool; 164 165 /* parser for 't'/'f', 'true'/'false', 'y'/'n', 'yes'/'no', '1'/'' 166 or 'auto' */ 167 ParseProperty ParseAutoBool; 168 169 /* a string excluding whitespace */ 170 ParseProperty ParseName; 171 172 /* a CSS1 selector - CSS class naming for -clean option */ 173 ParseProperty ParseCSS1Selector; 174 175 /* a string including whitespace */ 176 ParseProperty ParseString; 177 178 /* a space or comma separated list of tag names */ 179 ParseProperty ParseTagNames; 180 181 /* RAW, ASCII, LATIN0, LATIN1, UTF8, ISO2022, MACROMAN, 182 WIN1252, IBM858, UTF16LE, UTF16BE, UTF16, BIG5, SHIFTJIS 183 */ 184 ParseProperty ParseCharEnc; 185 ParseProperty ParseNewline; 186 187 /* omit | auto | strict | loose | <fpi> */ 188 ParseProperty ParseDocType; 189 190 /* keep-first or keep-last? */ 191 ParseProperty ParseRepeatAttr; 192 193 #endif /* __CONFIG_H__ */ 194

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.