/[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 1063 - (show annotations) (download) (as text)
Sun Jan 7 07:54:06 2007 UTC (17 years, 9 months ago) by johnpye
File MIME type: text/x-chdr
File size: 3462 byte(s)
Changed ASC_DLLSPEC(TYPE) to ASC_DLLSPEC TYPE, because it was causing havoc with doxygen and ctags.
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 __MERGEINST_H_SEEN__
40 #define __MERGEINST_H_SEEN__
41
42 ASC_DLLSPEC struct Instance *MergeInstances(struct Instance *i1, struct Instance *i2);
43 /**<
44 * <!-- struct Instance *MergeInstances(i1,i2) -->
45 * <!-- struct Instance *i1,*i2; -->
46 * This is the ARE_THE_SAME operator.
47 * The return value is the merged instance or NULL if can't be done.
48 * Instances are merged from the bottom up, checking one step ahead
49 * for type compatibility.
50 * This operator is MOSTLY BROKEN due to the addition of
51 * parameterized types. In particular, MoreRefined needs to be
52 * augmented to check args that are now part of the extended
53 * type definition.
54 * This may add to or change the pending instance list.
55 * If the return is NULL, the state of i1 and i2 in structural
56 * terms is highly questionable. They may be partially merged.
57 *
58 * @bug Merging two vars in a shared relation will mess up all the
59 * other copies of the relation unless all of their corresponding
60 * vars are also merged. Fixed for token relations, but not others.
61 */
62
63 ASC_DLLSPEC void PostMergeCheck(struct Instance *i);
64 /**<
65 * <!-- void PostMergeCheck(i) -->
66 * <!-- struct Instance *i; -->
67 * Sanity check after a MergeInstances() call.
68 * This should be performed after a MergeInstances call or a sequence of
69 * MergeInstances calls. This goes through the merged instance tree and
70 * make sure the ARE_ALIKE cliques are being enforced.
71 */
72
73
74 ASC_DLLSPEC void MergeCliques(struct Instance *i1, struct Instance *i2);
75 /**<
76 * <!-- void MergeCliques(i1,i2) -->
77 * <!-- struct Instance *i1,*i2; -->
78 * Merge the cliques represented by i1 and i2. This does not enforce
79 * any type consistency between the clicks; it just links them together.
80 * It doesn't matter if i1 and i2 are already in the same clique.
81 */
82
83 #endif /* __MERGEINST_H_SEEN__ */
84

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