Personal tools
You are here: Home Projects C++ Cfront releases Release 3.0.3 source demo generic Vector.C
Document Actions

Vector.C

by Michael L Powell last modified 2007-01-26 03:20

Click here to get the file

Size 3.0 kB - File type text/plain

File contents

/*ident	"@(#)cls4:demo/generic/Vector.C	1.1" */
/*******************************************************************************
 
C++ source for the C++ Language System, Release 3.0.  This product
is a new release of the original cfront developed in the computer
science research center of AT&T Bell Laboratories.

Copyright (c) 1991 AT&T and UNIX System Laboratories, Inc.
Copyright (c) 1984, 1989, 1990 AT&T.  All Rights Reserved.

THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE of AT&T and UNIX System
Laboratories, Inc.  The copyright notice above does not evidence
any actual or intended publication of such source code.

*******************************************************************************/

#include	<iostream.h>
#include	<vector.h>


static const int VectorSize = 10;	

/*  Instantiate the vector generic class declarations twice, once to create
**  vectors or integers and once for reals.  This is just to keep this
**  example simple.  You can have vectors of any class you declare as long
**  as the class has a default constructor and operator= is defined.
**
**  If this program consisted of more than one file, then each file
**  that used a vector type would need the following declaration for that
**  type.
*/

vectordeclare(int)
vectordeclare(float)

/*  Instantiate the code that actually implements each of the vector types.
**  If this program consisted of more than one file, then the following lines
**  must appear in only one of them.
*/

vectorimplement(int)
vectorimplement(float)


/*  A vector overflow handler.  We will have the vector class call this
**  function on errors instead of using its default action.  The default
**  is to print the error number and message passed to this function and
**  then to abort the process.  Specifying a handler allows you to attempt
**  to recover from errors.
*/

int
gotVectorError(int nbr, char* msgp)
{
	cout << "Caught error \"" << msgp << "\" (" << nbr << ")" << endl;
	return 0;
}


main()
{
	/*  Create a vector of VectorSize integers called "iv" and set
	**  each element of the vector to its subscript value.
	*/

	vector(int)	iv(VectorSize);

	for(int cnt = 0; cnt < VectorSize; cnt++){
		iv[cnt] = cnt;
	}

	/*  Now loop through the vector backwards and print each value.
	*/

	for(cnt = VectorSize - 1; cnt >= 0; cnt--){
		cout << iv[cnt] << " ";
	}
	cout << endl;

	/*  Specify an error handler to replace the default one provided
	**  by the vector(int) class.
	*/

	set_handler(vector,int, gotVectorError);

	/*  Cause a "subscript out of range" error in the vector(int)
	**  class.  If I were to do this in the vector(float) class now,
	**  the default message would print and then the program would
	**  be aborted.
	*/

	iv[VectorSize] = 99;

	/*  Specify an error handler to replace the default one provided
	**  by the vector(float) class.
	*/

	set_handler(vector,float, gotVectorError);

	/*  Now cause an error in the vector(float) class by trying to
	**  create a vector with a negative number of elements.
	*/

	vector(float)	rv(-3);

	/*  O.K. - enough fun for now.
	*/

	return 0;
}
« April 2024 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: