gecko-dev/xpcom/ds/nsSupportsPrimitives.h

280 строки
5.8 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsSupportsPrimitives_h__
#define nsSupportsPrimitives_h__
#include "mozilla/Attributes.h"
#include "nsISupportsPrimitives.h"
#include "nsCOMPtr.h"
#include "nsString.h"
/***************************************************************************/
class nsSupportsCString final : public nsISupportsCString {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSCSTRING
nsSupportsCString() = default;
private:
~nsSupportsCString() = default;
nsCString mData;
};
/***************************************************************************/
class nsSupportsString final : public nsISupportsString {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSSTRING
nsSupportsString() = default;
private:
~nsSupportsString() = default;
nsString mData;
};
/***************************************************************************/
class nsSupportsPRBool final : public nsISupportsPRBool {
public:
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRBOOL
nsSupportsPRBool();
private:
~nsSupportsPRBool() = default;
bool mData;
};
/***************************************************************************/
class nsSupportsPRUint8 final : public nsISupportsPRUint8 {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRUINT8
nsSupportsPRUint8();
private:
~nsSupportsPRUint8() = default;
uint8_t mData;
};
/***************************************************************************/
class nsSupportsPRUint16 final : public nsISupportsPRUint16 {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRUINT16
nsSupportsPRUint16();
private:
~nsSupportsPRUint16() = default;
uint16_t mData;
};
/***************************************************************************/
class nsSupportsPRUint32 final : public nsISupportsPRUint32 {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRUINT32
nsSupportsPRUint32();
private:
~nsSupportsPRUint32() = default;
uint32_t mData;
};
/***************************************************************************/
class nsSupportsPRUint64 final : public nsISupportsPRUint64 {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRUINT64
nsSupportsPRUint64();
private:
~nsSupportsPRUint64() = default;
uint64_t mData;
};
/***************************************************************************/
class nsSupportsPRTime final : public nsISupportsPRTime {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRTIME
nsSupportsPRTime();
private:
~nsSupportsPRTime() = default;
PRTime mData;
};
/***************************************************************************/
class nsSupportsChar final : public nsISupportsChar {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSCHAR
nsSupportsChar();
private:
~nsSupportsChar() = default;
char mData;
};
/***************************************************************************/
class nsSupportsPRInt16 final : public nsISupportsPRInt16 {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRINT16
nsSupportsPRInt16();
private:
~nsSupportsPRInt16() = default;
int16_t mData;
};
/***************************************************************************/
class nsSupportsPRInt32 final : public nsISupportsPRInt32 {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRINT32
nsSupportsPRInt32();
private:
~nsSupportsPRInt32() = default;
int32_t mData;
};
/***************************************************************************/
class nsSupportsPRInt64 final : public nsISupportsPRInt64 {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSPRINT64
nsSupportsPRInt64();
private:
~nsSupportsPRInt64() = default;
int64_t mData;
};
/***************************************************************************/
class nsSupportsFloat final : public nsISupportsFloat {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSFLOAT
nsSupportsFloat();
private:
~nsSupportsFloat() = default;
float mData;
};
/***************************************************************************/
class nsSupportsDouble final : public nsISupportsDouble {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSDOUBLE
nsSupportsDouble();
private:
~nsSupportsDouble() = default;
double mData;
};
/***************************************************************************/
class nsSupportsInterfacePointer final : public nsISupportsInterfacePointer {
public:
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSINTERFACEPOINTER
nsSupportsInterfacePointer();
private:
~nsSupportsInterfacePointer();
nsCOMPtr<nsISupports> mData;
nsID* mIID;
};
/***************************************************************************/
/**
* Wraps a static const char* buffer for use with nsISupportsCString
*
* Only use this class with static buffers, or arena-allocated buffers of
* permanent lifetime!
*/
class nsSupportsDependentCString final : public nsISupportsCString {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISUPPORTSPRIMITIVE
NS_DECL_NSISUPPORTSCSTRING
explicit nsSupportsDependentCString(const char* aStr);
private:
~nsSupportsDependentCString() = default;
nsDependentCString mData;
};
#endif /* nsSupportsPrimitives_h__ */