mirror of
https://github.com/data61/MP-SPDZ.git
synced 2026-01-10 14:08:09 -05:00
65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
/*
|
|
* CodeLocations.cpp
|
|
*
|
|
*/
|
|
|
|
#include "CodeLocations.h"
|
|
#include "Processor/OnlineOptions.h"
|
|
|
|
CodeLocations CodeLocations::singleton;
|
|
|
|
void CodeLocations::maybe_output(const char* file, int line,
|
|
const char* function)
|
|
{
|
|
if (OnlineOptions::singleton.code_locations)
|
|
singleton.output(file, line, function);
|
|
}
|
|
|
|
void CodeLocations::output(const char* file, int line,
|
|
const char* function)
|
|
{
|
|
location_type location({file, line, function});
|
|
lock.lock();
|
|
bool always = OnlineOptions::singleton.has_option("all_locations");
|
|
if (always or done.find(location) == done.end())
|
|
{
|
|
if (not always)
|
|
cerr << "first ";
|
|
cerr << "call to " << file << ":" << line << ", " << function
|
|
<< endl;
|
|
}
|
|
done.insert(location);
|
|
lock.unlock();
|
|
}
|
|
|
|
LocationScope::LocationScope(const char* file, int line, const char* function) :
|
|
file(file), function(function), line(line)
|
|
{
|
|
output_scope = OnlineOptions::singleton.has_option("location_scope");
|
|
time_scope = OnlineOptions::singleton.has_option("location_time");
|
|
if (output_scope)
|
|
cerr << "call to " << file << ":" << line << ", " << function
|
|
<< endl;
|
|
else
|
|
CodeLocations::maybe_output(file, line, function);
|
|
if (time_scope)
|
|
timer.start();
|
|
}
|
|
|
|
LocationScope::~LocationScope()
|
|
{
|
|
if (output_scope or time_scope)
|
|
{
|
|
stringstream desc;
|
|
desc << file << ":" << line << ", " << function;
|
|
|
|
if (time_scope)
|
|
{
|
|
auto time = timer.elapsed() * 1e6;
|
|
cerr << "after " << time << " microseconds, ";
|
|
}
|
|
|
|
cerr << "leaving " << desc.str() << endl;
|
|
}
|
|
}
|