/usr/include/thunderbird-11.0.1/nsDBFolderInfo.h is in thunderbird-dev 11.0.1+build1-0ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* This class encapsulates the global information about a folder stored in the
summary file.
*/
#ifndef _nsDBFolderInfo_H
#define _nsDBFolderInfo_H
#include "nsStringGlue.h"
#include "MailNewsTypes.h"
#include "mdb.h"
#include "nsTArray.h"
#include "nsIDBFolderInfo.h"
#include <time.h>
class nsMsgDatabase;
// again, this could inherit from nsISupports, but I don't see the need as of yet.
// I'm not sure it needs to be ref-counted (but I think it does).
// I think these getters and setters really need to go through mdb and not rely on the object
// caching the values. If this somehow turns out to be prohibitively expensive, we can invent
// some sort of dirty mechanism, but I think it turns out that these values will be cached by
// the MSG_FolderInfo's anyway.
class nsDBFolderInfo : public nsIDBFolderInfo
{
public:
friend class nsMsgDatabase;
nsDBFolderInfo(nsMsgDatabase *mdb);
virtual ~nsDBFolderInfo();
NS_DECL_ISUPPORTS
// interface methods.
NS_DECL_NSIDBFOLDERINFO
// create the appropriate table and row in a new db.
nsresult AddToNewMDB();
// accessor methods.
bool TestFlag(PRInt32 flags);
PRInt16 GetIMAPHierarchySeparator() ;
void SetIMAPHierarchySeparator(PRInt16 hierarchyDelimiter) ;
void ChangeImapTotalPendingMessages(PRInt32 delta);
void ChangeImapUnreadPendingMessages(PRInt32 delta) ;
nsresult InitFromExistingDB();
// get and set arbitrary property, aka row cell value.
nsresult SetPropertyWithToken(mdb_token aProperty, const nsAString &propertyStr);
nsresult SetUint32PropertyWithToken(mdb_token aProperty, PRUint32 propertyValue);
nsresult SetInt32PropertyWithToken(mdb_token aProperty, PRInt32 propertyValue);
nsresult GetPropertyWithToken(mdb_token aProperty, nsAString &resultProperty);
nsresult GetUint32PropertyWithToken(mdb_token aProperty, PRUint32 &propertyValue, PRUint32 defaultValue = 0);
nsresult GetInt32PropertyWithToken(mdb_token aProperty, PRInt32 &propertyValue, PRInt32 defaultValue = 0);
nsresult SetUint64Property(const char *aProperty, PRUint64 propertyValue);
nsresult GetUint64PropertyWithToken(mdb_token columnToken,
PRUint64 *propertyValue);
nsTArray<nsMsgKey> m_lateredKeys; // list of latered messages
protected:
// initialize from appropriate table and row in existing db.
nsresult InitMDBInfo();
nsresult LoadMemberVariables();
nsresult AdjustHighWater(nsMsgKey highWater, bool force);
void ReleaseExternalReferences(); // let go of any references to other objects.
PRUint64 m_folderSize;
PRInt32 m_expungedBytes; // sum of size of deleted messages in folder
PRUint32 m_folderDate;
nsMsgKey m_highWaterMessageKey; // largest news article number or imap uid whose header we've seen
// m_numUnreadMessages and m_numMessages can never be negative. 0 means 'no msgs'.
PRInt32 m_numUnreadMessages;
PRInt32 m_numMessages; // includes expunged and ignored messages
PRInt32 m_flags; // folder specific flags. This holds things like re-use thread pane,
// configured for off-line use, use default retrieval, purge article/header options
PRUint16 m_version; // for upgrading...
PRInt16 m_IMAPHierarchySeparator; // imap path separator
// mail only (for now)
// IMAP only
PRInt32 m_ImapUidValidity;
PRInt32 m_totalPendingMessages;
PRInt32 m_unreadPendingMessages;
// news only (for now)
nsMsgKey m_expiredMark; // Highest invalid article number in group - for expiring
// the db folder info will have to know what db and row it belongs to, since it is really
// just a wrapper around the singleton folder info row in the mdb.
nsMsgDatabase *m_mdb;
nsIMdbTable *m_mdbTable; // singleton table in db
nsIMdbRow *m_mdbRow; // singleton row in table;
nsCString m_charSet;
bool m_charSetOverride;
bool m_mdbTokensInitialized;
mdb_token m_rowScopeToken;
mdb_token m_tableKindToken;
// tokens for the pre-set columns - we cache these for speed, which may be silly
mdb_token m_mailboxNameColumnToken;
mdb_token m_numMessagesColumnToken;
mdb_token m_numUnreadMessagesColumnToken;
mdb_token m_flagsColumnToken;
mdb_token m_folderSizeColumnToken;
mdb_token m_expungedBytesColumnToken;
mdb_token m_folderDateColumnToken;
mdb_token m_highWaterMessageKeyColumnToken;
mdb_token m_imapUidValidityColumnToken;
mdb_token m_totalPendingMessagesColumnToken;
mdb_token m_unreadPendingMessagesColumnToken;
mdb_token m_expiredMarkColumnToken;
mdb_token m_versionColumnToken;
};
#endif
|