목차

include/AK/Wwise/SourceControl/SourceControlContainers.h

Go to the documentation of this file.
00001 /*******************************************************************************
00002 The content of this file includes portions of the AUDIOKINETIC Wwise Technology
00003 released in source code form as part of the SDK installer package.
00004 
00005 Commercial License Usage
00006 
00007 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
00008 may use this file in accordance with the end user license agreement provided 
00009 with the software or, alternatively, in accordance with the terms contained in a
00010 written agreement between you and Audiokinetic Inc.
00011 
00012 Apache License Usage
00013 
00014 Alternatively, this file may be used under the Apache License, Version 2.0 (the 
00015 "Apache License"); you may not use this file except in compliance with the 
00016 Apache License. You may obtain a copy of the Apache License at 
00017 http://www.apache.org/licenses/LICENSE-2.0.
00018 
00019 Unless required by applicable law or agreed to in writing, software distributed
00020 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
00021 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
00022 the specific language governing permissions and limitations under the License.
00023 
00024   Version: <VERSION>  Build: <BUILDNUMBER>
00025   Copyright (c) <COPYRIGHTYEAR> Audiokinetic Inc.
00026 *******************************************************************************/
00027 
00028 /// \file
00029 /// Wwise source control containers interface that is used to pass data containers (list and map) in parameters.
00030 
00031 #ifndef _AK_WWISE_SOURCECONTROLCONTAINERS_H
00032 #define _AK_WWISE_SOURCECONTROLCONTAINERS_H
00033 
00034 // Audiokinetic namespace
00035 namespace AK
00036 {
00037     // Audiokinetic Wwise namespace
00038     namespace Wwise
00039     {
00040         namespace SourceControlContainers
00041         {
00042             /// Container position
00043             struct __AkPos{};
00044             /// Pointer to a container position
00045             typedef __AkPos* AkPos;
00046 
00047             // IAkList
00048             /// Template parameters:
00049             /// - Type: Class of object stored in the list.
00050             /// - Arg_Type: Type used to reference objects stored in the list. Can be a reference.  By default, this is a reference to the type.
00051             ///
00052             /// \warning The functions in this interface are not thread-safe, unless stated otherwise.
00053             ///
00054             /// \aknote The class implementing this interface is a wrapper around the MFC \b CList class.  Documentation can be found on MSDN.
00055             /// \endaknote
00056             template <class Type, class Arg_Type = const Type&>
00057             class IAkList
00058             {
00059             public:
00060                 virtual unsigned int GetCount() const = 0;
00061                 virtual unsigned int GetSize() const = 0;
00062                 virtual bool IsEmpty() const = 0;
00063 
00064                 virtual AkPos AddHead( Arg_Type in_newElement ) = 0;
00065                 virtual AkPos AddTail( Arg_Type in_newElement ) = 0;
00066 
00067                 virtual void RemoveHead() = 0;
00068                 virtual void RemoveTail() = 0;
00069                 virtual void RemoveAt( AkPos in_position ) = 0;
00070                 virtual void RemoveAll() = 0;
00071 
00072                 virtual Type& GetHead() = 0;
00073                 virtual const Type& GetHead() const = 0;
00074                 virtual Type& GetTail() = 0;
00075                 virtual const Type& GetTail() const = 0;
00076                 virtual AkPos GetHeadPosition() const = 0;
00077                 virtual AkPos GetTailPosition() const = 0;
00078                 virtual Type& GetNext( AkPos& in_rPosition ) = 0;
00079                 virtual const Type& GetNext( AkPos& in_rPosition ) const = 0;
00080                 virtual Type& GetPrev( AkPos& in_rPosition ) = 0;
00081                 virtual const Type& GetPrev( AkPos& in_rPosition ) const = 0;
00082                 virtual Type& GetAt( AkPos in_position ) = 0;
00083                 virtual const Type& GetAt( AkPos in_position ) const = 0;
00084 
00085                 virtual void SetAt( AkPos in_pos, Arg_Type in_newElement ) = 0;
00086                 virtual AkPos InsertBefore( AkPos in_position, Arg_Type in_newElement ) = 0;
00087                 virtual AkPos InsertAfter( AkPos in_position, Arg_Type in_newElement ) = 0;
00088             };
00089 
00090             // IAkMap
00091             /// Template parameters:
00092             /// - Key: Class of the object used as the map key.
00093             /// - Arg_Key: Data type used for Key arguments.
00094             /// - Value: Class of the object stored in the map.
00095             /// - Arg_Value: Data type used for Value arguments; usually a reference to Value.
00096             ///
00097             /// \warning The functions in this interface are not thread-safe, unless stated otherwise.
00098             ///
00099             /// \aknote The class implementing this interface is a wrapper around the MFC \b CMap class.  Documentation can be found on MSDN.
00100             /// \endaknote
00101             template <class Key, class Arg_Key, class Value, class Arg_Value>
00102             class IAkMap
00103             {
00104             public:
00105                 virtual unsigned int GetCount() const = 0;
00106                 virtual unsigned int GetSize() const = 0;
00107                 virtual bool IsEmpty() const = 0;
00108 
00109                 virtual bool Lookup( Arg_Key in_key, Value& in_rValue ) const = 0;
00110 
00111                 virtual Value& operator[]( Arg_Key in_key ) = 0;
00112                 virtual void SetAt( Arg_Key in_key, Arg_Value in_newValue ) = 0;
00113 
00114                 virtual bool RemoveKey( Arg_Key in_key ) = 0;
00115                 virtual void RemoveAll() = 0;
00116 
00117                 virtual AkPos GetStartPosition() const = 0;
00118                 virtual void GetNextAssoc( AkPos& in_rNextPosition, Key& in_rKey, Value& in_rValue ) const = 0;
00119             };      
00120         };
00121     }
00122 }
00123 
00124 #endif // _AK_WWISE_SOURCECONTROLCONTAINERS_H