From 655394befa45e604620b4a9901f0d269d47df093 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 27 Apr 2018 20:50:55 +0200 Subject: [PATCH] exception throw on request of invalid variable type --- alib2cli/src/environment/Environment.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/alib2cli/src/environment/Environment.h b/alib2cli/src/environment/Environment.h index 993e2bc0f9..c9200a6285 100644 --- a/alib2cli/src/environment/Environment.h +++ b/alib2cli/src/environment/Environment.h @@ -67,7 +67,10 @@ public: template < class T > const T & getVariable ( const std::string & name ) { - return std::dynamic_pointer_cast < abstraction::ValueProvider < const T & > > ( getVariableInt ( name ) )->getConstValueReference ( ); + std::shared_ptr < abstraction::ValueProvider < const T & > > ptr = std::dynamic_pointer_cast < abstraction::ValueProvider < const T & > > ( getVariableInt ( name ) ); + if ( ! ptr ) + throw exception::CommonException ( "Invalid variable type. Requested: " + ext::to_string < T > ( ) + ", actual : " + getVariableInt ( name )->getRuntimeReturnType ( ) ); + return ptr->getConstValueReference ( ); } void setVariable ( std::string name, std::shared_ptr < abstraction::OperationAbstraction > value ) { -- GitLab