including write_message access from the C side

This commit is contained in:
Adam G Nelson 2018-06-17 10:58:28 -04:00
parent 8c2a88243b
commit a1a033f1b7
4 changed files with 31 additions and 3 deletions

View file

@ -265,4 +265,13 @@ contains
end subroutine write_message
subroutine write_message_from_c(message, message_len, level) bind(C)
integer(C_INT), intent(in), value :: message_len
character(kind=C_CHAR), intent(in) :: message(message_len)
integer(C_INT), intent(in), value :: level
character(message_len+1) :: message_out
write(message_out, *) message
call write_message(message_out, level)
end subroutine write_message_from_c
end module error

View file

@ -11,7 +11,8 @@ namespace openmc {
extern "C" void fatal_error_from_c(const char* message, int message_len);
extern "C" void warning_from_c(const char* message, int message_len);
extern "C" void write_message_from_c(const char* message, int message_len,
int level);
inline
void fatal_error(const char *message)
@ -43,5 +44,23 @@ void warning(const std::stringstream& message)
warning(message.str());
}
inline
void write_message(const char* message, int level)
{
write_message_from_c(message, strlen(message), level);
}
inline
void write_message(const std::string& message, int level)
{
write_message_from_c(message.c_str(), message.length(), level);
}
inline
void write_message(const std::stringstream& message, int level)
{
write_message(message.str(), level);
}
} // namespace openmc
#endif // ERROR_H

View file

@ -19,8 +19,7 @@ add_mgxs_c(hid_t file_id, char* name, const int energy_groups,
double_1dvec temperature;
temperature.assign(temps, temps + n_temps);
// TODO: C++ replacement for write_message
// write_message("Loading " + std::string(names[i]) + " data...", 6);
write_message("Loading " + std::string(name) + " data...", 6);
// Check to make sure cross section set exists in the library
hid_t xs_grp;

View file

@ -4,6 +4,7 @@
#ifndef MGXS_INTERFACE_H
#define MGXS_INTERFACE_H
#include "error.h"
#include "mgxs.h"