kodi
ActionArgumentDescription.h
1 /*****************************************************************
2 |
3 | Platinum - Managed ActionArgumentDescription
4 |
5 | Copyright (c) 2004-2010, Plutinosoft, LLC.
6 | All rights reserved.
7 | http://www.plutinosoft.com
8 |
9 | This program is free software; you can redistribute it and/or
10 | modify it under the terms of the GNU General Public License
11 | as published by the Free Software Foundation; either version 2
12 | of the License, or (at your option) any later version.
13 |
14 | OEMs, ISVs, VARs and other distributors that combine and
15 | distribute commercially licensed software with Platinum software
16 | and do not wish to distribute the source code for the commercially
17 | licensed software under version 2, or (at your option) any later
18 | version, of the GNU General Public License (the "GPL") must enter
19 | into a commercial license agreement with Plutinosoft, LLC.
20 |
21 | This program is distributed in the hope that it will be useful,
22 | but WITHOUT ANY WARRANTY; without even the implied warranty of
23 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 | GNU General Public License for more details.
25 |
26 | You should have received a copy of the GNU General Public License
27 | along with this program; see the file LICENSE.txt. If not, write to
28 | the Free Software Foundation, Inc.,
29 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30 | http://www.gnu.org/licenses/gpl-2.0.html
31 |
32 ****************************************************************/
33 #pragma once
34 
35 namespace Platinum
36 {
37 
38 /*----------------------------------------------------------------------
39 | ActionArgumentDirection
40 +---------------------------------------------------------------------*/
41 public enum class ActionArgumentDirection
42 {
43  In,
44  Out,
45  InOut
46 };
47 
48 ref class StateVariable;
49 
50 /*----------------------------------------------------------------------
51 | ActionArgumentDescription
52 +---------------------------------------------------------------------*/
53 public ref class ActionArgumentDescription
54 {
55 private:
56 
57  PLT_ArgumentDesc* m_pHandle;
58 
59 public:
60 
61  property String^ Name
62  {
63  String^ get()
64  {
65  return gcnew String(m_pHandle->GetName());
66  }
67  }
68 
69  property ActionArgumentDirection Direction
70  {
71  ActionArgumentDirection get()
72  {
73  return ParseArgumentDirection(m_pHandle->GetDirection());
74  }
75  }
76 
77  property Boolean HasReturnValue
78  {
79  Boolean get()
80  {
81  return Boolean(m_pHandle->HasReturnValue());
82  }
83  }
84 
85  property StateVariable^ RelatedStateVariable
86  {
87  StateVariable^ get();
88  }
89 
90 private:
91 
92  static ActionArgumentDirection ParseArgumentDirection(const NPT_String& dir)
93  {
94  NPT_String s (dir);
95 
96  s.MakeLowercase();
97 
98  if (s == "in")
99  return ActionArgumentDirection::In;
100 
101  if (s == "out")
102  return ActionArgumentDirection::Out;
103 
104  if (s == "inout")
105  return ActionArgumentDirection::InOut;
106 
107  if (s == "io")
108  return ActionArgumentDirection::InOut;
109 
110  throw gcnew ArgumentException("unknown direction");
111  }
112 
113 public:
114 
115  virtual Boolean Equals(Object^ obj) override
116  {
117  if (obj == nullptr)
118  return false;
119 
120  if (!this->GetType()->IsInstanceOfType(obj))
121  return false;
122 
123  return (m_pHandle == ((ActionArgumentDescription^)obj)->m_pHandle);
124  }
125 
126 internal:
127 
129  {
130  m_pHandle = &devData;
131  }
132 
133 public:
134 
136  {
137  // clean-up managed
138 
139  // clean-up unmanaged
140  this->!ActionArgumentDescription();
141  }
142 
144  {
145  // clean-up unmanaged
146  }
147 
148 };
149 
150 }
151 
152 // marshal wrapper
153 PLATINUM_MANAGED_MARSHAL_AS(Platinum::ActionArgumentDescription, PLT_ArgumentDesc);
The PLT_ArgumentDesc class provides information about a given argument of a UPnP Service given action...
Definition: PltArgument.h:64
Definition: StateVariable.h:43
Definition: ActionArgumentDescription.h:53
Definition: NptStrings.h:57