Fix for bug 125465. r=jag, sr=jband, a=asa. Add AString, ACString, and AUTF8String support to XPCOM's variant data type. Also, add forward declarations of AString and ACString to nsrootidl.idl.
This commit is contained in:
@@ -352,6 +352,8 @@ XPCVariant::VariantDataToJS(XPCCallContext& ccx,
|
||||
nsXPTCVariant xpctvar;
|
||||
nsID iid;
|
||||
nsAutoString astring;
|
||||
nsCAutoString cString;
|
||||
nsUTF8String utf8String;
|
||||
PRUint32 size;
|
||||
xpctvar.flags = 0;
|
||||
JSBool success;
|
||||
@@ -399,11 +401,29 @@ XPCVariant::VariantDataToJS(XPCCallContext& ccx,
|
||||
xpctvar.val.p = &iid;
|
||||
break;
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
if(NS_FAILED(variant->GetAsAString(astring)))
|
||||
return JS_FALSE;
|
||||
xpctvar.type = (uint8)(TD_ASTRING | XPT_TDP_POINTER);
|
||||
xpctvar.val.p = &astring;
|
||||
break;
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
if(NS_FAILED(variant->GetAsAString(astring)))
|
||||
return JS_FALSE;
|
||||
xpctvar.type = (uint8)(TD_DOMSTRING | XPT_TDP_POINTER);
|
||||
xpctvar.val.p = &astring;
|
||||
break;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
if(NS_FAILED(variant->GetAsACString(cString)))
|
||||
return JS_FALSE;
|
||||
xpctvar.type = (uint8)(TD_CSTRING | XPT_TDP_POINTER);
|
||||
xpctvar.val.p = &cString;
|
||||
break;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
if(NS_FAILED(variant->GetAsAUTF8String(utf8String)))
|
||||
return JS_FALSE;
|
||||
xpctvar.type = (uint8)(TD_UTF8STRING | XPT_TDP_POINTER);
|
||||
xpctvar.val.p = &utf8String;
|
||||
break;
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
if(NS_FAILED(variant->GetAsString((char**)&xpctvar.val.p)))
|
||||
return JS_FALSE;
|
||||
@@ -501,6 +521,9 @@ XPCVariant::VariantDataToJS(XPCCallContext& ccx,
|
||||
// The rest are illegal.
|
||||
case nsIDataType::VTYPE_VOID:
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
case nsIDataType::VTYPE_ARRAY:
|
||||
@@ -659,6 +682,26 @@ NS_IMETHODIMP XPCVariant::GetAsAString(nsAWritableString & _retval)
|
||||
return nsVariant::ConvertToAString(mData, _retval);
|
||||
}
|
||||
|
||||
/* DOMString getAsDOMString (); */
|
||||
NS_IMETHODIMP XPCVariant::GetAsDOMString(nsAWritableString & _retval)
|
||||
{
|
||||
// A DOMString maps to an AString internally, so we can re-use
|
||||
// ConvertToAString here.
|
||||
return nsVariant::ConvertToAString(mData, _retval);
|
||||
}
|
||||
|
||||
/* ACString getAsACString (); */
|
||||
NS_IMETHODIMP XPCVariant::GetAsACString(nsACString & _retval)
|
||||
{
|
||||
return nsVariant::ConvertToACString(mData, _retval);
|
||||
}
|
||||
|
||||
/* AUTF8String getAsAUTF8String (); */
|
||||
NS_IMETHODIMP XPCVariant::GetAsAUTF8String(nsAUTF8String & _retval)
|
||||
{
|
||||
return nsVariant::ConvertToAUTF8String(mData, _retval);
|
||||
}
|
||||
|
||||
/* string getAsString (); */
|
||||
NS_IMETHODIMP XPCVariant::GetAsString(char **_retval)
|
||||
{
|
||||
|
||||
@@ -152,6 +152,7 @@ static nsresult ConvertAndCopyVariant(nsIVariant *inVar, PRUint16 type, nsIVaria
|
||||
MEMBER_COPY(ID)
|
||||
break;
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
{
|
||||
nsAutoString str;
|
||||
rv = inVar->GetAsAString(str);
|
||||
@@ -160,6 +161,24 @@ static nsresult ConvertAndCopyVariant(nsIVariant *inVar, PRUint16 type, nsIVaria
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
break;
|
||||
}
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
{
|
||||
nsUTF8String str;
|
||||
rv = inVar->GetAsAUTF8String(str);
|
||||
if(NS_FAILED(rv)) return rv;
|
||||
rv = outVar->SetAsAUTF8String(str);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
break;
|
||||
}
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
{
|
||||
nsCAutoString str;
|
||||
rv = inVar->GetAsACString(str);
|
||||
if(NS_FAILED(rv)) return rv;
|
||||
rv = outVar->SetAsACString(str);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
break;
|
||||
}
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
{
|
||||
char* str;
|
||||
|
||||
@@ -20,7 +20,7 @@ const DataTypeArray = [
|
||||
Components.interfaces.nsIDataType.VTYPE_WCHAR ,
|
||||
Components.interfaces.nsIDataType.VTYPE_VOID ,
|
||||
Components.interfaces.nsIDataType.VTYPE_ID ,
|
||||
Components.interfaces.nsIDataType.VTYPE_ASTRING ,
|
||||
Components.interfaces.nsIDataType.VTYPE_DOMSTRING ,
|
||||
Components.interfaces.nsIDataType.VTYPE_CHAR_STR ,
|
||||
Components.interfaces.nsIDataType.VTYPE_WCHAR_STR ,
|
||||
Components.interfaces.nsIDataType.VTYPE_INTERFACE ,
|
||||
@@ -28,6 +28,9 @@ const DataTypeArray = [
|
||||
Components.interfaces.nsIDataType.VTYPE_ARRAY ,
|
||||
Components.interfaces.nsIDataType.VTYPE_STRING_SIZE_IS ,
|
||||
Components.interfaces.nsIDataType.VTYPE_WSTRING_SIZE_IS ,
|
||||
Components.interfaces.nsIDataType.VTYPE_UTF8STRING ,
|
||||
Components.interfaces.nsIDataType.VTYPE_CSTRING ,
|
||||
Components.interfaces.nsIDataType.VTYPE_ASTRING ,
|
||||
Components.interfaces.nsIDataType.VTYPE_EMPTY
|
||||
];
|
||||
|
||||
@@ -47,7 +50,7 @@ const ShortNames = [
|
||||
{name: "WC", number: Components.interfaces.nsIDataType.VTYPE_WCHAR },
|
||||
{name: "VD", number: Components.interfaces.nsIDataType.VTYPE_VOID },
|
||||
{name: "ID", number: Components.interfaces.nsIDataType.VTYPE_ID },
|
||||
{name: "AS", number: Components.interfaces.nsIDataType.VTYPE_ASTRING },
|
||||
{name: "DS", number: Components.interfaces.nsIDataType.VTYPE_DOMSTRING },
|
||||
{name: "ST", number: Components.interfaces.nsIDataType.VTYPE_CHAR_STR },
|
||||
{name: "WS", number: Components.interfaces.nsIDataType.VTYPE_WCHAR_STR },
|
||||
{name: "NS", number: Components.interfaces.nsIDataType.VTYPE_INTERFACE },
|
||||
@@ -55,6 +58,9 @@ const ShortNames = [
|
||||
{name: "AR", number: Components.interfaces.nsIDataType.VTYPE_ARRAY },
|
||||
{name: "Ss", number: Components.interfaces.nsIDataType.VTYPE_STRING_SIZE_IS },
|
||||
{name: "Ws", number: Components.interfaces.nsIDataType.VTYPE_WSTRING_SIZE_IS},
|
||||
{name: "US", number: Components.interfaces.nsIDataType.VTYPE_UTF8STRING },
|
||||
{name: "CS", number: Components.interfaces.nsIDataType.VTYPE_CSTRING },
|
||||
{name: "AS", number: Components.interfaces.nsIDataType.VTYPE_ASTRING },
|
||||
{name: "EM", number: Components.interfaces.nsIDataType.VTYPE_EMPTY }
|
||||
];
|
||||
|
||||
@@ -191,74 +197,80 @@ function TestDoubleConvert(value, comment, eq_fun, table) {
|
||||
//
|
||||
|
||||
const SingleConvertResultsTableFor_String_Foo = [
|
||||
/*I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,AS,ST,WS,NS,IF,AR,Ss,Ws,EM */
|
||||
_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e
|
||||
/*I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,DS,ST,WS,NS,IF,AR,Ss,Ws,US,CS,AS,EM */
|
||||
_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e
|
||||
];
|
||||
|
||||
const SingleConvertResultsTableFor_String_5 = [
|
||||
/*I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,AS,ST,WS,NS,IF,AR,Ss,Ws,EM */
|
||||
eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e
|
||||
/*I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,DS,ST,WS,NS,IF,AR,Ss,Ws,US,CS,AS,EM */
|
||||
eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e
|
||||
];
|
||||
|
||||
const SingleConvertResultsTableFor_Number_20 = [
|
||||
/*I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,AS,ST,WS,NS,IF,AR,Ss,Ws,EM */
|
||||
eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e
|
||||
/*I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,DS,ST,WS,NS,IF,AR,Ss,Ws,US,CS,AS,EM */
|
||||
eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e
|
||||
];
|
||||
|
||||
const DoubleConvertResultsTableFor_String_Foo = [
|
||||
/* I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,AS,ST,WS,NS,IF,AR,Ss,Ws,EM */
|
||||
/*I1*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I1*/
|
||||
/*I2*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I2*/
|
||||
/*I4*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I4*/
|
||||
/*I8*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I8*/
|
||||
/*U1*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U1*/
|
||||
/*U2*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U2*/
|
||||
/*U4*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U4*/
|
||||
/*U8*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U8*/
|
||||
/*FL*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*FL*/
|
||||
/*DB*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*DB*/
|
||||
/*BO*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*BO*/
|
||||
/*CH*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*CH*/
|
||||
/*WC*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*WC*/
|
||||
/*VD*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*VD*/
|
||||
/*ID*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*ID*/
|
||||
/*AS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*AS*/
|
||||
/*ST*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*ST*/
|
||||
/*WS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*WS*/
|
||||
/*NS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*NS*/
|
||||
/*IF*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*IF*/
|
||||
/*AR*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*AR*/
|
||||
/*Ss*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*Ss*/
|
||||
/*Ws*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*Ws*/
|
||||
/*EM*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e] /*EM*/
|
||||
/* I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,DS,ST,WS,NS,IF,AR,Ss,Ws,US,CS,AS,EM */
|
||||
/*I1*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I1*/
|
||||
/*I2*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I2*/
|
||||
/*I4*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I4*/
|
||||
/*I8*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*I8*/
|
||||
/*U1*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U1*/
|
||||
/*U2*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U2*/
|
||||
/*U4*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U4*/
|
||||
/*U8*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*U8*/
|
||||
/*FL*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*FL*/
|
||||
/*DB*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*DB*/
|
||||
/*BO*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*BO*/
|
||||
/*CH*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*CH*/
|
||||
/*WC*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*WC*/
|
||||
/*VD*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*VD*/
|
||||
/*ID*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*ID*/
|
||||
/*DS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*DS*/
|
||||
/*ST*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*ST*/
|
||||
/*WS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*WS*/
|
||||
/*NS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*NS*/
|
||||
/*IF*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*IF*/
|
||||
/*AR*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*AR*/
|
||||
/*Ss*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*Ss*/
|
||||
/*Ws*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*Ws*/
|
||||
/*US*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*US*/
|
||||
/*CS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*CS*/
|
||||
/*AS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*AS*/
|
||||
/*EM*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e] /*EM*/
|
||||
];
|
||||
|
||||
const DoubleConvertResultsTableFor_String_Five = [
|
||||
/* I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,AS,ST,WS,NS,IF,AR,Ss,Ws,EM */
|
||||
/*I1*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*I1*/
|
||||
/*I2*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*I2*/
|
||||
/*I4*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*I4*/
|
||||
/*I8*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*I8*/
|
||||
/*U1*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*U1*/
|
||||
/*U2*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*U2*/
|
||||
/*U4*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*U4*/
|
||||
/*U8*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*U8*/
|
||||
/*FL*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*FL*/
|
||||
/*DB*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*DB*/
|
||||
/*BO*/[_T,_T,_T,_T,_T,_T,_T,_T,_T,_T,_T,NE,NE,_e,_e,_T,_T,_T,_e,_e,_e,_T,_T,_e],/*BO*/
|
||||
/*CH*/[NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,_e,_e,NE,NE,NE,_e,_e,_e,NE,NE,_e],/*CH*/
|
||||
/*WC*/[NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,_e,_e,NE,NE,NE,_e,_e,_e,NE,NE,_e],/*WC*/
|
||||
/*VD*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*VD*/
|
||||
/*ID*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*ID*/
|
||||
/*AS*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*AS*/
|
||||
/*ST*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*ST*/
|
||||
/*WS*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*WS*/
|
||||
/*NS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*NS*/
|
||||
/*IF*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*IF*/
|
||||
/*AR*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*AR*/
|
||||
/*Ss*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*Ss*/
|
||||
/*Ws*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,_e],/*Ws*/
|
||||
/*EM*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e] /*EM*/
|
||||
/* I1,I2,I4,I8,U1,U2,U4,U8,FL,DB,BO,CH,WC,VD,ID,DS,ST,WS,NS,IF,AR,Ss,Ws,US,CS,AS,EM */
|
||||
/*I1*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*I1*/
|
||||
/*I2*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*I2*/
|
||||
/*I4*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*I4*/
|
||||
/*I8*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*I8*/
|
||||
/*U1*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*U1*/
|
||||
/*U2*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*U2*/
|
||||
/*U4*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*U4*/
|
||||
/*U8*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*U8*/
|
||||
/*FL*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*FL*/
|
||||
/*DB*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,_T,eq,eq,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*DB*/
|
||||
/*BO*/[_T,_T,_T,_T,_T,_T,_T,_T,_T,_T,_T,NE,NE,_e,_e,_T,_T,_T,_e,_e,_e,_T,_T,_T,_T,_T,_e],/*BO*/
|
||||
/*CH*/[NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,_e,_e,NE,NE,NE,_e,_e,_e,NE,NE,NE,NE,NE,_e],/*CH*/
|
||||
/*WC*/[NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,_e,_e,NE,NE,NE,_e,_e,_e,NE,NE,NE,NE,NE,_e],/*WC*/
|
||||
/*VD*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*VD*/
|
||||
/*ID*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*ID*/
|
||||
/*DS*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*DS*/
|
||||
/*ST*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*ST*/
|
||||
/*WS*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*WS*/
|
||||
/*NS*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*NS*/
|
||||
/*IF*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*IF*/
|
||||
/*AR*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e],/*AR*/
|
||||
/*Ss*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*Ss*/
|
||||
/*Ws*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*Ws*/
|
||||
/*US*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*US*/
|
||||
/*CS*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*CS*/
|
||||
/*AS*/[eq,eq,eq,eq,eq,eq,eq,eq,eq,eq,NE,NE,NE,_e,_e,eq,eq,eq,_e,_e,_e,eq,eq,eq,eq,eq,_e],/*AS*/
|
||||
/*EM*/[_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e,_e] /*EM*/
|
||||
];
|
||||
|
||||
var values = [
|
||||
|
||||
@@ -46,6 +46,12 @@
|
||||
#include "nscore.h"
|
||||
#include "prtime.h"
|
||||
|
||||
/*
|
||||
* Forward declarations for new string types
|
||||
*/
|
||||
class nsAString;
|
||||
class nsACString;
|
||||
|
||||
/*
|
||||
* Start commenting out the C++ versions of the below in the output header
|
||||
*/
|
||||
|
||||
@@ -50,15 +50,17 @@ interface nsIDataType : nsISupports
|
||||
const PRUint16 VTYPE_WCHAR = 12; // TD_WCHAR = 12,
|
||||
const PRUint16 VTYPE_VOID = 13; // TD_VOID = 13,
|
||||
const PRUint16 VTYPE_ID = 14; // TD_PNSIID = 14,
|
||||
const PRUint16 VTYPE_ASTRING = 15; // TD_DOMSTRING = 15,
|
||||
const PRUint16 VTYPE_DOMSTRING = 15; // TD_DOMSTRING = 15,
|
||||
const PRUint16 VTYPE_CHAR_STR = 16; // TD_PSTRING = 16,
|
||||
const PRUint16 VTYPE_WCHAR_STR = 17; // TD_PWSTRING = 17,
|
||||
const PRUint16 VTYPE_INTERFACE = 18; // TD_INTERFACE_TYPE = 18,
|
||||
const PRUint16 VTYPE_INTERFACE_IS = 19; // TD_INTERFACE_IS_TYPE = 19,
|
||||
const PRUint16 VTYPE_ARRAY = 20; // TD_ARRAY = 20,
|
||||
const PRUint16 VTYPE_STRING_SIZE_IS = 21; // TD_PSTRING_SIZE_IS = 21,
|
||||
const PRUint16 VTYPE_WSTRING_SIZE_IS = 22; // TD_PWSTRING_SIZE_IS = 22
|
||||
|
||||
const PRUint16 VTYPE_WSTRING_SIZE_IS = 22; // TD_PWSTRING_SIZE_IS = 22,
|
||||
const PRUint16 VTYPE_UTF8STRING = 23; // TD_UTF8STRING = 23,
|
||||
const PRUint16 VTYPE_CSTRING = 24; // TD_CSTRING = 24,
|
||||
const PRUint16 VTYPE_ASTRING = 25; // TD_ASTRING = 25,
|
||||
const PRUint16 VTYPE_EMPTY = 255;
|
||||
};
|
||||
|
||||
@@ -91,6 +93,9 @@ interface nsIVariant : nsISupports
|
||||
[noscript] wchar getAsWChar();
|
||||
[notxpcom] nsresult getAsID(out nsID retval);
|
||||
[noscript] AString getAsAString();
|
||||
[noscript] DOMString getAsDOMString();
|
||||
[noscript] ACString getAsACString();
|
||||
[noscript] AUTF8String getAsAUTF8String();
|
||||
[noscript] string getAsString();
|
||||
[noscript] wstring getAsWString();
|
||||
[noscript] nsISupports getAsISupports();
|
||||
@@ -138,6 +143,9 @@ interface nsIWritableVariant : nsIVariant
|
||||
void setAsWChar(in wchar aValue);
|
||||
void setAsID(in nsIDRef aValue);
|
||||
void setAsAString(in AString aValue);
|
||||
void setAsDOMString(in DOMString aValue);
|
||||
void setAsACString(in ACString aValue);
|
||||
void setAsAUTF8String(in AUTF8String aValue);
|
||||
void setAsString(in string aValue);
|
||||
void setAsWString(in wstring aValue);
|
||||
void setAsISupports(in nsISupports aValue);
|
||||
|
||||
@@ -52,6 +52,16 @@ static nsresult AString2Double(const nsAString& aString, double* retval)
|
||||
return rv;
|
||||
}
|
||||
|
||||
static nsresult AUTF8String2Double(const nsAUTF8String& aString, double* retval)
|
||||
{
|
||||
return String2Double(PromiseFlatUTF8String(aString).get(), retval);
|
||||
}
|
||||
|
||||
static nsresult ACString2Double(const nsACString& aString, double* retval)
|
||||
{
|
||||
return String2Double(PromiseFlatCString(aString).get(), retval);
|
||||
}
|
||||
|
||||
// Fills outVariant with double, PRUint32, or PRInt32.
|
||||
// Returns NS_OK, an error code, or a non-NS_OK success code
|
||||
static nsresult ToManageableNumber(const nsDiscriminatedUnion& inData,
|
||||
@@ -112,12 +122,27 @@ static nsresult ToManageableNumber(const nsDiscriminatedUnion& inData,
|
||||
return rv;
|
||||
outData->mType = nsIDataType::VTYPE_DOUBLE;
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
rv = AString2Double(*inData.u.mAStringValue, &outData->u.mDoubleValue);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
outData->mType = nsIDataType::VTYPE_DOUBLE;
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
rv = AUTF8String2Double(*inData.u.mUTF8StringValue,
|
||||
&outData->u.mDoubleValue);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
outData->mType = nsIDataType::VTYPE_DOUBLE;
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
rv = ACString2Double(*inData.u.mCStringValue,
|
||||
&outData->u.mDoubleValue);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
outData->mType = nsIDataType::VTYPE_DOUBLE;
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
tempString.Assign(inData.u.wstr.mWStringValue);
|
||||
@@ -196,6 +221,9 @@ static void FreeArray(nsDiscriminatedUnion* data)
|
||||
// The rest are illegal.
|
||||
case nsIDataType::VTYPE_VOID:
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
case nsIDataType::VTYPE_ARRAY:
|
||||
@@ -285,6 +313,9 @@ static nsresult CloneArray(PRUint16 inType, const nsIID* inIID,
|
||||
|
||||
// The rest are illegal.
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
case nsIDataType::VTYPE_VOID:
|
||||
@@ -405,6 +436,9 @@ static nsresult CloneArray(PRUint16 inType, const nsIID* inIID,
|
||||
case nsIDataType::VTYPE_ARRAY:
|
||||
case nsIDataType::VTYPE_EMPTY:
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
default:
|
||||
@@ -656,7 +690,12 @@ static PRBool String2ID(const nsDiscriminatedUnion& data, nsID* pid)
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
return pid->Parse(data.u.str.mStringValue);
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
return pid->Parse(PromiseFlatCString(*data.u.mCStringValue).get());
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
return pid->Parse(PromiseFlatUTF8String(*data.u.mUTF8StringValue).get());
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
pString = data.u.mAStringValue;
|
||||
break;
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
@@ -694,6 +733,9 @@ nsVariant::ConvertToID(const nsDiscriminatedUnion& data, nsID * _retval)
|
||||
*_retval = data.u.iface.mInterfaceID;
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
@@ -718,6 +760,9 @@ static nsresult ToString(const nsDiscriminatedUnion& data,
|
||||
{
|
||||
// all the stuff we don't handle...
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
@@ -782,7 +827,8 @@ static nsresult ToString(const nsDiscriminatedUnion& data,
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::ConvertToAString(const nsDiscriminatedUnion& data, nsAWritableString & _retval)
|
||||
nsVariant::ConvertToAString(const nsDiscriminatedUnion& data,
|
||||
nsAWritableString & _retval)
|
||||
{
|
||||
nsCAutoString tempCString;
|
||||
nsresult rv;
|
||||
@@ -790,18 +836,28 @@ nsVariant::ConvertToAString(const nsDiscriminatedUnion& data, nsAWritableString
|
||||
switch(data.mType)
|
||||
{
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
_retval.Assign(*data.u.mAStringValue);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
CopyASCIItoUCS2(*data.u.mCStringValue, _retval);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
// XXX This is an extra copy that should be avoided
|
||||
// once Jag lands support for UTF8String and associated
|
||||
// conversion methods.
|
||||
_retval.Assign(NS_ConvertUTF8toUCS2(*data.u.mUTF8StringValue));
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
tempCString.Assign(data.u.str.mStringValue);
|
||||
CopyASCIItoUCS2(tempCString, _retval);
|
||||
CopyASCIItoUCS2(nsDependentCString(data.u.str.mStringValue), _retval);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
_retval.Assign(data.u.wstr.mWStringValue);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
tempCString.Assign(data.u.str.mStringValue, data.u.str.mStringLength);
|
||||
CopyASCIItoUCS2(tempCString, _retval);
|
||||
CopyASCIItoUCS2(nsDependentCString(data.u.str.mStringValue,
|
||||
data.u.str.mStringLength),
|
||||
_retval);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
_retval.Assign(data.u.wstr.mWStringValue, data.u.wstr.mWStringLength);
|
||||
@@ -818,12 +874,131 @@ nsVariant::ConvertToAString(const nsDiscriminatedUnion& data, nsAWritableString
|
||||
}
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::ConvertToACString(const nsDiscriminatedUnion& data,
|
||||
nsACString & _retval)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
switch(data.mType)
|
||||
{
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
CopyUCS2toASCII(*data.u.mAStringValue, _retval);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
_retval.Assign(*data.u.mCStringValue);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
// XXX This is an extra copy that should be avoided
|
||||
// once Jag lands support for UTF8String and associated
|
||||
// conversion methods.
|
||||
CopyUCS2toASCII(NS_ConvertUTF8toUCS2(*data.u.mUTF8StringValue),
|
||||
_retval);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
_retval.Assign(*data.u.str.mStringValue);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
CopyUCS2toASCII(nsDependentString(data.u.wstr.mWStringValue),
|
||||
_retval);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
_retval.Assign(data.u.str.mStringValue, data.u.str.mStringLength);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
CopyUCS2toASCII(nsDependentString(data.u.wstr.mWStringValue,
|
||||
data.u.wstr.mWStringLength), _retval);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WCHAR:
|
||||
{
|
||||
const PRUnichar* str = &data.u.mWCharValue;
|
||||
CopyUCS2toASCII(Substring(str, str), _retval);
|
||||
return NS_OK;
|
||||
}
|
||||
default:
|
||||
rv = ToString(data, _retval);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::ConvertToAUTF8String(const nsDiscriminatedUnion& data,
|
||||
nsAUTF8String & _retval)
|
||||
{
|
||||
nsCAutoString tempCString;
|
||||
nsresult rv;
|
||||
|
||||
switch(data.mType)
|
||||
{
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
// XXX Extra copy. Jag will fix when he lands UTF8String
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(*data.u.mAStringValue));
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
// XXX Extra copy and conversion.
|
||||
// Jag will fix when he lands UTF8String
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(
|
||||
NS_ConvertASCIItoUCS2(*data.u.mCStringValue)));
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
_retval.Assign(*data.u.mUTF8StringValue);
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
// XXX Extra copy and conversion.
|
||||
// Jag will fix when he lands UTF8String
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(
|
||||
NS_ConvertASCIItoUCS2(
|
||||
nsDependentCString(data.u.str.mStringValue))));
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
// XXX Extra copy. Jag will fix when he lands UTF8String
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(
|
||||
nsDependentString(data.u.wstr.mWStringValue)));
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
// XXX Extra copy and conversion.
|
||||
// Jag will fix when he lands UTF8String
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(
|
||||
NS_ConvertASCIItoUCS2(
|
||||
nsDependentCString(data.u.str.mStringValue,
|
||||
data.u.str.mStringLength))));
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
// XXX Extra copy. Jag will fix when he lands UTF8String
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(
|
||||
nsDependentString(data.u.wstr.mWStringValue,
|
||||
data.u.wstr.mWStringLength)));
|
||||
return NS_OK;
|
||||
case nsIDataType::VTYPE_WCHAR:
|
||||
{
|
||||
// XXX Extra copies. Jag will fix when he lands UTF8String
|
||||
nsAutoString tempString(data.u.mWCharValue);
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(tempString));
|
||||
return NS_OK;
|
||||
}
|
||||
default:
|
||||
rv = ToString(data, tempCString);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
// XXX Extra copy and conversion.
|
||||
// Jag will fix when he lands UTF8String
|
||||
_retval.Assign(NS_ConvertUCS2toUTF8(
|
||||
NS_ConvertASCIItoUCS2(tempCString)));
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::ConvertToString(const nsDiscriminatedUnion& data, char **_retval)
|
||||
{
|
||||
PRUint32 ignored;
|
||||
return nsVariant::ConvertToStringWithSize(data, &ignored, _retval);
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::ConvertToWString(const nsDiscriminatedUnion& data, PRUnichar **_retval)
|
||||
{
|
||||
@@ -841,29 +1016,57 @@ nsVariant::ConvertToStringWithSize(const nsDiscriminatedUnion& data, PRUint32 *s
|
||||
switch(data.mType)
|
||||
{
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
*size = data.u.mAStringValue->Length();
|
||||
*str = ToNewCString(*data.u.mAStringValue);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
*size = data.u.mCStringValue->Length();
|
||||
*str = ToNewCString(*data.u.mCStringValue);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
{
|
||||
// XXX This is doing 1 extra copy. Need to fix this
|
||||
// when Jag lands UTF8String
|
||||
// we want:
|
||||
// *size = *data.mUTF8StringValue->Length();
|
||||
// *str = ToNewCString(*data.mUTF8StringValue);
|
||||
// But this will have to do for now.
|
||||
NS_ConvertUTF8toUCS2 tempString(*data.u.mUTF8StringValue);
|
||||
*size = tempString.Length();
|
||||
*str = ToNewCString(tempString);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
tempCString.Assign(data.u.str.mStringValue);
|
||||
*size = tempCString.Length();
|
||||
*str = ToNewCString(tempCString);
|
||||
{
|
||||
nsDependentCString cString(data.u.str.mStringValue);
|
||||
*size = cString.Length();
|
||||
*str = ToNewCString(cString);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
tempString.Assign(data.u.wstr.mWStringValue);
|
||||
*size = tempString.Length();
|
||||
*str = ToNewCString(tempString);
|
||||
{
|
||||
nsDependentString string(data.u.wstr.mWStringValue);
|
||||
*size = string.Length();
|
||||
*str = ToNewCString(string);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
tempCString.Assign(data.u.str.mStringValue, data.u.str.mStringLength);
|
||||
*size = tempCString.Length();
|
||||
*str = ToNewCString(tempCString);
|
||||
{
|
||||
nsDependentCString cString(data.u.str.mStringValue,
|
||||
data.u.str.mStringLength);
|
||||
*size = cString.Length();
|
||||
*str = ToNewCString(cString);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
tempString.Assign(data.u.wstr.mWStringValue, data.u.wstr.mWStringLength);
|
||||
*size = tempString.Length();
|
||||
*str = ToNewCString(tempString);
|
||||
{
|
||||
nsDependentString string(data.u.wstr.mWStringValue,
|
||||
data.u.wstr.mWStringLength);
|
||||
*size = string.Length();
|
||||
*str = ToNewCString(string);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_WCHAR:
|
||||
tempString.Assign(data.u.mWCharValue);
|
||||
*size = tempString.Length();
|
||||
@@ -888,29 +1091,57 @@ nsVariant::ConvertToWStringWithSize(const nsDiscriminatedUnion& data, PRUint32 *
|
||||
switch(data.mType)
|
||||
{
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
*size = data.u.mAStringValue->Length();
|
||||
*str = ToNewUnicode(*data.u.mAStringValue);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
*size = data.u.mCStringValue->Length();
|
||||
*str = ToNewUnicode(*data.u.mCStringValue);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
{
|
||||
// XXX This is an extra copy that should be avoided
|
||||
// once Jag lands his new UTF8String code.
|
||||
// We want this:
|
||||
// *size = data.u.mUTF8StringValue->Length();
|
||||
// *str = ToNewUnicode(*data.u.mUTF8StringValue);
|
||||
// But this will have to do for now.
|
||||
NS_ConvertUTF8toUCS2 ucString(*data.u.mUTF8StringValue);
|
||||
*size = ucString.Length();
|
||||
*str = ToNewUnicode(ucString);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
tempCString.Assign(data.u.str.mStringValue);
|
||||
*size = tempCString.Length();
|
||||
*str = ToNewUnicode(tempCString);
|
||||
{
|
||||
nsDependentCString cString(data.u.str.mStringValue);
|
||||
*size = cString.Length();
|
||||
*str = ToNewUnicode(cString);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
tempString.Assign(data.u.wstr.mWStringValue);
|
||||
*size = tempString.Length();
|
||||
*str = ToNewUnicode(tempString);
|
||||
{
|
||||
nsDependentString string(data.u.wstr.mWStringValue);
|
||||
*size = string.Length();
|
||||
*str = ToNewUnicode(string);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
tempCString.Assign(data.u.str.mStringValue, data.u.str.mStringLength);
|
||||
*size = tempCString.Length();
|
||||
*str = ToNewUnicode(tempCString);
|
||||
{
|
||||
nsDependentCString cString(data.u.str.mStringValue,
|
||||
data.u.str.mStringLength);
|
||||
*size = cString.Length();
|
||||
*str = ToNewUnicode(cString);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
tempString.Assign(data.u.wstr.mWStringValue, data.u.wstr.mWStringLength);
|
||||
*size = tempString.Length();
|
||||
*str = ToNewUnicode(tempString);
|
||||
{
|
||||
nsDependentString string(data.u.wstr.mWStringValue,
|
||||
data.u.wstr.mWStringLength);
|
||||
*size = string.Length();
|
||||
*str = ToNewUnicode(string);
|
||||
return *str ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
case nsIDataType::VTYPE_WCHAR:
|
||||
tempString.Assign(data.u.mWCharValue);
|
||||
*size = tempString.Length();
|
||||
@@ -1058,6 +1289,7 @@ nsVariant::SetFromVariant(nsDiscriminatedUnion* data, nsIVariant* aValue)
|
||||
CASE__SET_FROM_VARIANT_TYPE(VTYPE_ID, mIDValue, ID)
|
||||
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
case nsIDataType::VTYPE_WCHAR_STR:
|
||||
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||
CASE__SET_FROM_VARIANT_VTYPE_PROLOGUE(VTYPE_ASTRING);
|
||||
@@ -1069,6 +1301,26 @@ nsVariant::SetFromVariant(nsDiscriminatedUnion* data, nsIVariant* aValue)
|
||||
delete data->u.mAStringValue;
|
||||
CASE__SET_FROM_VARIANT_VTYPE_EPILOGUE(VTYPE_ASTRING)
|
||||
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
CASE__SET_FROM_VARIANT_VTYPE_PROLOGUE(VTYPE_CSTRING);
|
||||
data->u.mCStringValue = new nsCString();
|
||||
if(!data->u.mCStringValue)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
rv = aValue->GetAsACString(*data->u.mCStringValue);
|
||||
if(NS_FAILED(rv))
|
||||
delete data->u.mCStringValue;
|
||||
CASE__SET_FROM_VARIANT_VTYPE_EPILOGUE(VTYPE_CSTRING)
|
||||
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
CASE__SET_FROM_VARIANT_VTYPE_PROLOGUE(VTYPE_UTF8STRING);
|
||||
data->u.mUTF8StringValue = new nsUTF8String();
|
||||
if(!data->u.mUTF8StringValue)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
rv = aValue->GetAsAUTF8String(*data->u.mUTF8StringValue);
|
||||
if(NS_FAILED(rv))
|
||||
delete data->u.mUTF8StringValue;
|
||||
CASE__SET_FROM_VARIANT_VTYPE_EPILOGUE(VTYPE_UTF8STRING)
|
||||
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
CASE__SET_FROM_VARIANT_VTYPE_PROLOGUE(VTYPE_STRING_SIZE_IS);
|
||||
@@ -1189,6 +1441,25 @@ nsVariant::SetFromAString(nsDiscriminatedUnion* data, const nsAReadableString &
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
DATA_SETTER_EPILOGUE(data, VTYPE_ASTRING);
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::SetFromACString(nsDiscriminatedUnion* data, const nsACString & aValue)
|
||||
{
|
||||
DATA_SETTER_PROLOGUE(data);
|
||||
if(!(data->u.mCStringValue = new nsCString(aValue)))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
DATA_SETTER_EPILOGUE(data, VTYPE_CSTRING);
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::SetFromAUTF8String(nsDiscriminatedUnion* data, const nsAUTF8String & aValue)
|
||||
{
|
||||
DATA_SETTER_PROLOGUE(data);
|
||||
if(!(data->u.mUTF8StringValue = new nsUTF8String(aValue)))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
DATA_SETTER_EPILOGUE(data, VTYPE_UTF8STRING);
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
nsVariant::SetFromString(nsDiscriminatedUnion* data, const char *aValue)
|
||||
{
|
||||
@@ -1305,8 +1576,15 @@ nsVariant::Cleanup(nsDiscriminatedUnion* data)
|
||||
case nsIDataType::VTYPE_ID:
|
||||
break;
|
||||
case nsIDataType::VTYPE_ASTRING:
|
||||
case nsIDataType::VTYPE_DOMSTRING:
|
||||
delete data->u.mAStringValue;
|
||||
break;
|
||||
case nsIDataType::VTYPE_CSTRING:
|
||||
delete data->u.mCStringValue;
|
||||
break;
|
||||
case nsIDataType::VTYPE_UTF8STRING:
|
||||
delete data->u.mUTF8StringValue;
|
||||
break;
|
||||
case nsIDataType::VTYPE_CHAR_STR:
|
||||
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||
nsMemory::Free((char*)data->u.str.mStringValue);
|
||||
@@ -1367,14 +1645,17 @@ nsVariant::nsVariant()
|
||||
{nsIDataType::VTYPE_WCHAR , TD_WCHAR },
|
||||
{nsIDataType::VTYPE_VOID , TD_VOID },
|
||||
{nsIDataType::VTYPE_ID , TD_PNSIID },
|
||||
{nsIDataType::VTYPE_ASTRING , TD_DOMSTRING },
|
||||
{nsIDataType::VTYPE_DOMSTRING , TD_DOMSTRING },
|
||||
{nsIDataType::VTYPE_CHAR_STR , TD_PSTRING },
|
||||
{nsIDataType::VTYPE_WCHAR_STR , TD_PWSTRING },
|
||||
{nsIDataType::VTYPE_INTERFACE , TD_INTERFACE_TYPE },
|
||||
{nsIDataType::VTYPE_INTERFACE_IS , TD_INTERFACE_IS_TYPE},
|
||||
{nsIDataType::VTYPE_ARRAY , TD_ARRAY },
|
||||
{nsIDataType::VTYPE_STRING_SIZE_IS , TD_PSTRING_SIZE_IS },
|
||||
{nsIDataType::VTYPE_WSTRING_SIZE_IS , TD_PWSTRING_SIZE_IS }
|
||||
{nsIDataType::VTYPE_WSTRING_SIZE_IS , TD_PWSTRING_SIZE_IS },
|
||||
{nsIDataType::VTYPE_UTF8STRING , TD_UTF8STRING },
|
||||
{nsIDataType::VTYPE_CSTRING , TD_CSTRING },
|
||||
{nsIDataType::VTYPE_ASTRING , TD_ASTRING }
|
||||
};
|
||||
static const int length = sizeof(array)/sizeof(array[0]);
|
||||
static PRBool inited = PR_FALSE;
|
||||
@@ -1493,6 +1774,26 @@ NS_IMETHODIMP nsVariant::GetAsAString(nsAWritableString & _retval)
|
||||
return nsVariant::ConvertToAString(mData, _retval);
|
||||
}
|
||||
|
||||
/* DOMString getAsDOMString (); */
|
||||
NS_IMETHODIMP nsVariant::GetAsDOMString(nsAWritableString & _retval)
|
||||
{
|
||||
// A DOMString maps to an AString internally, so we can re-use
|
||||
// ConvertToAString here.
|
||||
return nsVariant::ConvertToAString(mData, _retval);
|
||||
}
|
||||
|
||||
/* ACString getAsACString (); */
|
||||
NS_IMETHODIMP nsVariant::GetAsACString(nsACString & _retval)
|
||||
{
|
||||
return nsVariant::ConvertToACString(mData, _retval);
|
||||
}
|
||||
|
||||
/* AUTF8String getAsAUTF8String (); */
|
||||
NS_IMETHODIMP nsVariant::GetAsAUTF8String(nsAUTF8String & _retval)
|
||||
{
|
||||
return nsVariant::ConvertToAUTF8String(mData, _retval);
|
||||
}
|
||||
|
||||
/* string getAsString (); */
|
||||
NS_IMETHODIMP nsVariant::GetAsString(char **_retval)
|
||||
{
|
||||
@@ -1661,6 +1962,30 @@ NS_IMETHODIMP nsVariant::SetAsAString(const nsAReadableString & aValue)
|
||||
return nsVariant::SetFromAString(&mData, aValue);
|
||||
}
|
||||
|
||||
/* void setAsDOMString (in DOMString aValue); */
|
||||
NS_IMETHODIMP nsVariant::SetAsDOMString(const nsAString & aValue)
|
||||
{
|
||||
if(!mWritable) return NS_ERROR_OBJECT_IS_IMMUTABLE;
|
||||
|
||||
// A DOMString maps to an AString internally, so we can re-use
|
||||
// SetFromAString here.
|
||||
return nsVariant::SetFromAString(&mData, aValue);
|
||||
}
|
||||
|
||||
/* void setAsACString (in ACString aValue); */
|
||||
NS_IMETHODIMP nsVariant::SetAsACString(const nsACString & aValue)
|
||||
{
|
||||
if(!mWritable) return NS_ERROR_OBJECT_IS_IMMUTABLE;
|
||||
return nsVariant::SetFromACString(&mData, aValue);
|
||||
}
|
||||
|
||||
/* void setAsAUTF8String (in AUTF8String aValue); */
|
||||
NS_IMETHODIMP nsVariant::SetAsAUTF8String(const nsAUTF8String & aValue)
|
||||
{
|
||||
if(!mWritable) return NS_ERROR_OBJECT_IS_IMMUTABLE;
|
||||
return nsVariant::SetFromAUTF8String(&mData, aValue);
|
||||
}
|
||||
|
||||
/* void setAsString (in string aValue); */
|
||||
NS_IMETHODIMP nsVariant::SetAsString(const char *aValue)
|
||||
{
|
||||
|
||||
@@ -26,6 +26,15 @@
|
||||
#include "nsIVariant.h"
|
||||
#include "xpt_struct.h"
|
||||
|
||||
/**
|
||||
* Map the nsAUTF8String, nsUTF8String classes to the nsACString and
|
||||
* nsCString classes respectively for now. These defines need to be removed
|
||||
* once Jag lands his nsUTF8String implementation.
|
||||
*/
|
||||
#define nsAUTF8String nsACString
|
||||
#define nsUTF8String nsCString
|
||||
#define PromiseFlatUTF8String PromiseFlatCString
|
||||
|
||||
/**
|
||||
* nsDiscriminatedUnion is a type that nsIVariant implementors *may* use
|
||||
* to hold underlying data. It has no methods. So, its use requires no linkage
|
||||
@@ -50,6 +59,8 @@ struct NS_COM nsDiscriminatedUnion
|
||||
PRUnichar mWCharValue;
|
||||
nsIID mIDValue;
|
||||
nsAString* mAStringValue;
|
||||
nsAUTF8String* mUTF8StringValue;
|
||||
nsACString* mCStringValue;
|
||||
struct {
|
||||
nsISupports* mInterfaceValue;
|
||||
nsIID mInterfaceID;
|
||||
@@ -111,6 +122,8 @@ public:
|
||||
static nsresult ConvertToWChar(const nsDiscriminatedUnion& data, PRUnichar *_retval);
|
||||
static nsresult ConvertToID(const nsDiscriminatedUnion& data, nsID * _retval);
|
||||
static nsresult ConvertToAString(const nsDiscriminatedUnion& data, nsAWritableString & _retval);
|
||||
static nsresult ConvertToAUTF8String(const nsDiscriminatedUnion& data, nsAUTF8String & _retval);
|
||||
static nsresult ConvertToACString(const nsDiscriminatedUnion& data, nsACString & _retval);
|
||||
static nsresult ConvertToString(const nsDiscriminatedUnion& data, char **_retval);
|
||||
static nsresult ConvertToWString(const nsDiscriminatedUnion& data, PRUnichar **_retval);
|
||||
static nsresult ConvertToISupports(const nsDiscriminatedUnion& data, nsISupports **_retval);
|
||||
@@ -136,6 +149,8 @@ public:
|
||||
static nsresult SetFromWChar(nsDiscriminatedUnion* data, PRUnichar aValue);
|
||||
static nsresult SetFromID(nsDiscriminatedUnion* data, const nsID & aValue);
|
||||
static nsresult SetFromAString(nsDiscriminatedUnion* data, const nsAReadableString & aValue);
|
||||
static nsresult SetFromAUTF8String(nsDiscriminatedUnion* data, const nsAUTF8String & aValue);
|
||||
static nsresult SetFromACString(nsDiscriminatedUnion* data, const nsACString & aValue);
|
||||
static nsresult SetFromString(nsDiscriminatedUnion* data, const char *aValue);
|
||||
static nsresult SetFromWString(nsDiscriminatedUnion* data, const PRUnichar *aValue);
|
||||
static nsresult SetFromISupports(nsDiscriminatedUnion* data, nsISupports *aValue);
|
||||
|
||||
Reference in New Issue
Block a user