Bug 482159 - Add support for nsCString in mozStorageVariant

r=asuth
r=bent
This commit is contained in:
Shawn Wilsher 2009-03-20 16:28:16 -04:00
parent 20fa4cf2a5
commit 3a001ab38a
2 changed files with 35 additions and 1 deletions

View File

@ -79,7 +79,7 @@ mozStorageRow::initialize(sqlite3_stmt *aStatement)
break;
case SQLITE_TEXT:
{
nsAutoString str(
nsDependentString str(
static_cast<const PRUnichar *>(sqlite3_column_text16(aStatement, i))
);
variant = new mozStorageText(str);

View File

@ -51,6 +51,7 @@
* PRInt64 -> INTEGER (use mozStorageInteger)
* double -> FLOAT (use mozStorageFloat)
* nsString -> TEXT (use mozStorageText)
* nsCString -> TEXT (use mozStorageUTF8Text)
* PRUint8[] -> BLOB (use mozStorageBlob)
* nsnull -> NULL (use mozStorageNull)
*/
@ -249,6 +250,38 @@ struct variant_text_traits<nsString>
}
};
template < >
struct variant_traits<nsCString>
{
static inline PRUint16 type() { return nsIDataType::VTYPE_UTF8STRING; }
};
template < >
struct variant_storage_traits<nsCString>
{
typedef const nsACString & ConstructorType;
typedef nsCString StorageType;
static inline StorageType storage_conversion(ConstructorType aText)
{
return StorageType(aText);
}
};
template < >
struct variant_text_traits<nsCString>
{
static inline nsresult asUTF8String(const nsCString &aValue,
nsACString &_result)
{
_result = aValue;
return NS_OK;
}
static inline nsresult asString(const nsCString &aValue,
nsAString &_result)
{
CopyUTF8toUTF16(aValue, _result);
return NS_OK;
}
};
/**
* BLOB types
*/
@ -348,6 +381,7 @@ private:
typedef mozStorageVariant<PRInt64> mozStorageInteger;
typedef mozStorageVariant<double> mozStorageFloat;
typedef mozStorageVariant<nsString> mozStorageText;
typedef mozStorageVariant<nsCString> mozStorageUTF8Text;
typedef mozStorageVariant<PRUint8[]> mozStorageBlob;
typedef mozStorageVariant_base mozStorageNull;