+
+ public void setLine(int line, string type, string prop) {
+ if (this.line_map.has_key(line)) {
+ if (this.line_map.get(line) != "e:" ) {
+ return;
+ }
+ } else {
+ this.lines.add(line);
+ }
+ this.line_map.set(line, type + ":" + prop);
+ GLib.debug("setLine %d, %s", line, type + ":" + prop);
+ }
+ public void sortLines() {
+ //print("sortLines\n");
+ this.lines.sort((a,b) => {
+ return (int)a-(int)b;
+ });
+ this.node_lines.sort((a,b) => {
+ return (int)a-(int)b;
+ });
+ }
+ public Node? lineToNode(int line)
+ {
+ //print("Searching for line %d\n",line);
+ var l = -1;
+ //foreach(int el in this.node_lines) {
+ //print("all lines %d\n", el);
+ //}
+
+
+ foreach(int el in this.node_lines) {
+ //print("?match %d\n", el);
+ if (el < line) {
+
+ l = el;
+ //print("LESS\n");
+ continue;
+ }
+ if (el == line) {
+ //print("SAME\n");
+ l = el;
+ break;
+ }
+ if (l > -1) {
+ var ret = this.node_lines_map.get(l);
+ if (line > ret.line_end) {
+ return null;
+ }
+ //print("RETURNING NODE ON LINE %d", l);
+ return ret;
+ }
+ return null;
+
+ }
+ if (l > -1) {
+ var ret = this.node_lines_map.get(l);
+ if (line > ret.line_end) {
+ return null;
+ }
+ //print("RETURNING NODE ON LINE %d", l);
+ return ret;