#ifndef NODE_H
#define NODE_H
//************************************
//
// Name : Node.h
//
//************************************


//**** Header files

#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif


//**** Structures

struct ProgNode {
  struct Node pn_Node;
  struct AppMenuItem *pn_appmenu;
  STRPTR pn_Filename;
  STRPTR pn_Directory;
  ULONG  pn_LaunchCode;
  ULONG  pn_Stack;
  LONG   pn_Priority;
  UBYTE  pn_Type;
};


//**** Type list for pn_Type

#define PNT_NULL        0x00
#define PNT_APPMENU     0x01
#define PNT_APPICON     0x02


//**** LaunchCodes

#define LC_ENV_MASK     0xF0
#define LC_ARG_MASK     0x0F

#define LC_WB           0x10
#define LC_CLI          0x20
#define LC_REXX         0x30
#define LC_BATCH        0x40

#define LC_NONE         0x00
#define LC_EACH         0x01
#define LC_ALL          0x02

#define LC_WB_NONE      ( LC_WB    | LC_NONE )
#define LC_WB_EACH      ( LC_WB    | LC_EACH )
#define LC_WB_ALL       ( LC_WB    | LC_ALL  )
#define LC_CLI_NONE     ( LC_CLI   | LC_NONE )
#define LC_CLI_EACH     ( LC_CLI   | LC_EACH )
#define LC_CLI_ALL      ( LC_CLI   | LC_ALL  )
#define LC_REXX_NONE    ( LC_REXX  | LC_NONE )
#define LC_REXX_EACH    ( LC_REXX  | LC_EACH )
#define LC_REXX_ALL     ( LC_REXX  | LC_ALL  )
#define LC_BATCH_NONE   ( LC_BATCH | LC_NONE )
#define LC_BATCH_EACH   ( LC_BATCH | LC_EACH )
#define LC_BATCH_ALL    ( LC_BATCH | LC_ALL  )


//**** Local Data structures

extern struct List *List;
extern struct List Sticky;


//**** Function protoyupes

int InitList(void);
int FreeList(int all);
//long ListLength(void);

struct ProgNode *NewNode(void);
int DisposeNode(struct ProgNode *pn);

//struct Node *FindNthNode(long n);


//****

void pnSetItem(struct ProgNode *pn, char *item);
void pnSetFilename(struct ProgNode *pn, char *filename);
void pnSetDirectory(struct ProgNode *pn, char *directory);
BOOL NewNodeSticky(char *st);

//**** End of file
#endif
