AAX SDK  2.4.1
Avid Audio Extensions Development Kit
AAX_CStringDisplayDelegate.h
Go to the documentation of this file.
1 /*================================================================================================*/
2 /*
3  *
4  * Copyright 2014-2017, 2019 by Avid Technology, Inc.
5  * All rights reserved.
6  *
7  * CONFIDENTIAL: This document contains confidential information. Do not
8  * read or examine this document unless you are an Avid Technology employee
9  * or have signed a non-disclosure agreement with Avid Technology which protects
10  * the confidentiality of this document. DO NOT DISCLOSE ANY INFORMATION
11  * CONTAINED IN THIS DOCUMENT TO ANY THIRD-PARTY WITHOUT THE PRIOR WRITTEN CONSENT
12  * OF Avid Technology, INC.
13  *
14  */
15 
22 /*================================================================================================*/
23 
24 
25 #ifndef AAX_CSTRINGDISPLAYDELEGATE_H
26 #define AAX_CSTRINGDISPLAYDELEGATE_H
27 
28 #include "AAX_IDisplayDelegate.h"
29 #include <sstream>
30 #include <map>
31 
32 
45 template <typename T>
47 {
48 public:
60  AAX_CStringDisplayDelegate(const std::map<T,AAX_CString>& stringMap);
61 
62  //Virtual Overrides
64  bool ValueToString(T value, AAX_CString* valueString) const AAX_OVERRIDE;
65  bool ValueToString(T value, int32_t maxNumChars, AAX_CString* valueString) const AAX_OVERRIDE;
66  bool StringToValue(const AAX_CString& valueString, T* value) const AAX_OVERRIDE;
67 
68 protected:
69  std::map<T, AAX_CString> mStringMap;
70  std::map<AAX_CString, T> mInverseStringMap;
71 };
72 
73 
74 
75 template <typename T>
76 AAX_CStringDisplayDelegate<T>::AAX_CStringDisplayDelegate(const std::map<T,AAX_CString>& stringMap) :
78  mStringMap(stringMap),
79  mInverseStringMap()
80 {
81  //Construct an inverse string map from our already copied internal copy of the string map.
82  //This inverse map is used for stringToValue conversion.
83  typename std::map<T,AAX_CString>::iterator valueStringIterator = mStringMap.begin();
84  while ( valueStringIterator != mStringMap.end() )
85  {
86  mInverseStringMap.insert(std::pair<AAX_CString, T>(valueStringIterator->second, valueStringIterator->first));
87  valueStringIterator++;
88  }
89 }
90 
91 template <typename T>
93 {
94  return new AAX_CStringDisplayDelegate(*this);
95 }
96 
97 template <typename T>
99 {
100  typename std::map<T,AAX_CString>::const_iterator mapPairIterator = mStringMap.find(value);
101  if( mapPairIterator != mStringMap.end() )
102  {
103  *valueString = mapPairIterator->second;
104  return true;
105  }
106  *valueString = AAX_CString("String Not Found");
107  return false;
108 }
109 
110 template <typename T>
111 bool AAX_CStringDisplayDelegate<T>::ValueToString(T value, int32_t /*maxNumChars*/, AAX_CString* valueString) const
112 {
113  // First, get the full length string.
114  bool result = this->ValueToString(value, valueString);
115 
116  //<DMT> TODO: Shorten the string based on the number of characters...
117 
118  return result;
119 }
120 
121 template <typename T>
122 bool AAX_CStringDisplayDelegate<T>::StringToValue(const AAX_CString& valueString, T* value) const
123 {
124  typename std::map<AAX_CString, T>::const_iterator mapPairIterator = mInverseStringMap.find(valueString);
125  if( mapPairIterator != mInverseStringMap.end() )
126  {
127  *value = mapPairIterator->second;
128  return true;
129  }
130  *value = 0;
131  return false;
132 }
133 
134 
135 
136 
137 #endif //AAX_CSTRINGDISPLAYDELEGATE_H
#define AAX_OVERRIDE
override keyword macro
Definition: AAX.h:141
Defines the display behavior for a parameter.
A generic AAX string class with similar functionality to std::string
Definition: AAX_CString.h:46
A string, or list, display format conforming to AAX_IDisplayDelegate.
Definition: AAX_CStringDisplayDelegate.h:47
AAX_CStringDisplayDelegate< T > * Clone() const AAX_OVERRIDE
Constructs and returns a copy of the display delegate.
Definition: AAX_CStringDisplayDelegate.h:92
std::map< AAX_CString, T > mInverseStringMap
Definition: AAX_CStringDisplayDelegate.h:70
bool StringToValue(const AAX_CString &valueString, T *value) const AAX_OVERRIDE
Converts a string to a real parameter value.
Definition: AAX_CStringDisplayDelegate.h:122
AAX_CStringDisplayDelegate(const std::map< T, AAX_CString > &stringMap)
Constructor.
Definition: AAX_CStringDisplayDelegate.h:76
bool ValueToString(T value, AAX_CString *valueString) const AAX_OVERRIDE
Converts a real parameter value to a string representation.
Definition: AAX_CStringDisplayDelegate.h:98
std::map< T, AAX_CString > mStringMap
Definition: AAX_CStringDisplayDelegate.h:69
Classes for parameter value string conversion.
Definition: AAX_IDisplayDelegate.h:69