Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl_Callback_List.h

00001 /*
00002  * $Id: Fl_Callback_List.h,v 1.7 2003/03/15 16:09:55 laza2000 Exp $
00003  *
00004  * Extended Fast Light Toolkit (EFLTK)
00005  * Copyright (C) 2002-2003 by EDE-Team
00006  * WWW: http://www.sourceforge.net/projects/ede
00007  *
00008  * Fast Light Toolkit (FLTK)
00009  * Copyright (C) 1998-2003 by Bill Spitzak and others.
00010  * WWW: http://www.fltk.org
00011  *
00012  * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00013  * version 2. See COPYING for details.
00014  *
00015  * Author : Mikko Lahteenmaki
00016  * Email  : mikko@fltk.net
00017  *
00018  * Please report all bugs and problems to "efltk-bugs@fltk.net"
00019  *
00020  */
00021 
00022 
00023 #ifndef _FL_CALLBACK_LIST_H_
00024 #define _FL_CALLBACK_LIST_H_
00025 
00026 #include "Fl_Ptr_List.h"
00027 #include "Fl_Widget.h"
00028 
00029 typedef Fl_Callback * Fl_Callback_p; // for Borland CBuilder
00030 
00031 typedef struct CallbackDataStruct {
00032     CallbackDataStruct(Fl_Callback *c, void *a) { cb=c; arg=a; }
00033     Fl_Callback *cb;
00034     void *arg;
00035 } CallbackData;
00036 
00038 class Fl_Callback_List : public Fl_Ptr_List {
00039 public:
00040     Fl_Callback_List() : Fl_Ptr_List() { auto_delete(true); }
00041     virtual ~Fl_Callback_List() { clear(); }
00042 
00043     void do_callback(Fl_Widget *w);
00044     void do_callback(Fl_Widget *w, void *arg);
00045 
00046     void append(Fl_Callback *cb, void *arg) { Fl_Ptr_List::append((void *)new CallbackData(cb, arg)); }
00047     void prepend(Fl_Callback *cb, void *arg) { Fl_Ptr_List::prepend((void *)new CallbackData(cb, arg)); }
00048     void insert(uint pos, Fl_Callback *cb, void *arg) { Fl_Ptr_List::insert(pos, (void *)new CallbackData(cb, arg)); }
00049     void replace(uint pos,Fl_Callback *cb, void *arg) { Fl_Ptr_List::replace(pos, (void *)new CallbackData(cb, arg)); }
00050     void remove(uint pos) { Fl_Ptr_List::remove(pos); }
00051     bool remove(Fl_Callback *cb, void *arg);
00052     int index_of(Fl_Callback *cb, const void *arg) const;
00053 
00054     Fl_Callback_p callback(uint index) const { return (Fl_Callback_p)((CallbackData*)Fl_Ptr_List::item(index))->cb; }
00055     void *arg(uint index) const { return (void*)((CallbackData*)Fl_Ptr_List::item(index))->arg; }
00056     CallbackData *item(uint index) const { return (CallbackData*)Fl_Ptr_List::item(index); }
00057 
00058     CallbackData **data() { return (CallbackData**)items; }
00059     CallbackData *operator [](uint ind) const { return (CallbackData*)items[ind]; }
00060 
00061 protected:
00062     virtual void free_item(Fl_Ptr_List_Item item) { delete (CallbackData*)(item); }
00063 };
00064 
00065 #endif

Generated on Thu Jul 31 15:33:43 2003 for eFLTK by doxygen1.2.15