void RibUnregisterCommand::validateResponse(const ControlParameters& parameters) const { this->ControlCommand::validateResponse(parameters); if (parameters.getFaceId() == 0) { BOOST_THROW_EXCEPTION(ArgumentError("FaceId must not be zero")); } }
void FaceDestroyCommand::validateRequest(const ControlParameters& parameters) const { this->ControlCommand::validateRequest(parameters); if (parameters.getFaceId() == 0) { BOOST_THROW_EXCEPTION(ArgumentError("FaceId must not be zero")); } }
void StrategyChoiceUnsetCommand::validateRequest(const ControlParameters& parameters) const { this->ControlCommand::validateRequest(parameters); if (parameters.getName().size() == 0) { BOOST_THROW_EXCEPTION(ArgumentError("Name must not be ndn:/")); } }
void RibRegisterCommand::validateResponse(const ControlParameters& parameters) const { this->ControlCommand::validateResponse(parameters); if (parameters.getFaceId() == INVALID_FACE_ID) { BOOST_THROW_EXCEPTION(ArgumentError("FaceId must be valid")); } }
void FaceUpdateCommand::validateRequest(const ControlParameters& parameters) const { this->ControlCommand::validateRequest(parameters); if (parameters.hasFlags() != parameters.hasMask()) { BOOST_THROW_EXCEPTION(ArgumentError("Flags must be accompanied by Mask")); } }
void CsEraseCommand::validateResponse(const ControlParameters& parameters) const { this->ControlCommand::validateResponse(parameters); if (parameters.hasCapacity() && parameters.getCapacity() == 0) { BOOST_THROW_EXCEPTION(ArgumentError("Capacity must be positive")); } }
void CsEraseCommand::validateRequest(const ControlParameters& parameters) const { this->ControlCommand::validateRequest(parameters); if (parameters.hasCount() && parameters.getCount() == 0) { BOOST_THROW_EXCEPTION(ArgumentError("Count must be positive")); } }
void StartDocument(IStream* stream, PCWSTR encoding) { if(m_stream) throw ArgumentError(_T("既に開かれています"), E_UNEXPECTED); m_isTagClosed = true; m_hasChild = false; m_stream = stream; m_stream << "<?xml version=\"1.0\" encoding=\"" << encoding << "\"?>\r\n"; }
ArgumentExtractor operator()(AnyT *& t, const StringT & name, bool required = true) { if (_current == NULL) { throw ArgumentError(name, AnyT::NAME, NULL, _frame); } t = _current->head().as<AnyT>(); // If t is true or wasn't required, everything is okay. if (t || !required) { return ArgumentExtractor(_frame, _current->tail().as<Cell>()); } // Else, something went wrong: if (_current->head()) { throw ArgumentError(name, AnyT::NAME, _current->head(), _frame); } else { throw ArgumentError(name, AnyT::NAME, NULL, _frame); } }
void ControlCommand::FieldValidator::validate(const ControlParameters& parameters) const { const std::vector<bool>& presentFields = parameters.getPresentFields(); for (size_t i = 0; i < CONTROL_PARAMETER_UBOUND; ++i) { bool isPresent = presentFields[i]; if (m_required[i]) { if (!isPresent) { BOOST_THROW_EXCEPTION(ArgumentError(CONTROL_PARAMETER_FIELD[i] + " is required but " "missing")); } } else if (isPresent && !m_optional[i]) { BOOST_THROW_EXCEPTION(ArgumentError(CONTROL_PARAMETER_FIELD[i] + " is forbidden but " "present")); } } }
int main(int argc, char** argv){ if(argc<2){ throw ArgumentError(); } const char* filename = argv[1]; list<Box> v = read_boxes(filename); list<Tower> tows = get_best_towers(v); Tower tallest = get_tallest(tows); show_tower(tallest); std::cout << "height = " << tower_height(tallest) << '\n'; return 0; }
void FaceLocalControlCommand::validateRequest(const ControlParameters& parameters) const { this->ControlCommand::validateRequest(parameters); switch (parameters.getLocalControlFeature()) { case LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID: case LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID: break; default: BOOST_THROW_EXCEPTION(ArgumentError("LocalControlFeature is invalid")); } }
virtual void validateRequest(const ControlParameters& parameters) const { this->ControlCommand::validateRequest(parameters); switch (parameters.getLocalControlFeature()) { case LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID: case LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID: break; default: throw ArgumentError("LocalControlFeature is invalid"); } }
void ControlCommand::FieldValidator::validate(const ControlParameters& parameters) const { const std::vector<bool>& presentFields = parameters.getPresentFields(); for (size_t i = 0; i < CONTROL_PARAMETER_UBOUND; ++i) { bool isPresent = presentFields[i]; if (m_required[i]) { if (!isPresent) { BOOST_THROW_EXCEPTION(ArgumentError(CONTROL_PARAMETER_FIELD[i] + " is required but missing")); } } else if (isPresent && !m_optional[i]) { BOOST_THROW_EXCEPTION(ArgumentError(CONTROL_PARAMETER_FIELD[i] + " is forbidden but present")); } } if (m_optional[CONTROL_PARAMETER_FLAGS] && m_optional[CONTROL_PARAMETER_MASK]) { if (parameters.hasFlags() != parameters.hasMask()) { BOOST_THROW_EXCEPTION(ArgumentError("Flags must be accompanied by Mask")); } } }
void EndElement() { if(m_stack.empty()) throw ArgumentError(_T("EndElement()の呼び出しが、StartElement()と一致しません"), E_UNEXPECTED); if(!m_isTagClosed) { m_stream << "/>\r\n"; m_isTagClosed = true; } else { if(m_hasChild) Indent(m_stack.size()-1); m_stream << "</" << m_stack.back().str() << ">\r\n"; } m_stack.pop_back(); m_hasChild = true; }
void Attribute(PCWSTR name, PCWSTR data) { if(m_isTagClosed) throw ArgumentError(_T("属性はテキストより先に指定する必要があります"), E_UNEXPECTED); m_stream << ' ' << name << "=\"" << data << '\"'; }