Login

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

#ifndef MHMT_EMIT_H
#define MHMT_EMIT_H

#include "mhmt-types.h"
#include "mhmt-lz.h"
#include "mhmt-optimal.h"


#define EMIT_FILEBUF_SIZE 4096 /* file buffer */

#define EMIT_BYTEBUF_SIZE 256  /* !! MUST BE 2^N !! */





ULONG emit_megalz(struct optchain * optch, ULONG actual_len);
ULONG emit_hrum  (struct optchain * optch, ULONG actual_len);
ULONG emit_hrust (struct optchain * optch, ULONG actual_len);
ULONG emit_zx7   (struct optchain * optch, ULONG actual_len);




#define EMIT_FILE_INIT   (-1)
#define EMIT_FILE_FINISH ( 0)
// what should emit_file do: init channel, add bytes or finish (flush) channel to disk
//
ULONG emit_file(UBYTE * bytes, LONG length);


#define EMIT_BITS_INIT   (-1)
#define EMIT_BITS_FINISH ( 0)
// length>0 or one of two special cases
ULONG emit_bits(ULONG msb_aligned_bits, LONG length);

ULONG emit_bits_flush(ULONG bits);


#define EMIT_BYTE_INIT  0
#define EMIT_BYTE_FLUSH 1
#define EMIT_BYTE_ADD   2
//
ULONG emit_byte(UBYTE byte, ULONG operation);





//ULONG emit_begin(void);
//ULONG emit_end(void);


#endif