+cstring
+describeMode (cstring mode)
+{
+ cstringSList sflags = sortedFlags ();
+ cstring res = message ("Predefined mode %s sets: ", mode);
+
+ llassert (flags_isModeName (mode));
+
+ context_setMode (mode);
+
+ cstringSList_elements (sflags, flagname)
+ {
+ flagcode code = flags_identifyFlag (flagname);
+ fflag currentflag = flags[code];
+
+ if (mstring_isDefined (currentflag.desc) && flagcode_isModeFlag (code))
+ {
+ if (context_getFlag (code))
+ {
+ res = message ("%q\n +%s", res, cstring_fromChars (currentflag.flag));
+ }
+ else
+ {
+ res = message ("%q\n -%s", res, cstring_fromChars (currentflag.flag));
+ }
+ }
+ } end_cstringSList_elements;
+
+ cstringSList_free (sflags);
+
+ res = cstring_appendChar (res, '\n');
+ return (res);
+}
+