sbVariantUtilsLib.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set sw=2 :miv */
3 /*
4  *=BEGIN SONGBIRD GPL
5  *
6  * This file is part of the Songbird web player.
7  *
8  * Copyright(c) 2005-2010 POTI, Inc.
9  * http://www.songbirdnest.com
10  *
11  * This file may be licensed under the terms of of the
12  * GNU General Public License Version 2 (the ``GPL'').
13  *
14  * Software distributed under the License is distributed
15  * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
16  * express or implied. See the GPL for the specific language
17  * governing rights and limitations.
18  *
19  * You should have received a copy of the GPL along with this
20  * program. If not, go to http://www.gnu.org/licenses/gpl.html
21  * or write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23  *
24  *=END SONGBIRD GPL
25  */
26 
27 #ifndef __SB_VARIANT_UTILS_LIB_H__
28 #define __SB_VARIANT_UTILS_LIB_H__
29 
30 //------------------------------------------------------------------------------
31 //------------------------------------------------------------------------------
32 //
33 // Variant utility defs.
34 //
35 //------------------------------------------------------------------------------
36 //------------------------------------------------------------------------------
37 
43 //------------------------------------------------------------------------------
44 //
45 // Variant utility imported services.
46 //
47 //------------------------------------------------------------------------------
48 
49 // Mozilla imports.
50 #include <nsCOMPtr.h>
51 #include <nsIVariant.h>
52 
53 
54 //------------------------------------------------------------------------------
55 //
56 // Variant utility inline functions.
57 //
58 //------------------------------------------------------------------------------
59 
69 inline nsQueryInterface
70 do_VariantQueryInterface(nsIVariant* aVariant)
71 {
72  nsresult rv;
73 
74  nsCOMPtr<nsISupports> variantSupports;
75  rv = aVariant->GetAsISupports(getter_AddRefs(variantSupports));
76  if (NS_FAILED(rv))
77  return nsQueryInterface(nsnull);
78 
79  return nsQueryInterface(variantSupports);
80 }
81 
82 
94 inline nsQueryInterfaceWithError
95 do_VariantQueryInterface(nsIVariant* aVariant, nsresult* aError)
96 {
97  nsresult rv;
98 
99  nsCOMPtr<nsISupports> variantSupports;
100  rv = aVariant->GetAsISupports(getter_AddRefs(variantSupports));
101  if (NS_FAILED(rv)) {
102  *aError = rv;
103  return nsQueryInterfaceWithError(nsnull, nsnull);
104  }
105 
106  return nsQueryInterfaceWithError(variantSupports, aError);
107 }
108 
109 
110 //------------------------------------------------------------------------------
111 //
112 // Variant utility prototypes.
113 //
114 //------------------------------------------------------------------------------
115 
128 nsresult sbVariantsEqual(nsIVariant* aVariant1,
129  nsIVariant* aVariant2,
130  PRBool* aEqual);
131 
132 #endif /* __SB_VARIANT_UTILS_LIB_H__ */
133 
nsQueryInterface do_VariantQueryInterface(nsIVariant *aVariant)
nsresult sbVariantsEqual(nsIVariant *aVariant1, nsIVariant *aVariant2, PRBool *aEqual)