view th_endian2.h @ 0:bd61a80a6c54

Initial import into Mercurial repository. Discarding old cvs/svn history here, because it's cluttered and commit messages are mostly crap.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 26 Mar 2008 04:41:58 +0200
parents
children
line wrap: on
line source

/*
 * Endianess handling
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2002-2007 Tecnic Software productions (TNSP)
 *
 * Please read file 'COPYING' for information on license and distribution.
 */
#if (!defined(TH_RNAME) || !defined(TH_FILE) || !defined(TH_FREAD) || !defined(TH_FGETC))
#error Some required preprocessor macros NOT defined, but th_endian2.h included!
#endif

#ifdef TH_CODE_ENDIAN2
BOOL TH_RNAME(STR) (TH_FILE *f, uint8_t *s, size_t l)
{
	return (TH_FREAD(s, sizeof(uint8_t), l, f) == l);
}


uint16_t TH_RNAME(BE16) (TH_FILE *f)
{
	return (((uint16_t) TH_FGETC(f)) << 8) |
		((uint16_t) TH_FGETC(f));
}


uint32_t TH_RNAME(BE32) (TH_FILE *f)
{
	return (((uint32_t) TH_FGETC(f)) << 24) |
		(((uint32_t) TH_FGETC(f)) << 16) |
		(((uint32_t) TH_FGETC(f)) << 8) |
		((uint32_t) TH_FGETC(f));
}


uint16_t TH_RNAME(LE16) (TH_FILE *f)
{
	return ((uint16_t) TH_FGETC(f)) |
		(((uint16_t) TH_FGETC(f)) << 8);
}


uint32_t TH_RNAME(LE32) (TH_FILE *f)
{
	return ((uint32_t) TH_FGETC(f)) |
		(((uint32_t) TH_FGETC(f)) << 8) |
		(((uint32_t) TH_FGETC(f)) << 16) |
		(((uint32_t) TH_FGETC(f)) << 24);
}
#endif