Crossfire Client, Trunk  R20789
Data Structures
Here are the data structures with brief descriptions:
 Cboolean_widget_tA container that holds the pointer and state of a checkbox control. Each Message Control dialog checkbox is tracked in one of these structs
 Cbuffer_control_tA container for all of the buffer control parameters like output count and time. The structure holds widget pointers, a state variables to track the parameter values, and the client built-in defaults. Only the final initializer for output_count and output_time is used as a default
 Cbuffer_parameter_tA container for a single buffer control parameter like output count or time. The structure holds a widget pointer, a state variable to track the widget value, and a default value
 Cinfo_buffer_tA buffer record that supports suppression of duplicate messages. This buffer holds data for messages that are monitored for suppression of duplicates. The buffer holds all data passed to message_callback(), including type, subtype, suggested color, and the text. Age and count fields are provided to track the time a message is in the buffer, and how many times it occured during the time it is buffered
 Cmessage_control_tA container for all of the checkboxes associated with a single message type
 Cmsgctrl_data_tDescriptive message type names with pane routing and buffer enable. A single struct defines a hard-coded, player-friendly, descriptive name to use for a single message type. All other fields in the structure define routing of messages to either or both client message panels, and whether or not messages of this type are passed through the duplicate suppression buffer system. This struct is intended to be used as the base type of an array that contains one struct per message type defined in newclient.h. The hard-coding of the descriptive name for the message type here is not ideal as it would be nicer to have it alongside the MSG_TYPE_* defines