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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1066 - (show 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 /*
2 * 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 /** @file
31 * Ascend Instance Tree Type Definitions.
32 * <pre>
33 * When #including mergeinst.h, make sure these files are #included first:
34 * #include "utilities/ascConfig.h"
35 * #include "instance_enum.h"
36 * </pre>
37 */
38
39 #ifndef ASC_MERGEINST_H
40 #define ASC_MERGEINST_H
41
42 /** addtogroup compiler Compiler
43 @{
44 */
45
46 ASC_DLLSPEC struct Instance *MergeInstances(struct Instance *i1, struct Instance *i2);
47 /**<
48 * <!-- struct Instance *MergeInstances(i1,i2) -->
49 * <!-- struct Instance *i1,*i2; -->
50 * 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 * @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 */
66
67 ASC_DLLSPEC void PostMergeCheck(struct Instance *i);
68 /**<
69 * <!-- void PostMergeCheck(i) -->
70 * <!-- struct Instance *i; -->
71 * Sanity check after a MergeInstances() call.
72 * 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 ASC_DLLSPEC void MergeCliques(struct Instance *i1, struct Instance *i2);
79 /**<
80 * <!-- void MergeCliques(i1,i2) -->
81 * <!-- struct Instance *i1,*i2; -->
82 * 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 /* @} */
88
89 #endif /* ASC_MERGEINST_H */
90

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