diff --git a/mozilla/xpcom/build/nsStringAPI.cpp b/mozilla/xpcom/build/nsStringAPI.cpp index 3d0ea53eb8e..c36f9d69375 100644 --- a/mozilla/xpcom/build/nsStringAPI.cpp +++ b/mozilla/xpcom/build/nsStringAPI.cpp @@ -44,7 +44,7 @@ /* ------------------------------------------------------------------------- */ -NS_STRINGAPI(PRBool) +NS_STRINGAPI(nsresult) NS_StringContainerInit(nsStringContainer &aContainer) { NS_ASSERTION(sizeof(nsStringContainer) >= sizeof(nsString), @@ -53,7 +53,7 @@ NS_StringContainerInit(nsStringContainer &aContainer) // use placement new to avoid heap allocating nsString object new (&aContainer) nsString(); - return PR_TRUE; + return NS_OK; } NS_STRINGAPI(void) @@ -78,13 +78,14 @@ NS_StringGetData(const nsAString &aStr, const PRUnichar **aData, return begin.size_forward(); } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringSetData(nsAString &aStr, const PRUnichar *aData, PRUint32 aDataLength) { aStr.Assign(aData, aDataLength); + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringSetDataRange(nsAString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength, const PRUnichar *aData, PRUint32 aDataLength) @@ -94,7 +95,7 @@ NS_StringSetDataRange(nsAString &aStr, // append case if (aData) aStr.Append(aData, aDataLength); - return; + return NS_OK; // XXX report errors } if (aCutLength == PR_UINT32_MAX) @@ -109,17 +110,20 @@ NS_StringSetDataRange(nsAString &aStr, } else aStr.Cut(aCutOffset, aCutLength); + + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringCopy(nsAString &aDest, const nsAString &aSrc) { aDest.Assign(aSrc); + return NS_OK; // XXX report errors } /* ------------------------------------------------------------------------- */ -NS_STRINGAPI(PRBool) +NS_STRINGAPI(nsresult) NS_CStringContainerInit(nsCStringContainer &aContainer) { NS_ASSERTION(sizeof(nsCStringContainer) >= sizeof(nsCString), @@ -128,7 +132,7 @@ NS_CStringContainerInit(nsCStringContainer &aContainer) // use placement new to avoid heap allocating nsCString object new (&aContainer) nsCString(); - return PR_TRUE; + return NS_OK; } NS_STRINGAPI(void) @@ -153,13 +157,14 @@ NS_CStringGetData(const nsACString &aStr, const char **aData, return begin.size_forward(); } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringSetData(nsACString &aStr, const char *aData, PRUint32 aDataLength) { aStr.Assign(aData, aDataLength); + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringSetDataRange(nsACString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength, const char *aData, PRUint32 aDataLength) @@ -169,7 +174,7 @@ NS_CStringSetDataRange(nsACString &aStr, // append case if (aData) aStr.Append(aData, aDataLength); - return; + return NS_OK; // XXX report errors } if (aCutLength == PR_UINT32_MAX) @@ -184,58 +189,61 @@ NS_CStringSetDataRange(nsACString &aStr, } else aStr.Cut(aCutOffset, aCutLength); + + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringCopy(nsACString &aDest, const nsACString &aSrc) { aDest.Assign(aSrc); + return NS_OK; // XXX report errors } /* ------------------------------------------------------------------------- */ NS_STRINGAPI(nsresult) -NS_CStringToUTF16(const nsACString &aSrc, PRUint32 aSrcEncoding, nsAString &aDest) +NS_CStringToUTF16(const nsACString &aSrc, + nsCStringEncoding aSrcEncoding, + nsAString &aDest) { - // XXX handle errors - switch (aSrcEncoding) { - case NS_ENCODING_ASCII: + case NS_CSTRING_ENCODING_ASCII: CopyASCIItoUTF16(aSrc, aDest); break; - case NS_ENCODING_UTF8: + case NS_CSTRING_ENCODING_UTF8: CopyUTF8toUTF16(aSrc, aDest); break; - case NS_ENCODING_NATIVE_FILESYSTEM: + case NS_CSTRING_ENCODING_NATIVE_FILESYSTEM: NS_CopyNativeToUnicode(aSrc, aDest); break; default: return NS_ERROR_NOT_IMPLEMENTED; } - return NS_OK; + return NS_OK; // XXX report errors } NS_STRINGAPI(nsresult) -NS_UTF16ToCString(const nsAString &aSrc, PRUint32 aDestEncoding, nsACString &aDest) +NS_UTF16ToCString(const nsAString &aSrc, + nsCStringEncoding aDestEncoding, + nsACString &aDest) { - // XXX handle errors - switch (aDestEncoding) { - case NS_ENCODING_ASCII: + case NS_CSTRING_ENCODING_ASCII: LossyCopyUTF16toASCII(aSrc, aDest); break; - case NS_ENCODING_UTF8: + case NS_CSTRING_ENCODING_UTF8: CopyUTF16toUTF8(aSrc, aDest); break; - case NS_ENCODING_NATIVE_FILESYSTEM: + case NS_CSTRING_ENCODING_NATIVE_FILESYSTEM: NS_CopyUnicodeToNative(aSrc, aDest); break; default: return NS_ERROR_NOT_IMPLEMENTED; } - return NS_OK; + return NS_OK; // XXX report errors } diff --git a/mozilla/xpcom/build/nsXPCOMPrivate.h b/mozilla/xpcom/build/nsXPCOMPrivate.h index ea6bb653cd9..b737fbb7636 100644 --- a/mozilla/xpcom/build/nsXPCOMPrivate.h +++ b/mozilla/xpcom/build/nsXPCOMPrivate.h @@ -88,19 +88,19 @@ typedef nsresult (* NewNativeLocalFileFunc)(const nsACString &path, PRBool follo typedef nsresult (* GetDebugFunc)(nsIDebug* *result); typedef nsresult (* GetTraceRefcntFunc)(nsITraceRefcnt* *result); -typedef PRBool (* StringContainerInitFunc)(nsStringContainer&); +typedef nsresult (* StringContainerInitFunc)(nsStringContainer&); typedef void (* StringContainerFinishFunc)(nsStringContainer&); typedef PRUint32 (* StringGetDataFunc)(const nsAString&, const PRUnichar**, PRBool*); -typedef void (* StringSetDataFunc)(nsAString&, const PRUnichar*, PRUint32); -typedef void (* StringSetDataRangeFunc)(nsAString&, PRUint32, PRUint32, const PRUnichar*, PRUint32); -typedef void (* StringCopyFunc)(nsAString &, const nsAString &); +typedef nsresult (* StringSetDataFunc)(nsAString&, const PRUnichar*, PRUint32); +typedef nsresult (* StringSetDataRangeFunc)(nsAString&, PRUint32, PRUint32, const PRUnichar*, PRUint32); +typedef nsresult (* StringCopyFunc)(nsAString &, const nsAString &); -typedef PRBool (* CStringContainerInitFunc)(nsCStringContainer&); +typedef nsresult (* CStringContainerInitFunc)(nsCStringContainer&); typedef void (* CStringContainerFinishFunc)(nsCStringContainer&); typedef PRUint32 (* CStringGetDataFunc)(const nsACString&, const char**, PRBool*); -typedef void (* CStringSetDataFunc)(nsACString&, const char*, PRUint32); -typedef void (* CStringSetDataRangeFunc)(nsACString&, PRUint32, PRUint32, const char*, PRUint32); -typedef void (* CStringCopyFunc)(nsACString &, const nsACString &); +typedef nsresult (* CStringSetDataFunc)(nsACString&, const char*, PRUint32); +typedef nsresult (* CStringSetDataRangeFunc)(nsACString&, PRUint32, PRUint32, const char*, PRUint32); +typedef nsresult (* CStringCopyFunc)(nsACString &, const nsACString &); typedef nsresult (* CStringToUTF16)(const nsACString &, PRUint32, const nsAString &); typedef nsresult (* UTF16ToCString)(const nsAString &, PRUint32, const nsACString &); diff --git a/mozilla/xpcom/glue/standalone/nsXPCOMGlue.cpp b/mozilla/xpcom/glue/standalone/nsXPCOMGlue.cpp index 7aae76a5465..ea1743a08b9 100644 --- a/mozilla/xpcom/glue/standalone/nsXPCOMGlue.cpp +++ b/mozilla/xpcom/glue/standalone/nsXPCOMGlue.cpp @@ -58,7 +58,6 @@ void GlueShutdownDebug(); static PRLibrary *xpcomLib; static XPCOMFunctions xpcomFunctions; -static PRBool xpcomGlueInit; extern "C" nsresult XPCOMGlueStartup(const char* xpcomFile) @@ -120,8 +119,6 @@ nsresult XPCOMGlueStartup(const char* xpcomFile) if (NS_FAILED(rv)) goto bail; - xpcomGlueInit = PR_TRUE; - rv = GlueStartupDebug(); if (NS_FAILED(rv)) goto bail; @@ -139,7 +136,7 @@ nsresult XPCOMGlueStartup(const char* xpcomFile) bail: PR_UnloadLibrary(xpcomLib); xpcomLib = nsnull; - xpcomGlueInit = PR_FALSE; + memset(&xpcomFunctions, 0, sizeof(xpcomFunctions)); return NS_ERROR_FAILURE; #endif } @@ -160,7 +157,7 @@ nsresult XPCOMGlueShutdown() xpcomLib = nsnull; } - xpcomGlueInit = PR_FALSE; + memset(&xpcomFunctions, 0, sizeof(xpcomFunctions)); return NS_OK; #endif } @@ -171,7 +168,7 @@ NS_InitXPCOM2(nsIServiceManager* *result, nsIFile* binDirectory, nsIDirectoryServiceProvider* appFileLocationProvider) { - if (!xpcomGlueInit) + if (!xpcomFunctions.init) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.init(result, binDirectory, appFileLocationProvider); } @@ -179,7 +176,7 @@ NS_InitXPCOM2(nsIServiceManager* *result, extern "C" NS_COM nsresult NS_ShutdownXPCOM(nsIServiceManager* servMgr) { - if (!xpcomGlueInit) + if (!xpcomFunctions.shutdown) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.shutdown(servMgr); } @@ -187,7 +184,7 @@ NS_ShutdownXPCOM(nsIServiceManager* servMgr) extern "C" NS_COM nsresult NS_GetServiceManager(nsIServiceManager* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.getServiceManager) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.getServiceManager(result); } @@ -195,7 +192,7 @@ NS_GetServiceManager(nsIServiceManager* *result) extern "C" NS_COM nsresult NS_GetComponentManager(nsIComponentManager* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.getComponentManager) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.getComponentManager(result); } @@ -203,7 +200,7 @@ NS_GetComponentManager(nsIComponentManager* *result) extern "C" NS_COM nsresult NS_GetComponentRegistrar(nsIComponentRegistrar* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.getComponentRegistrar) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.getComponentRegistrar(result); } @@ -211,7 +208,7 @@ NS_GetComponentRegistrar(nsIComponentRegistrar* *result) extern "C" NS_COM nsresult NS_GetMemoryManager(nsIMemory* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.getMemoryManager) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.getMemoryManager(result); } @@ -219,7 +216,7 @@ NS_GetMemoryManager(nsIMemory* *result) extern "C" NS_COM nsresult NS_NewLocalFile(const nsAString &path, PRBool followLinks, nsILocalFile* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.newLocalFile) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.newLocalFile(path, followLinks, result); } @@ -227,7 +224,7 @@ NS_NewLocalFile(const nsAString &path, PRBool followLinks, nsILocalFile* *result extern "C" NS_COM nsresult NS_NewNativeLocalFile(const nsACString &path, PRBool followLinks, nsILocalFile* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.newNativeLocalFile) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.newNativeLocalFile(path, followLinks, result); } @@ -235,15 +232,15 @@ NS_NewNativeLocalFile(const nsACString &path, PRBool followLinks, nsILocalFile* extern "C" NS_COM nsresult NS_RegisterXPCOMExitRoutine(XPCOMExitRoutine exitRoutine, PRUint32 priority) { - if (!xpcomGlueInit) - return NS_ERROR_NOT_INITIALIZED; - return xpcomFunctions.registerExitRoutine(exitRoutine, priority); + if (!xpcomFunctions.registerExitRoutine) + return NS_ERROR_NOT_INITIALIZED; + return xpcomFunctions.registerExitRoutine(exitRoutine, priority); } extern "C" NS_COM nsresult NS_UnregisterXPCOMExitRoutine(XPCOMExitRoutine exitRoutine) { - if (!xpcomGlueInit) + if (!xpcomFunctions.unregisterExitRoutine) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.unregisterExitRoutine(exitRoutine); } @@ -251,7 +248,7 @@ NS_UnregisterXPCOMExitRoutine(XPCOMExitRoutine exitRoutine) extern "C" NS_COM nsresult NS_GetDebug(nsIDebug* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.getDebug) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.getDebug(result); } @@ -260,107 +257,118 @@ NS_GetDebug(nsIDebug* *result) extern "C" NS_COM nsresult NS_GetTraceRefcnt(nsITraceRefcnt* *result) { - if (!xpcomGlueInit) + if (!xpcomFunctions.getTraceRefcnt) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.getTraceRefcnt(result); } -extern "C" NS_COM PRBool +extern "C" NS_COM nsresult NS_StringContainerInit(nsStringContainer &aStr) { - if (!xpcomGlueInit) - return PR_FALSE; + if (!xpcomFunctions.stringContainerInit) + return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.stringContainerInit(aStr); } extern "C" NS_COM void NS_StringContainerFinish(nsStringContainer &aStr) { - if (xpcomGlueInit) + if (xpcomFunctions.stringContainerFinish) xpcomFunctions.stringContainerFinish(aStr); } extern "C" NS_COM PRUint32 NS_StringGetData(const nsAString &aStr, const PRUnichar **aBuf, PRBool *aTerm) { - if (!xpcomGlueInit) + if (!xpcomFunctions.stringGetData) { + *aBuf = nsnull; return 0; + } return xpcomFunctions.stringGetData(aStr, aBuf, aTerm); } -extern "C" NS_COM void +extern "C" NS_COM nsresult NS_StringSetData(nsAString &aStr, const PRUnichar *aBuf, PRUint32 aCount) { - if (xpcomGlueInit) - xpcomFunctions.stringSetData(aStr, aBuf, aCount); + if (!xpcomFunctions.stringSetData) + return NS_ERROR_NOT_INITIALIZED; + + return xpcomFunctions.stringSetData(aStr, aBuf, aCount); } -extern "C" NS_COM void +extern "C" NS_COM nsresult NS_StringSetDataRange(nsAString &aStr, PRUint32 aCutStart, PRUint32 aCutLength, const PRUnichar *aBuf, PRUint32 aCount) { - if (xpcomGlueInit) - xpcomFunctions.stringSetDataRange(aStr, aCutStart, aCutLength, aBuf, aCount); + if (!xpcomFunctions.stringSetDataRange) + return NS_ERROR_NOT_INITIALIZED; + return xpcomFunctions.stringSetDataRange(aStr, aCutStart, aCutLength, aBuf, aCount); } -extern "C" NS_COM void +extern "C" NS_COM nsresult NS_StringCopy(nsAString &aDest, const nsAString &aSrc) { - if (xpcomGlueInit) - xpcomFunctions.stringCopy(aDest, aSrc); + if (!xpcomFunctions.stringCopy) + return NS_ERROR_NOT_INITIALIZED; + return xpcomFunctions.stringCopy(aDest, aSrc); } -extern "C" NS_COM PRBool +extern "C" NS_COM nsresult NS_CStringContainerInit(nsCStringContainer &aStr) { - if (!xpcomGlueInit) - return PR_FALSE; + if (!xpcomFunctions.cstringContainerInit) + return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.cstringContainerInit(aStr); } extern "C" NS_COM void NS_CStringContainerFinish(nsCStringContainer &aStr) { - if (xpcomGlueInit) + if (xpcomFunctions.cstringContainerFinish) xpcomFunctions.cstringContainerFinish(aStr); } extern "C" NS_COM PRUint32 NS_CStringGetData(const nsACString &aStr, const char **aBuf, PRBool *aTerm) { - if (!xpcomGlueInit) + if (!xpcomFunctions.cstringGetData) { + *aBuf = nsnull; return 0; + } return xpcomFunctions.cstringGetData(aStr, aBuf, aTerm); } -extern "C" NS_COM void +extern "C" NS_COM nsresult NS_CStringSetData(nsACString &aStr, const char *aBuf, PRUint32 aCount) { - if (xpcomGlueInit) - xpcomFunctions.cstringSetData(aStr, aBuf, aCount); + if (!xpcomFunctions.cstringSetData) + return NS_ERROR_NOT_INITIALIZED; + return xpcomFunctions.cstringSetData(aStr, aBuf, aCount); } -extern "C" NS_COM void +extern "C" NS_COM nsresult NS_CStringSetDataRange(nsACString &aStr, PRUint32 aCutStart, PRUint32 aCutLength, const char *aBuf, PRUint32 aCount) { - if (xpcomGlueInit) - xpcomFunctions.cstringSetDataRange(aStr, aCutStart, aCutLength, aBuf, aCount); + if (!xpcomFunctions.cstringSetDataRange) + return NS_ERROR_NOT_INITIALIZED; + return xpcomFunctions.cstringSetDataRange(aStr, aCutStart, aCutLength, aBuf, aCount); } -extern "C" NS_COM void +extern "C" NS_COM nsresult NS_CStringCopy(nsACString &aDest, const nsACString &aSrc) { - if (xpcomGlueInit) - xpcomFunctions.cstringCopy(aDest, aSrc); + if (!xpcomFunctions.cstringCopy) + return NS_ERROR_NOT_INITIALIZED; + return xpcomFunctions.cstringCopy(aDest, aSrc); } extern "C" NS_COM nsresult NS_CStringToUTF16(const nsACString &aSrc, PRUint32 aSrcEncoding, nsAString &aDest) { - if (!xpcomGlueInit) + if (!xpcomFunctions.cstringToUTF16) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.cstringToUTF16(aSrc, aSrcEncoding, aDest); } @@ -368,7 +376,7 @@ NS_CStringToUTF16(const nsACString &aSrc, PRUint32 aSrcEncoding, nsAString &aDes extern "C" NS_COM nsresult NS_UTF16ToCString(const nsAString &aSrc, PRUint32 aDestEncoding, nsACString &aDest) { - if (!xpcomGlueInit) + if (!xpcomFunctions.utf16ToCString) return NS_ERROR_NOT_INITIALIZED; return xpcomFunctions.utf16ToCString(aSrc, aDestEncoding, aDest); } diff --git a/mozilla/xpcom/string/public/nsStringAPI.h b/mozilla/xpcom/string/public/nsStringAPI.h index 833df7cbad9..5edd1a912de 100644 --- a/mozilla/xpcom/string/public/nsStringAPI.h +++ b/mozilla/xpcom/string/public/nsStringAPI.h @@ -74,22 +74,27 @@ class nsACString; * * NS_METHOD GetBlah(nsAString &aBlah); * - * void MyCode() + * nsresult MyCode() * { + * nsresult rv; + * * nsStringContainer sc; - * if (NS_StringContainerInit(sc)) + * rv = NS_StringContainerInit(sc); + * if (NS_FAILED(rv)) + * return rv; + * + * rv = GetBlah(sc); + * if (NS_SUCCEEDED(rv)) * { - * nsresult rv = GetBlah(sc); - * if (NS_SUCCEEDED(rv)) - * { - * const PRUnichar *data; - * NS_StringGetData(sc, &data); - * // - * // |data| now points to the result of the GetBlah function - * // - * } - * NS_StringContainerFinish(sc); + * const PRUnichar *data; + * NS_StringGetData(sc, &data); + * // + * // |data| now points to the result of the GetBlah function + * // * } + * + * NS_StringContainerFinish(sc); + * return rv; * } * * The following example show how to use a string container to pass a string @@ -97,18 +102,22 @@ class nsACString; * * NS_METHOD SetBlah(const nsAString &aBlah); * - * void MyCode() + * nsresult MyCode() * { + * nsresult rv; + * * nsStringContainer sc; - * if (NS_StringContainerInit(sc)) - * { - * const PRUnichar kData[] = {'x','y','z','\0'}; - * NS_StringSetData(sc, kData, sizeof(kData)/2 - 1); + * rv = NS_StringContainerInit(sc); + * if (NS_FAILED(rv)) + * return rv; * - * SetBlah(sc); + * const PRUnichar kData[] = {'x','y','z','\0'}; + * rv = NS_StringSetData(sc, kData, sizeof(kData)/2 - 1); + * if (NS_SUCCEEDED(rv)) + * rv = SetBlah(sc); * - * NS_StringContainerFinish(sc); - * } + * NS_StringContainerFinish(sc); + * return rv; * } */ class nsStringContainer; @@ -117,12 +126,14 @@ class nsStringContainer; * NS_StringContainerInit * * @param aContainer string container reference - * @return true if string container successfully initialized + * @return NS_OK if string container successfully initialized * * This function may allocate additional memory for aContainer. When * aContainer is no longer needed, NS_StringContainerFinish should be called. + * + * @status FROZEN */ -NS_STRINGAPI(PRBool) +NS_STRINGAPI(nsresult) NS_StringContainerInit(nsStringContainer &aContainer); /** @@ -131,6 +142,8 @@ NS_StringContainerInit(nsStringContainer &aContainer); * @param aContainer string container reference * * This function frees any memory owned by aContainer. + * + * @status FROZEN */ NS_STRINGAPI(void) NS_StringContainerFinish(nsStringContainer &aContainer); @@ -151,6 +164,8 @@ NS_StringContainerFinish(nsStringContainer &aContainer); * whether or not aStr's internal buffer is null- * terminated * @return length of aStr's internal buffer + * + * @status FROZEN */ NS_STRINGAPI(PRUint32) NS_StringGetData @@ -167,13 +182,16 @@ NS_StringGetData * @param aDataLength number of characters to copy from source string (pass * PR_UINT32_MAX to copy until end of aData, designated by * a null character) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr after copying data * from aData. The behavior depends on the implementation of the abstract * string, aStr. If aStr is a reference to a nsStringContainer, then its data * will be null-terminated by this function. + * + * @status FROZEN */ -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringSetData (nsAString &aStr, const PRUnichar *aData, PRUint32 aDataLength = PR_UINT32_MAX); @@ -197,13 +215,16 @@ NS_StringSetData * @param aDataLength number of characters to copy from source string (pass * PR_UINT32_MAX to copy until end of aData, designated by * a null character) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr after copying data * from aData. The behavior depends on the implementation of the abstract * string, aStr. If aStr is a reference to a nsStringContainer, then its data * will be null-terminated by this function. + * + * @status FROZEN */ -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringSetDataRange (nsAString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength, const PRUnichar *aData, PRUint32 aDataLength = PR_UINT32_MAX); @@ -216,13 +237,16 @@ NS_StringSetDataRange * * @param aDestStr abstract string reference to be modified * @param aSrcStr abstract string reference containing source string + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aDestStr after copying * data from aSrcStr. The behavior depends on the implementation of the * abstract string, aDestStr. If aDestStr is a reference to a * nsStringContainer, then its data will be null-terminated by this function. + * + * @status FROZEN */ -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringCopy (nsAString &aDestStr, const nsAString &aSrcStr); @@ -235,17 +259,18 @@ NS_StringCopy * @param aData character buffer * @param aDataLength number of characters to append (pass PR_UINT32_MAX to * append until a null-character is encountered) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr upon completion. * The behavior depends on the implementation of the abstract string, aStr. * If aStr is a reference to a nsStringContainer, then its data will be null- * terminated by this function. */ -inline void +inline NS_HIDDEN_(nsresult) NS_StringAppendData(nsAString &aStr, const PRUnichar *aData, PRUint32 aDataLength = PR_UINT32_MAX) { - NS_StringSetDataRange(aStr, PR_UINT32_MAX, 0, aData, aDataLength); + return NS_StringSetDataRange(aStr, PR_UINT32_MAX, 0, aData, aDataLength); } /** @@ -259,17 +284,18 @@ NS_StringAppendData(nsAString &aStr, const PRUnichar *aData, * @param aData character buffer * @param aDataLength number of characters to append (pass PR_UINT32_MAX to * append until a null-character is encountered) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr upon completion. * The behavior depends on the implementation of the abstract string, aStr. * If aStr is a reference to a nsStringContainer, then its data will be null- * terminated by this function. */ -inline void +inline NS_HIDDEN_(nsresult) NS_StringInsertData(nsAString &aStr, PRUint32 aOffset, const PRUnichar *aData, PRUint32 aDataLength = PR_UINT32_MAX) { - NS_StringSetDataRange(aStr, aOffset, 0, aData, aDataLength); + return NS_StringSetDataRange(aStr, aOffset, 0, aData, aDataLength); } /** @@ -281,11 +307,12 @@ NS_StringInsertData(nsAString &aStr, PRUint32 aOffset, const PRUnichar *aData, * @param aStr abstract string reference to be modified * @param aCutOffset specifies where in the string to insert aData * @param aCutLength number of characters to remove + * @return NS_OK if function succeeded */ -inline void +inline NS_HIDDEN_(nsresult) NS_StringCutData(nsAString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength) { - NS_StringSetDataRange(aStr, aCutOffset, aCutLength, nsnull, 0); + return NS_StringSetDataRange(aStr, aCutOffset, aCutLength, nsnull, 0); } /* ------------------------------------------------------------------------- */ @@ -308,12 +335,14 @@ class nsCStringContainer; * NS_CStringContainerInit * * @param aContainer string container reference - * @return true if string container successfully initialized + * @return NS_OK if string container successfully initialized * * This function may allocate additional memory for aContainer. When * aContainer is no longer needed, NS_CStringContainerFinish should be called. + * + * @status FROZEN */ -NS_STRINGAPI(PRBool) +NS_STRINGAPI(nsresult) NS_CStringContainerInit(nsCStringContainer &aContainer); /** @@ -322,6 +351,8 @@ NS_CStringContainerInit(nsCStringContainer &aContainer); * @param aContainer string container reference * * This function frees any memory owned by aContainer. + * + * @status FROZEN */ NS_STRINGAPI(void) NS_CStringContainerFinish(nsCStringContainer &aContainer); @@ -342,6 +373,8 @@ NS_CStringContainerFinish(nsCStringContainer &aContainer); * whether or not aStr's internal buffer is null- * terminated * @return length of aStr's internal buffer + * + * @status FROZEN */ NS_STRINGAPI(PRUint32) NS_CStringGetData @@ -358,13 +391,16 @@ NS_CStringGetData * @param aDataLength number of characters to copy from source string (pass * PR_UINT32_MAX to copy until end of aData, designated by * a null character) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr after copying data * from aData. The behavior depends on the implementation of the abstract * string, aStr. If aStr is a reference to a nsStringContainer, then its data * will be null-terminated by this function. + * + * @status FROZEN */ -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringSetData (nsACString &aStr, const char *aData, PRUint32 aDataLength = PR_UINT32_MAX); @@ -388,13 +424,16 @@ NS_CStringSetData * @param aDataLength number of characters to copy from source string (pass * PR_UINT32_MAX to copy until end of aData, designated by * a null character) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr after copying data * from aData. The behavior depends on the implementation of the abstract * string, aStr. If aStr is a reference to a nsStringContainer, then its data * will be null-terminated by this function. + * + * @status FROZEN */ -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringSetDataRange (nsACString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength, const char *aData, PRUint32 aDataLength = PR_UINT32_MAX); @@ -407,13 +446,16 @@ NS_CStringSetDataRange * * @param aDestStr abstract string reference to be modified * @param aSrcStr abstract string reference containing source string + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aDestStr after copying * data from aSrcStr. The behavior depends on the implementation of the * abstract string, aDestStr. If aDestStr is a reference to a * nsStringContainer, then its data will be null-terminated by this function. + * + * @status FROZEN */ -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringCopy (nsACString &aDestStr, const nsACString &aSrcStr); @@ -426,17 +468,18 @@ NS_CStringCopy * @param aData character buffer * @param aDataLength number of characters to append (pass PR_UINT32_MAX to * append until a null-character is encountered) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr upon completion. * The behavior depends on the implementation of the abstract string, aStr. * If aStr is a reference to a nsStringContainer, then its data will be null- * terminated by this function. */ -inline void +inline NS_HIDDEN_(nsresult) NS_CStringAppendData(nsACString &aStr, const char *aData, PRUint32 aDataLength = PR_UINT32_MAX) { - NS_CStringSetDataRange(aStr, PR_UINT32_MAX, 0, aData, aDataLength); + return NS_CStringSetDataRange(aStr, PR_UINT32_MAX, 0, aData, aDataLength); } /** @@ -450,17 +493,18 @@ NS_CStringAppendData(nsACString &aStr, const char *aData, * @param aData character buffer * @param aDataLength number of characters to append (pass PR_UINT32_MAX to * append until a null-character is encountered) + * @return NS_OK if function succeeded * * This function does not necessarily null-terminate aStr upon completion. * The behavior depends on the implementation of the abstract string, aStr. * If aStr is a reference to a nsStringContainer, then its data will be null- * terminated by this function. */ -inline void +inline NS_HIDDEN_(nsresult) NS_CStringInsertData(nsACString &aStr, PRUint32 aOffset, const char *aData, PRUint32 aDataLength = PR_UINT32_MAX) { - NS_CStringSetDataRange(aStr, aOffset, 0, aData, aDataLength); + return NS_CStringSetDataRange(aStr, aOffset, 0, aData, aDataLength); } /** @@ -472,11 +516,12 @@ NS_CStringInsertData(nsACString &aStr, PRUint32 aOffset, const char *aData, * @param aStr abstract string reference to be modified * @param aCutOffset specifies where in the string to insert aData * @param aCutLength number of characters to remove + * @return NS_OK if function succeeded */ -inline void +inline NS_HIDDEN_(nsresult) NS_CStringCutData(nsACString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength) { - NS_CStringSetDataRange(aStr, aCutOffset, aCutLength, nsnull, 0); + return NS_CStringSetDataRange(aStr, aCutOffset, aCutLength, nsnull, 0); } /* ------------------------------------------------------------------------- */ @@ -484,22 +529,22 @@ NS_CStringCutData(nsACString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength) /** * Encodings that can be used with the following conversion routines. */ -enum { +enum nsCStringEncoding { /* Conversion between ASCII and UTF-16 assumes that all bytes in the source * string are 7-bit ASCII and can be inflated to UTF-16 by inserting null * bytes. Reverse conversion is done by truncating every other byte. The * conversion may result in loss and/or corruption of information if the * strings do not strictly contain ASCII data. */ - NS_ENCODING_ASCII = 0, + NS_CSTRING_ENCODING_ASCII = 0, /* Conversion between UTF-8 and UTF-16 is non-lossy. */ - NS_ENCODING_UTF8 = 1, + NS_CSTRING_ENCODING_UTF8 = 1, /* Conversion from UTF-16 to the native filesystem charset may result in a * loss of information. No attempt is made to protect against data loss in * this case. The native filesystem charset applies to strings passed to * the "Native" method variants on nsIFile and nsILocalFile. */ - NS_ENCODING_NATIVE_FILESYSTEM = 2 + NS_CSTRING_ENCODING_NATIVE_FILESYSTEM = 2 }; /** @@ -512,9 +557,11 @@ enum { * @param aSource abstract string reference containing source string * @param aSrcEncoding character encoding of the source string * @param aDest abstract string reference to hold the result + * + * @status FROZEN */ NS_STRINGAPI(nsresult) -NS_CStringToUTF16(const nsACString &aSource, PRUint32 aSrcEncoding, +NS_CStringToUTF16(const nsACString &aSource, nsCStringEncoding aSrcEncoding, nsAString &aDest); /** @@ -529,9 +576,11 @@ NS_CStringToUTF16(const nsACString &aSource, PRUint32 aSrcEncoding, * @param aSource abstract string reference containing source string * @param aDestEncoding character encoding of the resulting string * @param aDest abstract string reference to hold the result + * + * @status FROZEN */ NS_STRINGAPI(nsresult) -NS_UTF16ToCString(const nsAString &aSource, PRUint32 aDestEncoding, +NS_UTF16ToCString(const nsAString &aSource, nsCStringEncoding aDestEncoding, nsACString &aDest); /* ------------------------------------------------------------------------- */ @@ -565,57 +614,71 @@ public: typedef PRUint32 size_type; typedef PRUint32 index_type; - size_type Length() const + NS_HIDDEN_(const char_type*) BeginReading() const + { + const char_type *data; + NS_StringGetData(*this, &data); + return data; + } + + NS_HIDDEN_(const char_type*) EndReading() const + { + const char_type *data; + PRUint32 len = NS_StringGetData(*this, &data); + return data + len; + } + + NS_HIDDEN_(size_type) Length() const { const char_type* data; return NS_StringGetData(*this, &data); } - void Assign(const self_type& aString) + NS_HIDDEN_(void) Assign(const self_type& aString) { NS_StringCopy(*this, aString); } - void Assign(const char_type* aData, size_type aLength = PR_UINT32_MAX) + NS_HIDDEN_(void) Assign(const char_type* aData, size_type aLength = PR_UINT32_MAX) { NS_StringSetData(*this, aData, aLength); } - void Assign(char_type aChar) + NS_HIDDEN_(void) Assign(char_type aChar) { NS_StringSetData(*this, &aChar, 1); } - self_type& operator=(const self_type& aString) { Assign(aString); return *this; } - self_type& operator=(const char_type* aPtr) { Assign(aPtr); return *this; } - self_type& operator=(char_type aChar) { Assign(aChar); return *this; } + NS_HIDDEN_(self_type&) operator=(const self_type& aString) { Assign(aString); return *this; } + NS_HIDDEN_(self_type&) operator=(const char_type* aPtr) { Assign(aPtr); return *this; } + NS_HIDDEN_(self_type&) operator=(char_type aChar) { Assign(aChar); return *this; } - void Replace( index_type cutStart, size_type cutLength, const char_type* data, size_type length = size_type(-1) ) + NS_HIDDEN_(void) Replace( index_type cutStart, size_type cutLength, const char_type* data, size_type length = size_type(-1) ) { NS_StringSetDataRange(*this, cutStart, cutLength, data, length); } - void Replace( index_type cutStart, size_type cutLength, char_type c ) + NS_HIDDEN_(void) Replace( index_type cutStart, size_type cutLength, char_type c ) { Replace(cutStart, cutLength, &c, 1); } - void Replace( index_type cutStart, size_type cutLength, const self_type& readable ) + NS_HIDDEN_(void) Replace( index_type cutStart, size_type cutLength, const self_type& readable ) { const char_type* data; PRUint32 dataLen = NS_StringGetData(readable, &data); NS_StringSetDataRange(*this, cutStart, cutLength, data, dataLen); } - void Append( char_type c ) { Replace(size_type(-1), 0, c); } - void Append( const char_type* data, size_type length = size_type(-1) ) { Replace(size_type(-1), 0, data, length); } - void Append( const self_type& readable ) { Replace(size_type(-1), 0, readable); } + NS_HIDDEN_(void) Append( char_type c ) { Replace(size_type(-1), 0, c); } + NS_HIDDEN_(void) Append( const char_type* data, size_type length = size_type(-1) ) { Replace(size_type(-1), 0, data, length); } + NS_HIDDEN_(void) Append( const self_type& readable ) { Replace(size_type(-1), 0, readable); } - self_type& operator+=( char_type c ) { Append(c); return *this; } - self_type& operator+=( const char_type* data ) { Append(data); return *this; } - self_type& operator+=( const self_type& readable ) { Append(readable); return *this; } + NS_HIDDEN_(self_type&) operator+=( char_type c ) { Append(c); return *this; } + NS_HIDDEN_(self_type&) operator+=( const char_type* data ) { Append(data); return *this; } + NS_HIDDEN_(self_type&) operator+=( const self_type& readable ) { Append(readable); return *this; } - void Insert( char_type c, index_type pos ) { Replace(pos, 0, c); } - void Insert( const char_type* data, index_type pos, size_type length = size_type(-1) ) { Replace(pos, 0, data, length); } - void Insert( const self_type& readable, index_type pos ) { Replace(pos, 0, readable); } + NS_HIDDEN_(void) Insert( char_type c, index_type pos ) { Replace(pos, 0, c); } + NS_HIDDEN_(void) Insert( const char_type* data, index_type pos, size_type length = size_type(-1) ) { Replace(pos, 0, data, length); } + NS_HIDDEN_(void) Insert( const self_type& readable, index_type pos ) { Replace(pos, 0, readable); } - void Cut( index_type cutStart, size_type cutLength ) { Replace(cutStart, cutLength, nsnull, 0); } + NS_HIDDEN_(void) Cut( index_type cutStart, size_type cutLength ) { Replace(cutStart, cutLength, nsnull, 0); } #endif // NS_STRINGAPI_IMPL @@ -633,57 +696,71 @@ public: typedef PRUint32 size_type; typedef PRUint32 index_type; - size_type Length() const + NS_HIDDEN_(const char_type*) BeginReading() const + { + const char_type *data; + NS_CStringGetData(*this, &data); + return data; + } + + NS_HIDDEN_(const char_type*) EndReading() const + { + const char_type *data; + PRUint32 len = NS_CStringGetData(*this, &data); + return data + len; + } + + NS_HIDDEN_(size_type) Length() const { const char_type* data; return NS_CStringGetData(*this, &data); } - void Assign(const self_type& aString) + NS_HIDDEN_(void) Assign(const self_type& aString) { NS_CStringCopy(*this, aString); } - void Assign(const char_type* aData, size_type aLength = PR_UINT32_MAX) + NS_HIDDEN_(void) Assign(const char_type* aData, size_type aLength = PR_UINT32_MAX) { NS_CStringSetData(*this, aData, aLength); } - void Assign(char_type aChar) + NS_HIDDEN_(void) Assign(char_type aChar) { NS_CStringSetData(*this, &aChar, 1); } - self_type& operator=(const self_type& aString) { Assign(aString); return *this; } - self_type& operator=(const char_type* aPtr) { Assign(aPtr); return *this; } - self_type& operator=(char_type aChar) { Assign(aChar); return *this; } + NS_HIDDEN_(self_type&) operator=(const self_type& aString) { Assign(aString); return *this; } + NS_HIDDEN_(self_type&) operator=(const char_type* aPtr) { Assign(aPtr); return *this; } + NS_HIDDEN_(self_type&) operator=(char_type aChar) { Assign(aChar); return *this; } - void Replace( index_type cutStart, size_type cutLength, const char_type* data, size_type length = size_type(-1) ) + NS_HIDDEN_(void) Replace( index_type cutStart, size_type cutLength, const char_type* data, size_type length = size_type(-1) ) { NS_CStringSetDataRange(*this, cutStart, cutLength, data, length); } - void Replace( index_type cutStart, size_type cutLength, char_type c ) + NS_HIDDEN_(void) Replace( index_type cutStart, size_type cutLength, char_type c ) { Replace(cutStart, cutLength, &c, 1); } - void Replace( index_type cutStart, size_type cutLength, const self_type& readable ) + NS_HIDDEN_(void) Replace( index_type cutStart, size_type cutLength, const self_type& readable ) { const char_type* data; PRUint32 dataLen = NS_CStringGetData(readable, &data); NS_CStringSetDataRange(*this, cutStart, cutLength, data, dataLen); } - void Append( char_type c ) { Replace(size_type(-1), 0, c); } - void Append( const char_type* data, size_type length = size_type(-1) ) { Replace(size_type(-1), 0, data, length); } - void Append( const self_type& readable ) { Replace(size_type(-1), 0, readable); } + NS_HIDDEN_(void) Append( char_type c ) { Replace(size_type(-1), 0, c); } + NS_HIDDEN_(void) Append( const char_type* data, size_type length = size_type(-1) ) { Replace(size_type(-1), 0, data, length); } + NS_HIDDEN_(void) Append( const self_type& readable ) { Replace(size_type(-1), 0, readable); } - self_type& operator+=( char_type c ) { Append(c); return *this; } - self_type& operator+=( const char_type* data ) { Append(data); return *this; } - self_type& operator+=( const self_type& readable ) { Append(readable); return *this; } + NS_HIDDEN_(self_type&) operator+=( char_type c ) { Append(c); return *this; } + NS_HIDDEN_(self_type&) operator+=( const char_type* data ) { Append(data); return *this; } + NS_HIDDEN_(self_type&) operator+=( const self_type& readable ) { Append(readable); return *this; } - void Insert( char_type c, index_type pos ) { Replace(pos, 0, c); } - void Insert( const char_type* data, index_type pos, size_type length = size_type(-1) ) { Replace(pos, 0, data, length); } - void Insert( const self_type& readable, index_type pos ) { Replace(pos, 0, readable); } + NS_HIDDEN_(void) Insert( char_type c, index_type pos ) { Replace(pos, 0, c); } + NS_HIDDEN_(void) Insert( const char_type* data, index_type pos, size_type length = size_type(-1) ) { Replace(pos, 0, data, length); } + NS_HIDDEN_(void) Insert( const self_type& readable, index_type pos ) { Replace(pos, 0, readable); } - void Cut( index_type cutStart, size_type cutLength ) { Replace(cutStart, cutLength, nsnull, 0); } + NS_HIDDEN_(void) Cut( index_type cutStart, size_type cutLength ) { Replace(cutStart, cutLength, nsnull, 0); } #endif // NS_STRINGAPI_IMPL diff --git a/mozilla/xpcom/stub/nsStringAPI.cpp b/mozilla/xpcom/stub/nsStringAPI.cpp index 3d0ea53eb8e..c36f9d69375 100644 --- a/mozilla/xpcom/stub/nsStringAPI.cpp +++ b/mozilla/xpcom/stub/nsStringAPI.cpp @@ -44,7 +44,7 @@ /* ------------------------------------------------------------------------- */ -NS_STRINGAPI(PRBool) +NS_STRINGAPI(nsresult) NS_StringContainerInit(nsStringContainer &aContainer) { NS_ASSERTION(sizeof(nsStringContainer) >= sizeof(nsString), @@ -53,7 +53,7 @@ NS_StringContainerInit(nsStringContainer &aContainer) // use placement new to avoid heap allocating nsString object new (&aContainer) nsString(); - return PR_TRUE; + return NS_OK; } NS_STRINGAPI(void) @@ -78,13 +78,14 @@ NS_StringGetData(const nsAString &aStr, const PRUnichar **aData, return begin.size_forward(); } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringSetData(nsAString &aStr, const PRUnichar *aData, PRUint32 aDataLength) { aStr.Assign(aData, aDataLength); + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringSetDataRange(nsAString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength, const PRUnichar *aData, PRUint32 aDataLength) @@ -94,7 +95,7 @@ NS_StringSetDataRange(nsAString &aStr, // append case if (aData) aStr.Append(aData, aDataLength); - return; + return NS_OK; // XXX report errors } if (aCutLength == PR_UINT32_MAX) @@ -109,17 +110,20 @@ NS_StringSetDataRange(nsAString &aStr, } else aStr.Cut(aCutOffset, aCutLength); + + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_StringCopy(nsAString &aDest, const nsAString &aSrc) { aDest.Assign(aSrc); + return NS_OK; // XXX report errors } /* ------------------------------------------------------------------------- */ -NS_STRINGAPI(PRBool) +NS_STRINGAPI(nsresult) NS_CStringContainerInit(nsCStringContainer &aContainer) { NS_ASSERTION(sizeof(nsCStringContainer) >= sizeof(nsCString), @@ -128,7 +132,7 @@ NS_CStringContainerInit(nsCStringContainer &aContainer) // use placement new to avoid heap allocating nsCString object new (&aContainer) nsCString(); - return PR_TRUE; + return NS_OK; } NS_STRINGAPI(void) @@ -153,13 +157,14 @@ NS_CStringGetData(const nsACString &aStr, const char **aData, return begin.size_forward(); } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringSetData(nsACString &aStr, const char *aData, PRUint32 aDataLength) { aStr.Assign(aData, aDataLength); + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringSetDataRange(nsACString &aStr, PRUint32 aCutOffset, PRUint32 aCutLength, const char *aData, PRUint32 aDataLength) @@ -169,7 +174,7 @@ NS_CStringSetDataRange(nsACString &aStr, // append case if (aData) aStr.Append(aData, aDataLength); - return; + return NS_OK; // XXX report errors } if (aCutLength == PR_UINT32_MAX) @@ -184,58 +189,61 @@ NS_CStringSetDataRange(nsACString &aStr, } else aStr.Cut(aCutOffset, aCutLength); + + return NS_OK; // XXX report errors } -NS_STRINGAPI(void) +NS_STRINGAPI(nsresult) NS_CStringCopy(nsACString &aDest, const nsACString &aSrc) { aDest.Assign(aSrc); + return NS_OK; // XXX report errors } /* ------------------------------------------------------------------------- */ NS_STRINGAPI(nsresult) -NS_CStringToUTF16(const nsACString &aSrc, PRUint32 aSrcEncoding, nsAString &aDest) +NS_CStringToUTF16(const nsACString &aSrc, + nsCStringEncoding aSrcEncoding, + nsAString &aDest) { - // XXX handle errors - switch (aSrcEncoding) { - case NS_ENCODING_ASCII: + case NS_CSTRING_ENCODING_ASCII: CopyASCIItoUTF16(aSrc, aDest); break; - case NS_ENCODING_UTF8: + case NS_CSTRING_ENCODING_UTF8: CopyUTF8toUTF16(aSrc, aDest); break; - case NS_ENCODING_NATIVE_FILESYSTEM: + case NS_CSTRING_ENCODING_NATIVE_FILESYSTEM: NS_CopyNativeToUnicode(aSrc, aDest); break; default: return NS_ERROR_NOT_IMPLEMENTED; } - return NS_OK; + return NS_OK; // XXX report errors } NS_STRINGAPI(nsresult) -NS_UTF16ToCString(const nsAString &aSrc, PRUint32 aDestEncoding, nsACString &aDest) +NS_UTF16ToCString(const nsAString &aSrc, + nsCStringEncoding aDestEncoding, + nsACString &aDest) { - // XXX handle errors - switch (aDestEncoding) { - case NS_ENCODING_ASCII: + case NS_CSTRING_ENCODING_ASCII: LossyCopyUTF16toASCII(aSrc, aDest); break; - case NS_ENCODING_UTF8: + case NS_CSTRING_ENCODING_UTF8: CopyUTF16toUTF8(aSrc, aDest); break; - case NS_ENCODING_NATIVE_FILESYSTEM: + case NS_CSTRING_ENCODING_NATIVE_FILESYSTEM: NS_CopyUnicodeToNative(aSrc, aDest); break; default: return NS_ERROR_NOT_IMPLEMENTED; } - return NS_OK; + return NS_OK; // XXX report errors } diff --git a/mozilla/xpcom/tests/TestMinStringAPI.cpp b/mozilla/xpcom/tests/TestMinStringAPI.cpp index d61979944ec..4c6a0ea9946 100644 --- a/mozilla/xpcom/tests/TestMinStringAPI.cpp +++ b/mozilla/xpcom/tests/TestMinStringAPI.cpp @@ -156,12 +156,12 @@ static PRBool test_convert() const char *data; - NS_UTF16ToCString(s, NS_ENCODING_ASCII, temp); + NS_UTF16ToCString(s, NS_CSTRING_ENCODING_ASCII, temp); NS_CStringGetData(temp, &data); if (strcmp(data, kAsciiData) != 0) return PR_FALSE; - NS_UTF16ToCString(s, NS_ENCODING_UTF8, temp); + NS_UTF16ToCString(s, NS_CSTRING_ENCODING_UTF8, temp); NS_CStringGetData(temp, &data); if (strcmp(data, kAsciiData) != 0) return PR_FALSE; @@ -172,6 +172,18 @@ static PRBool test_convert() return PR_TRUE; } +static PRBool test_append() + { + nsCStringContainer s; + NS_CStringContainerInit(s); + + NS_CStringSetData(s, "foo"); + NS_CStringAppendData(s, "bar"); + + NS_CStringContainerFinish(s); + return PR_TRUE; + } + //---- typedef PRBool (*TestFunc)(); @@ -186,6 +198,7 @@ tests[] = { "test_basic_1", test_basic_1 }, { "test_basic_2", test_basic_2 }, { "test_convert", test_convert }, + { "test_append", test_append }, { nsnull, nsnull } };