From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/a02418.html | 574 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 574 insertions(+) create mode 100644 docs/doxygen/nel/a02418.html (limited to 'docs/doxygen/nel/a02418.html') diff --git a/docs/doxygen/nel/a02418.html b/docs/doxygen/nel/a02418.html new file mode 100644 index 00000000..ff84e067 --- /dev/null +++ b/docs/doxygen/nel/a02418.html @@ -0,0 +1,574 @@ + + +NeL: TemplateNLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift > class Reference + + + +
+

NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift > Class Template Reference

#include <context_sound.h> +

+

Inheritance diagram for NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >: +

+ +NLSOUND::IContextSoundContainer + +

template<uint NbJoker, bool UseRandom, uint Shift = 5>
+ class NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Private Types

enum  { JOKER_ARRAY_SIZE = (NbJoker == 0 ? 1 : NbJoker) + }
typedef std::hash_map< CContextMatcher<
+ NbJoker, UseRandom, Shift >,
+ CSound *, CContextMatcher<
+ NbJoker, UseRandom, Shift
+>::CHash > 
THashContextSound

Private Member Functions

virtual void addSound (CSound *sound, const std::string &baseName)
virtual float getMaxDistance () const
virtual CSoundgetSound (const CSoundContext &context, uint32 randomValue)
void getSoundList (std::vector< std::pair< std::string, CSound * > > &subsounds) const
virtual void init (uint *contextArgsIndex)

Private Attributes

uint32 _ContextArgsIndex [JOKER_ARRAY_SIZE]
THashContextSound _ContextSounds
float _MaxDist
+

Member Typedef Documentation

+

+ + + + +
+ + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
typedef std::hash_map<CContextMatcher<NbJoker, UseRandom, Shift>, CSound *, CContextMatcher<NbJoker, UseRandom, Shift>::CHash> NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::THashContextSound [private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 123 of file context_sound.h.

+


Member Enumeration Documentation

+

+ + + + +
+ + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
anonymous enum [private] +
+
+ + + + + +
+   + + +

+

Enumeration values:
+ + +
JOKER_ARRAY_SIZE  +
+
+ +

+Definition at line 117 of file context_sound.h. +

+

00118         {
+00119                 // Size of array : special case for 0 joker because we can't declare array of 0 elements
+00120                 JOKER_ARRAY_SIZE = (NbJoker == 0 ? 1 : NbJoker)
+00121         };
+
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
virtual void NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::addSound CSound sound,
const std::string &  baseName
[inline, private, virtual]
+
+ + + + + +
+   + + +

+ +

+Implements NLSOUND::IContextSoundContainer. +

+Definition at line 136 of file context_sound.h. +

+References NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_ContextSounds, NLSOUND::CSound::getMaxDistance(), NLSOUND::CSound::getName(), nlassert, nldebug, nlwarning, uint, and uint32. +

+

00137         {
+00138                 const std::string &patternName = CStringMapper::unmap(sound->getName());
+00139                 nlassert(patternName.size() >= baseName.size());
+00140 
+00141                 std::string arg;
+00142                 uint32          args[JOKER_ARRAY_SIZE];
+00143 
+00144                 _MaxDist = std::max(sound->getMaxDistance(), _MaxDist);
+00145 
+00146                 // extract the context values
+00147                 std::string::const_iterator     first(patternName.begin() + baseName.size()), last(patternName.end());
+00148 //              std::string::const_iterator     first2(baseName.begin()), last2(baseName.end());
+00149                 // 1st, skip the base name 
+00150 //              for (; first == first2; ++first, ++first2);
+00151 
+00152                 // 2nd, read all the joker values
+00153                 uint i;
+00154                 for ( i=0; i<NbJoker && first != last; ++first)
+00155                 {
+00156                         if (isdigit(int(*first)))
+00157                         {
+00158                                 arg += *first;
+00159                         }
+00160                         else if (!arg.empty())
+00161                         {
+00162                                 // end of the argument.
+00163                                 args[i++] = atoi(arg.c_str());
+00164                                 arg = "";
+00165                         }
+00166                 }
+00167                 // read the potential last arg.
+00168                 if (!arg.empty())
+00169                 {
+00170                         // end of the argument.
+00171                         args[i++] = atoi(arg.c_str());
+00172                         arg = "";
+00173                 }
+00174 
+00175                 if (i != NbJoker)
+00176                         return;
+00177                 nlassert(i==NbJoker);
+00178 
+00179                 int randomValue;
+00180                 if (UseRandom)
+00181                 {
+00182                         bool ok = false;
+00183                         // 3rd, read the random value (if any)
+00184                         for (uint i=0; first != last; ++first)
+00185                         {
+00186                                 if (isdigit(int(*first)))
+00187                                 {
+00188                                         arg += *first;
+00189                                 }
+00190                                 else if (!arg.empty())
+00191                                 {
+00192                                         nlassert (ok == false);
+00193                                         // end of the argument.
+00194                                         randomValue = atoi(arg.c_str());
+00195                                         arg = "";
+00196                                         ok = true;
+00197                                 }
+00198                         }
+00199                         // read the potential last arg.
+00200                         if (!arg.empty())
+00201                         {
+00202                                 nlassert (ok == false);
+00203                                 // end of the argument.
+00204                                 randomValue = atoi(arg.c_str());
+00205                                 arg = "";
+00206                                 ok = true;
+00207                         }
+00208                         nlassert (ok == true);
+00209 
+00210                 }
+00211                 else
+00212                 {
+00213                         randomValue = 0;
+00214                 }
+00215                         
+00216                 // ok, now create the key and store the sound.
+00217                 CContextMatcher<NbJoker, UseRandom, Shift>      cm(args, randomValue);
+00218 
+00219 #ifdef _DEBUG
+00220                 char tmp[1024];
+00221                 char tmp2[1024];
+00222 
+00223                 smprintf(tmp, 1024, "Adding sound : %s, args = ", patternName.c_str());
+00224 
+00225                 for (uint k=0; k<NbJoker; ++k)
+00226                 {
+00227                         sprintf(tmp2, "%u", args[k]);
+00228                         strcat(tmp, tmp2);
+00229                 }
+00230 
+00231                 nldebug(tmp);
+00232 
+00233 #endif
+00234 
+00235                 std::pair<THashContextSound::iterator, bool>    ret;
+00236                 ret = _ContextSounds.insert(std::make_pair(cm, sound));
+00237                 if (!ret.second)
+00238                 {
+00239                         THashContextSound::iterator it = _ContextSounds.find(cm);
+00240                         nlassert(it != _ContextSounds.end());
+00241 
+00242                         nlwarning("Sound %s has the same context matcher as the sound %s", CStringMapper::unmap(sound->getName()).c_str(), CStringMapper::unmap(it->second->getName()).c_str());
+00243                 }
+00244         }
+
+

+ + + + +
+ + + + + + + + + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
virtual float NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::getMaxDistance  )  const [inline, private, virtual]
+
+ + + + + +
+   + + +

+ +

+Implements NLSOUND::IContextSoundContainer. +

+Definition at line 131 of file context_sound.h. +

+

00132         {
+00133                 return _MaxDist;
+00134         }
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
virtual CSound* NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::getSound const CSoundContext context,
uint32  randomValue
[inline, private, virtual]
+
+ + + + + +
+   + + +

+ +

+Implements NLSOUND::IContextSoundContainer. +

+Definition at line 246 of file context_sound.h. +

+References NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_ContextArgsIndex, NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_ContextSounds, NLSOUND::CSoundContext::Args, uint, and uint32. +

+

00247         {
+00248                 // create a key
+00249                 uint32          args[JOKER_ARRAY_SIZE];
+00250                 for (uint i=0; i<NbJoker; ++i)
+00251                         args[i] = context.Args[_ContextArgsIndex[i]];
+00252 
+00253                 CContextMatcher<NbJoker, UseRandom, Shift>      cm(args, randomValue);
+00254 
+00255                 THashContextSound::iterator it = _ContextSounds.find(cm);
+00256 
+00257                 if (it != _ContextSounds.end())
+00258                         return it->second;
+00259                 else
+00260                         return 0;
+00261         }
+
+

+ + + + +
+ + + + + + + + + + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
void NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::getSoundList std::vector< std::pair< std::string, CSound * > > &  subsounds  )  const [inline, private, virtual]
+
+ + + + + +
+   + + +

+ +

+Implements NLSOUND::IContextSoundContainer. +

+Definition at line 263 of file context_sound.h. +

+References NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_ContextSounds. +

+

00264         {
+00265                 THashContextSound::const_iterator first(_ContextSounds.begin()), last(_ContextSounds.end());
+00266                 for (; first != last; ++first)
+00267                 {
+00268                         subsounds.push_back(std::make_pair(CStringMapper::unmap(first->second->getName()), first->second));
+00269                 }
+00270         }
+
+

+ + + + +
+ + + + + + + + + + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
virtual void NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::init uint contextArgsIndex  )  [inline, private, virtual]
+
+ + + + + +
+   + + +

+ +

+Implements NLSOUND::IContextSoundContainer. +

+Definition at line 125 of file context_sound.h. +

+References NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_ContextArgsIndex, NLMISC::CFastMem::memcpy, and uint. +

+

00126         {
+00127                 _MaxDist = 0;
+00128                 NLMISC::CFastMem::memcpy(_ContextArgsIndex, contextArgsIndex, sizeof(uint) * NbJoker);
+00129         }
+
+


Field Documentation

+

+ + + + +
+ + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
uint32 NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_ContextArgsIndex[JOKER_ARRAY_SIZE] [private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 273 of file context_sound.h. +

+Referenced by NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::getSound(), and NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::init().

+

+ + + + +
+ + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
THashContextSound NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_ContextSounds [private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 274 of file context_sound.h. +

+Referenced by NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::addSound(), NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::getSound(), and NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::getSoundList().

+

+ + + + +
+ + + + + +
+template<uint NbJoker, bool UseRandom, uint Shift = 5>
float NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::_MaxDist [private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 275 of file context_sound.h.

+


The documentation for this class was generated from the following file: +
Generated on Tue Mar 16 14:38:00 2004 for NeL by + +doxygen +1.3.6
+ + -- cgit v1.2.1