#ifndef H_ED_BUF_20030409094853
#define H_ED_BUF_20030409094853

#ifdef __cplusplus
extern "C"
{
#endif

/* ---------------------------------------------------------------------
   (c) ED 1999-2008
   Projet       : CLIB
   Fonction     : Structure buffer (bloc de donnees banalise)
   Module       : BUF
   Fichier      : BUF.H
   Creation     : 16-11-1999
   Modification : 05-04-2008
   --------------------------------------------------------------------- */

/* ---------------------------------------------------------------------
   Journal

   1.5 du 05-04-2008 ajoute "ed/inc/mem.h"
   1.4 du 03-06-2002 ajout du champ size
   1.3 du 31-05-2002 ajout de BUF_copy()
   1.2 du 09-03-2002 buf devient uint
   1.1 du 13-06-2000 Ajout de BUF_move()
   1.0 du 06-04-2000 Version operationelle
   0.0 du 17-11-1999 Creation

   --------------------------------------------------------------------- */
#include "ed/inc/sysalloc.h"    /* eMEM */
#include "ed/inc/types.h"
#include "ed/inc/mem.h"

/* macros ============================================================== */
/* constants =========================================================== */
/* types =============================================================== */
/* structures ========================================================== */

typedef struct
{
   size_t len;
   uchar const *buf;
   eMEM eMem;
}
sBUF;

/* entry points ======================================================== */

/* ---------------------------------------------------------------------
   BUF_sver()
   ---------------------------------------------------------------------
   Role : Retourne une chaine "Version"
   ---------------------------------------------------------------------
   E :
   S : Pointeur de chaine ASCIIZ
   --------------------------------------------------------------------- */
const char *BUF_sver (void);

/* ---------------------------------------------------------------------
   BUF_sid()
   ---------------------------------------------------------------------
   Role : Retourne une chaine "Identification"
   ---------------------------------------------------------------------
   E :
   S : Pointeur de chaine ASCIIZ
   --------------------------------------------------------------------- */
const char *BUF_sid (void);

/* ---------------------------------------------------------------------
   BUF_init()
   ---------------------------------------------------------------------
   Role : Initialisation (buf, len)
   ---------------------------------------------------------------------
   E : Pointeur de donnees
   E : buffer
   E : longueur
   E : type d'allocation
   S :
   --------------------------------------------------------------------- */
void BUF_init (sBUF * pBuf, uchar const *buf, size_t len, eMEM eMem);

/* ---------------------------------------------------------------------
   BUF_copy()
   ---------------------------------------------------------------------
   Role : Copy dynamique d'un bloc
   ---------------------------------------------------------------------
   E : Pointeur de donnees
   E : buffer
   E : longueur
   S :
   --------------------------------------------------------------------- */
int BUF_copy (sBUF * pBuf, uchar const *buf, size_t len);

/* ---------------------------------------------------------------------
   BUF_init()
   ---------------------------------------------------------------------
   Role : Initialisation (chaine)
   ---------------------------------------------------------------------
   E : Pointeur de donnees
   E : chaine
   E : type d'allocation
   S :
   --------------------------------------------------------------------- */
void BUF_init_sz (sBUF * pBuf, char const *sz, eMEM eMem);

/* ---------------------------------------------------------------------
   BUF_move()
   ---------------------------------------------------------------------
   Role : Deplacer (la source est effacee)
   ---------------------------------------------------------------------
   E : Source
   E : Destination
   S :
   --------------------------------------------------------------------- */
void BUF_move (sBUF * pBufSrc, sBUF * pBufDes);

/* ---------------------------------------------------------------------
   BUF_end()
   ---------------------------------------------------------------------
   Role : Liberation automatique du bloc de donnees si il est dynamique
   ---------------------------------------------------------------------
   E : Pointeur de donnees
   S :
   --------------------------------------------------------------------- */
void BUF_end (sBUF * pBUF);

/* public variables ==================================================== */

/* File generated by 'NEW.EXE' Ver 1.19 (c) ED 1998-99 */

#ifdef __cplusplus
}
#endif

#endif /* H_ED_BUF_20030409094853 */

/* Guards added by GUARD (c) ED 2000-2003 Feb 14 2003 Ver. 1.5 */
