Mozilla/mozilla/profile/idlservices/nsProfileServices.cpp
mccabe%netscape.com 91543218bc First cut at removing manual declaration of interface methods in implementation classes and replacing with xpidl-generated NS_DECL_NSIFOO macro.
Hopefully this'll help turn the copy-n-paste tide towards using this macro.


git-svn-id: svn://10.0.0.236/trunk@43988 18797224-902f-48f8-a5cc-f745e15eee43
1999-08-21 08:54:47 +00:00

187 lines
4.2 KiB
C++

/* -*- 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.
*/
/*
A sample of XPConnect. This file contains an implementation of
nsIProfileServices.
*/
#include "nscore.h"
#include "nsIProfileServices.h"
#include "nsIAllocator.h"
#include "plstr.h"
#include "stdio.h"
#include "nsIProfile.h"
#include "nsIComponentManager.h"
#include "nsIServiceManager.h"
static NS_DEFINE_CID(kProfileCID, NS_PROFILE_CID);
class ProfileServicesImpl : public nsIProfileServices
{
public:
ProfileServicesImpl();
virtual ~ProfileServicesImpl();
// nsISupports interface
NS_DECL_ISUPPORTS
// nsIProfile interface
NS_DECL_NSIPROFILESERVICES
private:
nsIProfile *mProfile;
};
////////////////////////////////////////////////////////////////////////
nsresult
NS_NewProfileServices(nsIProfileServices** aProfile)
{
NS_PRECONDITION(aProfile != nsnull, "null ptr");
if (! aProfile)
return NS_ERROR_NULL_POINTER;
*aProfile = new ProfileServicesImpl();
if (! *aProfile)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(*aProfile);
return NS_OK;
}
////////////////////////////////////////////////////////////////////////
ProfileServicesImpl::ProfileServicesImpl()
: mProfile(nsnull)
{
NS_INIT_REFCNT();
nsresult rv = nsServiceManager::GetService(kProfileCID,
nsIProfile::GetIID(),
(nsISupports **)&mProfile);
}
ProfileServicesImpl::~ProfileServicesImpl()
{
}
NS_IMPL_ISUPPORTS(ProfileServicesImpl, nsIProfileServices::GetIID());
NS_IMETHODIMP
ProfileServicesImpl::CreateNewProfile(const char* data)
{
NS_PRECONDITION(data != nsnull, "null ptr");
if (! data)
return NS_ERROR_NULL_POINTER;
mProfile->CreateNewProfile((char *)data);
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::RenameProfile(const char* oldName, const char* newName)
{
mProfile->RenameProfile(oldName, newName);
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::DeleteProfile(const char* profileName, const char *canDeleteFiles)
{
NS_PRECONDITION(profileName != nsnull, "null ptr");
if (! profileName)
return NS_ERROR_NULL_POINTER;
mProfile->DeleteProfile(profileName, canDeleteFiles);
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::GetProfileList(char** profileList)
{
nsString localVar;
mProfile->GetProfileList(localVar);
*profileList = PL_strdup(localVar.ToNewCString());
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::StartCommunicator(const char* profileName)
{
NS_PRECONDITION(profileName != nsnull, "null ptr");
if (! profileName)
return NS_ERROR_NULL_POINTER;
mProfile->StartCommunicator(profileName);
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::GetCurrentProfile(char** profileName)
{
mProfile->GetCurrentProfile(profileName);
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::MigrateProfile(const char* profileName)
{
NS_PRECONDITION(profileName != nsnull, "null ptr");
if (! profileName)
return NS_ERROR_NULL_POINTER;
mProfile->MigrateProfile(profileName);
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::ProcessPREGInfo(const char* data)
{
NS_PRECONDITION(data != nsnull, "null ptr");
if (! data)
return NS_ERROR_NULL_POINTER;
mProfile->ProcessPREGInfo((char *)data);
return NS_OK;
}
NS_IMETHODIMP
ProfileServicesImpl::CloneProfile(const char* aProfileName)
{
NS_PRECONDITION(aProfileName != nsnull, "null ptr");
if (! aProfileName)
return NS_ERROR_NULL_POINTER;
mProfile->CloneProfile(aProfileName);
return NS_OK;
}