Table of Contents

Wwise SDK 2019.1.6
SourceControlContainers.h
Go to the documentation of this file.
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  /// \warning The functions in this interface are not thread-safe, unless stated otherwise.
53  ///
54  /// \aknote The class implementing this interface is a wrapper around the MFC \b CList class. Documentation can be found on MSDN.
55  /// \endaknote
56  template <class Type, class Arg_Type = const Type&>
57  class IAkList
58  {
59  public:
60  virtual unsigned int GetCount() const = 0;
61  virtual unsigned int GetSize() const = 0;
62  virtual bool IsEmpty() const = 0;
63 
64  virtual AkPos AddHead( Arg_Type in_newElement ) = 0;
65  virtual AkPos AddTail( Arg_Type in_newElement ) = 0;
66 
67  virtual void RemoveHead() = 0;
68  virtual void RemoveTail() = 0;
69  virtual void RemoveAt( AkPos in_position ) = 0;
70  virtual void RemoveAll() = 0;
71 
72  virtual Type& GetHead() = 0;
73  virtual const Type& GetHead() const = 0;
74  virtual Type& GetTail() = 0;
75  virtual const Type& GetTail() const = 0;
76  virtual AkPos GetHeadPosition() const = 0;
77  virtual AkPos GetTailPosition() const = 0;
78  virtual Type& GetNext( AkPos& in_rPosition ) = 0;
79  virtual const Type& GetNext( AkPos& in_rPosition ) const = 0;
80  virtual Type& GetPrev( AkPos& in_rPosition ) = 0;
81  virtual const Type& GetPrev( AkPos& in_rPosition ) const = 0;
82  virtual Type& GetAt( AkPos in_position ) = 0;
83  virtual const Type& GetAt( AkPos in_position ) const = 0;
84 
85  virtual void SetAt( AkPos in_pos, Arg_Type in_newElement ) = 0;
86  virtual AkPos InsertBefore( AkPos in_position, Arg_Type in_newElement ) = 0;
87  virtual AkPos InsertAfter( AkPos in_position, Arg_Type in_newElement ) = 0;
88  };
89 
90  // IAkMap
91  /// Template parameters:
92  /// - Key: Class of the object used as the map key.
93  /// - Arg_Key: Data type used for Key arguments.
94  /// - Value: Class of the object stored in the map.
95  /// - Arg_Value: Data type used for Value arguments; usually a reference to Value.
96  ///
97  /// \warning The functions in this interface are not thread-safe, unless stated otherwise.
98  ///
99  /// \aknote The class implementing this interface is a wrapper around the MFC \b CMap class. Documentation can be found on MSDN.
100  /// \endaknote
101  template <class Key, class Arg_Key, class Value, class Arg_Value>
102  class IAkMap
103  {
104  public:
105  virtual unsigned int GetCount() const = 0;
106  virtual unsigned int GetSize() const = 0;
107  virtual bool IsEmpty() const = 0;
108 
109  virtual bool Lookup( Arg_Key in_key, Value& in_rValue ) const = 0;
110 
111  virtual Value& operator[]( Arg_Key in_key ) = 0;
112  virtual void SetAt( Arg_Key in_key, Arg_Value in_newValue ) = 0;
113 
114  virtual bool RemoveKey( Arg_Key in_key ) = 0;
115  virtual void RemoveAll() = 0;
116 
117  virtual AkPos GetStartPosition() const = 0;
118  virtual void GetNextAssoc( AkPos& in_rNextPosition, Key& in_rKey, Value& in_rValue ) const = 0;
119  };
120  };
121  }
122 }
123 
124 #endif // _AK_WWISE_SOURCECONTROLCONTAINERS_H
virtual void GetNextAssoc(AkPos &in_rNextPosition, Key &in_rKey, Value &in_rValue) const =0
virtual AkPos AddHead(Arg_Type in_newElement)=0
virtual unsigned int GetSize() const =0
virtual Type & GetNext(AkPos &in_rPosition)=0
virtual unsigned int GetCount() const =0
virtual AkPos InsertAfter(AkPos in_position, Arg_Type in_newElement)=0
virtual AkPos GetTailPosition() const =0
Audiokinetic namespace.
virtual void SetAt(AkPos in_pos, Arg_Type in_newElement)=0
virtual bool IsEmpty() const =0
virtual AkPos GetHeadPosition() const =0
virtual unsigned int GetSize() const =0
virtual bool RemoveKey(Arg_Key in_key)=0
virtual Type & GetAt(AkPos in_position)=0
virtual unsigned int GetCount() const =0
virtual void SetAt(Arg_Key in_key, Arg_Value in_newValue)=0
virtual AkPos AddTail(Arg_Type in_newElement)=0
virtual Value & operator[](Arg_Key in_key)=0
virtual AkPos InsertBefore(AkPos in_position, Arg_Type in_newElement)=0
__AkPos * AkPos
Pointer to a container position.
virtual Type & GetPrev(AkPos &in_rPosition)=0
virtual void RemoveAt(AkPos in_position)=0
virtual bool IsEmpty() const =0
virtual AkPos GetStartPosition() const =0
virtual bool Lookup(Arg_Key in_key, Value &in_rValue) const =0