campo-sirio/al/examples/ex14con.c
alex 714dd74636 Archive Library versione 2.00
git-svn-id: svn://10.65.10.50/trunk@5350 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-10-09 16:09:54 +00:00

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