1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "nsSupportsPrimitives.h"
10 /***************************************************************************/
12 NS_IMPL_ISUPPORTS2(nsSupportsIDImpl
, nsISupportsID
, nsISupportsPrimitive
)
14 nsSupportsIDImpl::nsSupportsIDImpl()
19 NS_IMETHODIMP
nsSupportsIDImpl::GetType(uint16_t *aType
)
21 NS_ASSERTION(aType
, "Bad pointer");
27 NS_IMETHODIMP
nsSupportsIDImpl::GetData(nsID
**aData
)
29 NS_ASSERTION(aData
, "Bad pointer");
32 *aData
= (nsID
*) nsMemory::Clone(mData
, sizeof(nsID
));
33 return *aData
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
39 NS_IMETHODIMP
nsSupportsIDImpl::SetData(const nsID
*aData
)
42 nsMemory::Free(mData
);
44 mData
= (nsID
*) nsMemory::Clone(aData
, sizeof(nsID
));
50 NS_IMETHODIMP
nsSupportsIDImpl::ToString(char **_retval
)
53 NS_ASSERTION(_retval
, "Bad pointer");
56 result
= mData
->ToString();
60 static const char nullStr
[] = "null";
61 result
= (char*) nsMemory::Clone(nullStr
, sizeof(nullStr
));
65 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
68 /*****************************************************************************
69 * nsSupportsCStringImpl
70 *****************************************************************************/
72 NS_IMPL_ISUPPORTS2(nsSupportsCStringImpl
, nsISupportsCString
,
75 NS_IMETHODIMP
nsSupportsCStringImpl::GetType(uint16_t *aType
)
77 NS_ASSERTION(aType
, "Bad pointer");
79 *aType
= TYPE_CSTRING
;
83 NS_IMETHODIMP
nsSupportsCStringImpl::GetData(nsACString
& aData
)
89 NS_IMETHODIMP
nsSupportsCStringImpl::ToString(char **_retval
)
91 *_retval
= ToNewCString(mData
);
94 return NS_ERROR_OUT_OF_MEMORY
;
99 NS_IMETHODIMP
nsSupportsCStringImpl::SetData(const nsACString
& aData
)
105 /*****************************************************************************
106 * nsSupportsStringImpl
107 *****************************************************************************/
109 NS_IMPL_ISUPPORTS2(nsSupportsStringImpl
, nsISupportsString
,
110 nsISupportsPrimitive
)
112 NS_IMETHODIMP
nsSupportsStringImpl::GetType(uint16_t *aType
)
114 NS_ASSERTION(aType
, "Bad pointer");
116 *aType
= TYPE_STRING
;
120 NS_IMETHODIMP
nsSupportsStringImpl::GetData(nsAString
& aData
)
126 NS_IMETHODIMP
nsSupportsStringImpl::ToString(PRUnichar
**_retval
)
128 *_retval
= ToNewUnicode(mData
);
131 return NS_ERROR_OUT_OF_MEMORY
;
136 NS_IMETHODIMP
nsSupportsStringImpl::SetData(const nsAString
& aData
)
142 /***************************************************************************/
144 NS_IMPL_ISUPPORTS2(nsSupportsPRBoolImpl
, nsISupportsPRBool
,
145 nsISupportsPrimitive
)
147 nsSupportsPRBoolImpl::nsSupportsPRBoolImpl()
152 NS_IMETHODIMP
nsSupportsPRBoolImpl::GetType(uint16_t *aType
)
154 NS_ASSERTION(aType
, "Bad pointer");
155 *aType
= TYPE_PRBOOL
;
160 NS_IMETHODIMP
nsSupportsPRBoolImpl::GetData(bool *aData
)
162 NS_ASSERTION(aData
, "Bad pointer");
167 NS_IMETHODIMP
nsSupportsPRBoolImpl::SetData(bool aData
)
173 NS_IMETHODIMP
nsSupportsPRBoolImpl::ToString(char **_retval
)
175 NS_ASSERTION(_retval
, "Bad pointer");
176 const char * str
= mData
? "true" : "false";
177 char* result
= (char*) nsMemory::Clone(str
,
178 (strlen(str
)+1)*sizeof(char));
180 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
183 /***************************************************************************/
185 NS_IMPL_ISUPPORTS2(nsSupportsPRUint8Impl
, nsISupportsPRUint8
,
186 nsISupportsPrimitive
)
188 nsSupportsPRUint8Impl::nsSupportsPRUint8Impl()
193 NS_IMETHODIMP
nsSupportsPRUint8Impl::GetType(uint16_t *aType
)
195 NS_ASSERTION(aType
, "Bad pointer");
196 *aType
= TYPE_PRUINT8
;
201 NS_IMETHODIMP
nsSupportsPRUint8Impl::GetData(uint8_t *aData
)
203 NS_ASSERTION(aData
, "Bad pointer");
208 NS_IMETHODIMP
nsSupportsPRUint8Impl::SetData(uint8_t aData
)
214 NS_IMETHODIMP
nsSupportsPRUint8Impl::ToString(char **_retval
)
216 NS_ASSERTION(_retval
, "Bad pointer");
217 static const int size
= 8;
220 PR_snprintf(buf
, size
, "%u", (uint16_t) mData
);
222 char* result
= (char*) nsMemory::Clone(buf
,
223 (strlen(buf
)+1)*sizeof(char));
225 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
228 /***************************************************************************/
230 NS_IMPL_ISUPPORTS2(nsSupportsPRUint16Impl
, nsISupportsPRUint16
,
231 nsISupportsPrimitive
)
233 nsSupportsPRUint16Impl::nsSupportsPRUint16Impl()
238 NS_IMETHODIMP
nsSupportsPRUint16Impl::GetType(uint16_t *aType
)
240 NS_ASSERTION(aType
, "Bad pointer");
241 *aType
= TYPE_PRUINT16
;
246 NS_IMETHODIMP
nsSupportsPRUint16Impl::GetData(uint16_t *aData
)
248 NS_ASSERTION(aData
, "Bad pointer");
253 NS_IMETHODIMP
nsSupportsPRUint16Impl::SetData(uint16_t aData
)
259 NS_IMETHODIMP
nsSupportsPRUint16Impl::ToString(char **_retval
)
261 NS_ASSERTION(_retval
, "Bad pointer");
262 static const int size
= 8;
265 PR_snprintf(buf
, size
, "%u", (int) mData
);
267 char* result
= (char*) nsMemory::Clone(buf
,
268 (strlen(buf
)+1)*sizeof(char));
270 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
273 /***************************************************************************/
275 NS_IMPL_ISUPPORTS2(nsSupportsPRUint32Impl
, nsISupportsPRUint32
,
276 nsISupportsPrimitive
)
278 nsSupportsPRUint32Impl::nsSupportsPRUint32Impl()
283 NS_IMETHODIMP
nsSupportsPRUint32Impl::GetType(uint16_t *aType
)
285 NS_ASSERTION(aType
, "Bad pointer");
286 *aType
= TYPE_PRUINT32
;
291 NS_IMETHODIMP
nsSupportsPRUint32Impl::GetData(uint32_t *aData
)
293 NS_ASSERTION(aData
, "Bad pointer");
298 NS_IMETHODIMP
nsSupportsPRUint32Impl::SetData(uint32_t aData
)
304 NS_IMETHODIMP
nsSupportsPRUint32Impl::ToString(char **_retval
)
306 NS_ASSERTION(_retval
, "Bad pointer");
307 static const int size
= 16;
310 PR_snprintf(buf
, size
, "%lu", mData
);
312 char* result
= (char*) nsMemory::Clone(buf
,
313 (strlen(buf
)+1)*sizeof(char));
315 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
318 /***************************************************************************/
320 NS_IMPL_ISUPPORTS2(nsSupportsPRUint64Impl
, nsISupportsPRUint64
,
321 nsISupportsPrimitive
)
323 nsSupportsPRUint64Impl::nsSupportsPRUint64Impl()
328 NS_IMETHODIMP
nsSupportsPRUint64Impl::GetType(uint16_t *aType
)
330 NS_ASSERTION(aType
, "Bad pointer");
331 *aType
= TYPE_PRUINT64
;
336 NS_IMETHODIMP
nsSupportsPRUint64Impl::GetData(uint64_t *aData
)
338 NS_ASSERTION(aData
, "Bad pointer");
343 NS_IMETHODIMP
nsSupportsPRUint64Impl::SetData(uint64_t aData
)
349 NS_IMETHODIMP
nsSupportsPRUint64Impl::ToString(char **_retval
)
351 NS_ASSERTION(_retval
, "Bad pointer");
352 static const int size
= 32;
355 PR_snprintf(buf
, size
, "%llu", mData
);
357 char* result
= (char*) nsMemory::Clone(buf
,
358 (strlen(buf
)+1)*sizeof(char));
360 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
363 /***************************************************************************/
365 NS_IMPL_ISUPPORTS2(nsSupportsPRTimeImpl
, nsISupportsPRTime
,
366 nsISupportsPrimitive
)
368 nsSupportsPRTimeImpl::nsSupportsPRTimeImpl()
373 NS_IMETHODIMP
nsSupportsPRTimeImpl::GetType(uint16_t *aType
)
375 NS_ASSERTION(aType
, "Bad pointer");
376 *aType
= TYPE_PRTIME
;
381 NS_IMETHODIMP
nsSupportsPRTimeImpl::GetData(PRTime
*aData
)
383 NS_ASSERTION(aData
, "Bad pointer");
388 NS_IMETHODIMP
nsSupportsPRTimeImpl::SetData(PRTime aData
)
394 NS_IMETHODIMP
nsSupportsPRTimeImpl::ToString(char **_retval
)
396 NS_ASSERTION(_retval
, "Bad pointer");
397 static const int size
= 32;
400 PR_snprintf(buf
, size
, "%llu", mData
);
402 char* result
= (char*) nsMemory::Clone(buf
,
403 (strlen(buf
)+1)*sizeof(char));
405 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
408 /***************************************************************************/
410 NS_IMPL_ISUPPORTS2(nsSupportsCharImpl
, nsISupportsChar
,
411 nsISupportsPrimitive
)
413 nsSupportsCharImpl::nsSupportsCharImpl()
418 NS_IMETHODIMP
nsSupportsCharImpl::GetType(uint16_t *aType
)
420 NS_ASSERTION(aType
, "Bad pointer");
426 NS_IMETHODIMP
nsSupportsCharImpl::GetData(char *aData
)
428 NS_ASSERTION(aData
, "Bad pointer");
433 NS_IMETHODIMP
nsSupportsCharImpl::SetData(char aData
)
439 NS_IMETHODIMP
nsSupportsCharImpl::ToString(char **_retval
)
442 NS_ASSERTION(_retval
, "Bad pointer");
444 if(nullptr != (result
= (char*) nsMemory::Alloc(2*sizeof(char))))
450 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
453 /***************************************************************************/
455 NS_IMPL_ISUPPORTS2(nsSupportsPRInt16Impl
, nsISupportsPRInt16
,
456 nsISupportsPrimitive
)
458 nsSupportsPRInt16Impl::nsSupportsPRInt16Impl()
463 NS_IMETHODIMP
nsSupportsPRInt16Impl::GetType(uint16_t *aType
)
465 NS_ASSERTION(aType
, "Bad pointer");
466 *aType
= TYPE_PRINT16
;
471 NS_IMETHODIMP
nsSupportsPRInt16Impl::GetData(int16_t *aData
)
473 NS_ASSERTION(aData
, "Bad pointer");
478 NS_IMETHODIMP
nsSupportsPRInt16Impl::SetData(int16_t aData
)
484 NS_IMETHODIMP
nsSupportsPRInt16Impl::ToString(char **_retval
)
486 NS_ASSERTION(_retval
, "Bad pointer");
487 static const int size
= 8;
490 PR_snprintf(buf
, size
, "%d", mData
);
492 char* result
= (char*) nsMemory::Clone(buf
,
493 (strlen(buf
)+1)*sizeof(char));
495 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
498 /***************************************************************************/
500 NS_IMPL_ISUPPORTS2(nsSupportsPRInt32Impl
, nsISupportsPRInt32
,
501 nsISupportsPrimitive
)
503 nsSupportsPRInt32Impl::nsSupportsPRInt32Impl()
508 NS_IMETHODIMP
nsSupportsPRInt32Impl::GetType(uint16_t *aType
)
510 NS_ASSERTION(aType
, "Bad pointer");
511 *aType
= TYPE_PRINT32
;
516 NS_IMETHODIMP
nsSupportsPRInt32Impl::GetData(int32_t *aData
)
518 NS_ASSERTION(aData
, "Bad pointer");
523 NS_IMETHODIMP
nsSupportsPRInt32Impl::SetData(int32_t aData
)
529 NS_IMETHODIMP
nsSupportsPRInt32Impl::ToString(char **_retval
)
531 NS_ASSERTION(_retval
, "Bad pointer");
532 static const int size
= 16;
535 PR_snprintf(buf
, size
, "%ld", mData
);
537 char* result
= (char*) nsMemory::Clone(buf
,
538 (strlen(buf
)+1)*sizeof(char));
540 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
543 /***************************************************************************/
545 NS_IMPL_ISUPPORTS2(nsSupportsPRInt64Impl
, nsISupportsPRInt64
,
546 nsISupportsPrimitive
)
548 nsSupportsPRInt64Impl::nsSupportsPRInt64Impl()
553 NS_IMETHODIMP
nsSupportsPRInt64Impl::GetType(uint16_t *aType
)
555 NS_ASSERTION(aType
, "Bad pointer");
556 *aType
= TYPE_PRINT64
;
561 NS_IMETHODIMP
nsSupportsPRInt64Impl::GetData(int64_t *aData
)
563 NS_ASSERTION(aData
, "Bad pointer");
568 NS_IMETHODIMP
nsSupportsPRInt64Impl::SetData(int64_t aData
)
574 NS_IMETHODIMP
nsSupportsPRInt64Impl::ToString(char **_retval
)
576 NS_ASSERTION(_retval
, "Bad pointer");
577 static const int size
= 32;
580 PR_snprintf(buf
, size
, "%lld", mData
);
582 char* result
= (char*) nsMemory::Clone(buf
,
583 (strlen(buf
)+1)*sizeof(char));
585 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
588 /***************************************************************************/
590 NS_IMPL_ISUPPORTS2(nsSupportsFloatImpl
, nsISupportsFloat
,
591 nsISupportsPrimitive
)
593 nsSupportsFloatImpl::nsSupportsFloatImpl()
598 NS_IMETHODIMP
nsSupportsFloatImpl::GetType(uint16_t *aType
)
600 NS_ASSERTION(aType
, "Bad pointer");
606 NS_IMETHODIMP
nsSupportsFloatImpl::GetData(float *aData
)
608 NS_ASSERTION(aData
, "Bad pointer");
613 NS_IMETHODIMP
nsSupportsFloatImpl::SetData(float aData
)
619 NS_IMETHODIMP
nsSupportsFloatImpl::ToString(char **_retval
)
621 NS_ASSERTION(_retval
, "Bad pointer");
622 static const int size
= 32;
625 PR_snprintf(buf
, size
, "%f", (double) mData
);
627 char* result
= (char*) nsMemory::Clone(buf
,
628 (strlen(buf
)+1)*sizeof(char));
630 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
633 /***************************************************************************/
635 NS_IMPL_ISUPPORTS2(nsSupportsDoubleImpl
, nsISupportsDouble
,
636 nsISupportsPrimitive
)
638 nsSupportsDoubleImpl::nsSupportsDoubleImpl()
643 NS_IMETHODIMP
nsSupportsDoubleImpl::GetType(uint16_t *aType
)
645 NS_ASSERTION(aType
, "Bad pointer");
646 *aType
= TYPE_DOUBLE
;
651 NS_IMETHODIMP
nsSupportsDoubleImpl::GetData(double *aData
)
653 NS_ASSERTION(aData
, "Bad pointer");
658 NS_IMETHODIMP
nsSupportsDoubleImpl::SetData(double aData
)
664 NS_IMETHODIMP
nsSupportsDoubleImpl::ToString(char **_retval
)
666 NS_ASSERTION(_retval
, "Bad pointer");
667 static const int size
= 32;
670 PR_snprintf(buf
, size
, "%f", mData
);
672 char* result
= (char*) nsMemory::Clone(buf
,
673 (strlen(buf
)+1)*sizeof(char));
675 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
678 /***************************************************************************/
681 NS_IMPL_ISUPPORTS2(nsSupportsVoidImpl
, nsISupportsVoid
,
682 nsISupportsPrimitive
)
684 nsSupportsVoidImpl::nsSupportsVoidImpl()
689 NS_IMETHODIMP
nsSupportsVoidImpl::GetType(uint16_t *aType
)
691 NS_ASSERTION(aType
, "Bad pointer");
697 NS_IMETHODIMP
nsSupportsVoidImpl::GetData(void * *aData
)
699 NS_ASSERTION(aData
, "Bad pointer");
704 NS_IMETHODIMP
nsSupportsVoidImpl::SetData(void * aData
)
710 NS_IMETHODIMP
nsSupportsVoidImpl::ToString(char **_retval
)
712 NS_ASSERTION(_retval
, "Bad pointer");
714 static const char str
[] = "[raw data]";
715 char* result
= (char*) nsMemory::Clone(str
, sizeof(str
));
717 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
720 /***************************************************************************/
723 NS_IMPL_ISUPPORTS2(nsSupportsInterfacePointerImpl
,
724 nsISupportsInterfacePointer
,
725 nsISupportsPrimitive
)
727 nsSupportsInterfacePointerImpl::nsSupportsInterfacePointerImpl()
732 nsSupportsInterfacePointerImpl::~nsSupportsInterfacePointerImpl()
735 nsMemory::Free(mIID
);
739 NS_IMETHODIMP
nsSupportsInterfacePointerImpl::GetType(uint16_t *aType
)
741 NS_ASSERTION(aType
, "Bad pointer");
742 *aType
= TYPE_INTERFACE_POINTER
;
747 NS_IMETHODIMP
nsSupportsInterfacePointerImpl::GetData(nsISupports
**aData
)
749 NS_ASSERTION(aData
,"Bad pointer");
752 NS_IF_ADDREF(*aData
);
757 NS_IMETHODIMP
nsSupportsInterfacePointerImpl::SetData(nsISupports
* aData
)
764 NS_IMETHODIMP
nsSupportsInterfacePointerImpl::GetDataIID(nsID
**aIID
)
766 NS_ASSERTION(aIID
,"Bad pointer");
770 *aIID
= (nsID
*) nsMemory::Clone(mIID
, sizeof(nsID
));
771 return *aIID
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
777 NS_IMETHODIMP
nsSupportsInterfacePointerImpl::SetDataIID(const nsID
*aIID
)
780 nsMemory::Free(mIID
);
782 mIID
= (nsID
*) nsMemory::Clone(aIID
, sizeof(nsID
));
789 NS_IMETHODIMP
nsSupportsInterfacePointerImpl::ToString(char **_retval
)
791 NS_ASSERTION(_retval
, "Bad pointer");
793 static const char str
[] = "[interface pointer]";
795 // jband sez: think about asking nsIInterfaceInfoManager whether
796 // the interface has a known human-readable name
797 char* result
= (char*) nsMemory::Clone(str
, sizeof(str
));
799 return result
? NS_OK
: NS_ERROR_OUT_OF_MEMORY
;
802 /***************************************************************************/
804 NS_IMPL_ISUPPORTS2(nsSupportsDependentCString
,nsISupportsCString
,nsISupportsPrimitive
)
806 nsSupportsDependentCString::nsSupportsDependentCString(const char* aStr
)
811 nsSupportsDependentCString::GetType(uint16_t *aType
)
813 if (NS_WARN_IF(!aType
))
814 return NS_ERROR_INVALID_ARG
;
816 *aType
= TYPE_CSTRING
;
821 nsSupportsDependentCString::GetData(nsACString
& aData
)
828 nsSupportsDependentCString::ToString(char **_retval
)
830 if (NS_WARN_IF(!_retval
))
831 return NS_ERROR_INVALID_ARG
;
833 *_retval
= ToNewCString(mData
);
835 return NS_ERROR_OUT_OF_MEMORY
;
841 nsSupportsDependentCString::SetData(const nsACString
& aData
)
843 return NS_ERROR_NOT_IMPLEMENTED
;