michael@0: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "nsDialogParamBlock.h" michael@0: #include "nsString.h" michael@0: #include "nsReadableUtils.h" michael@0: michael@0: NS_IMPL_ISUPPORTS(nsDialogParamBlock, nsIDialogParamBlock) michael@0: michael@0: nsDialogParamBlock::nsDialogParamBlock() : mNumStrings(0), mString(nullptr) michael@0: { michael@0: for(int32_t i = 0; i < kNumInts; i++) michael@0: mInt[i] = 0; michael@0: } michael@0: michael@0: nsDialogParamBlock::~nsDialogParamBlock() michael@0: { michael@0: delete [] mString; michael@0: } michael@0: michael@0: NS_IMETHODIMP nsDialogParamBlock::SetNumberStrings(int32_t inNumStrings) michael@0: { michael@0: if (mString != nullptr) michael@0: return NS_ERROR_ALREADY_INITIALIZED; michael@0: michael@0: mString = new nsString[inNumStrings]; michael@0: if (!mString) michael@0: return NS_ERROR_OUT_OF_MEMORY; michael@0: mNumStrings = inNumStrings; michael@0: return NS_OK; michael@0: } michael@0: michael@0: michael@0: NS_IMETHODIMP nsDialogParamBlock::GetInt(int32_t inIndex, int32_t *_retval) michael@0: { michael@0: nsresult rv = InBounds(inIndex, kNumInts); michael@0: if (rv == NS_OK) michael@0: *_retval = mInt[inIndex]; michael@0: return rv; michael@0: } michael@0: michael@0: NS_IMETHODIMP nsDialogParamBlock::SetInt(int32_t inIndex, int32_t inInt) michael@0: { michael@0: nsresult rv = InBounds(inIndex, kNumInts); michael@0: if (rv == NS_OK) michael@0: mInt[inIndex]= inInt; michael@0: return rv; michael@0: } michael@0: michael@0: michael@0: NS_IMETHODIMP nsDialogParamBlock::GetString(int32_t inIndex, char16_t **_retval) michael@0: { michael@0: if (mNumStrings == 0) michael@0: SetNumberStrings(kNumStrings); michael@0: nsresult rv = InBounds(inIndex, mNumStrings); michael@0: if (rv == NS_OK) michael@0: *_retval = ToNewUnicode(mString[inIndex]); michael@0: return rv; michael@0: } michael@0: michael@0: NS_IMETHODIMP nsDialogParamBlock::SetString(int32_t inIndex, const char16_t *inString) michael@0: { michael@0: if (mNumStrings == 0) michael@0: SetNumberStrings(kNumStrings); michael@0: nsresult rv = InBounds(inIndex, mNumStrings); michael@0: if (rv == NS_OK) michael@0: mString[inIndex]= inString; michael@0: return rv; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: nsDialogParamBlock::GetObjects(nsIMutableArray * *aObjects) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aObjects); michael@0: NS_IF_ADDREF(*aObjects = mObjects); michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: nsDialogParamBlock::SetObjects(nsIMutableArray * aObjects) michael@0: { michael@0: mObjects = aObjects; michael@0: return NS_OK; michael@0: } michael@0: michael@0: