home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.lang.c++
- Path: sparky!uunet!charon.amdahl.com!pacbell.com!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!att!dptg!ucs!skdutta
- From: skdutta@ucs.att.com (Saumen Dutta)
- Subject: C++ Product List - Version 2.04 - Part 6/8
- Message-ID: <1992Nov18.022923.717@ucs.att.com>
- Organization: AT&T Universal Card Services, Jacksonville FL
- Date: Wed, 18 Nov 1992 02:29:23 GMT
- Lines: 676
-
- 3.9. Zinc
- _ _ ____
-
- + Platform: DOS
-
- + This was the most commonly mentioned library for DOS.
- It was generally praised. Several people noted the
- documentation could be more helpful but the tech sup-
- port phone people seemed to make up for that failing.
- One respondent noted his release didn't handle variable
- fonts but said that may be fixed in the current
- release. The only respondant to explicitly mention
- using Zinc in graphics mode found it "intolerably
- slow."
-
- + Information provided by bennett@math.ksu.edu
-
- 3.9.1. Netcomments
- _ _ _ ___________
-
- From abw@dsbc.icl.co.uk (Andy Wardley)
-
- POINTS FOR....
-
- The Zinc Interface Library "...gives a fast nice GUI, that
- somewhat reminds me of windows.", "the library is well-designed."
- and "you can get it to do most things and its Windows capabilities
- are at last getting into shape."
-
- "I will also add that I'm very impressed with the company. My
- friend who has it told me he got an update in the mail without
- even asking and he was offered a Windows version (beta?) from
- their BBS for free. Very impressive for a software company."
-
- "For DOS I've heard it's very good but their Windows version is
- buggy, but I think they're coming out with a much-improved
- version"
-
- "See a recent c.l.c++ summary of PC GUI libs -- it did well."
-
- "We are developing DOS applications using Zinc (with Borland BC++)
- and are reasonably well-satisfied with it. Our application is not
- pushing Zinc very hard, however. We are using it in graphics
- mode, although we are mostly putting text objects & menus on the
- screen."
-
- "They provide much sample code & studying it is essential."
-
- "Tech support is free & good; they have a BBS."
-
- "But as a UI library it is really great. They have just released
- version 2.01 with a lot of bug fixes this means it is pretty solid
- now."
-
- "The design tool saves a lot of time. The documentation is
- extensive and good. There is a lot of good example code too."
-
- POINTS AGAINST...
-
- "The Zinc designer has lots of bugs and quirks, but you can get
- around them"
-
- "Some things could have been better done, and is surely better
- implemented in the OS of the Macintosh."
-
- "For top-professional use there are some limitations. We even
- considered returning the package. But if you can live without a
- 100% product, but rather a late beta, then this is for you."
-
- "It took me a while to get into their approach, partly because
- their documentation goes into detail but seems to leave out
- overviews."
-
- "The library is somewhat lower level than I would like. For
- example, check boxes and dialog boxes are not built-in, but they
- provide examples to show you how to build them."
-
- "They do not currently support variable fonts, although their tech
- support told me it is planned for a future release."
-
- "Incidentally, applications seem to be pretty large with it."
-
- "The major problem I have with it is I wish it worked with a DOS
- extender under Zortech"
-
- OTHER POINTS...
-
- "If you can't find what you need in the docs, then look in the
- sources"
-
- "Rumours says that they are working on Macintosh, OS/2 and UNIX
- version too. Apple programmers has seen an early version of the
- mac version."
-
- REVIEWS IN...
-
- Dr. Dobb's (12/90),
- Computer Language (12/90)
- PC Week (12/26?/91).
- Byte (01/91)
-
- SUMMARY...
-
- It seems that generally, people are happy with it and think it's a
- good UI library. The older version (pre V2.01) was slightly
- buggy, particularly in the designer and the MS windows parts, but
- this has mostly been fixed in V2.01. Most of the bugs had work
- arounds.
-
- The library is fast and flexible, although radio buttons, check
- boxes etc, are not built in classes and have to be derived from
- existing classes - fairly easy for the more advanced programmer -
- maybe slightly difficult for others..
-
- Documentation, was reasonable in the older versions and is now
- greatly improved in the new one, with over 1100 pages. Technical
- support from the company was generally regarded as VERY good.
-
- Thanks to people who contributed...
-
- pope@daimi.aau.dk (Povl H. Pedersen)
- jamshid@emx.utexas.edu (Jamish Afshar)
- ferdie@coyote.datalog.com (fred jarvis)
- borkoles@dcs.qmw.ac.uk
- ajb@ee.wpi.edu (Arthur J Butler)
-
- 3.10. Starview C++ Graphical User Interface Library
- _ __ ________ _ _________ ____ _________ _______
-
- + Designed to be independent of OS and Hardware vendors
-
- + Author: Andreas Meyer, STAR DIVISION
-
- Contact:
-
- STAR DIVISION GmbH
- Andreas Junge
- Zum Elfenbruch 5-11
- D-2120 Lueneburg
- Phone: ++49 4131 700943
- Fax: ++49 4131 700921
- Email: ...!unido!starlab!aj
-
- + The development of large applications for Graphical
- User Interfaces (GUI's) like MS-WINDOWS, MS Presenta-
- tion Manager or OSF/Motif is a very time consuming job.
- In addition, the application programming interfaces
- (API's) of the different GUI's are totally incompatible
- making a direct port of source code to another GUI
- platform impossible, almost all code driving the user's
- interface must be re-written by the programmer.
-
- Two years ago, STAR DIVISION decided to develop a set
- of new applications for GUI's which should fulfill the
- requirements of modern software standards this entails:
-
- - Portability between the operating systems MS-DOS,
- OS/2, Macintosh and different UNIX flavours
-
- - At least portable between the GUI's MS-WINDOWS,
- MS-Presentation Manager, MacApp and OSF/Motif
-
- - Fulfillment of the requirements of the different
- GUI Style Guide's
-
- - Data exchange and direct communication between the
- applications in homogeneous and heterogeneous net-
- works (groupware approach)
-
- Because of the indifferent "political" situation (i.e.
- MS-DOS or OS/2 or UNIX or everything, WINDOWS or PM or
- X.11 or everything) we decided to develop a set of
- tools which helps us to be mostly independent from the
- decisions of the OS and hardware vendors. In addition
- tools help to improve productivity and are the base for
- a successful software project. C++ is the programming
- language of our choice because we could use our large
- experiences in C programming and C++ provides all major
- advantages of Object Oriented Programming (OOP) that is
- - from our point of view - the best available paradigm
-
- for complex software development today.
-
- + Information provided by Dave Riches (dsr@bnr.co.uk)
-
- 3.11. TEGL Library
- _ __ ____ _______
-
- + Supported on Borland C++
-
- + Address not known
-
- + Price around $99
-
- + One respondant faulted it for "ignoring CUA" while
- another praised it as having the look and feel of
- presentation manager. The source code apparently is not
- highly polished and it does recommend using more than
- one mouse button.
-
- + Information provided by Andrew G. Bennett
- (bennett@math.ksu.edu)
-
- 3.12. Linpack Math Library
- _ __ _______ ____ _______
-
- + MSDOS, UNIX, and many other platforms including a vec-
- torised version of CRAY
-
- + Commercial software from:
- Rogue Wave Software Inc.
- 1325 NW 9th Street,
- Corvallis, OR, 97330,
- (503) 754-2311.
-
- + No information on the compatability with the proposed
- ANSI/ISO standard
-
- + The classes are available now. Prices range from $199
- to $995 for Matrix.h++ and $299 to $1195 for
- Linpack.h++.
-
- + Linpack.h++ is an object-oriented C++ version of the
- widely used Fortran library. Linpack.h++ includes 100%
- of the functionality of the Fortran version, plus much
- more. Because Linpack.h++ is written in C++ it has
- capabilities that far exceed the Fortran version.
-
- Both Matrix.h++ and Linpack.h++ are completely compati-
- ble with Rogue Wave's other C++ class libraries,
- Tools.h++ and Math.h++, which are accepted standards in
- the industry.
-
- Matrix.h++ includes all the funtionality of Math.h++.
- For example: general matrices, vectors, statistics,
- complex numbers, Fast Forier Transformation (FFT's),
- etc. Matrix.h++ adds specialized matrix classes such
- as banded, symmetric, positive-definite, Hermitian,
- tridiagonal, etc. Because Matrix.h++ includes
- Math.h++, it can take advantage of Math.h++'s highly
- optimized low-level assembly routines, making it fast
- as well as graceful.
-
- + Information provided by Dave Riches (dsr@bnr.co.uk)
-
- 3.13. Objectkit\C++ 1.0
- _ __ ___________ _ _
-
- + Commercial software available from:
-
- ParcPlace Systems, Inc.
- 999 E. Arques Ave.
- Sunnyvale, CA 94086
- Tel: (408)481-9090
- Sales: 1-800-759-7272
- email: info@parcplace.com
-
- + Features the AT&T Standard Library Extensions:
-
- - variable length bit strings
-
- - adjustable 1-d vectors of parameterized type
- (implemented via macros)
-
- - classes for date, time-of-day, timezone and time-
- duration arithmetic
-
- - finite state machine classes
-
- - simple exception handling using Objection classes
-
- - parameterized linked lists (parameterization via
- macros)
-
- - associative arrays (i.e., keys/value associations)
-
- - fast memory allocation class: Pool
-
- - program execution time measurement class:
- Stopwatch
-
- - String class and specializations of iostream and
- streambuf for String
-
- As a convenience for purchasers, Objectkit\C++ 1.0 also
- includes the NIHCL and InterViews class libraries as
- *unsupported* free software.
-
- Objectkit\C++ OI - based on technology licensed from
- Solbourne, OI is a C++ class library for rapid develop-
- ment of graphical user-interfaces that allow runtime
- selection of OSF/Motif or OPENlOOK look-and-feel.
-
- + Information provided by Mike Khaw (khaw@parcplace.com)
-
- 3.14. MFC (Microsoft Foundation Class Library)
- _ __ ___ _________ __________ _____ _______
-
- + Included with the MS C7 compiler. Please refer to the
- Microsoft Compiler section.
-
- + Includes complete source. Supports all standard memory
-
- models.
-
- Supports DLLs [dynamic link libaries aka shared
- Libraries].
-
- Also sometimes referred to as AFX "Application
- FrameworX", and/or "The C++ API for Microsoft Windows"
-
- + Information provided by: jimad@microsoft.com
-
- 3.14.1. Introduction
- _ __ _ ____________
-
- MFC's primary design goals are to provide an efficient,
- compact, fast, easy-to-use, typesafe, and portable version
- of the Windows API for the C++ programmer. A secondary goal
- is to provide Collection classes, diagnostic memory manage-
- ment, etc, for DOS and Windows programmers. MFC is imple-
- mented without the use of language-extensions, allowing the
- library to be ported to other C++ conformant compilers
- [although right now MFC is only shipping with the C7 com-
- piler.] MFC closely follows the naming conventions and use
- of the "C" Windows API so that programmers experienced in
- Windows programming find it easy to switch from C to the C++
- APIs. However the "lower level" aspects of Windows program-
- ming are improved upon by MFC. For example wparam, lparam
- packing/unpacking is handled automatically and in a type
- safe manner. Also the main message loop is handled automat-
- ically. Switch statements are replaced with the use of vir-
- tual functions and/or cached message dispatch that avoid
- slow message searches. Finally, the C++ Windows classes are
- implemented in such a manner as to remain compatible with
- the C implementations, such that Windows programmers can
- still use the C APIs where desired, and/or can mix old
- implementations of Windows classes implemented in "C" with
- new Windows classes written in C++. Namespace collisions
- with other libraries are avoided by using an uppercase "C"
- prefix on the MFC Windows classes. MFC includes support for
- OLE, DDE, Multimedia, and Windows for Pen Computing. Appli-
- cations written using MFC are automatically pen aware.
-
- 3.14.2. Window Application Classes
- _ __ _ ______ ___________ _______
-
- CWinApp Main windows application class
-
- Window Classes
-
- CWnd Base class for all windows
- CFrameWnd Main window base class for the SDI (Single Document
- Interface) desktop window
- CMDIFrameWnd Base class for the MDI (Multiple Document Interface)
- desktop window
- CMDIChildWnd Base class for MDI child windows
- CDialog Base class for modeless dialog windows
- CModalDialog Base class for modal dialog windows
- CButton Button control windows
- CComboBox Combo box control windows
- CEdit Edit control windows
- CListBox List box control windows
- CScrollBar Scroll bar control windows
- CStatic Static control windows
-
- GDI (Graphical Device Interface) Classes
-
- CDC Base class for display contexts
- CClientDC Display contexts for client areas of windows
- CMetaFileDC Metafile device contexts
- CPaintDC Display contexts used in <OnPaint> member functions
- CWindowDC Display contexts for entire windows
- CGdiObject Base class for GDI drawing tools
- CBitmap GDI physical bitmaps
- CBrush GDI physical brushes
- CFont GDI physical fonts
- CPalette GDI physical palettes
- CPen GDI physical pens
- CRgn GDI physical regions
-
- Other Windows Classes
-
- CMenu Menu structures
- CPoint (X, Y) points in a device context
- CSize Relative positions or coordinate pairs
- CRect Rectangular regions in a device context
- OLE (Object Linking and Embedding) Classes
- OLE Classes Object Linking and Embedding Classes
-
- Run-Time Object Model Class
-
- CObject Root class in the Foundation class hierarchy
-
- File Classes
-
- CFile Binary disk files
- CMemFile In-memory files
- CStdioFile Buffered stream disk files, usually text mode
-
- Object Input/Output
-
- CArchive Persistent storage for objects
- CDumpContext Destinations for diagnostic output
-
- Exceptions
-
- CException Abstract base class for exceptions
- CArchiveException Archive-specific exceptions
- CFileException File-specific exceptions
- CMemoryException Out of memory exceptions
- CNotSupportedException Function not supported exceptions
- CResourceException Windows resource not found exceptions
-
- Collections
-
- CByteArray Arrays of bytes
- CDWordArray Arrays of 32-bit double-words
- CObArray Arrays of CObject pointers
- CPtrArray Arrays of void pointers
- CStringArray Arrays of strings
- CWordArray Arrays of 16-bit words
- <template array class>
-
- CObList Lists of CObject pointers
- CPtrList Lists of void pointers
- CStringList List of strings
- <template list class>
-
- CMapPtrToWord Mappings of void pointers to 16-bit words
- CMapPtrToPtr Mappings of void pointers to void pointers
- CMapStringToOb Mappings of strings to CObject pointers
- CMapStringToPtr Mappings of void pointers to CObject pointers
- CMapStringToString Mappings of strings to strings
- CMapWordToOb Mappings of 16-bit words to CObject pointers
- CMapWordToPtr Mappings of 16-bit words to void pointers
- <template map class>
-
- Miscellaneous Support Classes
-
- CString Character strings
- CTime Absolute time and date values
- CTimeSpan Relative time and date values
-
- Global Functionality
-
- Diagnostic Services Global memory diagnostic functions
- and macros (Debug only)
- Exception Processing Global exception throwing and
- catching functions and macros
- Message-Map Reference CWnd message map entries
- with message-handler function
- prototypes
-
- 3.15. NetClasses
- _ __ __________
-
- + Commercial software available from:
-
- PostModern Computing Technologies, Inc.
- 1032 Elwell Court, Suite 240
- Palo Alto, California 94303
- Telephone: (415) 967-6169
- Facsimile: (415) 967-6212
- Email: plambeck@cs.stanford.edu
-
- + No information on compatability of the future ANSI/ISO
- standard.
-
- + NetClasses is a set of C++ class libraries for distri-
- buted object-oriented communications that will begin
- beta testing June 15 and is scheduled for production
- release in the 3rd quarter of 1992.
-
- + Information provided by Thane E. Plambeck
- <plambeck@cs.stanford.edu>
-
- 3.15.1. Introduction
- _ __ _ ____________
-
- One of the major stumbling blocks of developing and
- fielding complex distributed applications is the difficulty
- in implementing and debugging using existing communication
- tools. The focus of the NetClasses architecture has been to
- provide the tools necessary for programmers to develop com-
- plex distributed applications without having to deal with
- the esoteric details of low-level communications.
-
- NetClasses is a set of C++ class libraries that is organized
- as a software toolkit. The typical user of the NetClasses
- libraries will be a distributed systems application
- developer who requires an object-oriented framework for dis-
- tributed, message-passing based programming. By linking the
- appropriate NetClasses libraries, application programmers
- are then able to:
-
- + Transport objects over a network.
-
- Currently, there are three object varieties that NetC-
- lasses can transport:
-
- 1. Arbitrary C++ objects---once derived from
- PostModern's TransObject class
-
- 2. arbitrary NIH-derived objects; and provide an
- object-oriented data transport in which the struc-
- ture and organization of network transportable
- objects is specified externally in configurable
- files using a simple, programming language
- independent abstract syntax notation, the NetC-
- lasses Abstract Syntax Notation (NASN).
-
- + Perform remote method invocations (RMI)
-
- Using RMI, an application on machine B can invoke a
- method on machine A. RMI insulates distributed applica-
- tions from the complexity inherent in traditional,
- RPC-based distributed systems development tools such as
- protocol compilers, TCP/IP code writing, and detailed
- socket handling. RMI makes fault tolerance and connec-
- tion management transparent to the application program-
- mer. The RMI layer is built on top of the distributed
- services package that is described below.
-
- + Build complex information distribution systems on top
- of Distributed Services, PostModern Computing's
- object-oriented approach to client-server connection
- management and fault tolerance.
-
- + Use the NetClasses application programmer interface in
- order to create, manipulate, and destroy typed objects
- given NetClasses Typed Object data type definitions.
- (NIH-derived and native C++ objects are created, mani-
- pulated and destroyed from C++ itself).
-
- + Read and write all three varieties of NetClasses-
- transportable objects on streams using machine-
- independent external representations. All three
- varieties of objects can be stored to and read from
- files.
-
- 3.15.2. Objects as transportable data
- _ __ _ _______ __ _____________ ____
-
- One of the most common needs in distributed applica-
- tions development is the ability to ship objects over a net-
- work. Currently, when data has to move from one machine to
- another this is usually done using hard-coded structures
- over a low-level communications interface such as Berkeley
- sockets or the System V Transport Layer Interface. Moving
- data in this way has several disadvantages:
-
- + If the format of the data changes, e.g. a new field
- must be added to a structure, all programs using that
- structure must be recompiled, whether or not they actu-
- ally make use of this new field.
-
- + Developing programs using low-level interfaces require
- programmers to concentrate on details such as sockaddr
- structs, byte ordering routines such as htonl, port
- numbers, and so on. These are details that are
- irrelevant to most applications and simply stand in the
- way of efficient distributed application programming.
-
- + Because of the low-level nature of the interfaces, the
- resulting distributed programs are generally not very
- scalable. In order for distributed programs to scale
- up to large size implementations it is necessary to
- provide an infrastructure whereby data and processes
- can be managed efficiently as the number of machines on
- the network grows. This has proven to be very diffi-
- cult using low-level interface tools.
-
- Engineers developing distributed systems using object-
- oriented methodologies place great emphasis on data encapsu-
- lation and clean interfaces. One of the goals of NetClasses
- has been to preserve these properties in the communication
- interfaces.
-
- Therefore, instead of shipping byte buffers over the net-
- work, NetClasses allows applications to ship objects. In an
- object-oriented program virtually all information is stored
- in objects, making objects the most natural form in which to
- transfer information over a network.
-
- 3.15.3. Varieties of object transport
- _ __ _ _________ __ ______ _________
-
- PostModern Computing's NetClasses package provides a
- set of flexible C++ tools for object transport.
-
- The NetClasses NIH-based and Typed Object-based transports
- are built on top of the National Institutes Health (NIH)
- class library. However, the NetClasses Typed Object appli-
- cation programmer interface is not NIH-dependent. In par-
- ticular, the Typed Object interface does not in any way con-
- strain C++ developers who prefer not to use the NIH library
- themselves.
-
- The TransObject transport offers C++ programmers a third
- facility for object transport that is entirely NIH indepen-
- dent. The TransObject class library offers end-user appli-
- cation programmers a way to migrate existing C++ class
- definitions to a network-transportable framework. The Tran-
- sObject facility is independent of both the NetClassses
- Typed Object transport and the NIH-based object transport
- described above.
-
- 3.15.4. Distributed Services
- _ __ _ ___________ ________
-
- In addition to transporting objects over a network,
- another common need in distributed application development
- is the management of object dissemination and connections
- between clients and servers.
-
- PostModern Computing's Distributed Service paradigm is a
- connection and service management mechanism that is organ-
- ized around the idea that network service providers should
- not have to set up explicit port numbers and RPC connections
- but rather should simply ``advertise'' themselves on the
- network. ``Agents'' are active processes on the network
- that monitor network service advertisements and manage con-
- nections between information producers and consumers. The
- Distributed Service package is organized as a combination of
- C++ class libraries and configurable ``dsagent'' execut-
- ables. The Distributed Services paradigm is a powerful and
- flexible package that provides an object oriented framework
- for integrating and connecting applications on a network.
-
- Distributed Services provides the following features:
-
- + Fault Tolerance
-
- + Load Balancing
-
- + Multicasting
-
- 3.15.5. Remote Method Invocation (RMI)
- _ __ _ ______ ______ __________ ___
-
- The distributed services paradigm enables methods to be
- invoked on objects from remote machines. The RMI facility
- is a higher level communications facility that again shields
- the developer from port number and host name considerations.
- The focus of RMI is on ease of use. An RMI invocation
- requires no stub or skeleton files, protocol compilers, or
- RPC mechanisms. To enable object X of class C to have its
- method M invoked from a remote machine, a programmer uses
- the RMI::advertise method to advertise method X.M.
-
- If an application wants to invoke the M method on object X
- from a remote machine, it uses the RMI::invoke("X.M")
- method.
-
- Parameter passing in RMI can be based on any of the three
- NetClasses object transports (generic C++, NIH-object, or
- TypedObject). Synchronous and asynchronous RMI versions
- exist.
-
- Multiple agents can advertise method X.M. The one that is
- actually invoked is transparent to the client. RMI thus
- provides an easy mechanism for developing scalable distri-
- buted applications.
-
- 3.15.6. Transport mechanisms
- _ __ _ _________ __________
-
- In the first developer's release, NetClasses includes
- TCP- and UDP-based object transport mechanisms.
- PostModern's Reliable Broadcast Protocol (now under alpha
- testing) is a UDP-based layer for reliable object transport
- in nonconnection-oriented environments. The TCP, UDP, and
- Reliable Broadcast Protocol facilities are all organized as
- C++ class libraries.
-
-