mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-25 20:01:50 +00:00
add api's to convert back and forth between yarn and ints and strings
This commit is contained in:
parent
ad3a2965f8
commit
0a2ce7af7f
@ -94,8 +94,12 @@ public:
|
||||
|
||||
static nsMsgDatabase* FindInCache(nsFilePath &dbName);
|
||||
|
||||
// helper function to copy an nsString to a yarn.
|
||||
// helper functions to copy an nsString to a yarn, int32 to yarn, and vice versa.
|
||||
static struct mdbYarn *nsStringToYarn(struct mdbYarn *yarn, nsString *str);
|
||||
static struct mdbYarn *UInt32ToYarn(struct mdbYarn *yarn, PRUint32 i);
|
||||
static void YarnTonsString(struct mdbYarn *yarn, nsString *str);
|
||||
static void YarnToUInt32(struct mdbYarn *yarn, PRUint32 *i);
|
||||
|
||||
static void CleanupCache();
|
||||
#ifdef DEBUG
|
||||
static int GetNumInCache(void) {return(GetDBCache()->GetSize());}
|
||||
|
@ -33,6 +33,7 @@ class nsMsgHdr
|
||||
{
|
||||
public:
|
||||
nsMsgHdr();
|
||||
nsMsgHdr(mdbRow *dbRow);
|
||||
virtual ~nsMsgHdr();
|
||||
nsrefcnt AddRef(void);
|
||||
nsrefcnt Release(void);
|
||||
|
@ -386,14 +386,43 @@ nsresult nsMsgDatabase::CreateNewHdr(PRBool *newThread, MessageHdrStruct *hdrStr
|
||||
if (NS_SUCCEEDED(err))
|
||||
{
|
||||
struct mdbYarn yarn;
|
||||
char int32StrBuf[20];
|
||||
|
||||
yarn.mYarn_Grow = NULL;
|
||||
hdrRow->AddColumn(GetEnv(), m_subjectColumnToken, nsStringToYarn(&yarn, &hdrStruct->m_author));
|
||||
hdrRow->AddColumn(GetEnv(), m_subjectColumnToken, nsStringToYarn(&yarn, &hdrStruct->m_subject));
|
||||
delete[] yarn.mYarn_Buf; // won't need this when we have nsCString
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_senderColumnToken, nsStringToYarn(&yarn, &hdrStruct->m_author));
|
||||
delete[] yarn.mYarn_Buf; // won't need this when we have nsCString
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_messageIdColumnToken, nsStringToYarn(&yarn, &hdrStruct->m_messageId));
|
||||
delete[] yarn.mYarn_Buf; // won't need this when we have nsCString
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_referencesColumnToken, nsStringToYarn(&yarn, &hdrStruct->m_references));
|
||||
delete[] yarn.mYarn_Buf; // won't need this when we have nsCString
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_recipientsColumnToken, nsStringToYarn(&yarn, &hdrStruct->m_recipients));
|
||||
delete[] yarn.mYarn_Buf; // won't need this when we have nsCString
|
||||
|
||||
yarn.mYarn_Buf = int32StrBuf;
|
||||
yarn.mYarn_Size = sizeof(int32StrBuf);
|
||||
yarn.mYarn_Fill = sizeof(int32StrBuf);
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_dateColumnToken, UInt32ToYarn(&yarn, hdrStruct->m_date));
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_messageSizeColumnToken, UInt32ToYarn(&yarn, hdrStruct->m_messageSize));
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_flagsColumnToken, UInt32ToYarn(&yarn, hdrStruct->m_flags));
|
||||
|
||||
hdrRow->AddColumn(GetEnv(), m_priorityColumnToken, UInt32ToYarn(&yarn, hdrStruct->m_priority));
|
||||
|
||||
err = m_mdbAllMsgHeadersTable->AddRow(GetEnv(), hdrRow);
|
||||
}
|
||||
|
||||
if (err == NS_OK)
|
||||
{
|
||||
*newHdr = new nsMsgHdr(hdrRow);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -406,3 +435,25 @@ nsresult nsMsgDatabase::CreateNewHdr(PRBool *newThread, MessageHdrStruct *hdrStr
|
||||
return yarn;
|
||||
}
|
||||
|
||||
/* static */struct mdbYarn *nsMsgDatabase::UInt32ToYarn(struct mdbYarn *yarn, PRUint32 i)
|
||||
{
|
||||
PR_snprintf((char *) yarn->mYarn_Buf, yarn->mYarn_Size, "%uld", i);
|
||||
yarn->mYarn_Fill = PL_strlen((const char *) yarn->mYarn_Buf) + 1;
|
||||
yarn->mYarn_Form = 0; // what to do with this? Should be parsed out of the mime2 header?
|
||||
return yarn;
|
||||
}
|
||||
|
||||
/* static */void nsMsgDatabase::YarnTonsString(struct mdbYarn *yarn, nsString *str)
|
||||
{
|
||||
str->SetString((const char *) yarn->mYarn_Buf, yarn->mYarn_Fill);
|
||||
}
|
||||
|
||||
// convenient function for atol on int32's
|
||||
int32 atoint32(char *ascii);
|
||||
|
||||
/* static */void nsMsgDatabase::YarnToUInt32(struct mdbYarn *yarn, PRUint32 *i)
|
||||
{
|
||||
char *endPtr;
|
||||
*i = XP_STRTOUL((char *) yarn->mYarn_Buf, &endPtr, yarn->mYarn_Fill);
|
||||
}
|
||||
|
||||
|
@ -21,11 +21,18 @@
|
||||
|
||||
nsMsgHdr::nsMsgHdr()
|
||||
{
|
||||
mRefCnt = 0;
|
||||
mRefCnt = 1;
|
||||
m_mdb = NULL;
|
||||
m_mdbRow = NULL;
|
||||
}
|
||||
|
||||
nsMsgHdr::nsMsgHdr(mdbRow *dbRow)
|
||||
{
|
||||
mRefCnt = 1;
|
||||
m_mdb = NULL;
|
||||
m_mdbRow = dbRow;
|
||||
}
|
||||
|
||||
nsMsgHdr::~nsMsgHdr()
|
||||
{
|
||||
if (m_mdbRow)
|
||||
|
Loading…
x
Reference in New Issue
Block a user