00001 /* 00002 * This file is part of qpOASES. 00003 * 00004 * qpOASES -- An Implementation of the Online Active Set Strategy. 00005 * Copyright (C) 2007-2011 by Hans Joachim Ferreau, Andreas Potschka, 00006 * Christian Kirches et al. All rights reserved. 00007 * 00008 * qpOASES is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU Lesser General Public 00010 * License as published by the Free Software Foundation; either 00011 * version 2.1 of the License, or (at your option) any later version. 00012 * 00013 * qpOASES is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00016 * See the GNU Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public 00019 * License along with qpOASES; if not, write to the Free Software 00020 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 * 00022 */ 00023 00024 00036 #ifndef QPOASES_BOUNDS_HPP 00037 #define QPOASES_BOUNDS_HPP 00038 00039 00040 #include <qpOASES/SubjectTo.hpp> 00041 00042 00043 BEGIN_NAMESPACE_QPOASES 00044 00045 00056 class Bounds : public SubjectTo 00057 { 00058 /* 00059 * PUBLIC MEMBER FUNCTIONS 00060 */ 00061 public: 00063 Bounds( ); 00064 00066 Bounds( int _n 00067 ); 00068 00070 Bounds( const Bounds& rhs 00071 ); 00072 00074 virtual ~Bounds( ); 00075 00077 Bounds& operator=( const Bounds& rhs 00078 ); 00079 00080 00084 returnValue init( int _n = 0 00085 ); 00086 00087 00094 returnValue setupBound( int number, 00095 SubjectToStatus _status 00096 ); 00097 00103 returnValue setupAllFree( ); 00104 00110 returnValue setupAllLower( ); 00111 00117 returnValue setupAllUpper( ); 00118 00119 00124 returnValue moveFixedToFree( int number 00125 ); 00126 00131 returnValue moveFreeToFixed( int number, 00132 SubjectToStatus _status 00133 ); 00134 00139 returnValue flipFixed( int number ); 00140 00144 returnValue swapFree( int number1, 00145 int number2 00146 ); 00147 00148 00151 inline int getNV( ) const; 00152 00155 inline int getNFV( ) const; 00156 00159 inline int getNBV( ) const; 00160 00163 inline int getNUV( ) const; 00164 00167 inline int getNFR( ) const; 00168 00171 inline int getNFX( ) const; 00172 00173 00176 inline Indexlist* getFree( ); 00177 00180 inline Indexlist* getFixed( ); 00181 00182 00194 virtual returnValue shift( int offset 00195 ); 00196 00204 virtual returnValue rotate( int offset 00205 ); 00206 00207 00212 returnValue print( ); 00213 00214 00215 /* 00216 * PROTECTED MEMBER FUNCTIONS 00217 */ 00218 protected: 00221 returnValue clear( ); 00222 00225 returnValue copy( const Bounds& rhs 00226 ); 00227 00228 00234 returnValue setupAll( SubjectToStatus _status 00235 ); 00236 00237 00238 /* 00239 * PROTECTED MEMBER VARIABLES 00240 */ 00241 protected: 00242 Indexlist freee; 00243 Indexlist fixed; 00244 }; 00245 00246 00247 END_NAMESPACE_QPOASES 00248 00249 #include <qpOASES/Bounds.ipp> 00250 00251 #endif /* QPOASES_BOUNDS_HPP */ 00252 00253 00254 /* 00255 * end of file 00256 */