kodi
Action.h
1 /*****************************************************************
2 |
3 | Platinum - Managed Action
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 ref class ActionArgumentDescription;
39 ref class ActionDescription;
40 ref class Service;
41 
42 /*----------------------------------------------------------------------
43 | Action
44 +---------------------------------------------------------------------*/
45 public ref class Action
46 {
47 public:
48 
49  delegate void ActionResponseDelegate(NeptuneException^ error);
50 
51 private:
52 
53  PLT_ActionReference* m_pHandle;
54 
55 internal:
56 
57  property PLT_ActionReference& Handle
58  {
59  PLT_ActionReference& get()
60  {
61  return *m_pHandle;
62  }
63  }
64 
65 public:
66 
67  property String^ Name
68  {
69  String^ get()
70  {
71  return gcnew String((*m_pHandle)->GetActionDesc().GetName());
72  }
73  }
74 
75  property IEnumerable<ActionArgumentDescription^>^ Arguments
76  {
77  IEnumerable<ActionArgumentDescription^>^ get();
78  }
79 
80  property Service^ ParentService
81  {
82  Service^ get();
83  }
84 
85  property ActionDescription^ Description
86  {
87  ActionDescription^ get();
88  }
89 
90 public:
91 
92  event ActionResponseDelegate^ ActionResponse;
93 
94 public:
95 
96  ActionArgumentDescription^ GetArgument(String^ name);
97  Int32 SetArgumentValue(String^ name, String^ value);
98 
99 internal:
100 
101  void HandleActionResponse(NeptuneException^ error, Action^ action);
102 
103 public:
104 
105  virtual Boolean Equals(Object^ obj) override
106  {
107  if (obj == nullptr)
108  return false;
109 
110  if (!this->GetType()->IsInstanceOfType(obj))
111  return false;
112 
113  Action^ a = (Action^)obj;
114 
115  return (m_pHandle->AsPointer() == a->m_pHandle->AsPointer());
116 
117  /*if (m_pHandle->AsPointer() == a->m_pHandle->AsPointer())
118  return true;
119 
120  return ((*m_pHandle)->GetActionDesc() == (*a->m_pHandle)->GetActionDesc());*/
121  }
122 
123 internal:
124 
125  Action(PLT_ActionReference& action)
126  {
127  if (action.IsNull())
128  throw gcnew ArgumentNullException("action");
129 
130  m_pHandle = new PLT_ActionReference(action);
131  }
132 
133 public:
134 
135  ~Action()
136  {
137  // clean-up managed
138 
139  // clean-up unmanaged
140  this->!Action();
141  }
142 
143  !Action()
144  {
145  // clean-up unmanaged
146  if (m_pHandle != 0)
147  {
148  delete m_pHandle;
149 
150  m_pHandle = 0;
151  }
152  }
153 
154 };
155 
156 }
157 
158 // marshal wrapper
159 PLATINUM_MANAGED_MARSHAL_AS(Platinum::Action, PLT_ActionReference);
Definition: Service.h:45
Definition: ActionDescription.h:44
Definition: Action.h:45
Definition: NeptuneException.h:42
Definition: ActionArgumentDescription.h:53
bool IsNull() const
Returns whether this references a NULL object.
Definition: NptReferences.h:130