blob: 50503f98483b054417d59ed69cf6de5736ef8151 [file] [log] [blame]
/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
/* -*-C++-*-
**************************************************************************
*
* File: NAError.C
* Description: New Architecture Error Handler
* Created: 01/24/95
* Language: C++
*
*
*
**************************************************************************
*/
#include "NAError.h"
#include <iostream>
// -----------------------------------------------------------------------
// NAErrorParamArray
// -----------------------------------------------------------------------
NAErrorParamArray::NAErrorParamArray
(Lng32 numParams,
NAErrorParam * errParam1,NAErrorParam * errParam2,
NAErrorParam * errParam3,NAErrorParam * errParam4,
NAErrorParam * errParam5,NAErrorParam * errParam6,
NAErrorParam * errParam7,NAErrorParam * errParam8,
NAErrorParam * errParam9,NAErrorParam * errParam10)
: numParams_(numParams)
{
array_ = new NAErrorParamArrayElement[numParams];
NAErrorParam * errParamPtr;
for (Lng32 index = 0; index < numParams; index ++)
{
if (index == 0) errParamPtr = errParam1;
else if (index == 1) errParamPtr = errParam2;
else if (index == 2) errParamPtr = errParam3;
else if (index == 3) errParamPtr = errParam4;
else if (index == 4) errParamPtr = errParam5;
else if (index == 5) errParamPtr = errParam6;
else if (index == 6) errParamPtr = errParam7;
else if (index == 7) errParamPtr = errParam8;
else if (index == 8) errParamPtr = errParam9;
else if (index == 9) errParamPtr = errParam10;
array_[index].errParam_ = errParamPtr;
}
} // NAErrorParamArray::NAErrorParamArray()
NAErrorParamArray::~NAErrorParamArray (void)
{
for (Int32 index=0; index<entries(); index++)
{
if (array_[index].errParam_ != 0) delete array_[index].errParam_;
};
delete array_;
};
// -----------------------------------------------------------------------
// Constructor
// -----------------------------------------------------------------------
NAError::NAError(const NAErrorCode errCode,
const NAErrorType errType,
const NASubsys subsys,
NAErrorParamArray * errParams,
char * procName,
const ULng32 lineNumber,
const ULng32 offset
)
: errCode_(errCode), errType_(errType), subsysId_(subsys),
procName_(procName),
lineNumber_(lineNumber), offset_(offset), next_(0)
{
errParams_ = errParams;
}
NAError::~NAError()
{
if (errParams_)
delete errParams_;
if (procName_ )
delete procName_;
} // NAError::~NAError()
NAErrorStack::~NAErrorStack()
{
NAErrorStack::clear();
} // NAErrorStack::~NAErrorStack()
void NAErrorStack::clear()
{
NAError * errorPtr = errEntry_;
NAError * nextPtr;
while (errorPtr)
{
nextPtr = errorPtr->getNext();
delete errorPtr;
errorPtr = nextPtr;
}
errEntry_ = 0;
nextEntry_ = errEntry_;
numEntries_ = 0;
} // NAErrorStack::clear
void NAErrorStack::addErrEntry(NAError * errPtr)
{
if (numEntries_ <= maxEntries_)
{
errPtr->setNext(errEntry_);
errEntry_ = errPtr;
numEntries_++;
}
else
; // I believe SQL2 wants us to issue an error here.
} // NAErrorStack::addErrEntry()
NAError * NAErrorStack::getNext()
{
if (iterEntries_ <= numEntries_)
{
iterEntries_++;
NAError * ne = nextEntry_;
if (nextEntry_ != 0)
nextEntry_ = nextEntry_->getNext(); // init with -> to follower
return ne;
}
else
return 0;
} // NAErrorStack::getNext()
NAError * NAErrorStack::getFirst()
{
nextEntry_ = errEntry_;
iterEntries_ = 0;
return getNext();
} // NAErrorStack::getFirst()