mirror of
https://github.com/avrdudes/avrdude.git
synced 2026-07-07 18:26:29 +03:00
- Make all internal functions "static". - Make sure each module's header and implementation file match. - Remove all library-like functionality from main.c, so only the actual frontend remains in main.c. - Add C++ brackets to all header files. That effectively leaves the various module C files as something like an "avrdude library", with main.c being the currently only frontend program for that library. In theory, it should be possible to write different frontends using the same library backend functions though. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@722 81a1dc3b-b13d-400b-aceb-764788c761c2
116 lines
4.0 KiB
C
116 lines
4.0 KiB
C
/*
|
|
* avrdude - A Downloader/Uploader for AVR device programmers
|
|
* Copyright (C) 1990-2004 Brian S. Dean <bsd@bsdhome.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
/* $Id$ */
|
|
|
|
/*----------------------------------------------------------------------
|
|
Id: lists.h,v 1.2 2001/08/19 23:13:17 bsd Exp $
|
|
----------------------------------------------------------------------*/
|
|
/*----------------------------------------------------------------------
|
|
General purpose linked list routines - header file declarations.
|
|
|
|
Author : Brian Dean
|
|
Date : 10 January, 1990
|
|
----------------------------------------------------------------------*/
|
|
#ifndef lists_h
|
|
#define lists_h
|
|
|
|
#include <stdio.h>
|
|
|
|
typedef void * LISTID;
|
|
typedef void * LNODEID;
|
|
|
|
|
|
/*----------------------------------------------------------------------
|
|
several defines to access the LIST structure as as stack or a queue
|
|
--- use for program readability
|
|
----------------------------------------------------------------------*/
|
|
#define STACKID LISTID
|
|
#define SNODEID LNODEID
|
|
#define QUEUEID LISTID
|
|
#define QNODEID LNODEID
|
|
|
|
|
|
#define PUSH(s,d) lins_n(s,d,1) /* push 'd' onto the stack */
|
|
#define POP(s) lrmv_n(s,1) /* pop the stack */
|
|
#define LOOKSTACK(s) lget_n(s,1) /* look at the top of the stack,
|
|
but don't pop */
|
|
|
|
|
|
#define ENQUEUE(q,d) lins_n(q,d,1) /* put 'd' on the end of the queue */
|
|
#define DEQUEUE(q) lrmv(q) /* remove next item from the front of
|
|
the queue */
|
|
#define REQUEUE(q,d) ladd(q,d) /* re-insert (push) item back on the
|
|
front of the queue */
|
|
#define LOOKQUEUE(q) lget(q) /* return next item on the queue,
|
|
but don't dequeue */
|
|
#define QUEUELEN(q) lsize(q) /* length of the queue */
|
|
|
|
|
|
#define LISTADD(l,d) ladd(l,d) /* add to end of the list */
|
|
#define LISTRMV(l,d) lrmv_d(l,d) /* remove from end of the list */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* .................... Function Prototypes .................... */
|
|
|
|
LISTID lcreat ( void * liststruct, int poolsize );
|
|
void ldestroy ( LISTID lid );
|
|
void ldestroy_cb ( LISTID lid, void (*ucleanup)() );
|
|
|
|
LNODEID lfirst ( LISTID ); /* head of the list */
|
|
LNODEID llast ( LISTID ); /* tail of the list */
|
|
LNODEID lnext ( LNODEID ); /* next item in the list */
|
|
LNODEID lprev ( LNODEID ); /* previous item in the list */
|
|
void * ldata ( LNODEID ); /* data at the current position */
|
|
int lsize ( LISTID ); /* number of elements in the list */
|
|
|
|
int ladd ( LISTID lid, void * p );
|
|
int laddo ( LISTID lid, void *p,
|
|
int (*compare)(const void *p1,const void *p2),
|
|
LNODEID * firstdup );
|
|
int laddu ( LISTID lid, void * p,
|
|
int (*compare)(const void *p1,const void *p2));
|
|
int lins_n ( LISTID lid, void * d, unsigned int n );
|
|
int lins_ln ( LISTID lid, LNODEID lnid, void * data_ptr );
|
|
|
|
void * lget ( LISTID lid );
|
|
void * lget_n ( LISTID lid, unsigned int n );
|
|
LNODEID lget_ln ( LISTID lid, unsigned int n );
|
|
|
|
void * lrmv ( LISTID lid );
|
|
void * lrmv_n ( LISTID lid, unsigned int n );
|
|
void * lrmv_ln ( LISTID lid, LNODEID lnid );
|
|
void * lrmv_d ( LISTID lid, void * data_ptr );
|
|
|
|
LISTID lcat ( LISTID lid1, LISTID lid2 );
|
|
|
|
void * lsrch ( LISTID lid, void * p, int (*compare)(void *p1,void *p2));
|
|
|
|
int lprint ( FILE * f, LISTID lid );
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|