PartialRelation.cpp [plain text]
#include "PartialRelation.h"
#include "TableRelation.h"
#include "CommonCode.h"
PartialRelation::PartialRelation (CSSM_DB_RECORDTYPE recordType, int numberOfColumns, columnInfoLoader *theColumnInfo) :
Relation (recordType), mNumberOfColumns (numberOfColumns)
{
if (mNumberOfColumns == 0) {
mColumnInfo = NULL;
return;
}
mColumnInfo = new columnInfo[mNumberOfColumns];
for (int i = 0; i < mNumberOfColumns; ++i) {
mColumnInfo[i].mColumnName = new StringValue (theColumnInfo[i].mColumnName);
mColumnInfo[i].mColumnID = theColumnInfo[i].mColumnID;
mColumnInfo[i].mColumnFormat = theColumnInfo[i].mColumnFormat;
}
}
PartialRelation::~PartialRelation ()
{
if (mColumnInfo != NULL) {
for (int i = 0; i < mNumberOfColumns; ++i)
delete mColumnInfo[i].mColumnName;
delete mColumnInfo;
}
}
StringValue *PartialRelation::GetColumnName (int i)
{
return mColumnInfo[i].mColumnName;
}
int PartialRelation::GetNumberOfColumns ()
{
return mNumberOfColumns;
}
uint32 PartialRelation::GetColumnIDs (int i)
{
return mColumnInfo[i].mColumnID;
}
int PartialRelation::GetColumnNumber (const char* columnName)
{
for (int i = 0; i < mNumberOfColumns; ++i) {
const char *s = mColumnInfo[i].mColumnName->GetRawValue();
if (strncmp(s, columnName, strlen(s)) == 0)
return i;
}
return -1;
}
int PartialRelation::GetColumnNumber (uint32 columnID)
{
for (int i = 0; i < mNumberOfColumns; ++i) {
if (mColumnInfo[i].mColumnID == columnID)
return i;
}
return -1;
}