bool EnergyManagementSystemProgramCallingManager_Impl::eraseProgram(unsigned index) { //erase program at index bool result = false; auto groups = extensibleGroups(); unsigned sizeOfGroup = numExtensibleGroups(); if (index < sizeOfGroup) { eraseExtensibleGroup(index); result = true; } return result; }
bool EnergyManagementSystemProgramCallingManager_Impl::setProgram(const EnergyManagementSystemProgram& program, unsigned index) { //add program to {index} of vector of programs bool result = false; auto groups = extensibleGroups(); unsigned sizeOfGroup = numExtensibleGroups(); if (index <= sizeOfGroup) { IdfExtensibleGroup idfGroup = insertExtensibleGroup(index, StringVector()); OS_ASSERT(!idfGroup.empty()); ModelExtensibleGroup group = idfGroup.cast<ModelExtensibleGroup>(); result = group.setPointer(0, program.handle()); } return result; }
boost::optional<EnergyManagementSystemProgram> EnergyManagementSystemProgramCallingManager_Impl::getProgram(unsigned index) const { //return program at index boost::optional<EnergyManagementSystemProgram> result; auto groups = extensibleGroups(); unsigned sizeOfGroup = numExtensibleGroups(); if ((index < sizeOfGroup) && (!groups[index].empty())) { WorkspaceExtensibleGroup group = groups[index].cast<WorkspaceExtensibleGroup>(); boost::optional<WorkspaceObject> wo = group.getTarget(OS_EnergyManagementSystem_ProgramCallingManagerExtensibleFields::ProgramName); if (wo) { EnergyManagementSystemProgram program = wo->cast<EnergyManagementSystemProgram>(); result = program; } } return result; }
bool ScheduleDay_Impl::addValue(const openstudio::Time& untilTime, double value) { if (untilTime.totalMinutes() <= 0.5 || untilTime.totalDays() > 1.0) { return false; } int untilHours = untilTime.hours() + 24*untilTime.days(); int untilMinutes = untilTime.minutes() + floor((untilTime.seconds()/60.0) + 0.5); if (untilMinutes >= 60){ untilHours += 1; untilMinutes += -60; } // use set to determine whether to overwrite or insert, and where std::set<openstudio::Time> times; std::pair<std::set<openstudio::Time>::const_iterator,bool> insertResult; for (const openstudio::Time& time : this->times()) { insertResult = times.insert(time); OS_ASSERT(insertResult.second); } insertResult = times.insert(untilTime); unsigned index = std::distance<std::set<openstudio::Time>::const_iterator>(times.begin(),insertResult.first); OS_ASSERT(index <= numExtensibleGroups()); bool result(true); if (insertResult.second) { // new time--insert an extensible group std::vector<std::string> groupValues; groupValues.push_back(boost::lexical_cast<std::string>(untilHours)); groupValues.push_back(boost::lexical_cast<std::string>(untilMinutes)); groupValues.push_back(toString(value)); IdfExtensibleGroup group = insertExtensibleGroup(index, groupValues); OS_ASSERT(!group.empty()); } else { // time already exists, overwrite value IdfExtensibleGroup group = getExtensibleGroup(index); result = group.setDouble(OS_Schedule_DayExtensibleFields::ValueUntilTime,value); } return result; }
int PeopleDefinition_Impl::numThermalComfortModelTypes() const { return numExtensibleGroups(); }
unsigned ComponentData_Impl::numComponentObjects() const { return numExtensibleGroups(); }
unsigned UtilityCost_Computation_Impl::numComputeSteps() const { return numExtensibleGroups(); }
unsigned LifeCycleCostUsePriceEscalation_Impl::numYears() const { return numExtensibleGroups(); }
unsigned ClimateZones_Impl::numClimateZones() const { return numExtensibleGroups(); }
bool ClimateZones_Impl::clear() { clearExtensibleGroups(); return (numExtensibleGroups() == 0u); }
unsigned UtilityCost_Charge_Block_Impl::numBlocks() const { return numExtensibleGroups(); }