(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
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- The Open Object Library (OOL) is copyrighted freeware
- Redistributions of any files must retain the above copyright notice,
this list of conditions and the following disclaimer.
- 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.
- If you want to distribute the OOL with another product you have to
apply the authors permission.
- If you want to reprint sourcecode of the OOL you have to apply the
authors permission.
- 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!!!
- 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
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).
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!
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
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
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
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.
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.
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
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