# The Open Object Library

#### (alpha release)

(c)opyright Stefan von Brauk, Jens von Pilgrim 1996

The Open Object Library (OOL) is a C++ library wich contains classes for GUIs, datatypes, multimedia and more.

Because we´ve just started to develop this library only the most modern operating system ( OS/2 Warp) is supported. Also only EMX is supported, support for other compilers will follow.

This file is under construction, so many things are not avaible or doesnt work correctly) (new versions of documentation soon avaible)

### Contents

- License
- Installation
  - Installation for application-development
  - Installation for developing the OOL
- We need help!
- We give help!
- Overview
  - class index
  - Things which dont work
  - What the samples show you
  - Hints
  - Other

### License

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. The Open Object Library (OOL) is copyrighted freeware
2. Redistributions of any files must retain the above copyright notice, this list of conditions and the following disclaimer.
3. You are not allowed to sell or commercially distribute the OOL or any part of it. If you want to distribute the OOL commercialy you have to apply the authors permission.
4. If you want to distribute the OOL with another product you have to apply the authors permission.
5. If you want to reprint sourcecode of the OOL you have to apply the authors permission.
6. You are allowed to use the OOL in your programms (also commercial) if you distribute the used parts of the OOL only with the DLL(s) distributed with this package. Static linkage or distribution in form of self-constructed DLLs is not allowed!!!
7. You must send a copy of every programm which you have developed with the OOL to the authors of the OOL (to test and enjoy).

BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THEPOSSIBILITY OF SUCH DAMAGES.

Back to Titlepage

## Installation

To develop using the Open Object Library (OOL) you need the EMX package 0.9b for OS/2 including fixpack 05 and the multimedia extensions (MM4EMX). The makefiles delivered with OOL are for GNU MAKE, if you want to use them you need to install GNU MAKE. MMOS/2 must be installed on the system you develop and on the system(s) your applications should run. Additional the EMX runtime-package (the multithreading DLLs) must be installed on the target system(s).

### Installation for Application-development

If the OOL-files are zipped, unzip them and copy them to the place you want to. Copy the DLL(s) to a directory of your LIBPATH, for example C:\OS2\APPS\DLL. At least change the settings of EMX in the config.sys. Just add the following line to the CPLUS_INCLUDE_PATH statement:

    PATH/ool/include;

where PATH ist the path you have copied the OOL-files to. For example, the complete statement looks like

    SET CPLUS_INCLUDE_PATH=c:/emx/include/cpp;c:/emx/include;c:/emx/ool/include;

Finaly copy the LIBs which are shipped in this package to the LIB-path of EMX, for example c:\emx\lib. (dont forget to reboot!) If you want to compile the samples you must change the paths given in the makefiles of the samples!

### Installation for Developing the OLL

If you want to develop the OOL, process installation described above. Additional you must change the paths given in the makefile of the OOL (..\OOL\SOURCE\EMX.MAK), MAKE will then copy the created files to the place you need them.

Back to Titlepage

### We need Help!

Writing a class-library needs a lot of time and know how. If you inspect the OOL-project you will see that a lot of functionality is implementated but also a lot of things are missing. If you have time and the know how to:

- implement graphic-classes (OpenGL)
- implement more collections ( trees...), basic collections will come with the next release of OOL
- implement TCP/IP-classes
- implement classes for DDE, (named) pipes, semaphores
- implement an interface to OO-Rexx
- improve already existing classes
- improve documentation
- port the OOL to other compilers ( VA, Borland, Metaware...)
- or port the OOL to other 32bit-plattforms (Linux, NT, Atari ST, AIX...)

you should contact the authors, subject: Its Me!

Back to Titlepage

### We give Help!

Yes, we know: Using a class-library you have a lot of questions without an answer. Therfore we offer COMMERCIAL SUPPORT.

For more informations on commercial support contact the authors., subject: help!

Sorry, but we cant offer any other form of support.

Back to Titlepage

## Overview

### Things which dont work

##### Exception-Handling

Because exception-handling of EMX/GCC does not work correctly, exception-handling is not supported in the OOL.

##### Graphic output

The classes for painting are under construction and will be changed very soon. Please dont use them!

##### Using VA or CSet++

There are makefiles for VA/CSet++ in the OOL-package, but be sure: it will not work using VA/CSet++! We will try to support this compiler in the future.

### What the samples show you

##### Sample1

Sample 1 is a little intro, it shows multithread-programming, building simple application windows, introduction in drag/drop and in the handler-concept of the OOL.

##### Sample2

Sample2 shows how to use toolbars, controls (buttons, listboxes etc), special gimmick!

##### Sample3

Sample3 shows how to use the multimedia-interface of OOL.

##### Sample4

Sample4 is an introduction into container-programming (the windows, not the collections!). More about handlers and drag/drop.

##### Sample5

Sample5 shows how to construct windows from resources (which are build with the dialog-editor), including a resource DLL.

### Hints

##### Including headers

To include header-files use this simple method: Include the standard header of OOL (xheaders.h) and then include the header-file of the class you want to use by typing the classname with the suffix "_i", for example:

    #include "xheaders.h"        //the standard header
    #include XFrameWindow_i      //class XFrameWindow
    #include XMenuBar_i          //class XMenuBar

    //and so on

To improve perfomance in some header-files functions are inlined. Dont touch this functions!

##### Destructors

Destructors of windows, menus, toolbars etc are called automaticaly -> only call a destructor if you want to destroy a window!
From this reason you must be carefull with constructions like the following:

    //wrong way:
    void xyz(void)
    {
          XMenuBar menu(...);  //the menubar is constructed

    			//do something

    			//here the destructor of XMenuBar is called
    			//and the menu is destroyed!
    }

    //correct:
    void xyz(void)
    {
          XMenuBar * menu = new XMenuBar(...);   //the menubar is constructed

    			//do something

    			//the destructor of XMenuBar is not called!
    			//the destructor of XMenuBar is called when
    			//the user requests closing the associated window automaticaly.
    }

Back to Titlepage

### Other

##### DLL-Naming conventions

DLLs of the OOL project follow these naming-conventions:

    first 3 letters: "OOL"
    4. letter:        module index, actualy only "M" (main)
    5. letter:        Operating System, actualy only "3" (Warp 3)
    6. letter:        compiler, actualy only "E" (EMX/GCC)
    7-8. letter:      version, actualy "01" (alpha release)

##### Debugging with OOL

The samples and the library are delivered in non-debug mode. If you want to use a debugger you can chose the debugger from VA. Therefore you must modify the makefiles at two positions: Enter after the $(COMPILE) the following statement:

$(DEBUG)

Additionaly add $(DEBUG) after the $(LINK) statement. To debug you must recompile the complete library/sample (remember your license-agreement).
Unfortunaly the VA-debugger cannot show every variable of your interest, but we dont know a better debugger on OS/2 which works with EMX/GCC.

Back to Titlepage