00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)
00024 #pragma implementation
00025 #endif
00026
00027 #ifdef HAVE_CONFIG_H
00028 #include <config.h>
00029 #endif
00030
00031 #include <iostream>
00032
00033 #include "Bounds.h"
00034 #include "lo-error.h"
00035
00036
00037
00038 void
00039 Bounds::error (const char* msg)
00040 {
00041 (*current_liboctave_error_handler) ("fatal bounds error: ", msg);
00042 }
00043
00044 Bounds&
00045 Bounds::set_bounds (const ColumnVector l, const ColumnVector u)
00046 {
00047 if (l.capacity () != u.capacity ())
00048 {
00049 error ("inconsistent sizes for lower and upper bounds");
00050 return *this;
00051 }
00052
00053 lb = l;
00054 ub = u;
00055
00056 return *this;
00057 }
00058
00059 Bounds&
00060 Bounds::set_lower_bounds (const ColumnVector l)
00061 {
00062 if (ub.capacity () != l.capacity ())
00063 {
00064 error ("inconsistent size for lower bounds");
00065 return *this;
00066 }
00067
00068 lb = l;
00069
00070 return *this;
00071 }
00072
00073 Bounds&
00074 Bounds::set_upper_bounds (const ColumnVector u)
00075 {
00076 if (lb.capacity () != u.capacity ())
00077 {
00078 error ("inconsistent size for upper bounds");
00079 return *this;
00080 }
00081
00082 ub = u;
00083
00084 return *this;
00085 }
00086
00087 std::ostream&
00088 operator << (std::ostream& os, const Bounds& b)
00089 {
00090 for (int i = 0; i < b.size (); i++)
00091 os << b.lower_bound (i) << " " << b.upper_bound (i) << "\n";
00092
00093 return os;
00094 }
00095
00096
00097
00098
00099
00100