void IOEvent::DeleteErrorEvent() { if (el_ && (events_ & IOEvent::ERROR)) { SetEvents(events_ & (~IOEvent::ERROR)); el_->UpdateEvent(this); } }
void IOEvent::AddErrorEvent() { if (el_ && !(events_ & IOEvent::ERROR)) { SetEvents(events_ | IOEvent::ERROR); el_->UpdateEvent(this); } }
void IOEvent::DeleteWriteEvent() { if (el_ && (events_ & IOEvent::WRITE)) { SetEvents(events_ & (~IOEvent::WRITE)); el_->UpdateEvent(this); } }
void IOEvent::AddWriteEvent() { if (el_ && !(events_ & IOEvent::WRITE)) { SetEvents(events_ | IOEvent::WRITE); el_->UpdateEvent(this); } }
void IOEvent::DeleteReadEvent() { if (el_ && (events_ & IOEvent::READ)) { SetEvents(events_ & (~IOEvent::READ)); el_->UpdateEvent(this); } }
void IOEvent::AddReadEvent() { if (el_ && !(events_ & IOEvent::READ)) { SetEvents(events_ | IOEvent::READ); el_->UpdateEvent(this); } }
void GC_Object::Kill() { // assert(g_level->_garbage.insert(this).second); PulseNotify(NOTIFY_OBJECT_KILL); SetEvents(0); delete this; }
int PowerHandler::Execute(int bus_num, DGInfor *dg_infor, BusInfor *bus_infor) { int err = 0; Application* app = _instance->GetApplication(); if(!app){ //std::cout << "Execute, error: _instance->GetApplication()" << std::endl; return -1; } _cur_time = _sim_period * _sim_count++; if(_cur_time >= _sim_time){ //exit simulation return -2; } double simutime = _cur_time; err = SetEvents(app, dg_infor, simutime); if(err > 0){ //std::cout << "Execute, error: SetEvents" << std::endl; return -3; } err = CalculateTransient(app, simutime); //to perform a transient calculation if (err > 0){ //Error: Transient calculation failed //std::cout << "Execute, error: CalculateTransient" << std::endl; return -4; } const char *filename = "calc_data.txt"; err = ExportCalculateResult(app, filename); //Export the calculation result. if (err > 0){ //Error: Result Export failed //std::cout << "Execute, error: ExportCalculateResult" << std::endl; return -5; } SStrVec mat; if(!ReadSimRet(filename, mat)){ //std::cout << "Execute, error: ReadSimRet" << std::endl; return -6; } int current = mat.size(); for (int i = 0; i < bus_num; i++){ bus_infor[i].busno = i + 1; bus_infor[i].Volt = (double)atof(mat[current - 1][2 * i + 1].c_str()); bus_infor[i].V_ang = (double)atof(mat[current - 1][2 * i + 2].c_str()); bus_infor[i].sim_time = _cur_time; } //std::cout << "Execute, success: Execute" << std::endl; return 0; }
void GC_Object::Serialize(SaveFile &f) { assert(0 == _notifyProtectCount); f.Serialize(_flags); // // name // if( CheckFlags(GC_FLAG_OBJECT_NAMED) ) { if( f.loading() ) { string_t name; f.Serialize(name); assert( 0 == g_level->_objectToStringMaps[FastLog2(GC_FLAG_OBJECT_NAMED)].count(this) ); assert( 0 == g_level->_nameToObjectMap.count(name) ); g_level->_objectToStringMaps[FastLog2(GC_FLAG_OBJECT_NAMED)][this] = name; g_level->_nameToObjectMap[name] = this; } else { string_t name = GetName(); f.Serialize(name); } } // // events // if( f.loading() ) { DWORD tmp = _flags & GC_FLAG_OBJECT_EVENTS_TS_FIXED; SetFlags(GC_FLAG_OBJECT_EVENTS_TS_FIXED, false); SetEvents(tmp); } // // notifications // size_t count = 0; if( const Notify *n = _firstNotify ) do { count += !n->IsRemoved(); } while( n = n->next ); f.Serialize(count); if( f.loading() ) { assert(NULL == _firstNotify); for( size_t i = 0; i < count; i++ ) { _firstNotify = new Notify(_firstNotify); _firstNotify->Serialize(f); } } else { for( Notify *n = _firstNotify; n; n = n->next ) { if( !n->IsRemoved() ) n->Serialize(f); } } }
void IOEvent::ClearAllEvents() { if (el_) { SetEvents(0); el_->UpdateEvent(this); } }