Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 #if !defined(ALIZE_MixtureServer_h)
00056 #define ALIZE_MixtureServer_h
00057
00058 #if defined(_WIN32)
00059 #if defined(ALIZE_EXPORTS)
00060 #define ALIZE_API __declspec(dllexport)
00061 #else
00062 #define ALIZE_API __declspec(dllimport)
00063 #endif
00064 #else
00065 #define ALIZE_API
00066 #endif
00067
00068 #include "Object.h"
00069 #include "MixtureDict.h"
00070 #include "MixtureGD.h"
00071 #include "MixtureGF.h"
00072 #include "DistribGD.h"
00073 #include "DistribGF.h"
00074 #include "DistribRefVector.h"
00075 #include "Config.h"
00076
00077 namespace alize
00078 {
00079 class XLine;
00080
00091
00092 class ALIZE_API MixtureServer : public Object
00093 {
00094 friend class TestMixtureServer;
00095
00096 public :
00097
00101 explicit MixtureServer(const Config& config);
00102
00110 explicit MixtureServer(const FileName& f, const Config& c);
00111
00112 virtual ~MixtureServer();
00113
00116 void reset();
00117
00122 Distrib& createDistrib();
00123
00129 Distrib& createDistrib(const DistribType type, unsigned long vectSize);
00130
00136 Distrib& duplicateDistrib(const Distrib& d);
00137
00143 Mixture& createMixture();
00144
00151 Mixture& createMixture(unsigned long dc);
00152
00159 Mixture& createMixture(unsigned long dc, DistribType);
00160
00172 Mixture& duplicateMixture(const Mixture& mix,
00173 DuplDistrib = DUPL_DISTRIB);
00174
00180 Distrib& getDistrib(unsigned long index) const;
00181
00187 Mixture& getMixture(unsigned long index) const;
00188
00198 void setDistribToMixture(Mixture& mix, Distrib& distr, weight_t w,
00199 unsigned long index);
00200
00207 void addDistribToMixture(Mixture& mix, Distrib& distr, weight_t w = 0.0);
00208
00215 void deleteMixtures(unsigned long f, unsigned long l);
00216
00222 void deleteMixture(const Mixture& m);
00223
00226 void deleteUnusedDistribs();
00227
00228
00229
00234 DistribGD& createDistribGD();
00235
00240 DistribGF& createDistribGF();
00241
00247 DistribGD& duplicateDistrib(const DistribGD& d);
00248
00254 DistribGF& duplicateDistrib(const DistribGF& d);
00255
00262 MixtureGD& createMixtureGD();
00263
00270 MixtureGF& createMixtureGF();
00271
00278 MixtureGD& createMixtureGD(unsigned long dc);
00279
00286 MixtureGF& createMixtureGF(unsigned long dc);
00287
00299 MixtureGD& duplicateMixture(const MixtureGD& mix,
00300 DuplDistrib = DUPL_DISTRIB);
00301
00313 MixtureGF& duplicateMixture(const MixtureGF& mix,
00314 DuplDistrib = DUPL_DISTRIB);
00315
00327 MixtureGD& duplicateMixtureGD(const Mixture& mix,
00328 DuplDistrib = DUPL_DISTRIB);
00329
00341 MixtureGF& duplicateMixtureGF(const Mixture& mix,
00342 DuplDistrib = DUPL_DISTRIB);
00343
00350 DistribGD& getDistribGD(unsigned long index) const;
00351
00358 DistribGF& getDistribGF(unsigned long index) const;
00359
00366 MixtureGD& getMixtureGD(unsigned long index) const;
00367
00374 MixtureGF& getMixtureGF(unsigned long index) const;
00375
00376
00377
00385 Mixture& loadMixture(const FileName& f);
00386
00394 MixtureGD& loadMixtureGD(const FileName& f);
00395
00403 MixtureGF& loadMixtureGF(const FileName& f);
00404
00411 void loadMixture(Mixture& m, const FileName& f);
00412
00420 unsigned long loadMixture(const XLine& l);
00421
00422
00423
00427 unsigned long getDistribCount() const;
00428
00434 unsigned long getVectSize() const;
00435
00439 unsigned long getMixtureCount() const;
00440
00446 long getMixtureIndex(const String& id) const;
00447
00453 void setMixtureId(Mixture& mix, const String& id);
00454
00455
00456
00457 const String& getServerName() const;
00458 void setServerName(const String&);
00459
00467 void load(const FileName& f);
00468
00476 void save(const FileName& f) const;
00477
00478 virtual String getClassName() const;
00479 virtual String toString() const;
00480
00481
00482 private :
00483
00484 const Config& _config;
00485 String _serverName;
00486 DistribRefVector _distribDict;
00487 MixtureDict _mixtureDict;
00488 unsigned long _lastMixtureId;
00489 mutable unsigned long _vectSize;
00490 mutable bool _vectSizeDefined;
00491
00492 void addDistribToDict(Distrib&);
00493 void addMixtureToDict(Mixture&);
00494 String newId();
00495 Mixture& loadMixture(const FileName& f, DistribType);
00496 void autoSetMixtureId(Mixture& m, String id);
00497
00498
00500 MixtureServer(const MixtureServer& m);
00501 const MixtureServer& operator=(
00502 const MixtureServer&);
00503 bool operator==(const MixtureServer&);
00504 bool operator!=(const MixtureServer&);
00505 };
00506
00507 }
00508
00509 #endif // !defined(ALIZE_MixtureServer_h)
00510