summaryrefslogtreecommitdiff
path: root/amiga/object.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2008-08-03 16:12:01 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2008-08-03 16:12:01 +0000
commit05d0e28d50e1831a3a7a327ef84ee0ae1816a765 (patch)
tree042f587f3742c5ce5f4dd185c42cad4631c0b89d /amiga/object.c
parentd1c876e03ce1df47dab9c77fa5c5b7192670267d (diff)
downloadnetsurf-05d0e28d50e1831a3a7a327ef84ee0ae1816a765.tar.gz
netsurf-05d0e28d50e1831a3a7a327ef84ee0ae1816a765.tar.bz2
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
Diffstat (limited to 'amiga/object.c')
-rwxr-xr-xamiga/object.c107
1 files changed, 107 insertions, 0 deletions
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 <chris@unsatisfactorysoftware.co.uk>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include <proto/exec.h>
+#include <exec/lists.h>
+#include <exec/nodes.h>
+#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);
+}
+
+*/