abf3a16d40
* src/plugins/Makefile.am * src/plugins/archive/Makefile.am * src/plugins/clamd/Makefile.am * src/plugins/clamd/clamav_plugin.c * src/plugins/clamd/clamav_plugin.h * src/plugins/clamd/clamav_plugin_gtk.c * src/plugins/clamd/placeholder.txt * src/plugins/clamd/libclamd/Makefile.am * src/plugins/clamd/libclamd/clamd-plugin.c * src/plugins/clamd/libclamd/clamd-plugin.h * src/plugins/fetchinfo/Makefile.am * src/plugins/fetchinfo/fetchinfo_plugin.c * src/plugins/fetchinfo/fetchinfo_plugin.h * src/plugins/fetchinfo/fetchinfo_plugin_gtk.c * src/plugins/fetchinfo/placeholder.txt * src/plugins/gdata/Makefile.am * src/plugins/gdata/cm_gdata_contacts.c * src/plugins/gdata/cm_gdata_contacts.h * src/plugins/gdata/cm_gdata_prefs.c * src/plugins/gdata/cm_gdata_prefs.h * src/plugins/gdata/gdata_plugin.c * src/plugins/gdata/gdata_plugin.h * src/plugins/gdata/placeholder.txt * src/plugins/geolocation/placeholder.txt * src/plugins/gtkhtml2_viewer/placeholder.txt * src/plugins/mailmbox/Makefile.am * src/plugins/mailmbox/carray.c * src/plugins/mailmbox/carray.h * src/plugins/mailmbox/chash.c * src/plugins/mailmbox/chash.h * src/plugins/mailmbox/clist.c * src/plugins/mailmbox/clist.h * src/plugins/mailmbox/mailimf.c * src/plugins/mailmbox/mailimf.h * src/plugins/mailmbox/mailimf_types.c * src/plugins/mailmbox/mailimf_types.h * src/plugins/mailmbox/mailimf_types_helper.c * src/plugins/mailmbox/mailimf_types_helper.h * src/plugins/mailmbox/mailimf_write.c * src/plugins/mailmbox/mailimf_write.h * src/plugins/mailmbox/maillock.c * src/plugins/mailmbox/maillock.h * src/plugins/mailmbox/mailmbox.c * src/plugins/mailmbox/mailmbox.h * src/plugins/mailmbox/mailmbox_folder.c * src/plugins/mailmbox/mailmbox_folder.h * src/plugins/mailmbox/mailmbox_gtk.deps * src/plugins/mailmbox/mailmbox_parse.c * src/plugins/mailmbox/mailmbox_parse.h * src/plugins/mailmbox/mailmbox_types.c * src/plugins/mailmbox/mailmbox_types.h * src/plugins/mailmbox/mmapstring.c * src/plugins/mailmbox/mmapstring.h * src/plugins/mailmbox/placeholder.txt * src/plugins/mailmbox/plugin.c * src/plugins/mailmbox/plugin_gtk.c * src/plugins/mailmbox/plugin_gtk.h * src/plugins/newmail/Makefile.am * src/plugins/newmail/newmail.c * src/plugins/newmail/placeholder.txt * src/plugins/notification/Makefile.am * src/plugins/notification/claws.def * src/plugins/notification/notification_banner.c * src/plugins/notification/notification_banner.h * src/plugins/notification/notification_command.c * src/plugins/notification/notification_command.h * src/plugins/notification/notification_core.c * src/plugins/notification/notification_core.h * src/plugins/notification/notification_foldercheck.c * src/plugins/notification/notification_foldercheck.h * src/plugins/notification/notification_hotkeys.c * src/plugins/notification/notification_hotkeys.h * src/plugins/notification/notification_indicator.c * src/plugins/notification/notification_indicator.h * src/plugins/notification/notification_lcdproc.c * src/plugins/notification/notification_lcdproc.h * src/plugins/notification/notification_pixbuf.c * src/plugins/notification/notification_pixbuf.h * src/plugins/notification/notification_plugin.c * src/plugins/notification/notification_plugin.h * src/plugins/notification/notification_popup.c * src/plugins/notification/notification_popup.h * src/plugins/notification/notification_prefs.c * src/plugins/notification/notification_prefs.h * src/plugins/notification/notification_trayicon.c * src/plugins/notification/notification_trayicon.h * src/plugins/notification/placeholder.txt * src/plugins/notification/plugin.def * src/plugins/notification/raw_claws_mail_logo_64x64.h * src/plugins/notification/version.rc * src/plugins/pdf_viewer/Makefile.am * src/plugins/pdf_viewer/doc_index.xpm * src/plugins/pdf_viewer/doc_index_close.xpm * src/plugins/pdf_viewer/doc_info.xpm * src/plugins/pdf_viewer/first_arrow.xpm * src/plugins/pdf_viewer/last_arrow.xpm * src/plugins/pdf_viewer/left_arrow.xpm * src/plugins/pdf_viewer/placeholder.txt * src/plugins/pdf_viewer/poppler_viewer.c * src/plugins/pdf_viewer/poppler_viewer.h * src/plugins/pdf_viewer/right_arrow.xpm * src/plugins/pdf_viewer/rotate_left.xpm * src/plugins/pdf_viewer/rotate_right.xpm * src/plugins/pdf_viewer/zoom_fit.xpm * src/plugins/pdf_viewer/zoom_in.xpm * src/plugins/pdf_viewer/zoom_out.xpm * src/plugins/pdf_viewer/zoom_width.xpm * src/plugins/perl/Makefile.am * src/plugins/perl/perl_gtk.c * src/plugins/perl/perl_gtk.h * src/plugins/perl/perl_plugin.c * src/plugins/perl/perl_plugin.h * src/plugins/perl/placeholder.txt * src/plugins/python/Makefile.am * src/plugins/python/clawsmailmodule.c * src/plugins/python/clawsmailmodule.h * src/plugins/python/composewindowtype.c * src/plugins/python/composewindowtype.h * src/plugins/python/foldertype.c * src/plugins/python/foldertype.h * src/plugins/python/messageinfotype.c * src/plugins/python/messageinfotype.h * src/plugins/python/nodetype.c * src/plugins/python/nodetype.h * src/plugins/python/placeholder.txt * src/plugins/python/python-hooks.c * src/plugins/python/python-hooks.h * src/plugins/python/python-shell.c * src/plugins/python/python-shell.h * src/plugins/python/python_plugin.c * src/plugins/vcalendar/Makefile.in Add some plugins (clamd, fetchinfo, gdata, mailmbox, newmail, notification, pdf_viewer, perl, python). Notification not yet enabled because it has too much autoconf switches for my taste.
126 lines
3.9 KiB
C
126 lines
3.9 KiB
C
|
|
/*
|
|
* libEtPan! -- a mail stuff library
|
|
*
|
|
* carray - Implements simple dynamic pointer arrays
|
|
*
|
|
* Copyright (c) 1999-2000, Gaël Roualland <gael.roualland@iname.com>
|
|
* interface changes - 2002 - DINH Viet Hoa
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of the libEtPan! project nor the names of its
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*/
|
|
|
|
/*
|
|
* $Id$
|
|
*/
|
|
|
|
#ifndef CARRAY_H
|
|
#define CARRAY_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <inttypes.h>
|
|
|
|
struct carray_s {
|
|
void ** array;
|
|
unsigned int len;
|
|
unsigned int max;
|
|
};
|
|
|
|
typedef struct carray_s carray;
|
|
|
|
/* Creates a new array of pointers, with initsize preallocated cells */
|
|
carray * carray_new(unsigned int initsize);
|
|
|
|
/* Adds the pointer to data in the array.
|
|
Returns the index of the pointer in the array or -1 on error */
|
|
int carray_add(carray * array, void * data, unsigned int * index);
|
|
|
|
int carray_set_size(carray * array, unsigned int new_size);
|
|
|
|
/* Removes the cell at this index position. Returns TRUE on success.
|
|
Order of elements in the array IS changed. */
|
|
int carray_delete(carray * array, unsigned int indx);
|
|
|
|
/* Removes the cell at this index position. Returns TRUE on success.
|
|
Order of elements in the array IS not changed. */
|
|
int carray_delete_slow(carray * array, unsigned int indx);
|
|
|
|
/* remove without decreasing the size of the array */
|
|
int carray_delete_fast(carray * array, unsigned int indx);
|
|
|
|
/* Some of the following routines can be implemented as macros to
|
|
be faster. If you don't want it, define NO_MACROS */
|
|
#ifdef NO_MACROS
|
|
|
|
/* Returns the array itself */
|
|
void ** carray_data(carray);
|
|
|
|
/* Returns the number of elements in the array */
|
|
int carray_count(carray);
|
|
|
|
/* Returns the contents of one cell */
|
|
void * carray_get(carray array, unsigned int indx);
|
|
|
|
/* Sets the contents of one cell */
|
|
void carray_set(carray array, unsigned int indx, void * value);
|
|
|
|
#else
|
|
|
|
#if 0
|
|
#define carray_data(a) (a->array)
|
|
#define carray_count(a) (a->len)
|
|
#define carray_get(a, indx) (a->array[indx])
|
|
#define carray_set(a, indx, v) do { a->array[indx]=v; } while(0)
|
|
#endif
|
|
|
|
static inline void ** carray_data(carray * array) {
|
|
return array->array;
|
|
}
|
|
|
|
static inline unsigned int carray_count(carray * array) {
|
|
return array->len;
|
|
}
|
|
|
|
static inline void * carray_get(carray * array, unsigned int indx) {
|
|
return array->array[indx];
|
|
}
|
|
|
|
static inline void carray_set(carray * array,
|
|
unsigned int indx, void * value) {
|
|
array->array[indx] = value;
|
|
}
|
|
#endif
|
|
|
|
void carray_free(carray * array);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|