зеркало из https://github.com/mozilla/pjs.git
First Checked In.
This commit is contained in:
Родитель
52d0fcb297
Коммит
afa96f78e8
|
@ -0,0 +1,95 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
|
||||
* Communications Corp. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mike Pinkerton
|
||||
*/
|
||||
|
||||
#include "nsPrimitiveHelpers.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIComponentManager.h"
|
||||
|
||||
|
||||
//
|
||||
// CreatePrimitiveForData
|
||||
//
|
||||
// Given some data and the flavor it corresponds to, creates the appropriate
|
||||
// nsISupports* wrapper for passing across IDL boundaries. Right now, everything
|
||||
// creates a two-byte |nsISupportsWString| unless the flavor is "text/plain", in which
|
||||
// case it creates a one-byte |nsISupportsString|.
|
||||
//
|
||||
void
|
||||
nsPrimitiveHelpers :: CreatePrimitiveForData ( const char* aFlavor, void* aDataBuff,
|
||||
PRUint32 aDataLen, nsISupports** aPrimitive )
|
||||
{
|
||||
if ( !aPrimitive )
|
||||
return;
|
||||
|
||||
if ( strcmp(aFlavor,kTextMime) == 0 ) {
|
||||
nsCOMPtr<nsISupportsString> primitive;
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_SUPPORTS_STRING_PROGID, nsnull,
|
||||
NS_GET_IID(nsISupportsString), getter_AddRefs(primitive));
|
||||
if ( primitive ) {
|
||||
primitive->SetData ( (char*)aDataBuff );
|
||||
nsCOMPtr<nsISupports> genericPrimitive ( do_QueryInterface(primitive) );
|
||||
*aPrimitive = genericPrimitive;
|
||||
NS_ADDREF(*aPrimitive);
|
||||
}
|
||||
}
|
||||
else {
|
||||
nsCOMPtr<nsISupportsWString> primitive;
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_SUPPORTS_WSTRING_PROGID, nsnull,
|
||||
NS_GET_IID(nsISupportsWString), getter_AddRefs(primitive));
|
||||
if ( primitive ) {
|
||||
primitive->SetData ( (unsigned short*)aDataBuff );
|
||||
nsCOMPtr<nsISupports> genericPrimitive ( do_QueryInterface(primitive) );
|
||||
*aPrimitive = genericPrimitive;
|
||||
NS_ADDREF(*aPrimitive);
|
||||
}
|
||||
}
|
||||
|
||||
} // CreatePrimitiveForData
|
||||
|
||||
|
||||
//
|
||||
// CreateDataFromPrimitive
|
||||
//
|
||||
// Given a nsISupports* primitive and the flavor it represents, creates a new data
|
||||
// buffer with the data in it.
|
||||
//
|
||||
void
|
||||
nsPrimitiveHelpers :: CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive,
|
||||
void** aDataBuff, PRUint32 aDataLen )
|
||||
{
|
||||
if ( !aDataBuff )
|
||||
return;
|
||||
|
||||
if ( strcmp(aFlavor,kTextMime) == 0 ) {
|
||||
nsCOMPtr<nsISupportsString> plainText ( do_QueryInterface(aPrimitive) );
|
||||
if ( plainText )
|
||||
plainText->GetData ( NS_REINTERPRET_CAST(char**, aDataBuff) );
|
||||
}
|
||||
else {
|
||||
nsCOMPtr<nsISupportsWString> doubleByteText ( do_QueryInterface(aPrimitive) );
|
||||
if ( doubleByteText )
|
||||
doubleByteText->GetData ( NS_REINTERPRET_CAST(unsigned short**, aDataBuff) );
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
|
||||
* Communications Corp. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mike Pinkerton
|
||||
*/
|
||||
|
||||
#ifndef nsPrimitiveHelpers_h___
|
||||
#define nsPrimitiveHelpers_h___
|
||||
|
||||
#include "prtypes.h"
|
||||
|
||||
class nsISupports;
|
||||
|
||||
|
||||
class nsPrimitiveHelpers
|
||||
{
|
||||
public:
|
||||
|
||||
static void CreatePrimitiveForData ( const char* aFlavor, void* aDataBuff,
|
||||
PRUint32 aDataLen, nsISupports** aPrimitive ) ;
|
||||
|
||||
static void CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive,
|
||||
void** aDataBuff, PRUint32 aDataLen ) ;
|
||||
|
||||
}; // class nsPrimitiveHelpers
|
||||
|
||||
|
||||
#endif // nsPrimitiveHelpers_h___
|
Загрузка…
Ссылка в новой задаче