Table of Contents

Wwise SDK 2019.2.3
SourceControlContainers.h
1 /*******************************************************************************
2 The content of this file includes portions of the AUDIOKINETIC Wwise Technology
3 released in source code form as part of the SDK installer package.
4 
5 Commercial License Usage
6 
7 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
8 may use this file in accordance with the end user license agreement provided
9 with the software or, alternatively, in accordance with the terms contained in a
10 written agreement between you and Audiokinetic Inc.
11 
12 Apache License Usage
13 
14 Alternatively, this file may be used under the Apache License, Version 2.0 (the
15 "Apache License"); you may not use this file except in compliance with the
16 Apache License. You may obtain a copy of the Apache License at
17 http://www.apache.org/licenses/LICENSE-2.0.
18 
19 Unless required by applicable law or agreed to in writing, software distributed
20 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
21 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
22 the specific language governing permissions and limitations under the License.
23 
24  Version: <VERSION> Build: <BUILDNUMBER>
25  Copyright (c) <COPYRIGHTYEAR> Audiokinetic Inc.
26 *******************************************************************************/
27 
28 /// \file
29 /// Wwise source control containers interface that is used to pass data containers (list and map) in parameters.
30 
31 #ifndef _AK_WWISE_SOURCECONTROLCONTAINERS_H
32 #define _AK_WWISE_SOURCECONTROLCONTAINERS_H
33 
34 // Audiokinetic namespace
35 namespace AK
36 {
37  // Audiokinetic Wwise namespace
38  namespace Wwise
39  {
40  namespace SourceControlContainers
41  {
42  /// Container position
43  struct __AkPos{};
44  /// Pointer to a container position
45  typedef __AkPos* AkPos;
46 
47  // IAkList
48  /// Template parameters:
49  /// - Type: Class of object stored in the list.
50  /// - Arg_Type: Type used to reference objects stored in the list. Can be a reference. By default, this is a reference to the type.
51  ///
52  /// \akwarning
53  /// The functions in this interface are not thread-safe, unless stated otherwise.
54  /// \endakwarning
55  ///
56  /// \aknote The class implementing this interface is a wrapper around the MFC \b CList class. Documentation can be found on MSDN.
57  /// \endaknote
58  template <class Type, class Arg_Type = const Type&>
59  class IAkList
60  {
61  public:
62  virtual unsigned int GetCount() const = 0;
63  virtual unsigned int GetSize() const = 0;
64  virtual bool IsEmpty() const = 0;
65 
66  virtual AkPos AddHead( Arg_Type in_newElement ) = 0;
67  virtual AkPos AddTail( Arg_Type in_newElement ) = 0;
68 
69  virtual void RemoveHead() = 0;
70  virtual void RemoveTail() = 0;
71  virtual void RemoveAt( AkPos in_position ) = 0;
72  virtual void RemoveAll() = 0;
73 
74  virtual Type& GetHead() = 0;
75  virtual const Type& GetHead() const = 0;
76  virtual Type& GetTail() = 0;
77  virtual const Type& GetTail() const = 0;
78  virtual AkPos GetHeadPosition() const = 0;
79  virtual AkPos GetTailPosition() const = 0;
80  virtual Type& GetNext( AkPos& in_rPosition ) = 0;
81  virtual const Type& GetNext( AkPos& in_rPosition ) const = 0;
82  virtual Type& GetPrev( AkPos& in_rPosition ) = 0;
83  virtual const Type& GetPrev( AkPos& in_rPosition ) const = 0;
84  virtual Type& GetAt( AkPos in_position ) = 0;
85  virtual const Type& GetAt( AkPos in_position ) const = 0;
86 
87  virtual void SetAt( AkPos in_pos, Arg_Type in_newElement ) = 0;
88  virtual AkPos InsertBefore( AkPos in_position, Arg_Type in_newElement ) = 0;
89  virtual AkPos InsertAfter( AkPos in_position, Arg_Type in_newElement ) = 0;
90  };
91 
92  // IAkMap
93  /// Template parameters:
94  /// - Key: Class of the object used as the map key.
95  /// - Arg_Key: Data type used for Key arguments.
96  /// - Value: Class of the object stored in the map.
97  /// - Arg_Value: Data type used for Value arguments; usually a reference to Value.
98  ///
99  /// \akwarning
100  /// The functions in this interface are not thread-safe, unless stated otherwise.
101  /// \endakwarning
102  ///
103  /// \aknote The class implementing this interface is a wrapper around the MFC \b CMap class. Documentation can be found on MSDN.
104  /// \endaknote
105  template <class Key, class Arg_Key, class Value, class Arg_Value>
106  class IAkMap
107  {
108  public:
109  virtual unsigned int GetCount() const = 0;
110  virtual unsigned int GetSize() const = 0;
111  virtual bool IsEmpty() const = 0;
112 
113  virtual bool Lookup( Arg_Key in_key, Value& in_rValue ) const = 0;
114 
115  virtual Value& operator[]( Arg_Key in_key ) = 0;
116  virtual void SetAt( Arg_Key in_key, Arg_Value in_newValue ) = 0;
117 
118  virtual bool RemoveKey( Arg_Key in_key ) = 0;
119  virtual void RemoveAll() = 0;
120 
121  virtual AkPos GetStartPosition() const = 0;
122  virtual void GetNextAssoc( AkPos& in_rNextPosition, Key& in_rKey, Value& in_rValue ) const = 0;
123  };
124  };
125  }
126 }
127 
128 #endif // _AK_WWISE_SOURCECONTROLCONTAINERS_H
virtual void GetNextAssoc(AkPos &in_rNextPosition, Key &in_rKey, Value &in_rValue) const =0
virtual Type & GetPrev(AkPos &in_rPosition)=0
virtual AkPos GetStartPosition() const =0
virtual AkPos InsertAfter(AkPos in_position, Arg_Type in_newElement)=0
Audiokinetic namespace.
virtual void SetAt(AkPos in_pos, Arg_Type in_newElement)=0
virtual Type & GetNext(AkPos &in_rPosition)=0
virtual unsigned int GetCount() const =0
virtual AkPos GetTailPosition() const =0
virtual AkPos AddHead(Arg_Type in_newElement)=0
virtual AkPos InsertBefore(AkPos in_position, Arg_Type in_newElement)=0
virtual unsigned int GetSize() const =0
virtual Type & GetAt(AkPos in_position)=0
virtual void SetAt(Arg_Key in_key, Arg_Value in_newValue)=0
__AkPos * AkPos
Pointer to a container position.
virtual unsigned int GetCount() const =0
virtual Value & operator[](Arg_Key in_key)=0
virtual bool IsEmpty() const =0
virtual unsigned int GetSize() const =0
virtual void RemoveAt(AkPos in_position)=0
virtual AkPos AddTail(Arg_Type in_newElement)=0
virtual bool IsEmpty() const =0
virtual bool Lookup(Arg_Key in_key, Value &in_rValue) const =0
virtual bool RemoveKey(Arg_Key in_key)=0
virtual AkPos GetHeadPosition() const =0