Program Listing for File HSTimingUndo.h

Return to documentation for file (src/sta/HSTimingUndo.h)

#pragma once

#include <cfloat>   // FLT_MAX
#include <cstdint>  // std::uint8_t

namespace HSFullTiming {

// 前置声明:只用指针即可,不需要完整定义
struct slackData;

// Slack 回滚记录:只考虑 Modify(Pre/Post)
// side: 0=Pre, 1=Post
struct SlackUndo {
  std::uint8_t side = 0;

  // 指向被修改的 slackData 节点(评估期间不能 erase 该节点)
  slackData *p = nullptr;

  // old values(三元组)
  short oldHop   = -1;
  float oldSlack = FLT_MAX;
  int oldEdgeId  = -1;
};

// 边 enable/disable 回滚记录
struct EnableUndo {
  int edgeId     = -1;
  bool oldEnable = true;
};

}  // namespace HSFullTiming