Example #1
0
void
RegisterArray::reset_state() {
  // we build a new vector of registers, then swap, to avoid holding the lock
  // for too long
  std::vector<Register> registers_new;
  size_t s = size();
  // TODO(antonin): is this actually better than
  // std::vector<Register> registers_new(size, Register(bitwidth)); ?
  registers_new.reserve(s);
  for (size_t i = 0; i < s; i++)
    registers_new.emplace_back(bitwidth, this);
  auto lock = UniqueLock();
  registers.swap(registers_new);
}
Example #2
0
	void LoadBehavior(void* arg, const char* fileName)
	{
		MaterialMonitorSim* materialMonitorSim = (MaterialMonitorSim*)arg;
		UniqueLock(materialMonitorSim->GetMutex());

		string path(SIMULATOR_FOLDER);
		path.append(1, PATH_SEPARATOR);
		path.append(BEHAVIORS_FOLDER);
		path.append(1, PATH_SEPARATOR);
		path.append(fileName);
		Behavior* behavior = BehaviorParser::ParseBehavior(path.c_str());
		materialMonitorSim->SetBehavior(behavior);
		if (behavior != NULL)
		{
			LOG_EXT(LEVEL_INFO, "Behavior '" << fileName << "' was loaded.");
		}
		else
		{
			LOG_EXT(LEVEL_WARN, "Error loading behavior '" << fileName << "': invalid file.");
		}
	}
Example #3
0
File: Mutex.hpp Project: Gd58/MCF
	UniqueLock GetLock() noexcept {
		return UniqueLock(*this);
	}