mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-13 18:27:35 +00:00
ef9c82db1e
DOM: getting rid of JS_GetContextPrivate wherever possible. Use static parent links where we can. When we do need to find this info about the caller we call a function that knows how to get that info rather than inline calls to JS_GetContextPrivate. This is all required for calling DOM objects on non-DOM JSContexts as we do via xpconnect. XPConnect: basic refactoring work to disassociate wrappers from the JSContext that was active when the wrapper was constructed. This allows for calling into wrapped JS objects on the right JSContext and for proper grouping of wrapped native objects so that they can share proto objects. This also allows for better sharing of objects and lays the foundations for threadsafety and interface flattening. Also, xpconnect tests are reorganized and improved. fixes bugs: 13419, 17736, 17746, 17952, 22086 r=vidur r=mccabe r=norris r=cbegle a=chofmann
90 lines
3.2 KiB
C++
90 lines
3.2 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape 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/NPL/
|
|
*
|
|
* 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.org code.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*/
|
|
|
|
#ifndef _FileGen_h__
|
|
#define _FileGen_h__
|
|
|
|
#include <string.h>
|
|
#include "plhash.h"
|
|
|
|
#ifdef XP_MAC
|
|
#include <fstream.h> // required for namespace resolution
|
|
#else
|
|
class ofstream;
|
|
#endif
|
|
|
|
#define USE_COMPTR 1
|
|
|
|
class IdlObject;
|
|
class IdlSpecification;
|
|
class IdlInterface;
|
|
class IdlVariable;
|
|
class IdlParameter;
|
|
class IdlFunction;
|
|
|
|
class FileGen {
|
|
public:
|
|
FileGen();
|
|
virtual ~FileGen();
|
|
virtual void Generate(char *aFileName, char *aOutputDirName,
|
|
IdlSpecification &aSpec, int aIsGlobal)=0;
|
|
|
|
protected:
|
|
void GenerateNPL();
|
|
int OpenFile(char *aFileName, char *aOutputDirName,
|
|
const char *aFilePrefix, const char *aFileSuffix);
|
|
void CloseFile();
|
|
void GetVariableTypeForParameter(char *aBuffer, IdlVariable &aVariable);
|
|
void GetVariableTypeForLocal(char *aBuffer, IdlVariable &aVariable);
|
|
void GetVariableTypeForMethodLocal(char *aBuffer, IdlVariable &aVariable);
|
|
|
|
void GetParameterType(char *aBuffer, IdlParameter &aParameter);
|
|
void GetInterfaceIID(char *aBuffer, IdlInterface &aInterface);
|
|
void GetInterfaceIID(char *aBuffer, char *aInterfaceName);
|
|
void GetXPIDLInterfaceIID(char *aBuffer, char *aInterfaceName);
|
|
void GetXPIDLInterfaceIID(char *aBuffer, IdlInterface &aInterface);
|
|
void GetCapitalizedName(char *aBuffer, IdlObject &aObject);
|
|
void EnumerateAllObjects(IdlSpecification &aSpec,
|
|
PLHashEnumerator aEnumerator,
|
|
void *aArg,
|
|
PRBool aOnlyPrimary);
|
|
void EnumerateAllObjects(IdlInterface &aInterface,
|
|
PLHashEnumerator aEnumerator,
|
|
void *aArg);
|
|
PRBool HasConstructor(IdlInterface &aInterface,
|
|
IdlFunction **aConstructor);
|
|
|
|
ofstream* GetFile() { return mOutputFile; }
|
|
|
|
void StrUpr(char *aBuffer);
|
|
void StrLwr(char *aBuffer);
|
|
|
|
private:
|
|
void CollectAllInInterface(IdlInterface &aInterface,
|
|
PLHashTable *aTable);
|
|
|
|
ofstream *mOutputFile;
|
|
};
|
|
|
|
#endif // _FileGen_h__
|
|
|