-/* $Id$
-
-This file is part of libmspgltk
-Copyright © 2011 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#include <limits>
#include "container.h"
#include "layout.h"
void Layout::set_container(Container &c)
{
if(container)
- throw InvalidState("This layout is already assigned to a Container");
+ throw logic_error("container!=0");
container = &c;
}
void Layout::add_widget(Widget &wdg)
{
if(!container)
- throw InvalidState("Can't add Widgets without a Container");
+ throw logic_error("!container");
Slot *slot = create_slot(wdg);
for(list<Constraint>::iterator i=slot->constraints.begin(); i!=slot->constraints.end(); ++i)
if(&(*i)->widget==&wdg)
return **i;
- throw InvalidParameterValue("Widget is not in the Layout");
+ throw hierarchy_error("widget not in layout");
}
Layout::ConstraintType Layout::complement(ConstraintType type)
void Layout::add_constraint(Widget &src, ConstraintType type, Widget &tgt)
{
if(&src==&tgt)
- throw InvalidParameterValue("Can't add a self-referencing constraint");
+ throw invalid_argument("&src==&tgt");
Slot &src_slot = get_slot_for_widget(src);
Slot &tgt_slot = get_slot_for_widget(tgt);
Layout::LinearProgram::Row Layout::LinearProgram::operator[](unsigned r)
{
if(r>=n_rows)
- throw InvalidParameterValue("Row index out of range");
+ throw out_of_range("LinearProgram::operator[]");
return Row(*this, r);
}
float Layout::LinearProgram::get_variable(unsigned i)
{
if(!solved || infeasible)
- throw InvalidState("Not solved");
+ throw logic_error("not solved");
if(i+1>=n_columns)
- throw InvalidParameterValue("Variable index out of range");
+ throw out_of_range("LinearProgram::get_variable");
unsigned r = columns[i].basic;
return columns.back().values[r];
float &Layout::LinearProgram::Row::operator[](unsigned c)
{
if(c>=linprog.n_columns)
- throw InvalidParameterValue("Column index out of range");
+ throw out_of_range("Row::operator[]");
Column &column = linprog.columns[c];
if(column.values.size()<=index)