sorry, forgot some files in the last commit
git-svn-id: https://svn.code.sf.net/p/vbam/code/trunk@942 a31d4220-a93d-0410-bf67-fe4944624d44
This commit is contained in:
parent
8916e188e0
commit
60429e60cc
|
@ -0,0 +1,77 @@
|
||||||
|
/* 7zAlloc.c -- Allocation functions
|
||||||
|
2008-10-04 : Igor Pavlov : Public domain */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "7zAlloc.h"
|
||||||
|
|
||||||
|
/* #define _SZ_ALLOC_DEBUG */
|
||||||
|
/* use _SZ_ALLOC_DEBUG to debug alloc/free operations */
|
||||||
|
|
||||||
|
#ifdef _SZ_ALLOC_DEBUG
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
int g_allocCount = 0;
|
||||||
|
int g_allocCountTemp = 0;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void *SzAlloc(void *p, size_t size)
|
||||||
|
{
|
||||||
|
p = p;
|
||||||
|
if (size == 0)
|
||||||
|
return 0;
|
||||||
|
#ifdef _SZ_ALLOC_DEBUG
|
||||||
|
fprintf(stderr, "\nAlloc %10d bytes; count = %10d", size, g_allocCount);
|
||||||
|
g_allocCount++;
|
||||||
|
#endif
|
||||||
|
return malloc(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SzFree(void *p, void *address)
|
||||||
|
{
|
||||||
|
p = p;
|
||||||
|
#ifdef _SZ_ALLOC_DEBUG
|
||||||
|
if (address != 0)
|
||||||
|
{
|
||||||
|
g_allocCount--;
|
||||||
|
fprintf(stderr, "\nFree; count = %10d", g_allocCount);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
free(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *SzAllocTemp(void *p, size_t size)
|
||||||
|
{
|
||||||
|
p = p;
|
||||||
|
if (size == 0)
|
||||||
|
return 0;
|
||||||
|
#ifdef _SZ_ALLOC_DEBUG
|
||||||
|
fprintf(stderr, "\nAlloc_temp %10d bytes; count = %10d", size, g_allocCountTemp);
|
||||||
|
g_allocCountTemp++;
|
||||||
|
#ifdef _WIN32
|
||||||
|
return HeapAlloc(GetProcessHeap(), 0, size);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
return malloc(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SzFreeTemp(void *p, void *address)
|
||||||
|
{
|
||||||
|
p = p;
|
||||||
|
#ifdef _SZ_ALLOC_DEBUG
|
||||||
|
if (address != 0)
|
||||||
|
{
|
||||||
|
g_allocCountTemp--;
|
||||||
|
fprintf(stderr, "\nFree_temp; count = %10d", g_allocCountTemp);
|
||||||
|
}
|
||||||
|
#ifdef _WIN32
|
||||||
|
HeapFree(GetProcessHeap(), 0, address);
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
free(address);
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
// File_Extractor 1.0.0. http://www.slack.net/~ant/
|
||||||
|
|
||||||
|
#include "Binary_Extractor.h"
|
||||||
|
|
||||||
|
/* Copyright (C) 2005-2009 Shay Green. This module is free software; you
|
||||||
|
can redistribute it and/or modify it under the terms of the GNU Lesser
|
||||||
|
General Public License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version. This
|
||||||
|
module is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||||
|
details. You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this module; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||||
|
|
||||||
|
#include "blargg_source.h"
|
||||||
|
|
||||||
|
// TODO: could close file once data has been read into memory
|
||||||
|
|
||||||
|
static File_Extractor* new_binary()
|
||||||
|
{
|
||||||
|
return BLARGG_NEW Binary_Extractor;
|
||||||
|
}
|
||||||
|
|
||||||
|
fex_type_t_ const fex_bin_type [1] = {{
|
||||||
|
"",
|
||||||
|
&new_binary,
|
||||||
|
"file",
|
||||||
|
NULL
|
||||||
|
}};
|
||||||
|
|
||||||
|
Binary_Extractor::Binary_Extractor() :
|
||||||
|
File_Extractor( fex_bin_type )
|
||||||
|
{ }
|
||||||
|
|
||||||
|
Binary_Extractor::~Binary_Extractor()
|
||||||
|
{
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
blargg_err_t Binary_Extractor::open_path_v()
|
||||||
|
{
|
||||||
|
set_name( arc_path() );
|
||||||
|
return blargg_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
blargg_err_t Binary_Extractor::open_v()
|
||||||
|
{
|
||||||
|
set_name( arc_path() );
|
||||||
|
set_info( arc().remain(), 0, 0 );
|
||||||
|
return blargg_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Binary_Extractor::close_v()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
blargg_err_t Binary_Extractor::next_v()
|
||||||
|
{
|
||||||
|
return blargg_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
blargg_err_t Binary_Extractor::rewind_v()
|
||||||
|
{
|
||||||
|
return open_path_v();
|
||||||
|
}
|
||||||
|
|
||||||
|
blargg_err_t Binary_Extractor::stat_v()
|
||||||
|
{
|
||||||
|
RETURN_ERR( open_arc_file() );
|
||||||
|
RETURN_ERR( arc().seek( 0 ) );
|
||||||
|
return open_v();
|
||||||
|
}
|
||||||
|
|
||||||
|
blargg_err_t Binary_Extractor::extract_v( void* p, int n )
|
||||||
|
{
|
||||||
|
return arc().read( p, n );
|
||||||
|
}
|
|
@ -0,0 +1,125 @@
|
||||||
|
/* Included at the beginning of library source files, AFTER all other #include
|
||||||
|
lines. Sets up helpful macros and services used in my source code. Since this
|
||||||
|
is only "active" in my source code, I don't have to worry about polluting the
|
||||||
|
global namespace with unprefixed names. */
|
||||||
|
|
||||||
|
// File_Extractor 1.0.0
|
||||||
|
#ifndef BLARGG_SOURCE_H
|
||||||
|
#define BLARGG_SOURCE_H
|
||||||
|
|
||||||
|
#ifndef BLARGG_COMMON_H // optimization only
|
||||||
|
#include "blargg_common.h"
|
||||||
|
#endif
|
||||||
|
#include "blargg_errors.h"
|
||||||
|
|
||||||
|
#include <string.h> /* memcpy(), memset(), memmove() */
|
||||||
|
#include <stddef.h> /* offsetof() */
|
||||||
|
|
||||||
|
/* The following four macros are for debugging only. Some or all might be
|
||||||
|
defined to do nothing, depending on the circumstances. Described is what
|
||||||
|
happens when a particular macro is defined to do something. When defined to
|
||||||
|
do nothing, the macros do NOT evaluate their argument(s). */
|
||||||
|
|
||||||
|
/* If expr is false, prints file and line number, then aborts program. Meant
|
||||||
|
for checking internal state and consistency. A failed assertion indicates a bug
|
||||||
|
in MY code.
|
||||||
|
|
||||||
|
void assert( bool expr ); */
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
/* If expr is false, prints file and line number, then aborts program. Meant
|
||||||
|
for checking caller-supplied parameters and operations that are outside the
|
||||||
|
control of the module. A failed requirement probably indicates a bug in YOUR
|
||||||
|
code.
|
||||||
|
|
||||||
|
void require( bool expr ); */
|
||||||
|
#undef require
|
||||||
|
#define require( expr ) assert( expr )
|
||||||
|
|
||||||
|
/* Like printf() except output goes to debugging console/file.
|
||||||
|
|
||||||
|
void dprintf( const char format [], ... ); */
|
||||||
|
static inline void blargg_dprintf_( const char [], ... ) { }
|
||||||
|
#undef dprintf
|
||||||
|
#define dprintf (1) ? (void) 0 : blargg_dprintf_
|
||||||
|
|
||||||
|
/* If expr is false, prints file and line number to debug console/log, then
|
||||||
|
continues execution normally. Meant for flagging potential problems or things
|
||||||
|
that should be looked into, but that aren't serious problems.
|
||||||
|
|
||||||
|
void check( bool expr ); */
|
||||||
|
#undef check
|
||||||
|
#define check( expr ) ((void) 0)
|
||||||
|
|
||||||
|
/* If expr yields non-NULL error string, returns it from current function,
|
||||||
|
otherwise continues normally. */
|
||||||
|
#undef RETURN_ERR
|
||||||
|
#define RETURN_ERR( expr ) \
|
||||||
|
do {\
|
||||||
|
blargg_err_t blargg_return_err_ = (expr);\
|
||||||
|
if ( blargg_return_err_ )\
|
||||||
|
return blargg_return_err_;\
|
||||||
|
} while ( 0 )
|
||||||
|
|
||||||
|
/* If ptr is NULL, returns out-of-memory error, otherwise continues normally. */
|
||||||
|
#undef CHECK_ALLOC
|
||||||
|
#define CHECK_ALLOC( ptr ) \
|
||||||
|
do {\
|
||||||
|
if ( !(ptr) )\
|
||||||
|
return blargg_err_memory;\
|
||||||
|
} while ( 0 )
|
||||||
|
|
||||||
|
/* The usual min/max functions for built-in types.
|
||||||
|
|
||||||
|
template<typename T> T min( T x, T y ) { return x < y ? x : y; }
|
||||||
|
template<typename T> T max( T x, T y ) { return x > y ? x : y; } */
|
||||||
|
#define BLARGG_DEF_MIN_MAX( type ) \
|
||||||
|
static inline type blargg_min( type x, type y ) { if ( y < x ) x = y; return x; }\
|
||||||
|
static inline type blargg_max( type x, type y ) { if ( x < y ) x = y; return x; }
|
||||||
|
|
||||||
|
BLARGG_DEF_MIN_MAX( int )
|
||||||
|
BLARGG_DEF_MIN_MAX( unsigned )
|
||||||
|
BLARGG_DEF_MIN_MAX( long )
|
||||||
|
BLARGG_DEF_MIN_MAX( unsigned long )
|
||||||
|
BLARGG_DEF_MIN_MAX( float )
|
||||||
|
BLARGG_DEF_MIN_MAX( double )
|
||||||
|
|
||||||
|
#undef min
|
||||||
|
#define min blargg_min
|
||||||
|
|
||||||
|
#undef max
|
||||||
|
#define max blargg_max
|
||||||
|
|
||||||
|
// typedef unsigned char byte;
|
||||||
|
typedef unsigned char blargg_byte;
|
||||||
|
#undef byte
|
||||||
|
#define byte blargg_byte
|
||||||
|
|
||||||
|
#ifndef BLARGG_EXPORT
|
||||||
|
#if defined (_WIN32) && BLARGG_BUILD_DLL
|
||||||
|
#define BLARGG_EXPORT __declspec(dllexport)
|
||||||
|
#elif defined (__GNUC__)
|
||||||
|
// can always set visibility, even when not building DLL
|
||||||
|
#define BLARGG_EXPORT __attribute__ ((visibility ("default")))
|
||||||
|
#else
|
||||||
|
#define BLARGG_EXPORT
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BLARGG_LEGACY
|
||||||
|
#define BLARGG_CHECK_ALLOC CHECK_ALLOC
|
||||||
|
#define BLARGG_RETURN_ERR RETURN_ERR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Called after failed operation when overall operation may still complete OK.
|
||||||
|
// Only used by unit testing framework.
|
||||||
|
#undef ACK_FAILURE
|
||||||
|
#define ACK_FAILURE() ((void)0)
|
||||||
|
|
||||||
|
/* BLARGG_SOURCE_BEGIN: If defined, #included, allowing redefition of dprintf etc.
|
||||||
|
and check */
|
||||||
|
#ifdef BLARGG_SOURCE_BEGIN
|
||||||
|
#include BLARGG_SOURCE_BEGIN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue