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 * |
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__ |