/*
* $Id: bsbit.c,v 1.6 2003/05/21 14:38:47 telka Exp $
*
* Copyright (C) 2002 ETC s.r.o.
*
* 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.
*
* Written by Marcel Telka <marcel@telka.sk>, 2002.
*
*/
#include <stdlib.h>
#include <string.h>
#include "bsbit.h"
bsbit_t *
bsbit_alloc( int bit, const char *name, int type, signal_t *signals, int safe )
{
signal_t *s = signals;
bsbit_t *b = malloc( sizeof *b );
if (!b)
return NULL;
b->name = strdup( name );
if (!b->name) {
free( b );
return NULL;
}
b->bit = bit;
b->type = type;
b->signal = NULL;
b->safe = safe;
b->control = -1;
while (s) {
if (strcmp( s->name, name ) == 0) {
b->signal = s;
switch (type) {
case BSBIT_INPUT:
s->input = b;
break;
case BSBIT_OUTPUT:
s->output = b;
break;
case BSBIT_BIDIR:
s->input = b;
s->output = b;
break;
}
break;
}
s = s->next;
}
return b;
}
void
bsbit_free( bsbit_t *b )
{
if (!b)
return;
free( b->name );
free( b );
}
syntax highlighted by Code2HTML, v. 0.9.1