memory_allocator.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ACADO Toolkit.
3  *
4  * ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization.
5  * Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau,
6  * Milan Vukov, Rien Quirynen, KU Leuven.
7  * Developed within the Optimization in Engineering Center (OPTEC)
8  * under supervision of Moritz Diehl. All rights reserved.
9  *
10  * ACADO Toolkit is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 3 of the License, or (at your option) any later version.
14  *
15  * ACADO Toolkit is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with ACADO Toolkit; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 
33 
34 using namespace std;
35 
37 
39 {
40  if (indices.busy() == true)
41  {
42  ExportIndex ind( string("lRun") + toString(indices.size() + 1) );
43 
44  indices.add( ind );
45 
46  _obj = ind;
47 
48  return SUCCESSFUL_RETURN;
49  }
50 
51  indices.acquire( _obj );
52 
53  return SUCCESSFUL_RETURN;
54 }
55 
57 {
58  if (indices.release( _obj ) == false)
59  {
60  LOG( LVL_ERROR ) << "Object '" << _obj.getFullName() << "' is not found in an object pool" << endl;
62  }
63 
64  return SUCCESSFUL_RETURN;
65 }
66 
68 {
69  if (indices.add( _obj ) == false)
70  {
71  LOG( LVL_WARNING ) << "Object '" << _obj.getFullName() << "' already exists in an object pool" << endl;
73  }
74 
75  return SUCCESSFUL_RETURN;
76 }
77 
78 std::vector< ExportIndex > MemoryAllocator::getPool( void )
79 {
80  return indices.getPool();
81 }
82 
#define LOG(level)
Just define a handy macro for getting the logger.
returnValue release(const ExportIndex &_obj)
Allows to pass back messages to the calling function.
string toString(T const &value)
Returned value is a error.
#define CLOSE_NAMESPACE_ACADO
Defines a scalar-valued index variable to be used for exporting code.
Returned value is a warning.
returnValue acquire(ExportIndex &_obj)
returnValue add(const ExportIndex &_obj)
std::string getFullName() const
std::vector< ExportIndex > getPool(void)
#define BEGIN_NAMESPACE_ACADO
#define ACADOERROR(retval)


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Mon Jun 10 2019 12:34:53