Ejemplo n.º 1
0
void
RibUnregisterCommand::validateResponse(const ControlParameters& parameters) const
{
  this->ControlCommand::validateResponse(parameters);

  if (parameters.getFaceId() == 0) {
    BOOST_THROW_EXCEPTION(ArgumentError("FaceId must not be zero"));
  }
}
Ejemplo n.º 2
0
void
FaceDestroyCommand::validateRequest(const ControlParameters& parameters) const
{
  this->ControlCommand::validateRequest(parameters);

  if (parameters.getFaceId() == 0) {
    BOOST_THROW_EXCEPTION(ArgumentError("FaceId must not be zero"));
  }
}
Ejemplo n.º 3
0
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:/"));
  }
}
Ejemplo n.º 4
0
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"));
  }
}
Ejemplo n.º 5
0
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"));
  }
}
Ejemplo n.º 6
0
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"));
  }
}
Ejemplo n.º 7
0
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"));
  }
}
Ejemplo n.º 8
0
	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";
	}
Ejemplo n.º 9
0
		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);
			}
		}
Ejemplo n.º 10
0
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"));
    }
  }
}
Ejemplo n.º 11
0
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;
}
Ejemplo n.º 12
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");
    }
  }
Ejemplo n.º 14
0
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"));
    }
  }
}
Ejemplo n.º 15
0
	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;
	}
Ejemplo n.º 16
0
	void Attribute(PCWSTR name, PCWSTR data)
	{
		if(m_isTagClosed)
			throw ArgumentError(_T("属性はテキストより先に指定する必要があります"), E_UNEXPECTED);
		m_stream << ' ' << name << "=\"" << data << '\"';
	}