//! [0]
    #include <q3memarray.h>
    #include <stdio.h>

    Q3MemArray<int> fib( int num ) // returns fibonacci array
    {
	Q_ASSERT( num > 2 );
	Q3MemArray<int> f( num ); // array of ints

	f[0] = f[1] = 1;
	for ( int i = 2; i < num; i++ )
	    f[i] = f[i-1] + f[i-2];

	return f;
    }

    int main()
    {
	Q3MemArray<int> a = fib( 6 ); // get first 6 fibonaccis
	for ( int i = 0; i < a.size(); i++ )
	    qDebug( "%d: %d", i, a[i] );

	qDebug( "1 is found %d times", a.contains(1) );
	qDebug( "5 is found at index %d", a.find(5) );

	return 0;
    }
//! [0]


//! [1]
    0: 1
    1: 1
    2: 2
    3: 3
    4: 5
    5: 8
    1 is found 2 times
    5 is found at index 4
//! [1]


//! [2]
    // MyStruct may be padded to 4 or 8 bytes
    struct MyStruct
    {
	short i; // 2 bytes
	char c;  // 1 byte
    };

    Q3MemArray<MyStruct> a(1);
    a[0].i = 5;
    a[0].c = 't';

    MyStruct x;
    x.i = '5';
    x.c = 't';
    int i = a.find( x ); // may return -1 if the pad bytes differ
//! [2]


//! [3]
    static char bindata[] = { 231, 1, 44, ... };
    QByteArray	a;
    a.setRawData( bindata, sizeof(bindata) );	// a points to bindata
    QDataStream s( a, IO_ReadOnly );		// open on a's data
    s >> <something>;				// read raw bindata
    a.resetRawData( bindata, sizeof(bindata) ); // finished
//! [3]


//! [4]
    static char bindata[] = { 231, 1, 44, ... };
    QByteArray	a, b;
    a.setRawData( bindata, sizeof(bindata) );	// a points to bindata
    a.resize( 8 );				// will crash
    b = a;					// will crash
    a[2] = 123;					// might crash
    // forget to resetRawData: will crash
//! [4]


