36
36
AspectRef::Kind kind) {
39
// ignore the dependency if a file should include itself
40
Unit *au = aspect_unit (acai);
41
if ((kind == AspectRef::AR_DEF) && (iu == au))
44
39
// check if there is already an entry for this unit
45
40
iterator entry = find (iu);
46
41
if (entry == end ()) {
89
82
string AspectIncludes::generate (CProject &prj, const_iterator entry) const {
91
84
const AspectRefSet &set = (*entry).second;
92
std::set<Unit*> units;
93
85
for (AspectRefSet::const_iterator iter = set.begin ();
94
86
iter != set.end (); ++iter) {
96
// add the #include directive for the current unit
99
switch ((*iter)._kind) {
100
case AspectRef::AR_DECL:
101
includes += "class ";
102
includes += (*iter)._concrete_aspect->name ();
105
case AspectRef::AR_DEF:
107
Unit *unit = aspect_unit (*iter);
108
// generate the include, but suppress duplicates
109
if (units.find (unit) == units.end ()) {
110
includes += generate (prj, *iter);
116
case AspectRef::AR_ADVICE:
118
includes += (*iter)._concrete_aspect->ifct_decls ();
119
Unit *unit = aspect_unit (*iter);
120
assert (unit && unit->isFile ());
122
define << "#ifndef __ac_need_";
123
Naming::mangle_file (define, (FileUnit*)unit);
124
define << endl << "#define __ac_need_";
125
Naming::mangle_file (define, (FileUnit*)unit);
126
define << endl << "#endif" << endl;
127
includes += define.str ();
131
cout << "aspect ref type not yet implemented" << endl;
134
(*iter)._mark = true;
88
switch ((*iter)._kind) {
89
case AspectRef::AR_DECL:
91
includes += (*iter)._concrete_aspect->name ();
94
case AspectRef::AR_ADVICE:
96
includes += (*iter)._concrete_aspect->ifct_decls ();
97
Unit *unit = aspect_unit (*iter);
98
assert (unit && unit->isFile ());
100
define << "#ifndef __ac_need_";
101
Naming::mangle_file (define, (FileUnit*)unit);
102
define << endl << "#define __ac_need_";
103
Naming::mangle_file (define, (FileUnit*)unit);
104
define << endl << "#endif" << endl;
105
includes += define.str ();
109
cout << "aspect ref type not yet implemented" << endl;
137
// mark that the code for this unit has been generated now
138
(*entry).first._mark = true;