From 98967931ba5a0cc54a233b56e878e19e851a324a Mon Sep 17 00:00:00 2001 From: "beard%netscape.com" Date: Thu, 25 Feb 1999 04:41:02 +0000 Subject: [PATCH] First Checked In. git-svn-id: svn://10.0.0.236/trunk@21864 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpcom/components/nsGenericFactory.cpp | 40 +++++++++++++++++ mozilla/xpcom/components/nsGenericFactory.h | 45 +++++++++++++++++++ mozilla/xpcom/glue/nsGenericFactory.cpp | 40 +++++++++++++++++ mozilla/xpcom/glue/nsGenericFactory.h | 45 +++++++++++++++++++ mozilla/xpcom/src/nsGenericFactory.cpp | 40 +++++++++++++++++ mozilla/xpcom/src/nsGenericFactory.h | 45 +++++++++++++++++++ 6 files changed, 255 insertions(+) create mode 100644 mozilla/xpcom/components/nsGenericFactory.cpp create mode 100644 mozilla/xpcom/components/nsGenericFactory.h create mode 100644 mozilla/xpcom/glue/nsGenericFactory.cpp create mode 100644 mozilla/xpcom/glue/nsGenericFactory.h create mode 100644 mozilla/xpcom/src/nsGenericFactory.cpp create mode 100644 mozilla/xpcom/src/nsGenericFactory.h diff --git a/mozilla/xpcom/components/nsGenericFactory.cpp b/mozilla/xpcom/components/nsGenericFactory.cpp new file mode 100644 index 00000000000..228357cc9f1 --- /dev/null +++ b/mozilla/xpcom/components/nsGenericFactory.cpp @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsGenericFactory.h" + +nsGenericFactory::nsGenericFactory(CreatorProcPtr creator) : mCreator(creator) +{ + NS_INIT_REFCNT(); +} + +nsGenericFactory::~nsGenericFactory() {} + +static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID); + +NS_IMPL_ISUPPORTS(nsGenericFactory, kIFactoryIID) + +NS_IMETHODIMP nsGenericFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult) +{ + return mCreator(aOuter, aIID, aResult); +} + +NS_IMETHODIMP nsGenericFactory::LockFactory(PRBool aLock) +{ + return NS_OK; +} diff --git a/mozilla/xpcom/components/nsGenericFactory.h b/mozilla/xpcom/components/nsGenericFactory.h new file mode 100644 index 00000000000..d35def27dca --- /dev/null +++ b/mozilla/xpcom/components/nsGenericFactory.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#ifndef nsGenericFactory_h___ +#define nsGenericFactory_h___ + +#include "nsIFactory.h" + +/** + * Most factories follow this simple pattern, so why not just use a function pointer + * for most creation operations? + */ +class nsGenericFactory : public nsIFactory { +public: + typedef nsresult (*CreatorProcPtr) (nsISupports *aOuter, REFNSIID aIID, void **aResult); + + nsGenericFactory(CreatorProcPtr creator); + virtual ~nsGenericFactory(); + + NS_DECL_ISUPPORTS + + NS_IMETHOD CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult); + + NS_IMETHOD LockFactory(PRBool aLock); + +private: + CreatorProcPtr mCreator; +}; + +#endif /* nsGenericFactory_h___ */ diff --git a/mozilla/xpcom/glue/nsGenericFactory.cpp b/mozilla/xpcom/glue/nsGenericFactory.cpp new file mode 100644 index 00000000000..228357cc9f1 --- /dev/null +++ b/mozilla/xpcom/glue/nsGenericFactory.cpp @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsGenericFactory.h" + +nsGenericFactory::nsGenericFactory(CreatorProcPtr creator) : mCreator(creator) +{ + NS_INIT_REFCNT(); +} + +nsGenericFactory::~nsGenericFactory() {} + +static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID); + +NS_IMPL_ISUPPORTS(nsGenericFactory, kIFactoryIID) + +NS_IMETHODIMP nsGenericFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult) +{ + return mCreator(aOuter, aIID, aResult); +} + +NS_IMETHODIMP nsGenericFactory::LockFactory(PRBool aLock) +{ + return NS_OK; +} diff --git a/mozilla/xpcom/glue/nsGenericFactory.h b/mozilla/xpcom/glue/nsGenericFactory.h new file mode 100644 index 00000000000..d35def27dca --- /dev/null +++ b/mozilla/xpcom/glue/nsGenericFactory.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#ifndef nsGenericFactory_h___ +#define nsGenericFactory_h___ + +#include "nsIFactory.h" + +/** + * Most factories follow this simple pattern, so why not just use a function pointer + * for most creation operations? + */ +class nsGenericFactory : public nsIFactory { +public: + typedef nsresult (*CreatorProcPtr) (nsISupports *aOuter, REFNSIID aIID, void **aResult); + + nsGenericFactory(CreatorProcPtr creator); + virtual ~nsGenericFactory(); + + NS_DECL_ISUPPORTS + + NS_IMETHOD CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult); + + NS_IMETHOD LockFactory(PRBool aLock); + +private: + CreatorProcPtr mCreator; +}; + +#endif /* nsGenericFactory_h___ */ diff --git a/mozilla/xpcom/src/nsGenericFactory.cpp b/mozilla/xpcom/src/nsGenericFactory.cpp new file mode 100644 index 00000000000..228357cc9f1 --- /dev/null +++ b/mozilla/xpcom/src/nsGenericFactory.cpp @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsGenericFactory.h" + +nsGenericFactory::nsGenericFactory(CreatorProcPtr creator) : mCreator(creator) +{ + NS_INIT_REFCNT(); +} + +nsGenericFactory::~nsGenericFactory() {} + +static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID); + +NS_IMPL_ISUPPORTS(nsGenericFactory, kIFactoryIID) + +NS_IMETHODIMP nsGenericFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult) +{ + return mCreator(aOuter, aIID, aResult); +} + +NS_IMETHODIMP nsGenericFactory::LockFactory(PRBool aLock) +{ + return NS_OK; +} diff --git a/mozilla/xpcom/src/nsGenericFactory.h b/mozilla/xpcom/src/nsGenericFactory.h new file mode 100644 index 00000000000..d35def27dca --- /dev/null +++ b/mozilla/xpcom/src/nsGenericFactory.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#ifndef nsGenericFactory_h___ +#define nsGenericFactory_h___ + +#include "nsIFactory.h" + +/** + * Most factories follow this simple pattern, so why not just use a function pointer + * for most creation operations? + */ +class nsGenericFactory : public nsIFactory { +public: + typedef nsresult (*CreatorProcPtr) (nsISupports *aOuter, REFNSIID aIID, void **aResult); + + nsGenericFactory(CreatorProcPtr creator); + virtual ~nsGenericFactory(); + + NS_DECL_ISUPPORTS + + NS_IMETHOD CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult); + + NS_IMETHOD LockFactory(PRBool aLock); + +private: + CreatorProcPtr mCreator; +}; + +#endif /* nsGenericFactory_h___ */