~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Tina5/tina-libs/tina/sys/sysGph_graph.c

Version: ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /**********
  2  * 
  3  * Copyright (c) 2003, Division of Imaging Science and Biomedical Engineering,
  4  * University of Manchester, UK.  All rights reserved.
  5  * 
  6  * Redistribution and use in source and binary forms, with or without modification, 
  7  * are permitted provided that the following conditions are met:
  8  * 
  9  *   . Redistributions of source code must retain the above copyright notice, 
 10  *     this list of conditions and the following disclaimer.
 11  *    
 12  *   . Redistributions in binary form must reproduce the above copyright notice,
 13  *     this list of conditions and the following disclaimer in the documentation 
 14  *     and/or other materials provided with the distribution.
 15  * 
 16  *   . Neither the name of the University of Manchester nor the names of its
 17  *     contributors may be used to endorse or promote products derived from this 
 18  *     software without specific prior written permission.
 19  * 
 20  * 
 21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
 24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
 25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
 26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
 27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 31  * POSSIBILITY OF SUCH DAMAGE.
 32  *
 33  **********
 34  * 
 35  * Program :    TINA
 36  * File    :  $Source: /home/tina/cvs/tina-libs/tina/sys/sysGph_graph.c,v $
 37  * Date    :  $Date: 2003/09/22 16:09:02 $
 38  * Version :  $Revision: 1.2 $
 39  * CVS Id  :  $Id: sysGph_graph.c,v 1.2 2003/09/22 16:09:02 tony Exp $
 40  *
 41  * Notes :
 42  *     Graph handling.
 43  *     Graph_node is:
 44  *     { int type; int status; Bool bounded; float bound; float value;
 45  *     void *to; List *cons;}
 46  *
 47  *********
 48 */
 49 
 50 #include "sysGph_graph.h"
 51 
 52 #if HAVE_CONFIG_H
 53   #include <config.h>
 54 #endif
 55 
 56 #include <stdio.h>
 57 #include <tina/sys/sys_GphDef.h>
 58 #include <tina/sys/sys_LstDef.h>
 59 #include <tina/sys/sys_MemDef.h>
 60 #include <tina/sys/sysLst_list.h>
 61 #include <tina/sys/sysMem_ralloc.h>
 62 
 63 
 64 Graph_node *graph_node_alloc(void *ptr, int type)
 65 /* element and set reference to ptr */
 66 {
 67         Graph_node *gn;
 68 
 69         gn = ts_ralloc(Graph_node);
 70         gn->type = type;
 71         gn->status = 0;
 72         gn->bounded = false;
 73         gn->bound = (float) 0.0;
 74         gn->value = (float) 1.0;
 75         gn->to = ptr;
 76         gn->cons = NULL;
 77         return (gn);
 78 }
 79 
 80 void graph_node_set(Graph_node * gn, void *ptr, int type)
 81 {
 82         gn->to = ptr;
 83         gn->type = type;
 84 }
 85 
 86 List *graph_make_list(List * list)      /* make a graph list parallel
 87                                                                                                                                                  * 
 88                                                                                                                                                  * * * to list */
 89 /* any old list */
 90 {
 91         return (list_copy(list, (void *(*)()) graph_node_alloc, NULL));
 92 }
 93 
 94 void *graph_ref(Graph_node * gn)
 95 {
 96         if (gn == NULL)
 97                 return (NULL);
 98 
 99         return (gn->to);
100 }
101 
102 List *graph_recover_list(List * list)   /* make a list from graph list */
103 /* graph list */
104 {
105         return (list_copy(list, graph_ref, NULL));
106 }
107 
108 List *graph_consistent_with(Graph_node * gn, List * list,
109                                                                                                                 Bool(*confunc) ( /* ??? */ ))
110 {
111         List *lptr;
112         List *cons_list = NULL;
113 
114         for (lptr = list; lptr != NULL; lptr = lptr->next)
115         {
116                 Graph_node *gptr = (Graph_node *) lptr->to;
117 
118                 if (confunc(gn->to, gptr->to) == true)
119                         cons_list = ref_addtostart(cons_list, lptr->to, lptr->type);
120         }
121         return (cons_list);
122 }
123 
124 void graph_list_consistent(List * list, Bool(*confunc) ( /* ??? */ ))
125 {
126         List *lptr;
127 
128         for (lptr = list; lptr != NULL; lptr = lptr->next)
129         {
130                 Graph_node *gn = (Graph_node *) lptr->to;
131 
132                 list_rm_links(gn->cons);
133                 gn->cons = graph_consistent_with(gn, list, confunc);
134         }
135 }
136 
137 void graph_list_set_status(List * list, int status)
138 {
139         List *lptr;
140 
141         for (lptr = list; lptr != NULL; lptr = lptr->next)
142         {
143                 Graph_node *gn = (Graph_node *) lptr->to;
144 
145                 gn->status = status;
146         }
147 }
148 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.