/[ascend]/trunk/base/generic/compiler/mergeinst.h
ViewVC logotype

Annotation of /trunk/base/generic/compiler/mergeinst.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1066 - (hide annotations) (download) (as text)
Sun Jan 7 10:02:41 2007 UTC (17 years, 9 months ago) by johnpye
File MIME type: text/x-chdr
File size: 3498 byte(s)
Adding doxygen 'addtogroup' for Solver, Compiler, Integrator.
1 jds 54 /*
2 aw0a 1 * Ascend Instance Tree Type Definitions
3     * by Tom Epperly
4     * 8/16/89
5     * Version: $Revision: 1.6 $
6     * Version control file: $RCSfile: mergeinst.h,v $
7     * Date last modified: $Date: 1997/09/08 18:08:06 $
8     * Last modified by: $Author: ballan $
9     *
10     * This file is part of the Ascend Language Interpreter.
11     *
12     * Copyright (C) 1990, 1993, 1994 Thomas Guthrie Epperly
13     *
14     * The Ascend Language Interpreter is free software; you can redistribute
15     * it and/or modify it under the terms of the GNU General Public License as
16     * published by the Free Software Foundation; either version 2 of the
17     * License, or (at your option) any later version.
18     *
19     * The Ascend Language Interpreter is distributed in hope that it will be
20     * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
21     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22     * General Public License for more details.
23     *
24     * You should have received a copy of the GNU General Public License
25     * along with the program; if not, write to the Free Software Foundation,
26     * Inc., 675 Mass Ave, Cambridge, MA 02139 USA. Check the file named
27     * COPYING.
28     */
29    
30 jds 54 /** @file
31     * Ascend Instance Tree Type Definitions.
32     * <pre>
33 aw0a 1 * When #including mergeinst.h, make sure these files are #included first:
34 jds 54 * #include "utilities/ascConfig.h"
35     * #include "instance_enum.h"
36     * </pre>
37 aw0a 1 */
38    
39 johnpye 1066 #ifndef ASC_MERGEINST_H
40     #define ASC_MERGEINST_H
41 aw0a 1
42 johnpye 1066 /** addtogroup compiler Compiler
43     @{
44     */
45    
46 johnpye 1063 ASC_DLLSPEC struct Instance *MergeInstances(struct Instance *i1, struct Instance *i2);
47 ben.allan 33 /**<
48 jds 54 * <!-- struct Instance *MergeInstances(i1,i2) -->
49     * <!-- struct Instance *i1,*i2; -->
50 aw0a 1 * This is the ARE_THE_SAME operator.
51     * The return value is the merged instance or NULL if can't be done.
52     * Instances are merged from the bottom up, checking one step ahead
53     * for type compatibility.
54     * This operator is MOSTLY BROKEN due to the addition of
55     * parameterized types. In particular, MoreRefined needs to be
56     * augmented to check args that are now part of the extended
57     * type definition.
58     * This may add to or change the pending instance list.
59     * If the return is NULL, the state of i1 and i2 in structural
60     * terms is highly questionable. They may be partially merged.
61     *
62 jds 54 * @bug Merging two vars in a shared relation will mess up all the
63     * other copies of the relation unless all of their corresponding
64     * vars are also merged. Fixed for token relations, but not others.
65 aw0a 1 */
66    
67 johnpye 1063 ASC_DLLSPEC void PostMergeCheck(struct Instance *i);
68 ben.allan 33 /**<
69 jds 54 * <!-- void PostMergeCheck(i) -->
70     * <!-- struct Instance *i; -->
71     * Sanity check after a MergeInstances() call.
72 aw0a 1 * This should be performed after a MergeInstances call or a sequence of
73     * MergeInstances calls. This goes through the merged instance tree and
74     * make sure the ARE_ALIKE cliques are being enforced.
75     */
76    
77    
78 johnpye 1063 ASC_DLLSPEC void MergeCliques(struct Instance *i1, struct Instance *i2);
79 ben.allan 33 /**<
80 jds 54 * <!-- void MergeCliques(i1,i2) -->
81     * <!-- struct Instance *i1,*i2; -->
82 aw0a 1 * Merge the cliques represented by i1 and i2. This does not enforce
83     * any type consistency between the clicks; it just links them together.
84     * It doesn't matter if i1 and i2 are already in the same clique.
85     */
86    
87 johnpye 1066 /* @} */
88 jds 54
89 johnpye 1066 #endif /* ASC_MERGEINST_H */
90    

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22