+ // Some code to avoid loops in dependency definition
+ static int level = 0;
+ const int maxlevel = 30;
+ if (level > maxlevel) {
+ lyxerr << "LaTeXFeatures::useLayout: maximum level of "
+ << "recursion attained by layout "
+ << layoutname << endl;
+ return;
+ }
+
+ LyXTextClass const & tclass = params_.getLyXTextClass();
+ if (tclass.hasLayout(layoutname)) {
+ // Is this layout already in usedLayouts?
+ list<string>::const_iterator cit = usedLayouts_.begin();
+ list<string>::const_iterator end = usedLayouts_.end();
+ for (; cit != end; ++cit) {
+ if (layoutname == *cit)
+ return;
+ }
+
+ LyXLayout_ptr const & lyt = tclass[layoutname];
+ if (!lyt->depends_on().empty()) {
+ ++level;
+ useLayout(lyt->depends_on());
+ --level;
+ }
+ usedLayouts_.push_back(layoutname);
+ } else {
+ lyxerr << "LaTeXFeatures::useLayout: layout `"
+ << layoutname << "' does not exist in this class"
+ << endl;
+ }
+
+ --level;