HDTenEightyP/NetNews huggingface dataset:
From: jbn@lulea.trab.se (Johan Bengtsson)
Newsgroups: comp.lang.c++
Subject: Re: Preventing inheritance
Date: 12 Jan 93 12:13:55 GMT
Organization: Telia Research AB, Aurorum 6, 951 75 Lulea, Sweden
X-Newsreader: TIN [version 1.1 + PL8]

Steve Berczuk (berczuk@space.mit.edu) wrote:
: In article <1iqtnpINN283@news.cerf.net>, hlf@nic.cerf.net (Howard Ferguson) writes:
: |> 
: |> If I create a class which I am supplying to other users, how do I
: |> make sure that they do not inherit from it ever.
[...]
: |> 	yours totally paranoid,
: Umm, why would you want to do this?

You may wish to create a class completely without virtual functions
(size or C compatibility considerations).  If someone unwittingly
inherits from such a class, the non-virtual destructor will not
properly destroy data members added in the subclass.  This may be
harmless, lose a small amount of dynamic memory, or completely
stop an application due to lack of resources such as file handles
(if the subclass adds a data member that represents an open file).

: [...]I can understand not wanting to "support" other users who inherit
: the class, but that might be best approached by some sort of
: documentation

Not all users will notice this (they should, but they won't).
As the supplier of the base class you may be indirectly affected
when those users send in bug reports, or claim that your code
is "unreliable".  It is better to make sure that the compiler
catches those errors early.  Instead of subclassing the users
will have to use the class as a data member.

: (eg comments in the header to the effect of "this class
: supports some wierd protocols that subclasses need to
: enforce, subclass at your own risk"). 

The protocol need not be "weird" in order to have the constraint.
The size of small classes can double in size if you support
subclassing (you should have at least a virtual destructor).  You
may not always want to pay that price.

-- 
--------------------------------------------------------------------------
| Johan Bengtsson, Telia Research AB, Aurorum 6, S-951 75 Lulea, Sweden  |
| Johan.Bengtsson@lulea.trab.se; Voice:(+46)92075471; Fax:(+46)92075490  |
--------------------------------------------------------------------------
From: sundvall@perrier.embnet.se (Mats Sundvall)
Newsgroups: comp.lang.c++
Subject: xdr layer above iostream's
Date: 7 Jan 1993 11:56:46 GMT
Organization: EMBNet Project Sweden
Distribution: world
Reply-To: sundvall@perrier.embnet.se
NNTP-Posting-Host: perrier.embnet.se
Keywords: xdr c++ iostream


We have a need to communicate between machines with different byte ordering.
I though about using XDR, but as we are using C++ and iostreams of different
kinds, even for tcp I am thinking about different ways of implementing an
xdrstream.

I have implemented an Xdr class with the help of the xdr_rec. I have
a constructor Xdr(iostream*) and can then put a XDR layer above a stream.
All the operator input and output methods are then implemented to read
from and write to Xdr.

Another way to implement it would be to implement a new iostream subclassing
from ios and streambuf.

I now wonder what pros and cons there is with these different approches, and
if there are other ways to do it that I haven't thought about.

If you implement it with a bunch of new streams you have to implement all the
different streams again (iostreams, fstreams, tcpstreams, tlistreams) but with
xdr.  Maybe you can do some smart subclassing from these but I am not confident
enogh about the internals of streams to know that.

The advantage would be that they all inherit from iostreams and that all existing
code that read and write to iostreams will work without having to implement
Xdr::operator<<(MyClass&) and >> methods.

I am also not sure if you can get all the status in ios up to the xdr class if
you use the first method, the Xdr class. I thought about implementing the 
operator== and operator!= methods for Xdr to check the status but maybe that is
not enough?

And what about iomanips?

If anyone have comments please tell me,

Regards,

Mats Sundvall
Dept of Medical Genetics,
Uppsala University
Sweden

sundvall@perrier.embnet.se




Newsgroups: comp.lang.c++
From: enicholl@dcc.uchile.cl (Eric Nicholls V.)
Subject: BC++ 3.1 Overlays
Originator: enicholl@dcc.uchile.cl
Date: Mon, 04 Jan 1993 15:05:01 GMT
Organization: Universidad de Chile, Depto. de Ciencias de la Computacion


  Hi: 
		I have some problems when I use overlays with Turbo Vision Library.
		I compiled TV to produce the overlayed version, but still I have
		problems. My application can`t use correctly memory allocated dina-
		mically.

		If you`ve had the same problem or if you have a good idea, please
		help me.

				Thanks.

				enicholl@dcc.uchile.cl (Eric Nicholls V.)
From: dwr@cci632.cci.com (Donald W. Rouse II)
Newsgroups: comp.lang.c++
Subject: Re: C++ ARM
Date: 12 Jan 93 18:28:56 GMT
Article-I.D.: cci632.1993Jan12.182856.22999
Organization: [Computer Consoles, Inc., Rochester, NY

In article <1993Jan11.145803.17786@porthos.cc.bellcore.com> chw@bellcore.com writes:
>
>Can anyone tell me how to get access to the ARM?
>

Buy it.  It's a hardcover book, available in most bookstores
that sell general-purpose computer books.

The title is "The C++ Annotated Reference Manual"
(or something like that), by Stroustrap and Ellis.

(I don't know if this is precisely correct,
because I am at work and the book is at home.)

On a related topic, how do you pronounce Stroustrap?
Is it "strow-strap" or "strew-strap" or what?
Oh, yeah, and how do you pronounce Bjarne?

			Donald Wallace Rouse II
					(|rhymes with "house")
Newsgroups: comp.lang.c++
From: skwok@nyx.cs.du.edu (Stephen Kwok)
Subject: Borland C++ 3.1 problem under DOS
Organization: Nyx, Public Access Unix @ U. of Denver Math/CS dept.
Date: Tue, 5 Jan 93 08:36:09 GMT


I have installed Borland C++ 3.1 on my PC, but I have problem when 
running BC.EXE under DOS, my machine will hang whenever I run BC.EXE.
But when I start up the compiler under Window 3.1, I believe it is 
BCW.EXE, it works.  Any idea or comment on what the problem is?

Machine config:  Intel 486DX-33, 8M memory, Trident TVGA 8900C, 200M HD

Thanks for any help in advance.

--
---
Stephen Kwok  skwok@nyx.cs.du.edu   -or-  stephen@kralizec.zeta.org.au
              whskwok@comp.hkbc.hk  -or-  ah099@yfn.ysu.edu
Xref: sparky comp.lang.c++:18798 comp.object:4728
From: tmb@arolla.idiap.ch (Thomas M. Breuel)
Newsgroups: comp.lang.c++,comp.object
Subject: Re: Pros and cons of C++
Date: 8 Jan 93 01:46:27 GMT
Reply-To: tmb@idiap.ch
Organization: IDIAP (Institut Dalle Molle d'Intelligence Artificielle
	Perceptive)
NNTP-Posting-Host: arolla.idiap.ch
In-reply-to: yjohn@gpu.utcs.utoronto.ca's message of 7 Jan 93 15:15:22 GMT

In article <C0Hp1n.vp@gpu.utcs.utoronto.ca> yjohn@gpu.utcs.utoronto.ca (John Ross) writes:

   I have recently come to grips with having to learn C++; mainly due to
   the bandwagon effect. It doesn't look like there will be any pure C
   programmers left in a couple of years.  I agree that the language is
   very complex, and has many shortcomings. [...]

   Why then is it becoming so popular?  Why the deluge of texts, articles,
   magazines, news groups, compilers, etc?

I think the reasons are mostly pragmatic ones:

 * C++ interfaces easily with C/FORTRAN code (for example, using
   "Xlib" with C++ has been pretty trivial from the beginning; even a
   language like Modula-2 or Ada, both of which are really quite
   similar in character to C++, required "new bindings").
 * Existing C programs can easily be recompiled as C++ programs.
 * With a minimum of training, C programmers can fancy themselves
   C++ programmers.
 * The C subset of C++ runs about as fast (or as slowly) as C
   code. For PCs and workstations, that is acceptable (for
   supercomputers, it is not).
 * While C/C++'s support for bittwiddeling is "all wrong", being
   unportable and unsafe, at least it is there and works reasonably
   efficiently.
 * There are lots of compilers available (including GNU C++),
   and there is lots of support. (Why are there lots of compilers
   available? Because there are lots of users. Why are there lots
   of users? Because C++ started out as a relatively modest
   and simple extension of C.)

For each of the alternative languages (Modula-2, Ada, Modula-3,
Smalltalk, CLOS, Eiffel, SML, etc.), some of these very pragmatic
requirements are not satisfied.

   Anyway, enough rambling--what are your thoughts?  Do you use C++; will
   you; what do you like, dislike about it; what is it's future; etc, etc?

What do I dislike about C++?

 * No type safety.
 * No pointer safety.
 * No arithmetic overflow detection.
 * No module system to speak of.
 * No garbage collection.
 * Inefficient memory management.
 * Hairy scoping rules.
 * Hairy, implementation dependent linking.
 * A number of important optimizations are impossible.
 * Insufficient language support for separating implementation
   dependent/unportable features from the rest of the language.

When I don't need to interface with existing C/FORTRAN code or when my
algorithms get complicated enough that these latter problems with C++
matter, I use a different language.

					Thomas.
Newsgroups: comp.lang.c++
From: jud@ceci.mit.EDU (Judson Harward)
Subject: Pointer to members
Organization: "Center for Educational Computer Inintiatives at MIT"
Date: Tue, 5 Jan 1993 23:06:17 GMT


	The Annotated C++ Reference Manual hedges on the issue of
generic pointers to members on p. 70:

	"There is no equivalent to void * for pointers to members.
This implies that casting of pointers to pointers to members must
be used if a generic 'pointer to any member of any class' is needed."

	That sounds fairly definite.  But then their proposed work around uses
the following typedef:

	typedef void Z::* any_ptom;

any_ptoms are not used in the ARM example, but *any_ptoms are.
Is there any reason not to support a generic "pointer to any member of any
class" such as an any_ptom?

	The following code works on Sun's version of AT&T 2.1:

#include <stdlib.h>
#include <iostream.h>

class Dummy;
typedef void Dummy::*any_ptom;

class X
{
public:
  int i;
  X(int j) : i( j ) {};
};

class Y
{
public:
  double d;
  Y(double e) : d( e ) {};
};

main()
{
  X x(1);
  Y y(2.0);
  int mI;
  double mD;
  int X::* ptmX;
  double Y::* ptmY;
  any_ptom *paptm;
  any_ptom aptm;

  ptmX = &X::i;
  paptm = (any_ptom *) &ptmX;
  mI = x.*(*(int X::**) paptm);
  cout << mI << '\n';
  ptmY = &Y::d;
  paptm = (any_ptom *) &ptmY;
  mD = y.*(*(double Y::**) paptm); 
  cout << mD << '\n';

// I don't think the following is supposed to work.
// Probably shouldn't use it.
  aptm = (any_ptom) &X::i;
  paptm = &aptm;
  mI = x.*(*(int X::**) paptm);
  cout << mI << '\n';
}

	Is the success of the last portion using aptm = (any_ptom) just
due to a lax compiler?

	Any comments would be appreciated.  Thanks in advance.

-- 
Jud Harward
AthenaMuse Software Consortium
Center for Educational Computing Initiatives
M. I. T.

jud@ceci.mit.edu
(617-646-8045)
Newsgroups: comp.lang.c++
From: chris@cad.gatech.edu (Chris McClellen)
Newsgroups: comp.lang.c++
Subject: TVision Object wanted
Date: 9 Jan 1993 21:19:52 -0500
Organization: Georgia Institute of Technology, CAE/CAD Lab
NNTP-Posting-Host: cae.cad.gatech.edu


I am looking for a "Scrollable region" object, which will allow me to group
input fields in a small area.  For instance, if I had say... a 100
line item form, I would like an object that has the ability to hold 100
fields or so, and I could go to the next via a mousclick/downarrow/tab..
and so on.  Does anyone have such an object?
From: robison1@husc10.harvard.edu (Keith Robison)
Newsgroups: comp.lang.c++
Subject: Undefined symbol with ___vtbl__ prefix
Date: 12 Jan 93 23:23:22 GMT
Article-I.D.: husc.robison1.726881002

Please help:

I have an abstract class Foo with many virtual functions, from which I have
derived class FooBar.   Everything compiles fine on cfront 2.x 
but I get a linking error:

ld: Undefined symbol
  ___vtbl__21FooBar

Now, I think this means there is a problem with my virtual functions,
but is it obvious to anyone else what is wrong?  If I feed the ___vtbl...
symbol into "dem", it just spits the same thing back out.

Any suggestions appreciated.


Keith Robison
Harvard University
Department of Cellular & Developmental Biology
Department of Genetics / HHMI

robison@biosun.harvard.edu 
Newsgroups: comp.lang.c++
From: bsmith@tivoli.com
Newsgroups: comp.lang.c++
Subject: Re: Borland C++ compiler products ?
Date: 6 Jan 93 20:41:59 GMT
Organization: TIVOLI Systems

I'm underwhelmed by the Borland C++ debugger - it's the same as for
their DOS product instead of being a true Windows-based debugger.  You
have to leave Windows (temporarily) in order to run it.

-Bill Smith
Newsgroups: comp.lang.c++
From: winney@dal.mobil.com (Randy Winney)
Subject: C++ graphics book 
Keywords: C++, graphics, book
Organization: Mobil Exploration & Producing Technical Center(MEPTEC), Dallas. 
Distribution: world 
Date: Tue, 12 Jan 1993 15:45:52 GMT

Does anyone know of any books on graphics programming that
use C++ as the implementation language?
From: roger@genie.UUCP (Roger H. Scott)
Newsgroups: comp.lang.c++
Subject: Re: "type safety" deemed essential
Date: 1 Jan 93 19:04:41 GMT
Reply-To: roger@genie.UUCP (Roger H. Scott)
Organization: proCASE Corporation, Santa Clara, CA

In article <725053473snx@trmphrst.demon.co.uk> nikki@trmphrst.demon.co.uk writes:
>In article <448@genie.UUCP> roger@genie.UUCP (Roger H. Scott) writes:
>> ... [W]ho has written a non-trivial commercial C++ 
>> application *without* making significant use of either type casting [(T *)]
>> or run-time type checking [Bar *bar_p = foo_p->asBar();]?  
>
>Does my Text Mode User Interface Toolkit count ?

Not to denegrate tool kits in general in any way, but the short answer is "no".
The sorts of code one writes for a general purpose tool kit tend to be
rather different than the code one ends up writing for an end application.
[It has often seemed to me that C++ has evolved to be more closely tuned
to the needs of tool kit, or library, writers than for "end" users.]
A non-trivial commercial application *using* the T.M.U.I. kit *would* count,
of course.
From: jar@solva.ifi.uio.no (Jo Are Rosland)
Newsgroups: comp.lang.c++
Subject: Re: Passing 2-d arrys to functions
Date: 10 Jan 93 16:08:17 GMT
	<C0H9sA.BGw@newsserver.technet.sg>
	<24568@alice.att.com>
	<726521188snx@trmphrst.demon.co.uk>
	<RUNE.93Jan10125255@pandora.nta.no>
Organization: Dept. of Informatics, University of Oslo, Norway
X-Md4-Signature: 2b900537518055640010b3c37e968092
Originator: jar@solva.ifi.uio.no

In article <RUNE.93Jan10125255@pandora.nta.no> Rune Henning Johansen writes:
> I'm including a little program that seems to work fine. Here I'm pas-
> sing only the pointer to  a two dimensional array.  Can I expect such
> programs to work, and if so, why?

No, that's not what you're doing, see below:

> #include <stream.h>

You should start using <iostream.h>.

> #define begin {
> #define end   }

Never do this!

> void Input ( double **b )

Here b is a pointer to a pointer to double.  That's got nothing to do
with arrays.

> begin

Shudder.

> [...]
> int main ()
> begin
>  double **a = new double*[2];
>  a[0] = new double[2];
>  a[1] = new double[2];

Here you create two one dimensional double arrays, and a one
dimensional double* array.  Still there are no two-dimensional arrays
in sight.  This could alternatively (and more scaleably) be coded as

    double *tmp = new double[4];
    double **a = new double*[2];
    a[0] = tmp;
    a[2] = tmp + 2;

Apart from this, the code looks correct.  But aren't you doing far too
much manual work here?  This seems just the right candidate for
encapsulation into a class.

--
Jo Are Rosland
jar@ifi.uio.no
Newsgroups: comp.lang.c++
From: ccw@prefect.cc.bellcore.com (wood,christopher)
Subject: Re: Pros and cons of C++
Organization: Bellcore, Livingston, NJ
Date: Mon, 11 Jan 93 20:43:08 GMT

In article <1993Jan7.220253.3418@informix.com> cshaver@informix.com (Craig Shaver) writes:

[Question about the value of C++ trimmed]

>I will use it [C++] reluctantly.  It is better than plain C only because of 
>classes and inheritance; the rest of the 'enhancements' being of
>dubious value (IMnsHO).

ANSI function parameters, and parameter type checking are valuable. 
And declarations within a block, not just at the beginning, and
assignment declarations (e.g. int count = 0;) are also an improvement
over plain C.  And I like function name overloading and user-defined
operators.

>Craig Shaver  (cshaver@informix.com for now) (415)390-0654 (415)926-6407
>Productivity Group POB 60458 Sunnyvale, CA  94088

Chris Wood

-- 
Chris Wood     Bellcore     ...!bellcore!prefect!ccw
                         or ccw@prefect.cc.bellcore.com
From: alexis@oahu.cs.ucla.edu (Alexis Wieland)
Newsgroups: comp.lang.c++
Subject: Passing unknown number of arguements through a function (?)
Date: 9 Jan 93 22:01:55 GMT
Organization: UCLA, Computer Science Department


Apologies for the naive question, but:

I just want to pass an unknown number of agruements through a
function.  I had originally assumed I could do something like:

foo_printf (char* format ...) {
    char buf [1024];
    sprintf(buf, format ...);
    /* rest of code */
}

But this, or anything else I've been able to come up with, doesn't work :-(
What is the proper way of doing this sort of thing ?

Please send replies to me directly.
Thanks,

  - alexis.                  <alexis@cs.ucla.edu>
From: rnelson@wsuaix.csc.wsu.edu (roger nelson;S23487)
Newsgroups: comp.lang.c++
Subject: Borland C++ & AppFW CD-ROM
Date: 5 Jan 93 23:09:58 GMT
Article-I.D.: serval.1993Jan5.230958.23053
Organization: Washington State University


Does anybody have  the Borland C++ & Application Framework 3.1 CD-ROM?

I would like to know if this still has to be installed on the hard disk
or can it be run off the CD-ROM?

Thanks,

Roger Nelson
From: harvey@opl.com (Harvey Reed)
Newsgroups: comp.lang.c++
Subject: Re: Why X::X(X &a), not X::X(X a) ?
Date: 13 Jan 93 00:29:49 GMT

winney@dal.mobil.com (Randy Winney) writes:

>Could someone explain to us neophytes why C++ requires
>that I use the constructor
> X::X(X &a)
>instead of simply
> X::X(X a)

because X::X(X a) is recursive.



-- 
++harvey
========================================================================
internet:  harvey@opl.com  /  hreed@cs.ulowell.edu  /  h.reed@ieee.org
voice:     617-965-0220
From: barmar@think.com (Barry Margolin)
Newsgroups: comp.lang.c++
Subject: Re: semi-private public methods?
Date: 12 Jan 1993 15:48:01 GMT
Organization: Thinking Machines Corporation, Cambridge MA, USA
Distribution: na
NNTP-Posting-Host: telecaster.think.com

In article <RALPH.93Jan11143011@yo_dud.bell.ca> ralph@dci.pinetree.org writes:
>Lets call this class A, and I want B,C,D &E to be able to use the
>public methods on A. (no problem so far)
>I don't want B,C,D &E to access the private data of A, so I can't make
>them friend classes.

Make the methods protected, and define a derived class Aprime that inherits
from A.  Make B, C, D, and E friends of Aprime.
-- 
Barry Margolin
System Manager, Thinking Machines Corp.

barmar@think.com          {uunet,harvard}!think!barmar
Newsgroups: comp.lang.c++
From: giles@promed.com.au (Giles Lean)
Subject: Re: feedback wanted on appropriate OOPL
Organization: Pro Medicus, Melbourne, Australia
Date: Wed, 13 Jan 93 00:26:37 GMT

rmartin@thor.Rational.COM (Bob Martin) writes:

>Deferring error detection to runtime is risky, since the error may be
>encountered several months after its release. 

... and can result in phone calls to the developers!  I want as much
as possible to be caught at compile time.  Nice runtime errors just
makes the "it fell over/doesn't work" call somewhat more useful as
a bug report.
-- 
Giles Lean at Pro Medicus	<giles@promed.com.au>
From: Neal.Sanche@ttlg.UUCP (Neal Sanche)
Sender: postmaster@ttlg.UUCP
Newsgroups: comp.lang.c++
Subject: TResourceFile Memory Los
Date: 04 Jan 93  00:06:00 mst

Hi All, 
 
I am using Borland C++ 3.1 and Turbo Vision and am having a 
memory loss of 32 bytes every time I instantiate a TResourceFile 
and then destroy it. I have looked through the documentation and 
my usage of this object is correct. Here is the Code: 
 
   ... 
   fpstream *ifps; 
 
   ifps = new fpstream("FILE.NAM", ios::out | ios::binary); 
   if (ifps->good()) 
   { 
     TResourceFile *res; 
     res = new TResourceFile(ifps); 
     destroy(res); 
   } 
   else delete(ifps); 
   ... 
 
This code creates a TResourceFile and destroys it immediately. There 
should be no loss of memory, but 32 bytes escape... Where is this 
memory loss occuring? I am afraid that some kind of dangling pointer 
will come back to haunt me and my clients! :) 
 
Thanks for any help you can give me. 
 
-Neal 
 
... OFFLINE 1.41 

 * Origin: Paradigm BBS: A programmer's paradise. (42:100/11)
Newsgroups: comp.lang.c++
From: pauljo@microsoft.com (Paul Johns)
Subject: Re: using new
Date: 12 Jan 93 00:20:45 GMT
Organization: Microsoft Corp., Redmond, Washington, USA

In article <1993Jan8.171950.22884@news.columbia.edu> ae2@cunixa.cc.columbia.edu wrote:
> 
> 	I am in the process of porting a C program into C++ and
> learning a lot about C++. I am trying to find an equivalent C++
> construct for the following malloc command:
> 
> 		
> 	ptr = (TypeCast *) malloc( LENGTH(n));

No reason not to continue using malloc here....you can intermix
malloc and new in the same program provided that you free all
blocks allocated with malloc by using free and that you delete
all blocks allocated by using new with delete.

> where Length(n) is a macro that will return the n times of the
> desired object size. I have tried the following statement using new
> but for no avail:
> 
> 
> 	ptr = (TypeCast *) new char(LENGTH(n));

This statement means "allocate ONE character and initialize it
with "LENGTH(n)".

You want:

	ptr = (TypeCast *) new char [LENGTH(n)];

instead....

// Paul

Newsgroups: comp.lang.c++
From: tiller@quattro.NoSubdomain.NoDomain (Mike Tiller)
Newsgroups: comp.lang.c++
Subject: Re: C++ ARM
Date: 12 Jan 93 22:04:15 GMT
Organization: University of Illinois at Urbana

In article <1993Jan12.182856.22999@cci632.cci.com>
dwr@cci632.cci.com (Donald W. Rouse II) writes:

>In article <1993Jan11.145803.17786@porthos.cc.bellcore.com> chw@bellcore.com writes:
>>
>>Can anyone tell me how to get access to the ARM?
>>
>
>Buy it.  It's a hardcover book, available in most bookstores
>that sell general-purpose computer books.
>
>The title is "The C++ Annotated Reference Manual"
>(or something like that), by Stroustrap and Ellis.

The reference is "The C++ Annotated Reference Manual"
by ELLIS and STROUSTRUP.

Note the order of the names and the spelling.

>
>(I don't know if this is precisely correct,
>because I am at work and the book is at home.)
>
>On a related topic, how do you pronounce Stroustrap?
>Is it "strow-strap" or "strew-strap" or what?
>Oh, yeah, and how do you pronounce Bjarne?

(see Note above)

I pronounce it Strew-strup, but I'm probably wrong.  Since he
himself often reads this group maybe he can tell us.  Is this in
the FAQ...if not it should be.
From: reddy@tiger.vill.edu (Shami Reddy)
Newsgroups: comp.lang.c++
Subject: Suggestions for Project
Date: 4 Jan 93 13:44:05 GMT
Organization: Villanova University
Originator: reddy@tiger.vill.edu

I am a graduate student in Computer Science and have just started learning C++.
I am thinking about doing my independent study in C++ , but am unable to think 
of an interesting project. I would be really grateful for any suggestions
that anyone might have.

Replies can be posted or email-ed to me at : reddy@tiger.vill.edu

Thanks in advance,
_Shami 
Newsgroups: comp.lang.c++