File: pwlib.dxx

package info (click to toggle)
pwlib 1.10.2-2%2Betch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 12,112 kB
  • ctags: 14,989
  • sloc: cpp: 109,883; ansic: 6,061; sh: 2,929; makefile: 1,054; yacc: 861; asm: 161
file content (383 lines) | stat: -rw-r--r-- 11,548 bytes parent folder | download | duplicates (6)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
/**@name Portable Windows Libaray

	A multi-platform operating system and GUI abstraction system for
	application development.

@memo	A Portable Text and GUI C/C++ Class Libarary.
@version	1.2.0
@author	Equivalence Pty. Ltd.
*/
 
//@{

/**@name Introduction
\begin{center}
 	{\Large{\bf Welcome to the wonderful world of PWLib}}
\end{center}

PWLib is a moderately large class library that has its genesis many years ago as
a method to product applications to run on both Microsoft Windows and Unix
X-Windows systems. It also was to have a Macintosh port as well but this never
eventuated.

Since then the system has grown to having quite good application to areas other
than mere Windows GUI portability. Classes for I/O portability, multi-threading
portability, aid in producing unix daemons and NT services portably and all
sorts of internet protocols were added over the years.

All this over and above basic "container" classes such as arrays, linear lists,
sorted lists (RB Tree) and dictionaries (hash tables) which were all created
before STL became the answer to all our prayers. Unfortunately, due to intertia
and the GNU C++ inadequate support of templates, this library will probably not
be ported to STL in the near future.

The library was used extensively for all our in-house products. Then we decided
to support the open H323 project by throwing in some of the code written for
one of our products. Thus, required PWLib so it got thrown into the open source
world as well.

 \begin{center}
 	{\Large{\bf Enjoy!}}
 \end{center}
*/
 
/**@name	Using PWLib
Detailed tutorials will almost certainly not be forthcoming. However,
at least giving you an indication on how to start an application would
be usefull, so here is the infamous "Hello world!" program.
\begin{verbatim}
// hello.cxx

#include <ptlib.h>

class Hello : public PProcess
{
  PCLASSINFO(Hello, PProcess)
  public:
	void Main();
};

PCREATE_PROCESS(Hello)

void Hello::Main()
{
  cout << "Hello world!\n";
}

// End of hello.cxx
\end{verbatim}

The \Ref{CREATE_PROCESS} macro actually defines the #main()# function
and creates an instance of Hello. This assures that everything is
initialised in the correct order. C++ does initialisation of global
statics badly (and destruction is even worse), so try to put
everything into your PProcess descedent rather than globals.

A GUI application is very similar but is descended off
\Ref{PApplication} rather than \Ref{PProcess}, and would create a
window as a descendent off the \Ref{PMainWindow} class.

@memo	Brief examples.
*/

/**@name	Console Mode Classes
		This as far as possible "normalises" different operating systems to
                a single API so the same application can be compiled without modification.
   @memo	Classes that embody operating system abstractions.
  */
    //@{
	/**@name Base Object Class
   	   @memo The base class for all other clasess in the system, plus some
		 additional low level support classes/functions eg memory management.
	  */
	    //@{
		//@Include: include/ptlib/object.h
	    //@}
	/**@name Container Classes
   	   @memo Classes that contain other objects.
	  */
	    //@{
		//@Include: include/ptlib/contain.h
		//@Include: include/ptlib/array.h
		//@Include: include/ptlib/lists.h
		//@Include: include/ptlib/dict.h
		//@Include: include/ptlib/pstring.h
	    //@}
	/**@name I/O Channel Classes
   	   @memo Classes that perform general I/O
	  */
	    //@{
		//@Include: include/ptlib/channel.h
		//@Include: include/ptlib/indchan.h
		//@Include: include/ptlib/conchan.h
		//@Include: include/ptlib/pipechan.h
		//@Include: include/ptlib/serchan.h
		//@Include: include/ptlib/file.h
		//@Include: include/ptlib/textfile.h
		//@Include: include/ptlib/sfile.h
		//@Include: include/ptlib/filepath.h
		//@Include: include/ptlib/pdirect.h
		//@Include: include/ptlib/vconvert.h
	    //@}
	/**@name Socket Classes
   	   @memo Classes that perform Berkely Sockets I/O
	  */
	    //@{
		//@Include: include/ptlib/socket.h
		//@Include: include/ptlib/ipsock.h
		//@Include: include/ptlib/ipdsock.h
		//@Include: include/ptlib/udpsock.h
		//@Include: include/ptlib/tcpsock.h
		//@Include: include/ptlib/icmpsock.h
		//@Include: include/ptlib/ipxsock.h
		//@Include: include/ptlib/spxsock.h
		//@Include: include/ptlib/ethsock.h
	    //@}
	/**@name Process and Thread Classes
   	   @memo Classes that handle processes, multi-threading and synchronsiation.
	  */
	    //@{
		//@Include: include/ptlib/pprocess.h
		//@Include: include/ptlib/svcproc.h
		//@Include: include/ptlib/thread.h
		//@Include: include/ptlib/semaphor.h
		//@Include: include/ptlib/mutex.h
		//@Include: include/ptlib/syncpoint.h
		//@Include: include/ptlib/syncthrd.h
	    //@}
	/**@name Miscellaneous Classes
	  */
	    //@{
		//@Include: include/ptlib/args.h
		//@Include: include/ptlib/config.h
		//@Include: include/ptlib/ptime.h
		//@Include: include/ptlib/timeint.h
		//@Include: include/ptlib/timer.h
		//@Include: include/ptlib/dynalink.h
		//@Include: include/ptlib/sound.h
                //@Include: include/ptlib/video.h
                //@Include: include/ptlib/videoio.h
		//@Include: include/ptlib/remconn.h
		//@Include: include/ptlib/mail.h
	    //@}
    //@}

/**@name	Console Mode Components

		These classes provide a large amount of higher level functionality
		that is built on the basic Console Classes which provides the
		Operating System abstractions.

   @memo	Non-operating system specific classes that may be used as
		components in applications.
  */
    //@{
	/**@name Internet Protocol Classes
	  */
	    //@{
		//@Include: include/ptclib/inetprot.h
		//@Include: include/ptclib/inetmail.h
		//@Include: include/ptclib/mime.h
		//@Include: include/ptclib/ftp.h
		//@Include: include/ptclib/telnet.h
		//@Include: include/ptclib/socks.h
	    //@}
	/**@name HTTP Classes
	  */
	    //@{
		//@Include: include/ptclib/http.h
		//@Include: include/ptclib/url.h
		//@Include: include/ptclib/html.h
		//@Include: include/ptclib/httpform.h
		//@Include: include/ptclib/httpsvc.h
	    //@}
	/**@name ASN.1 Support Classes
	  */
	    //@{
		//@Include: include/ptclib/asner.h
	    //@}
	/**@name Miscellaneous Classes
	  */
	    //@{
		//@Include: include/ptclib/modem.h
		//@Include: include/ptclib/ipacl.h
		//@Include: include/ptclib/random.h
		//@Include: include/ptclib/cypher.h
		//@Include: include/ptclib/pssl.h
		//@Include: include/ptclib/pwavfile.h
		//@Include: include/ptclib/dtmf.h
	    //@}
    //@}

/**@name	GUI Mode Classes

		These classes abstract Graphics User Interface elements for use
		by multiple platforms. Each element is implemented in the native
		manner for that platform eg X Windows/Motif.

   @memo	Classes that embody windowing system abstractions.
  */
    //@{
	/**@name Interactor Classes
	  */
	    //@{
		//@Include: include/pwlib/interact.h
		//@Include: include/pwlib/ilayout.h
		//@Include: include/pwlib/titlewnd.h
		//@Include: include/pwlib/toplwnd.h
		//@Include: include/pwlib/mdidoc.h
		//@Include: include/pwlib/mdiframe.h
		//@Include: include/pwlib/scrollab.h
		//@Include: include/pwlib/popup.h
		//@Include: include/pwlib/balloon.h
	    //@}
	/**@name Menu Classes
	  */
	    //@{
		//@Include: include/pwlib/menuent.h
		//@Include: include/pwlib/rootmenu.h
		//@Include: include/pwlib/submenu.h
		//@Include: include/pwlib/menuitem.h
		//@Include: include/pwlib/menusep.h
	    //@}
	/**@name Control Classes
	  */
	    //@{
		//@Include: include/pwlib/control.h
		//@Include: include/pwlib/ncontrol.h
		//@Include: include/pwlib/pbutton.h
		//@Include: include/pwlib/tbutton.h
		//@Include: include/pwlib/ibutton.h
		//@Include: include/pwlib/rbutton.h
		//@Include: include/pwlib/checkbox.h
		//@Include: include/pwlib/check3.h
		//@Include: include/pwlib/choicbox.h
		//@Include: include/pwlib/combobox.h
		//@Include: include/pwlib/listbox.h
		//@Include: include/pwlib/clistbox.h
		//@Include: include/pwlib/slistbox.h
		//@Include: include/pwlib/listview.h
		//@Include: include/pwlib/editbox.h
		//@Include: include/pwlib/meditbox.h
		//@Include: include/pwlib/pwedbox.h
		//@Include: include/pwlib/numedbox.h
		//@Include: include/pwlib/intedit.h
		//@Include: include/pwlib/realedit.h
		//@Include: include/pwlib/scrollb.h
		//@Include: include/pwlib/hscrollb.h
		//@Include: include/pwlib/vscrollb.h
		//@Include: include/pwlib/stattext.h
		//@Include: include/pwlib/staticon.h
		//@Include: include/pwlib/statrect.h
		//@Include: include/pwlib/statbox.h
	    //@}
	/**@name Dialog Classes
	  */
	    //@{
		//@Include: include/pwlib/dialog.h
		//@Include: include/pwlib/modaldlg.h
		//@Include: include/pwlib/floatdlg.h
		//@Include: include/pwlib/simpdlg.h
		//@Include: include/pwlib/opendlg.h
		//@Include: include/pwlib/filedlg.h
		//@Include: include/pwlib/savedlg.h
		//@Include: include/pwlib/dirdlg.h
		//@Include: include/pwlib/fontdlg.h
		//@Include: include/pwlib/pclrdlg.h
		//@Include: include/pwlib/printdlg.h
		//@Include: include/pwlib/prjobdlg.h
		//@Include: include/pwlib/prsetdlg.h
	    //@}
	/**@name Graphics Classes
	  */
	    //@{
		//@Include: include/pwlib/point.h
		//@Include: include/pwlib/dim.h
		//@Include: include/pwlib/rect.h
		//@Include: include/pwlib/region.h
		//@Include: include/pwlib/colour.h
		//@Include: include/pwlib/rcolour.h
		//@Include: include/pwlib/font.h
		//@Include: include/pwlib/rfont.h
		//@Include: include/pwlib/fontfam.h
		//@Include: include/pwlib/palette.h
		//@Include: include/pwlib/pattern.h
		//@Include: include/pwlib/canstate.h
		//@Include: include/pwlib/canvas.h
		//@Include: include/pwlib/icanvas.h
		//@Include: include/pwlib/dcanvas.h
		//@Include: include/pwlib/rcanvas.h
		//@Include: include/pwlib/mcanvas.h
		//@Include: include/pwlib/pcanvas.h
		//@Include: include/pwlib/image.h
		//@Include: include/pwlib/pict.h
		//@Include: include/pwlib/pixels.h
		//@Include: include/pwlib/pixels1.h
		//@Include: include/pwlib/pixels2.h
		//@Include: include/pwlib/pixels24.h
		//@Include: include/pwlib/pixels32.h
		//@Include: include/pwlib/pixels4.h
		//@Include: include/pwlib/pixels8.h
	    //@}
	/**@name Miscellaneous Classes
	  */
	    //@{
		//@Include: include/pwlib/applicat.h
		//@Include: include/pwlib/stdresid.h
		//@Include: include/pwlib/resdata.h
		//@Include: include/pwlib/rstring.h
		//@Include: include/pwlib/caret.h
		//@Include: include/pwlib/cursor.h
		//@Include: include/pwlib/icon.h
		//@Include: include/pwlib/imgicon.h
		//@Include: include/pwlib/clipbrd.h
		//@Include: include/pwlib/keycode.h
		//@Include: include/pwlib/prinfo.h
		//@Include: include/pwlib/commands.h
		//@Include: include/pwlib/mailgui.h
	    //@}
    //@}

 /**@name	GUI Mode Components

		These classes provide a large amount of higher level functionality
		that is built on the basic GUI Classes which provides the
		GUI system abstractions.

    @memo	Non-windowing system specific classes that may be used as
		components in applications.
  */
    //@{
	/**@name Tool and Status Bars
	  */
	    //@{
		//@Include: include/pwclib/toolbars.h
	    //@}
	/**@name Window Splitter Controls
	  */
	    //@{
		//@Include: include/pwclib/splitter.h
	    //@}
	/**@name Wizard Dialog
	  */
	    //@{
		//@Include: include/pwclib/wizard.h
	    //@}
	/**@name ANSI Terminal Control
	  */
	    //@{
		//@Include: include/pwclib/ansiterm.h
	    //@}
	/**@name Geometric Shapes 
	  */
	    //@{
		//@Include: include/pwclib/shapes.h
	    //@}
	/**@name Miscellaneous Classes
	  */
	    //@{
		//@Include: include/pwclib/progress.h
	    //@}
    //@}

//@}