74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/*
 | 
						|
 * EX14CON.C
 | 
						|
 *
 | 
						|
 *  C/DOS Example program for ArchiveLib 2.0
 | 
						|
 *
 | 
						|
 *  Copyright (c) Greenleaf Software, Inc. 1994 - 1996
 | 
						|
 *  All Rights Reserved
 | 
						|
 *
 | 
						|
 * MEMBERS/FUNCTIONS DEMONSTRATED
 | 
						|
 *
 | 
						|
 *  ALMemoryBaseGetBufferSize()
 | 
						|
 *  ALMemoryGetBuffer()
 | 
						|
 *  ALMemoryBaseGetBufferOwner()
 | 
						|
 *  ALMemoryBaseSetBufferOwner()
 | 
						|
 *
 | 
						|
 * DESCRIPTION
 | 
						|
 *
 | 
						|
 *  This example program creates an ALMemory storage object using
 | 
						|
 *  an object owned memory buffer.  Then I take the buffer away so I
 | 
						|
 *  can use it myself.
 | 
						|
 *
 | 
						|
 * REVISION HISTORY
 | 
						|
 *
 | 
						|
 *  February 1, 1996  2.0A  : Second release
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <conio.h>
 | 
						|
 | 
						|
#include "arclib.h"
 | 
						|
#include "memstore.h"
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
    hALStorage memory;
 | 
						|
    int i;
 | 
						|
    unsigned char *buffer;
 | 
						|
 | 
						|
    printf( "Archive Library 2.0\nEX14CON.C\n\n" );
 | 
						|
    printf( "This example program creates an ALMemory storage object using\n" );
 | 
						|
    printf( "an object owned memory buffer.  Then I take the buffer away so I\n" );
 | 
						|
    printf( "can use it myself.\n\n" );
 | 
						|
    getch();
 | 
						|
 | 
						|
    memory = newALMemory( "My memory", 0, 0 );
 | 
						|
    ALStorageCreate( memory, AL_DEFAULT );
 | 
						|
    for ( i = 0 ; i < 20000 ; i++ )
 | 
						|
        ALStorageWriteChar( memory, i & 255 );
 | 
						|
/*
 | 
						|
 * There are three cases here where I cast something before giving it
 | 
						|
 * to printf.  This is to turn off errors from gcc.
 | 
						|
 */
 | 
						|
    printf( "ALMemory buffer size before FlushBuffer() = %u\n",
 | 
						|
            (int) ALMemoryBaseGetBufferSize( memory ) );
 | 
						|
    ALStorageFlushBuffer( memory );
 | 
						|
    printf( "ALMemory buffer size after FlushBuffer() = %u\n",
 | 
						|
            (int) ALMemoryBaseGetBufferSize( memory ) );
 | 
						|
    ALStorageClose( memory );
 | 
						|
    printf( "ALMemory buffer size after Close() = %u\n",
 | 
						|
            (int) ALMemoryBaseGetBufferSize( memory ) );
 | 
						|
    printf( "ALMemory owner = %s\n",
 | 
						|
            ALMemoryBaseGetBufferOwner( memory ) ?
 | 
						|
                "User" : "Object" );
 | 
						|
    ALMemoryBaseSetBufferOwner( memory, 1 );
 | 
						|
    buffer = (unsigned char *) ALMemoryGetBuffer( memory );
 | 
						|
    for ( i = 0 ; i < 20000 ; i++ )
 | 
						|
        if ( buffer[ i ] != (unsigned char) ( i & 255 ) )
 | 
						|
            break;
 | 
						|
    printf( "Comparison %s\n",
 | 
						|
            i == 20000 ? "passed" : "failed" );
 | 
						|
    return 1;
 | 
						|
}
 |