Clan  0.8.1
domain.h
Go to the documentation of this file.
1 
2  /*+------- <| --------------------------------------------------------**
3  ** A Clan **
4  **--- /.\ -----------------------------------------------------**
5  ** <| [""M# domain.h **
6  **- A | # -----------------------------------------------------**
7  ** /.\ [""M# First version: 26/09/2014 **
8  **- [""M# | # U"U#U -----------------------------------------------**
9  | # | # \ .:/
10  | # | #___| #
11  ****** | "--' .-" ******************************************************
12  * |"-"-"-"-"-#-#-## Clan : the Chunky Loop Analyzer (experimental) *
13  **** | # ## ###### *****************************************************
14  * \ .::::'/ *
15  * \ ::::'/ Copyright (C) 2008 University Paris-Sud 11 *
16  * :8a| # # ## *
17  * ::88a ### This is free software; you can redistribute it *
18  * ::::888a 8a ##::. and/or modify it under the terms of the GNU Lesser *
19  * ::::::::888a88a[]::: General Public License as published by the Free *
20  *::8:::::::::SUNDOGa8a::. Software Foundation, either version 2.1 of the *
21  *::::::::8::::888:Y8888:: License, or (at your option) any later version. *
22  *::::':::88::::888::Y88a::::::::::::... *
23  *::'::.. . ..... .. ... . *
24  * This software is distributed in the hope that it will be useful, but *
25  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
26  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *
27  * for more details. *
28  * *
29  * You should have received a copy of the GNU Lesser General Public License *
30  * along with software; if not, write to the Free Software Foundation, Inc., *
31  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
32  * *
33  * Clan, the Chunky Loop Analyzer *
34  * Written by Cedric Bastoul, Cedric.Bastoul@u-psud.fr *
35  * *
36  ******************************************************************************/
37 
38 
39 #ifndef CLAN_DOMAIN_H
40 # define CLAN_DOMAIN_H
41 
42 # include <clan/symbol.h>
43 # include <clan/options.h>
44 
45 # if defined(__cplusplus)
46 extern "C"
47  {
48 # endif
49 
50 
51 struct osl_relation_list;
52 struct osl_relation;
53 
54 
59 struct clan_domain {
60  struct osl_relation_list* constraints;
61  struct clan_domain* next;
62 };
63 typedef struct clan_domain clan_domain_t;
64 typedef struct clan_domain* clan_domain_p;
65 
66 
67 /*+***************************************************************************
68  * Structure display function *
69  *****************************************************************************/
70 void clan_domain_idump(FILE*, clan_domain_p, int);
71 void clan_domain_dump(FILE*, clan_domain_p);
72 
73 
74 /*+***************************************************************************
75  * Memory allocation/deallocation function *
76  *****************************************************************************/
77 clan_domain_p clan_domain_malloc();
78 void clan_domain_free(clan_domain_p);
79 
80 
81 /*+****************************************************************************
82  * Processing functions *
83  ******************************************************************************/
84 clan_domain_p clan_domain_clone(clan_domain_p);
85 void clan_domain_push(clan_domain_p*, clan_domain_p);
86 clan_domain_p clan_domain_pop(clan_domain_p*);
87 void clan_domain_dup(clan_domain_p*);
88 void clan_domain_drop(clan_domain_p*);
89 void clan_domain_and(clan_domain_p, struct osl_relation*);
90 void clan_domain_stride(clan_domain_p, int, int);
91 void clan_domain_for(clan_domain_p, int, clan_symbol_p,
92  struct osl_relation*, struct osl_relation*,
93  int, clan_options_p);
94 void clan_domain_xfor(clan_domain_p, int, clan_symbol_p,
95  struct osl_relation_list*, struct osl_relation_list*,
96  int*, clan_options_p);
97 
98 # if defined(__cplusplus)
99  }
100 # endif
101 #endif /* define CLAN_DOMAIN_H */
void clan_domain_stride(clan_domain_p, int, int)
Definition: domain.c:293
void clan_domain_free(clan_domain_p)
Definition: domain.c:151
void clan_domain_for(clan_domain_p, int, clan_symbol_p, struct osl_relation *, struct osl_relation *, int, clan_options_p)
void clan_domain_xfor(clan_domain_p, int, clan_symbol_p, struct osl_relation_list *, struct osl_relation_list *, int *, clan_options_p)
clan_domain_p clan_domain_clone(clan_domain_p)
Definition: domain.c:178
struct clan_domain * clan_domain_p
Definition: domain.h:64
void clan_domain_idump(FILE *, clan_domain_p, int)
Definition: domain.c:63
clan_domain_p clan_domain_malloc()
Definition: domain.c:134
void clan_domain_push(clan_domain_p *, clan_domain_p)
Definition: domain.c:211
void clan_domain_drop(clan_domain_p *)
Definition: domain.c:263
clan_domain_p clan_domain_pop(clan_domain_p *)
Definition: domain.c:227
struct clan_domain * next
Definition: domain.h:61
void clan_domain_dump(FILE *, clan_domain_p)
Definition: domain.c:117
void clan_domain_dup(clan_domain_p *)
Definition: domain.c:247
void clan_domain_and(clan_domain_p, struct osl_relation *)
struct osl_relation_list * constraints
Definition: domain.h:60