All pastes #985007 Raw Edit

zonaj

public text v1 · immutable
·published 2008-04-14 18:29 UTC
rendered paste body
Index: buzelib/Utils/MachineIndex.h
===================================================================
--- buzelib/Utils/MachineIndex.h	(revision 44)
+++ buzelib/Utils/MachineIndex.h	(working copy)
@@ -60,7 +60,7 @@
 
 	IndexItem* parseLine(const std::string& line, FileReader &reader);
 	MachineMenu* parseMenu(const std::string& firstLine, FileReader &reader);
-	void open(const char* fn);
+	void open(const char* fn, MachineMenu *menu = NULL);
 
 
 	int saveDepth;
Index: buzelib/Utils/MachineIndex.cpp
===================================================================
--- buzelib/Utils/MachineIndex.cpp	(revision 44)
+++ buzelib/Utils/MachineIndex.cpp	(working copy)
@@ -66,6 +66,15 @@
 			MachineMenu* childMenu=parseMenu(line, reader);
 			if (childMenu)
 				menu->append(childMenu);
+		} else
+		if (line.at(0) == '#') {
+			const char *str;
+
+			str = line.c_str();
+			if(str && strlen(str) > 15 && !strncmp(str, "# buze-include ", 15))
+			{
+				open(str + 15, menu);
+			}
 		} else {
 			IndexItem* item=parseLine(line, reader);
 			if (item) {
@@ -76,10 +85,13 @@
 	return menu;
 }
 
-void MachineIndex::open(const char* fn) {
+void MachineIndex::open(const char* fn, MachineMenu *menu) {
 	FileReader reader;
 	string line;
 
+	if(!menu)
+		menu = &root;
+
 	if (!reader.open(fn)) return ;
 	while (!reader.eof()) {
 		//cout << reader.readLine() << endl;
@@ -98,14 +110,14 @@
 			str = line.c_str();
 			if(str && strlen(str) > 15 && !strncmp(str, "# buze-include ", 15))
 			{
-				open(str + 15);
+				open(str + 15, menu);
 			}
 			item=0;
 		} else
 			item=parseLine(line, reader);
 
 		if (item)
-			root.append(item);
+			menu->append(item);
 			
 	}
 	reader.close();