/********************************************************
 * File: memmessage.h
 * Created at Sun Jan 28 22:10:31 MSK 2001 by raorn // raorn@binec.ru
 *
 * $Id: memmessage.h,v 1.3 2001/12/24 01:02:55 raorn Exp $
 *******************************************************/
#ifndef MEMMESSAGE_H
#define MEMMESSAGE_H

/*#define PKT_CHUNKLEN  10000*/
#define PKT_NUM2D        50
#define PKT_NUMPATH      10

#define MM_ADD    0
#define MM_HEAD   1
#define MM_KLUDGE 2

struct TextChunk {
  struct TextChunk *Next;
  uchar *Data;
};

struct Nodes2D {
  struct Nodes2D *Next;
  ushort Nodes;
  ushort Net[PKT_NUM2D];
  ushort Node[PKT_NUM2D];
};

struct Path {
  struct Path *Next;
  ushort Paths;
  uchar Path[PKT_NUMPATH][100];
};

struct MemMessage {
  ulong msgnum;

  struct Node4D OrigNode;
  struct Node4D DestNode;
  struct Node4D PktOrig;
  struct Node4D PktDest;

  uchar Area[80];

  uchar To[36];
  uchar From[36];
  uchar Subject[72];
  uchar DateTime[20];

  uchar MSGID[80];
  uchar REPLY[80];

  ushort Attr;
  ushort Cost;

  uchar Type;
  bool Rescanned;
  bool Changed;
  bool Deleted;
  bool no_security;

  struct jbList TextChunks;
  struct jbList SeenBy;
  struct jbList Path;
};

bool mmAddNodes2DList(struct jbList *list, ushort net, ushort node);
void mmRemNodes2DList(struct jbList *list, ushort net, ushort node);
void mmRemNodes2DListPat(struct jbList *list, struct Node2DPat *pat);
bool mmAddPath(uchar * str, struct jbList *list);
bool mmAddBuf(struct jbList *chunklist, uchar * buf, ulong len, ulong where);
bool mmAddLine(struct MemMessage *mm, uchar * buf, ulong where);
struct MemMessage *mmAlloc(void);
void mmClear(struct MemMessage *mm);
void mmFree(struct MemMessage *mm);
bool mmSortNodes2D(struct jbList *list);
uchar *mmMakeSeenByBuf(struct jbList *list);

#endif


syntax highlighted by Code2HTML, v. 0.9.1