[Scummvm-git-logs] scummvm master -> 1dc5ec1d9ddbf6eef88bcb9f13337ea23e483a73

neuromancer neuromancer at users.noreply.github.com
Sat Nov 6 19:21:51 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
1dc5ec1d9d HYPNO: removed global destructor from mis parser


Commit: 1dc5ec1d9ddbf6eef88bcb9f13337ea23e483a73
    https://github.com/scummvm/scummvm/commit/1dc5ec1d9ddbf6eef88bcb9f13337ea23e483a73
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-11-06T20:21:34+01:00

Commit Message:
HYPNO: removed global destructor from mis parser

Changed paths:
    engines/hypno/grammar_mis.cpp
    engines/hypno/grammar_mis.y


diff --git a/engines/hypno/grammar_mis.cpp b/engines/hypno/grammar_mis.cpp
index 4fb15de429..2c7cea41b8 100644
--- a/engines/hypno/grammar_mis.cpp
+++ b/engines/hypno/grammar_mis.cpp
@@ -85,8 +85,8 @@ extern int HYPNO_MIS_lex();
 extern int HYPNO_MIS_parse();
 extern int yylineno;
 
-Common::Array<uint32> smenu_idx;
-Hypno::HotspotsStack stack;
+Common::Array<uint32> *smenu_idx;
+Hypno::HotspotsStack *stack;
 Hypno::Talk *talk_action = nullptr;
 
 void HYPNO_MIS_xerror(const char *str) {
@@ -521,11 +521,11 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,    74,    74,    77,    82,    83,    87,    99,   105,   120,
-     126,   127,   134,   141,   147,   153,   159,   166,   173,   180,
-     186,   192,   198,   204,   207,   214,   217,   218,   222,   223,
-     226,   230,   231,   232,   238,   239,   245,   251,   257,   264,
-     271,   277,   282,   283,   286,   287,   290,   291,   294,   295
+       0,    74,    74,    77,    84,    85,    89,   101,   107,   122,
+     128,   129,   136,   143,   149,   155,   161,   168,   175,   182,
+     188,   194,   200,   206,   209,   216,   219,   220,   224,   225,
+     228,   232,   233,   234,   240,   241,   247,   253,   259,   266,
+     273,   279,   284,   285,   288,   289,   292,   293,   296,   297
 };
 #endif
 
@@ -1370,341 +1370,343 @@ yyreduce:
         case 3:
 #line 77 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
-	smenu_idx.push_back(-1);
-	stack.push_back(new Hotspots());
+	smenu_idx = new Common::Array<uint32>();
+	smenu_idx->push_back(-1);
+	stack = new Hypno::HotspotsStack();
+	stack->push_back(new Hotspots());
 }
-#line 1377 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1379 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 6:
-#line 87 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 89 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		Hotspot *hot = new Hotspot(MakeMenu, (yyvsp[-1].s)); 
 		debugC(1, kHypnoDebugParser, "MENU %d.", hot->type);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		cur->push_back(*hot);
 
 		// We don't care about menus, only hotspots
-		int idx = smenu_idx.back();
+		int idx = smenu_idx->back();
 		idx++;
-		smenu_idx.pop_back();
-		smenu_idx.push_back(idx);
+		smenu_idx->pop_back();
+		smenu_idx->push_back(idx);
 	}
-#line 1394 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1396 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 99 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 101 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {  
 		Hotspot *hot = new Hotspot(MakeHotspot, "", Common::Rect((yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i))); 
 		debugC(1, kHypnoDebugParser, "HOTS %d.", hot->type);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		cur->push_back(*hot); 
 	}
-#line 1405 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1407 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 105 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 107 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		// This should always point to a hotspot
-		int idx = smenu_idx.back();
+		int idx = smenu_idx->back();
 		idx++;
-		smenu_idx.pop_back();
-		smenu_idx.push_back(idx);
+		smenu_idx->pop_back();
+		smenu_idx->push_back(idx);
 
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &(*cur)[idx];
 
-		smenu_idx.push_back(-1);
+		smenu_idx->push_back(-1);
 		hot->smenu = new Hotspots();
-		stack.push_back(hot->smenu);
+		stack->push_back(hot->smenu);
 		debugC(1, kHypnoDebugParser, "SUBMENU"); 
 	}
-#line 1425 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1427 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 120 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 122 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		Escape *a = new Escape();
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "ESC SUBMENU"); }
-#line 1436 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1438 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 126 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 128 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debugC(1, kHypnoDebugParser, "TIME %d", (yyvsp[0].i)); }
-#line 1442 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1444 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 127 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 129 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		Background *a = new Background((yyvsp[-5].s), Common::Point((yyvsp[-4].i), (yyvsp[-3].i)), (yyvsp[-2].s), (yyvsp[-1].s), (yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "BACK");
 	}
-#line 1454 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1456 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 134 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 136 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		Global *a = new Global((yyvsp[-1].s), (yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "GLOB"); 
 	}
-#line 1466 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1468 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 141 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 143 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		Ambient *a = new Ambient((yyvsp[-3].s), Common::Point((yyvsp[-2].i), (yyvsp[-1].i)), (yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);			
 		debugC(1, kHypnoDebugParser, "AMBI %d %d", (yyvsp[-2].i), (yyvsp[-1].i)); }
-#line 1477 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1479 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 147 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 149 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		Play *a = new Play((yyvsp[-4].s), Common::Point((yyvsp[-3].i), (yyvsp[-2].i)), (yyvsp[-1].s), (yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "PLAY %s.", (yyvsp[-4].s)); }
-#line 1488 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1490 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 153 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 155 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		Overlay *a = new Overlay((yyvsp[-3].s), Common::Point((yyvsp[-2].i), (yyvsp[-1].i)), (yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 	}
-#line 1499 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1501 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 159 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 161 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		Palette *a = new Palette((yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "PALE");
 	}
-#line 1511 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1513 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 166 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 168 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		Cutscene *a = new Cutscene(Common::String("cine/") + (yyvsp[-2].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "INTRO %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1523 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1525 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 173 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 175 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		Cutscene *a = new Cutscene((yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "CUTS %s", (yyvsp[0].s)); 
 	}
-#line 1535 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1537 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 180 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 182 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		WalN *a = new WalN((yyvsp[-5].s), (yyvsp[-4].s), Common::Point((yyvsp[-3].i), (yyvsp[-2].i)), (yyvsp[-1].s), (yyvsp[0].s));
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "WALN %s %d %d", (yyvsp[-4].s), (yyvsp[-3].i), (yyvsp[-2].i)); }
-#line 1546 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1548 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 186 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 188 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		Mice *a = new Mice((yyvsp[-1].s), (yyvsp[0].i)-1);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 	}
-#line 1557 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1559 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 192 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 194 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(talk_action);
 		talk_action = nullptr;
 		debugC(1, kHypnoDebugParser, "TALK"); }
-#line 1568 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1570 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 198 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 200 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		debugC(1, kHypnoDebugParser, "explicit END");
-		g_parsedHots = stack.back(); 
-		stack.pop_back();
-		smenu_idx.pop_back();
+		g_parsedHots = stack->back(); 
+		stack->pop_back();
+		smenu_idx->pop_back();
 	}
-#line 1579 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1581 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 204 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 206 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debug("implicit END"); }
-#line 1585 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1587 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 207 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 209 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 	assert(talk_action == nullptr);
 	talk_action = new Talk();
 	talk_action->escape = false;
 	talk_action->active = true; 
 }
-#line 1596 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1598 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 214 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 216 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		talk_action->active = false; 
 		debugC(1, kHypnoDebugParser, "inactive"); }
-#line 1604 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1606 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 26:
-#line 217 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 219 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debugC(1, kHypnoDebugParser, "inactive"); }
-#line 1610 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1612 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 218 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 220 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		talk_action->background = (yyvsp[-4].s);
 		talk_action->backgroundPos = Common::Point((yyvsp[-3].i), (yyvsp[-2].i));
 		debugC(1, kHypnoDebugParser, "BACK in TALK"); }
-#line 1619 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1621 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 222 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 224 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debugC(1, kHypnoDebugParser, "BOXX %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1625 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1627 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 223 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 225 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		talk_action->escape = true; 
 		debugC(1, kHypnoDebugParser, "ESCAPE"); }
-#line 1633 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1635 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 30:
-#line 226 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 228 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     {
 		talk_action->second = (yyvsp[-2].s);
 		talk_action->secondPos = Common::Point((yyvsp[-1].i), (yyvsp[0].i)); 
 		debugC(1, kHypnoDebugParser, "SECOND %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1642 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1644 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 31:
-#line 230 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 232 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debugC(1, kHypnoDebugParser, "INTRO %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1648 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1650 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 231 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 233 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debugC(1, kHypnoDebugParser, "DEFAULT %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1654 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1656 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 232 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 234 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "G";
 		talk_cmd.path = (yyvsp[-1].s)+2;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1665 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1667 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 34:
-#line 238 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 240 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1671 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1673 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 35:
-#line 239 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 241 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "F";
 		talk_cmd.num = atoi((yyvsp[-1].s)+2)-1;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1682 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1684 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 36:
-#line 245 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 247 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "A";
 		talk_cmd.num = atoi((yyvsp[-1].s)+2)-1;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "|A%d", talk_cmd.num); }
-#line 1693 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1695 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 37:
-#line 251 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 253 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "D";
 		talk_cmd.num = atoi((yyvsp[-1].s)+2)-1;
 		talk_action->commands.push_back(talk_cmd); 
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1704 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1706 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 38:
-#line 257 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 259 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "P";
@@ -1712,11 +1714,11 @@ yyreduce:
 		talk_cmd.position = Common::Point((yyvsp[-2].i), (yyvsp[-1].i));
 		talk_action->commands.push_back(talk_cmd);
 		debugC(1, kHypnoDebugParser, "%s %d %d", (yyvsp[-3].s), (yyvsp[-2].i), (yyvsp[-1].i)); }
-#line 1716 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1718 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 264 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 266 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "I";
@@ -1724,74 +1726,74 @@ yyreduce:
 		talk_cmd.position = Common::Point((yyvsp[-2].i), (yyvsp[-1].i));
 		talk_action->commands.push_back(talk_cmd);		  
 		debugC(1, kHypnoDebugParser, "%s %d %d", (yyvsp[-3].s), (yyvsp[-2].i), (yyvsp[-1].i)); }
-#line 1728 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1730 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 40:
-#line 271 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 273 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "S";
 		talk_cmd.variable = (yyvsp[-1].s)+2;
 		talk_action->commands.push_back(talk_cmd);
 		debugC(1, kHypnoDebugParser, "%s", (yyvsp[-1].s)); }
-#line 1739 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1741 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 41:
-#line 277 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 279 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { 
 		TalkCommand talk_cmd;
 		talk_cmd.command = "L";
 		talk_action->commands.push_back(talk_cmd);
 		debugC(1, kHypnoDebugParser, "|L"); }
-#line 1749 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1751 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 42:
-#line 282 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 284 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { debugC(1, kHypnoDebugParser, "|E"); }
-#line 1755 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1757 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 44:
-#line 286 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 288 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { (yyval.s) = (yyvsp[0].s); debugC(1, kHypnoDebugParser, "name: %s", (yyvsp[0].s)); }
-#line 1761 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1763 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 287 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 289 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { (yyval.s) = scumm_strdup(""); }
-#line 1767 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1769 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 290 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 292 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { (yyval.s) = (yyvsp[0].s); debugC(1, kHypnoDebugParser, "flag: %s", (yyvsp[0].s)); }
-#line 1773 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1775 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 291 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 293 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { (yyval.s) = scumm_strdup(""); }
-#line 1779 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1781 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 48:
-#line 294 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 296 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { (yyval.s) = (yyvsp[0].s); debugC(1, kHypnoDebugParser, "switch %s", (yyvsp[0].s)); }
-#line 1785 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1787 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
   case 49:
-#line 295 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
+#line 297 "engines/hypno/grammar_mis.y" /* yacc.c:1646  */
     { (yyval.s) = scumm_strdup(""); }
-#line 1791 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1793 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
     break;
 
 
-#line 1795 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
+#line 1797 "engines/hypno/grammar_mis.cpp" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
diff --git a/engines/hypno/grammar_mis.y b/engines/hypno/grammar_mis.y
index 4ddc617c8e..83cc64ab85 100644
--- a/engines/hypno/grammar_mis.y
+++ b/engines/hypno/grammar_mis.y
@@ -38,8 +38,8 @@ extern int HYPNO_MIS_lex();
 extern int HYPNO_MIS_parse();
 extern int yylineno;
 
-Common::Array<uint32> smenu_idx;
-Hypno::HotspotsStack stack;
+Common::Array<uint32> *smenu_idx;
+Hypno::HotspotsStack *stack;
 Hypno::Talk *talk_action = nullptr;
 
 void HYPNO_MIS_xerror(const char *str) {
@@ -75,8 +75,10 @@ start: init lines
 	;
 
 init: { 
-	smenu_idx.push_back(-1);
-	stack.push_back(new Hotspots());
+	smenu_idx = new Common::Array<uint32>();
+	smenu_idx->push_back(-1);
+	stack = new Hypno::HotspotsStack();
+	stack->push_back(new Hotspots());
 }
 
 lines: line lines
@@ -87,119 +89,119 @@ lines: line lines
 line: MENUTOK mflag mflag  {
 		Hotspot *hot = new Hotspot(MakeMenu, $2); 
 		debugC(1, kHypnoDebugParser, "MENU %d.", hot->type);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		cur->push_back(*hot);
 
 		// We don't care about menus, only hotspots
-		int idx = smenu_idx.back();
+		int idx = smenu_idx->back();
 		idx++;
-		smenu_idx.pop_back();
-		smenu_idx.push_back(idx);
+		smenu_idx->pop_back();
+		smenu_idx->push_back(idx);
 	}
 	| HOTSTOK BBOXTOK NUM NUM NUM NUM  {  
 		Hotspot *hot = new Hotspot(MakeHotspot, "", Common::Rect($3, $4, $5, $6)); 
 		debugC(1, kHypnoDebugParser, "HOTS %d.", hot->type);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		cur->push_back(*hot); 
 	}
 	|  SMENTOK { 
 		// This should always point to a hotspot
-		int idx = smenu_idx.back();
+		int idx = smenu_idx->back();
 		idx++;
-		smenu_idx.pop_back();
-		smenu_idx.push_back(idx);
+		smenu_idx->pop_back();
+		smenu_idx->push_back(idx);
 
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &(*cur)[idx];
 
-		smenu_idx.push_back(-1);
+		smenu_idx->push_back(-1);
 		hot->smenu = new Hotspots();
-		stack.push_back(hot->smenu);
+		stack->push_back(hot->smenu);
 		debugC(1, kHypnoDebugParser, "SUBMENU"); 
 	}
 	|  ESCPTOK  {
 		Escape *a = new Escape();
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "ESC SUBMENU"); }
 	|  TIMETOK NUM  { debugC(1, kHypnoDebugParser, "TIME %d", $2); } 
 	|  BACKTOK FILENAME NUM NUM gsswitch flag flag {
 		Background *a = new Background($2, Common::Point($3, $4), $5, $6, $7);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "BACK");
 	}
 	|  GLOBTOK GSSWITCH NAME  { 
 		Global *a = new Global($2, $3);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "GLOB"); 
 	}
 	|  AMBITOK FILENAME NUM NUM flag { 
 		Ambient *a = new Ambient($2, Common::Point($3, $4), $5);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);			
 		debugC(1, kHypnoDebugParser, "AMBI %d %d", $3, $4); }
 	|  PLAYTOK FILENAME NUM NUM gsswitch flag { 
 		Play *a = new Play($2, Common::Point($3, $4), $5, $6);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "PLAY %s.", $2); }
 	|  OVERTOK FILENAME NUM NUM flag { 
 		Overlay *a = new Overlay($2, Common::Point($3, $4), $5);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 	}
 	|  PALETOK FILENAME {
 		Palette *a = new Palette($2);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "PALE");
 	}
 	|  INTRTOK FILENAME NUM NUM { 
 		Cutscene *a = new Cutscene(Common::String("cine/") + $2);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 		debugC(1, kHypnoDebugParser, "INTRO %s %d %d", $2, $3, $4); 
 	}
 	|  CUTSTOK FILENAME { 
 		Cutscene *a = new Cutscene($2);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "CUTS %s", $2); 
 	}
 	|  WALNTOK FILENAME NUM NUM gsswitch flag  { 
 		WalN *a = new WalN($1, $2, Common::Point($3, $4), $5, $6);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);		  
 		debugC(1, kHypnoDebugParser, "WALN %s %d %d", $2, $3, $4); } 
 	|  MICETOK FILENAME NUM {
 		Mice *a = new Mice($2, $3-1);
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(a);
 	}
 	|  TALKTOK alloctalk talk { 
-		Hotspots *cur = stack.back();
+		Hotspots *cur = stack->back();
 		Hotspot *hot = &cur->back();
 		hot->actions.push_back(talk_action);
 		talk_action = nullptr;
 		debugC(1, kHypnoDebugParser, "TALK"); }
 	|  ENDTOK RETTOK { 
 		debugC(1, kHypnoDebugParser, "explicit END");
-		g_parsedHots = stack.back(); 
-		stack.pop_back();
-		smenu_idx.pop_back();
+		g_parsedHots = stack->back();
+		stack->pop_back();
+		smenu_idx->pop_back();
 	}
 	|	RETTOK { debug("implicit END"); }
 	;




More information about the Scummvm-git-logs mailing list