/*
 *  CELLS       An Implementation of the WireWorld cellular automata
 *              as described in Scientific American, Jan 1990.
 *
 *              Copyright 1990 by Davide P. Cervone.
 *  You may use this code, provided this copyright notice is kept intact.
 *  See the CELLS.HELP file for complete information on distribution conditions.
 */

/*
 *  File:  cHelp.h              structures used by the HELP system
 */


#include "cMemory.h"

typedef struct HelpLine HELPLINE;
typedef struct HelpItem HELPITEM;


/*
 *  Linked list of lines of text for a specific topic
 */

struct HelpLine
{
   HELPLINE *Next,*Prev;
   char *Text;
   UWORD TextLen;
   UWORD Flags;
};


/*
 *  Linked list of Help Topics
 */

struct HelpItem
{
   HELPITEM *Next,*Prev;
   char *Name;
   UWORD NameLen;
   UWORD Flags;
      #define HLP_INUSE     BIT(15)     /* topic currently being shown */
      #define HLP_LINKED    BIT(14)     /* topic is a LINK to another topic */
      #define HLP_LOADED    BIT(13)     /* topics text is already loaded */
      #define HLP_HASTEXT   BIT(12)     /* topic has text lines in file */
      #define HLP_STATIC    BIT(11)     /* don't FREE this structure */
   HELPITEM *Parent;        /* pointer to parent topic */
   ULONG FilePos;           /* position in file of topics first line of text */
   HELPITEM *SubTopics;     /* pointer to sub-topic lists */
   HELPLINE *Text;          /* pointer to linked list of lines of help text */
   char *Title;             /* this topics title (if any) */
   UWORD TitleLen;
};

extern HELPITEM HelpRoot;   /* first help topic in the file */
