From 05d0e28d50e1831a3a7a327ef84ee0ae1816a765 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 3 Aug 2008 16:12:01 +0000 Subject: Generic objects code implemented using Exec lists. Currently used by schedule.c to add and delete schedule items from a list. svn path=/trunk/netsurf/; revision=4876 --- amiga/object.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ amiga/object.h | 39 +++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100755 amiga/object.c create mode 100755 amiga/object.h diff --git a/amiga/object.c b/amiga/object.c new file mode 100755 index 000000000..2cfd5d020 --- /dev/null +++ b/amiga/object.c @@ -0,0 +1,107 @@ +/* + * Copyright 2005,2008 Chris Young + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf 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; version 2 of the License. + * + * NetSurf 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, see . + */ + +#include +#include +#include +#include "amiga/object.h" + +struct MinList *NewObjList(void) +{ + + struct MinList *objlist; + + objlist = (struct MinList *)AllocVec(sizeof(struct MinList),MEMF_CLEAR); + + NewMinList(objlist); + + return(objlist); + +} + +struct nsObject *AddObject(struct MinList *objlist,ULONG otype) +{ + struct nsObject *dtzo; + + dtzo = (struct nsObject *)AllocVec(sizeof(struct nsObject),MEMF_CLEAR); + + AddTail((struct List *)objlist,(struct Node *)dtzo); + + dtzo->Type = otype; +// dtzo->SubType = ostype; + + return(dtzo); +} + +void DelObject(struct nsObject *dtzo) +{ + Remove((struct Node *)dtzo); + if(dtzo->objstruct) FreeVec(dtzo->objstruct); + FreeVec(dtzo); + dtzo = NULL; +} + +void FreeObjList(struct MinList *objlist) +{ + struct nsObject *node; + struct nsObject *nnode; + + node = (struct nsObject *)objlist->mlh_Head; + +// for(node = objlist->mlh_Head ; node->dtz_Node.mln_Succ ; node = node->dtz_Node.mln_Succ) + + while(nnode=(struct nsObject *)(node->dtz_Node.mln_Succ)) + { + printf("%lx next %lx node objtype %ld\n",node,nnode,node->Type); + DelObject(node); + node=nnode; + } + + FreeVec(objlist); +} + +/* +int main(int argc, char **argv) +{ + struct MinList *ol; + struct DTZObject *dtzo; + struct DTZObject *tobj; + + ol = NewObjList(); + + + tobj = AddObject(ol); + + tobj->Data = 6; + + dtzo = AddObject(ol); + + dtzo->Data = 7; + +// tobj = (struct DTZObject *)ol->mlh_Head; + +// tobj = ol->dtz_Node.mln_Succ; + +// printf("%ld\n",tobj->Data); + + FreeObjList(ol); + + return(0); +} + +*/ diff --git a/amiga/object.h b/amiga/object.h new file mode 100755 index 000000000..d459a5e8b --- /dev/null +++ b/amiga/object.h @@ -0,0 +1,39 @@ +/* + * Copyright 2008 Chris Young + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf 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; version 2 of the License. + * + * NetSurf 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, see . + */ + +#ifndef AMIGA_OBJECT_H +#define AMIGA_OBJECT_H + +#include + +#define AMINS_CALLBACK 0 + +struct nsObject +{ + struct MinNode dtz_Node; + ULONG Type; + void *objstruct; + ULONG objstruct_size; +}; + +struct MinList *NewObjList(void); +struct nsObject *AddObject(struct MinList *objlist,ULONG otype); +void DelObject(struct nsObject *dtzo); +void FreeObjList(struct MinList *objlist); + +#endif -- cgit v1.2.3