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;
|
|
}
|