From b0db5d4d7a236975c27f58306f6d894d8ed6125f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marvin=20Ha=CC=88user?= <mhaeuser@posteo.de>
Date: Sat, 25 Nov 2023 16:33:17 +0100
Subject: [PATCH] simulator: fix pedantic C++ 98 warnings

C++ 98 requires all source files to terminate with a new-line character.
It also does not allow for semicolons outside of declarations that
require it (and in function scopes). Fix them to allow for pedantic
warnings to be enabled when beneficial. Finally, it does not allow for
object-to-function casts.

The first two warnings are resolved trivially. For the third, the
solution to cast through a pointer address is technically unsafe, as
systems are not required to support object pointers (e.g. void *)
being able to represent function pointers. However, the existence of
dlsym() virtually implies this is supported on the target system
(technically, all symbols could be data symbols, but that is
nitpicking).
---
 simulators/c++2/src_simulator/TEPE/PropRelConstraint.cpp     | 2 +-
 simulators/c++2/src_simulator/app/TMLActionCommand.cpp       | 2 +-
 simulators/c++2/src_simulator/definitions.h                  | 2 +-
 simulators/c++2/src_simulator/evt/ListenersSimCmd.cpp        | 2 +-
 simulators/c++2/src_simulator/sim/ServerHelp.cpp             | 2 +-
 simulators/c++2/src_simulator/sim/ServerHelp.h               | 2 +-
 src/main/java/tmltranslator/tomappingsystemc2/Penalties.java | 4 ++--
 7 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/simulators/c++2/src_simulator/TEPE/PropRelConstraint.cpp b/simulators/c++2/src_simulator/TEPE/PropRelConstraint.cpp
index 062011494f..8c535b6986 100644
--- a/simulators/c++2/src_simulator/TEPE/PropRelConstraint.cpp
+++ b/simulators/c++2/src_simulator/TEPE/PropRelConstraint.cpp
@@ -77,4 +77,4 @@ void PropRelConstraint::notifyEnable(unsigned int iSigState){
 //}
 
 void PropRelConstraint::reset(){
-}
\ No newline at end of file
+}
diff --git a/simulators/c++2/src_simulator/app/TMLActionCommand.cpp b/simulators/c++2/src_simulator/app/TMLActionCommand.cpp
index e1742d0cf4..169fd8371e 100644
--- a/simulators/c++2/src_simulator/app/TMLActionCommand.cpp
+++ b/simulators/c++2/src_simulator/app/TMLActionCommand.cpp
@@ -81,4 +81,4 @@ std::string TMLActionCommand::toString(TMLLength aLength, TMLLength aProgress) c
 	std::ostringstream outp;	
 	outp << "Action in " << TMLCommand::toString(aLength, aProgress);
 	return outp.str();
-}
\ No newline at end of file
+}
diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h
index a70db8932a..2cf89988ce 100644
--- a/simulators/c++2/src_simulator/definitions.h
+++ b/simulators/c++2/src_simulator/definitions.h
@@ -844,7 +844,7 @@ namespace std{
 		return p1->_time > p2->_time;
 	}
 	};
-};
+}
 
 ///Priority queue for SignalChangeData objects, keeps track of the temporal ordering of signal changes (for VCD output)
 typedef std::priority_queue<SignalChangeData*, std::vector<SignalChangeData*>, std::greater<SignalChangeData*> > SignalChangeQueue;
diff --git a/simulators/c++2/src_simulator/evt/ListenersSimCmd.cpp b/simulators/c++2/src_simulator/evt/ListenersSimCmd.cpp
index 918ea3ae24..a469357ea4 100644
--- a/simulators/c++2/src_simulator/evt/ListenersSimCmd.cpp
+++ b/simulators/c++2/src_simulator/evt/ListenersSimCmd.cpp
@@ -159,7 +159,7 @@ CondBreakpoint::CondBreakpoint(SimComponents* iSimComp, std::string iCond, TMLTa
 		std::cout << "Error " << dlerror() << " occurred when opening shared library.\n";
 		return;
 	}
-	_condFunc = (BreakCondFunc) dlsym( _dlHandle, "condFunc");
+	_condFunc = (BreakCondFunc)(intptr_t) dlsym( _dlHandle, "condFunc");
 	if (dlerror() != NULL) {
 		std::cout << "Error when getting function handle\n";
     		return;
diff --git a/simulators/c++2/src_simulator/sim/ServerHelp.cpp b/simulators/c++2/src_simulator/sim/ServerHelp.cpp
index 62edc88c32..c71ea9537a 100644
--- a/simulators/c++2/src_simulator/sim/ServerHelp.cpp
+++ b/simulators/c++2/src_simulator/sim/ServerHelp.cpp
@@ -198,4 +198,4 @@ std::vector<std::string> ServerHelp::splitData (std::string s, std::string delim
         token = trim(token.substr(pos + 2));
     res.push_back(token);
     return res;
-}
\ No newline at end of file
+}
diff --git a/simulators/c++2/src_simulator/sim/ServerHelp.h b/simulators/c++2/src_simulator/sim/ServerHelp.h
index 42bc3e450b..297d875190 100644
--- a/simulators/c++2/src_simulator/sim/ServerHelp.h
+++ b/simulators/c++2/src_simulator/sim/ServerHelp.h
@@ -86,4 +86,4 @@ public:
 	std::map <std::string, std::string> aliasMapWithName;
 	std::string helpServerContent;
 
-};
\ No newline at end of file
+};
diff --git a/src/main/java/tmltranslator/tomappingsystemc2/Penalties.java b/src/main/java/tmltranslator/tomappingsystemc2/Penalties.java
index c9f8ad5da9..4ebac721f0 100644
--- a/src/main/java/tmltranslator/tomappingsystemc2/Penalties.java
+++ b/src/main/java/tmltranslator/tomappingsystemc2/Penalties.java
@@ -106,9 +106,9 @@ public class Penalties {
 
         data = FILE_HEADER + "\n";
         if (mustHandlePenalties) {
-            data += ACTIVATED;
+            data += ACTIVATED + "\n";
         } else {
-            data += NOT_ACTIVATED;
+            data += NOT_ACTIVATED + "\n";
         }
 
         try {
-- 
GitLab