a/src/smallut.h b/src/smallut.h
...
...
216
    class Internal;
216
    class Internal;
217
private:
217
private:
218
    Internal *m;
218
    Internal *m;
219
};
219
};
220
220
221
/// Utilities for printing names for defined values (Ex: O_RDONLY->"O_RDONLY")
222
223
/// Entries for the descriptive table
224
struct CharFlags {
225
    unsigned int value; // Flag or value
226
    const char *yesname;// String to print if flag set or equal
227
    const char *noname; // String to print if flag not set (unused for values)
228
};
229
230
/// Helper macro for the common case where we want to print the
231
/// flag/value defined name
232
#define CHARFLAGENTRY(NM) {NM, #NM}
233
234
/// Translate a bitfield into string description
235
extern std::string flagsToString(const std::vector<CharFlags>&,
236
                                 unsigned int flags);
237
238
/// Translate a value into a name
239
extern std::string valToString(const std::vector<CharFlags>&, unsigned int val);
240
241
/// Reverse operation: translate string into bitfield
242
extern unsigned int
243
stringToFlags(const std::vector<CharFlags>&, const std::string& input,
244
              const char *sep = "|");
245
221
#endif /* _SMALLUT_H_INCLUDED_ */
246
#endif /* _SMALLUT_H_INCLUDED_ */