/[svn]/linuxsampler/trunk/src/engines/EngineChannelFactory.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/EngineChannelFactory.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 411 by schoenebeck, Sat Feb 26 02:01:14 2005 UTC revision 1826 by iliev, Sat Jan 24 14:32:35 2009 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2   *                                                                         *   *                                                                         *
3   *   Copyright (C) 2005 Christian Schoenebeck                              *   *   Copyright (C) 2005, 2006 Christian Schoenebeck                        *
4   *                                                                         *   *                                                                         *
5   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
6   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 21  Line 21 
21  #ifndef __LS_ENGINECHANNELFACTORY_H__  #ifndef __LS_ENGINECHANNELFACTORY_H__
22  #define __LS_ENGINECHANNELFACTORY_H__  #define __LS_ENGINECHANNELFACTORY_H__
23    
24  #include "common/EngineChannel.h"  #include <set>
25    
26    #include "EngineChannel.h"
27    
28  namespace LinuxSampler {  namespace LinuxSampler {
29    
30        /** @brief Manages EngineChannel instances.
31         *
32         * This class is used to create and destroy EngineChannel instances of the
33         * various engine types supported by this sampler. It's basically used to
34         * avoid dependencies to palpable sampler engine types /
35         * implementations.
36         */
37      class EngineChannelFactory {      class EngineChannelFactory {
38          public:          public:
39              static EngineChannel* Create(String EngineType) throw (LinuxSamplerException);              /**
40                 * Create EngineChannel instance of given engine type.
41                 *
42                 * @see EngineFactory::AvailableEngineTypes()
43                 */
44                static EngineChannel* Create(String EngineType) throw (Exception);
45    
46                /**
47                 * Destroy given EngineChannel instance.
48                 */
49                static void Destroy(EngineChannel* pEngineChannel);
50    
51                /**
52                 * Returns all EngineChannel instances.
53                 */
54                static const std::set<EngineChannel*>& EngineChannelInstances();
55    
56                /**
57                 * Specifies whether the deallocation of the specified EngineChannel
58                 * object should be postponed. When the object deletion is diabled
59                 * it is not freed from memory (when destroyed) until it is enabled.
60                 * Used to prevent orphaned pointers.
61                 */
62                static void SetDeleteEnabled(const EngineChannel* pEngineChannel, bool enable);
63    
64            private:
65                static Mutex LockedChannelsMutex;
66      };      };
67    
68  } // namepsace LinuxSampler  } // namespace LinuxSampler
69    
70  #endif // __LS_ENGINECHANNELFACTORY_H__  #endif // __LS_ENGINECHANNELFACTORY_H__

Legend:
Removed from v.411  
changed lines
  Added in v.1826

  ViewVC Help
Powered by ViewVC