+#ifdef MODE_flow
+
+#define DEF_ROTATE "TRUE"
+#define DEF_RIDE "TRUE"
+#define DEF_BOX "TRUE"
+#define DEF_PERIODIC "TRUE"
+#define DEF_SEARCH "TRUE"
+#define DEF_DBUF "TRUE"
+
+static Bool rotatep;
+static Bool ridep;
+static Bool boxp;
+static Bool periodicp;
+static Bool searchp;
+static Bool dbufp;
+
+static XrmOptionDescRec opts[] = {
+ {"-rotate", ".flow.rotate", XrmoptionNoArg, "on"},
+ {"+rotate", ".flow.rotate", XrmoptionNoArg, "off"},
+ {"-ride", ".flow.ride", XrmoptionNoArg, "on"},
+ {"+ride", ".flow.ride", XrmoptionNoArg, "off"},
+ {"-box", ".flow.box", XrmoptionNoArg, "on"},
+ {"+box", ".flow.box", XrmoptionNoArg, "off"},
+ {"-periodic", ".flow.periodic", XrmoptionNoArg, "on"},
+ {"+periodic", ".flow.periodic", XrmoptionNoArg, "off"},
+ {"-search", ".flow.search", XrmoptionNoArg, "on"},
+ {"+search", ".flow.search", XrmoptionNoArg, "off"},
+ {"-dbuf", ".flow.dbuf", XrmoptionNoArg, "on"},
+ {"+dbuf", ".flow.dbuf", XrmoptionNoArg, "off"},
+};
+
+static argtype vars[] = {
+ {&rotatep, "rotate", "Rotate", DEF_ROTATE, t_Bool},
+ {&ridep, "ride", "Ride", DEF_RIDE, t_Bool},
+ {&boxp, "box", "Box", DEF_BOX, t_Bool},
+ {&periodicp, "periodic", "Periodic", DEF_PERIODIC, t_Bool},
+ {&searchp, "search", "Search", DEF_SEARCH, t_Bool},
+ {&dbufp, "dbuf", "Dbuf", DEF_DBUF, t_Bool},
+};
+
+static OptionStruct desc[] = {
+ {"-/+rotate", "turn on/off rotating around attractor."},
+ {"-/+ride", "turn on/off ride in the flow."},
+ {"-/+box", "turn on/off bounding box."},
+ {"-/+periodic", "turn on/off periodic attractors."},
+ {"-/+search", "turn on/off search for new attractors."},
+ {"-/+dbuf", "turn on/off double buffering."},
+};
+
+ENTRYPOINT ModeSpecOpt flow_opts =
+{sizeof opts / sizeof opts[0], opts,
+ sizeof vars / sizeof vars[0], vars, desc};