#include namespace prjxray { namespace xilinx { namespace spartan6 { 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 spartan6 } // namespace xilinx } // namespace prjxray namespace spartan6 = prjxray::xilinx::spartan6; namespace YAML { Node convert::encode( const spartan6::ConfigurationColumn& rhs) { Node node; node.SetTag("xilinx/spartan6/configuration_column"); node["frame_count"] = rhs.frame_count_; return node; } bool convert::decode( const Node& node, spartan6::ConfigurationColumn& lhs) { if (!node.Tag().empty() && node.Tag() != "xilinx/spartan6/configuration_column") { return false; } lhs.frame_count_ = node["frame_count"].as(); return true; } } // namespace YAML