XJ music engine  1.9.6
In-game runtime engine for XJ music.
MemeIsometry.h
Go to the documentation of this file.
1 // Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
2 
3 #ifndef XJMUSIC_ENTITIES_MEME_ISOMETRY_H
4 #define XJMUSIC_ENTITIES_MEME_ISOMETRY_H
5 
6 #include <string>
7 
12 
13 #include "MemeStack.h"
14 #include "MemeTaxonomy.h"
15 
16 namespace XJ {
17 
21  class MemeIsometry {
22  public:
29  explicit MemeIsometry(MemeTaxonomy taxonomy, const std::set<std::string> &sourceMemes);
30 
38  static MemeIsometry of(MemeTaxonomy taxonomy, const std::set<std::string> &sourceMemes);
39 
46  static MemeIsometry of(const std::set<std::string> &sourceMemes);
47 
53  static MemeIsometry none();
54 
61  int score(const std::set<std::string> &targets) const;
62 
66  void add(const std::string &meme);
67 
71  void add(const ProgramMeme &meme);
72 
76  void add(const ProgramSequenceBindingMeme &meme);
77 
81  void add(const InstrumentMeme &meme);
82 
86  void add(const SegmentMeme &meme);
87 
93  bool isAllowed(const std::set<std::string> &memes) const;
94 
100  std::set<std::string> getSources();
101 
110  std::string getConstellation() const;
111 
112  private:
113  static const std::string KEY_NAME;
114  MemeStack stack;
115  std::set<std::string> sources;
116  };
117 
118 }// namespace XJ
119 
120 #endif//XJMUSIC_ENTITIES_MEME_ISOMETRY_H
Definition: InstrumentMeme.h:14
Definition: MemeIsometry.h:21
std::set< std::string > getSources()
Definition: MemeIsometry.cpp:66
static MemeIsometry none()
Definition: MemeIsometry.cpp:22
void add(const std::string &meme)
Definition: MemeIsometry.cpp:42
static MemeIsometry of(MemeTaxonomy taxonomy, const std::set< std::string > &sourceMemes)
Definition: MemeIsometry.cpp:14
std::string getConstellation() const
Definition: MemeIsometry.cpp:70
bool isAllowed(const std::set< std::string > &memes) const
Definition: MemeIsometry.cpp:62
int score(const std::set< std::string > &targets) const
Definition: MemeIsometry.cpp:26
MemeIsometry(MemeTaxonomy taxonomy, const std::set< std::string > &sourceMemes)
Definition: MemeIsometry.cpp:9
Definition: MemeStack.h:27
Definition: MemeTaxonomy.h:112
Definition: ProgramMeme.h:14
Definition: ProgramSequenceBindingMeme.h:14
Definition: SegmentMeme.h:13
Definition: ActiveAudio.h:11