qpOASES  3.2.1
An Implementation of the Online Active Set Strategy
include/qpOASES/Bounds.hpp
Go to the documentation of this file.
00001 /*
00002  *  This file is part of qpOASES.
00003  *
00004  *  qpOASES -- An Implementation of the Online Active Set Strategy.
00005  *  Copyright (C) 2007-2017 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_t _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_t _n = 0                
00085                             );
00086 
00087 
00094         returnValue setupBound( int_t number,           
00095                                 SubjectToStatus _status 
00096                                 );
00097 
00103         returnValue setupAllFree( );
00104 
00110         returnValue setupAllLower( );
00111 
00117         returnValue setupAllUpper( );
00118 
00119 
00124         returnValue moveFixedToFree(    int_t number            
00125                                         );
00126 
00131         returnValue moveFreeToFixed(    int_t number,           
00132                                         SubjectToStatus _status 
00133                                         );
00134 
00139         returnValue flipFixed( int_t number );
00140 
00144         returnValue swapFree(   int_t number1,                  
00145                                 int_t number2                   
00146                                 );
00147 
00148 
00151         inline int_t getNV( ) const;
00152 
00155         inline int_t getNFV( ) const;
00156 
00159         inline int_t getNBV( ) const;
00160 
00163         inline int_t getNUV( ) const;
00164 
00167         inline int_t getNFR( ) const;
00168 
00171         inline int_t getNFX( ) const;
00172 
00173 
00176         inline Indexlist* getFree( );
00177 
00180         inline Indexlist* getFixed( );
00181 
00182 
00194         virtual returnValue shift(  int_t offset    
00195                                     );
00196 
00204         virtual returnValue rotate( int_t 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  */