#include namespace prjxray { namespace xilinx { namespace xc7series { bool ConfigurationColumn::IsValidFrameAddress(FrameAddress address) const { return address.minor() < frame_count_; } absl::optional ConfigurationColumn::GetNextFrameAddress( FrameAddress address) const { if (!IsValidFrameAddress(address)) return {}; if (static_cast(address.minor() + 1) < frame_count_) { return address + 1; } // Next address is not in this column. return {}; } } // namespace xc7series } // namespace xilinx } // namespace prjxray namespace xc7series = prjxray::xilinx::xc7series; namespace YAML { Node convert::encode( const xc7series::ConfigurationColumn& rhs) { Node node; node.SetTag("xilinx/xc7series/configuration_column"); node["frame_count"] = rhs.frame_count_; return node; } bool convert::decode( const Node& node, xc7series::ConfigurationColumn& lhs) { if (!node.Tag().empty() && node.Tag() != "xilinx/xc7series/configuration_column") { return false; } lhs.frame_count_ = node["frame_count"].as(); return true; } } // namespace YAML