00001 /** 00002 * \file SingletonsOptimizerState.h 00003 * \brief Use a SingletonModifier applied to a Particles to 00004 * maintain an invariant 00005 * 00006 * This file is generated by a script (core/tools/make-container). 00007 * Do not edit directly. 00008 * 00009 * Copyright 2007-2010 IMP Inventors. All rights reserved. 00010 */ 00011 00012 #ifndef IMPCONTAINER_SINGLETONS_OPTIMIZER_STATE_H 00013 #define IMPCONTAINER_SINGLETONS_OPTIMIZER_STATE_H 00014 00015 #include "container_config.h" 00016 #include <IMP/SingletonContainer.h> 00017 #include <IMP/SingletonModifier.h> 00018 #include <IMP/OptimizerState.h> 00019 00020 IMP_BEGIN_NAMESPACE 00021 // for swig 00022 class SingletonContainer; 00023 class SingletonModifier; 00024 IMP_END_NAMESPACE 00025 00026 IMPCONTAINER_BEGIN_NAMESPACE 00027 //! Apply a SingletonFunction to a SingletonContainer to maintain an invariant 00028 /** \ingroup restraint 00029 \see SingletonOptimizerState 00030 */ 00031 class IMPCONTAINEREXPORT SingletonsOptimizerState : public OptimizerState 00032 { 00033 IMP::internal::OwnerPointer<SingletonModifier> f_; 00034 IMP::internal::OwnerPointer<SingletonContainer> c_; 00035 public: 00036 /** \param[in] c The Container to hold the elements to process 00037 \param[in] gf The SingletonModifier to apply to all elements. 00038 \param[in] name The name to use for this Object 00039 */ 00040 SingletonsOptimizerState(SingletonContainer *c, SingletonModifier *gf, 00041 std::string name="SingletonsOptimizerState %1%"); 00042 00043 IMP_OPTIMIZER_STATE(SingletonsOptimizerState); 00044 }; 00045 00046 00047 IMPCONTAINER_END_NAMESPACE 00048 00049 #endif /* IMPCONTAINER_SINGLETONS_OPTIMIZER_STATE_H */