Alien-LibJIT

 view release on metacpan or  search on metacpan

libjit/jit/jit-varint.c  view on Meta::CPAN

	_jit_varint_encode_uint(encoder, (jit_uint) value);
}

jit_int
_jit_varint_decode_int(jit_varint_decoder_t *decoder)
{
	jit_uint value = _jit_varint_decode_uint(decoder);
	return (jit_int) ((value >> 1) ^ -(value & 1));
}

#endif

#if defined(VARINT_TEST)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void *
jit_malloc(unsigned int size)
{
	return malloc(size);
}

void
jit_free(void *ptr)
{
	if(ptr)
	{
		free(ptr);
	}
}

void *
jit_memcpy(void *dest, const void *src, unsigned int len)
{
	return memcpy(dest, src, len);
}

int
main()
{
	jit_uint i, j, n, v;

	for(n = 1; n != 0; n >>= 1)
	{
		jit_varint_encoder_t encoder;
		_jit_varint_init_encoder(&encoder);
		_jit_varint_encode_uint(&encoder, n);
		_jit_varint_encode_uint(&encoder, n - 1);
		_jit_varint_encode_uint(&encoder, n + 1);
		_jit_varint_encode_end(&encoder);

		jit_varint_data_t data = _jit_varint_get_data(&encoder);

		jit_varint_decoder_t decoder;
		_jit_varint_init_decoder(&decoder, data);
		v = _jit_varint_decode_uint(&decoder);
		if(v != n)
		{
			fprintf(stderr, "FAILED\n");
		}
		v = _jit_varint_decode_uint(&decoder);
		if(v != n - 1)
		{
			fprintf(stderr, "FAILED\n");
		}
		v = _jit_varint_decode_uint(&decoder);
		if(v != n + 1)
		{
			fprintf(stderr, "FAILED\n");
		}
		_jit_varint_decode_uint(&decoder);
		if(!_jit_varint_decode_end(&decoder))
		{
			fprintf(stderr, "FAILED\n");
		}

		_jit_varint_free_data(data);
	}

}

#endif



( run in 0.389 second using v1.01-cache-2.11-cpan-501a3233654 )