+ if (p_constraintCoreId)
+ xbt_free(p_constraintCoreId);
+}
+
+double Cpu::getCurrentPowerPeak()
+{
+ return m_speedPeak;
+}
+
+int Cpu::getNbPStates()
+{
+ return xbt_dynar_length(p_speedPeakList);
+}
+
+void Cpu::setPState(int pstate_index)
+{
+ xbt_dynar_t plist = p_speedPeakList;
+ xbt_assert(pstate_index <= (int)xbt_dynar_length(plist),
+ "Invalid parameters for CPU %s (pstate %d > length of pstates %d)", getName(), pstate_index, (int)xbt_dynar_length(plist));
+
+ double new_peak_speed = xbt_dynar_get_as(plist, pstate_index, double);
+ m_pstate = pstate_index;
+ m_speedPeak = new_peak_speed;
+
+ onSpeedChange();
+}
+
+int Cpu::getPState()
+{
+ return m_pstate;
+}
+
+double Cpu::getPowerPeakAt(int pstate_index)
+{
+ xbt_dynar_t plist = p_speedPeakList;
+ xbt_assert((pstate_index <= (int)xbt_dynar_length(plist)), "Invalid parameters (pstate index out of bounds)");
+
+ return xbt_dynar_get_as(plist, pstate_index, double);