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
|
/*
UserinfoEx plugin for Miranda IM
Copyright:
© 2006-2010 DeathAxe, Yasnovidyashii, Merlin, K. Romanov, Kreol
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#pragma once
namespace DB {
namespace MetaContact{
INT_PTR SubCount (HANDLE hMetaContact);
INT_PTR SubDefNum (HANDLE hMetaContact);
HANDLE Sub (HANDLE hMetaContact, int idx);
BYTE IsSub (HANDLE hContact);
HANDLE GetMeta (HANDLE hContact);
} /* namespace MetaContact */
/**
* This namespace contains all functions used to access
* or modify contacts in the database.
**/
namespace Contact {
LPTSTR DisplayName (HANDLE hContact);
LPSTR Proto (HANDLE hContact);
INT_PTR GetCount ();
HANDLE Add();
BYTE Delete (HANDLE hContact);
DWORD WhenAdded (DWORD dwUIN, LPCSTR szBaseProto);
} /* namespace Contact */
namespace Module {
void Delete (HANDLE hContact, LPCSTR pszModule);
BYTE IsEmpty (HANDLE hContact, LPCSTR pszModule);
BYTE IsMeta (LPCSTR pszModule);
BYTE IsMetaAndScan (LPCSTR pszModule);
} /* namespace Module */
/**
* This namespace defines all functions used to read and write settings from the database.
**/
namespace Setting {
BYTE Get (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting, DBVARIANT *dbv, const BYTE nType);
static FORCEINLINE
BYTE GetAsIs (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting, DBVARIANT *dbv) {return Get(hContact, pszModule, pszSetting, dbv, 0); }
static FORCEINLINE
BYTE GetAString (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting, DBVARIANT *dbv) {return Get(hContact, pszModule, pszSetting, dbv, DBVT_ASCIIZ); }
LPSTR GetAString (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting);
static FORCEINLINE
BYTE GetWString (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting, DBVARIANT *dbv) {return Get(hContact, pszModule, pszSetting, dbv, DBVT_WCHAR); }
LPWSTR GetWString (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting);
static FORCEINLINE
BYTE GetUString (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting, DBVARIANT *dbv) {return Get(hContact, pszModule, pszSetting, dbv, DBVT_UTF8); }
BYTE GetEx (HANDLE hContact, LPCSTR pszModule, LPCSTR szProto, LPCSTR pszSetting, DBVARIANT *dbv, const BYTE nType);
static FORCEINLINE
BYTE GetAsIsEx (HANDLE hContact, LPCSTR pszModule, LPCSTR szProto, LPCSTR pszSetting, DBVARIANT *dbv) { return GetEx(hContact, pszModule, szProto, pszSetting, dbv, 0); }
static FORCEINLINE
LPSTR GetAStringEx (HANDLE hContact, LPCSTR pszModule, LPCSTR szProto, LPCSTR pszSetting) { DBVARIANT dbv; return (!GetEx(hContact, pszModule, szProto, pszSetting, &dbv, DBVT_ASCIIZ) && dbv.type == DBVT_ASCIIZ) ? dbv.pszVal : NULL; }
static FORCEINLINE
LPWSTR GetWStringEx (HANDLE hContact, LPCSTR pszModule, LPCSTR szProto, LPCSTR pszSetting) { DBVARIANT dbv; return (!GetEx(hContact, pszModule, szProto, pszSetting, &dbv, DBVT_WCHAR) && dbv.type == DBVT_WCHAR) ? dbv.pwszVal : NULL; }
static FORCEINLINE
LPSTR GetUStringEx (HANDLE hContact, LPCSTR pszModule, LPCSTR szProto, LPCSTR pszSetting) { DBVARIANT dbv; return (!GetEx(hContact, pszModule, szProto, pszSetting, &dbv, DBVT_UTF8) && dbv.type == DBVT_UTF8) ? dbv.pszVal : NULL; }
WORD GetCtrl (HANDLE hContact, LPCSTR pszModule, LPCSTR szSubModule, LPCSTR szProto, LPCSTR pszSetting, DBVARIANT *dbv, const BYTE nType);
static FORCEINLINE
WORD GetAsIsCtrl (HANDLE hContact, LPCSTR pszModule, LPCSTR szSubModule, LPCSTR szProto, LPCSTR pszSetting, DBVARIANT *dbv) { return GetCtrl(hContact, pszModule, szSubModule, szProto, pszSetting, dbv, 0); }
static FORCEINLINE
WORD GetAStringCtrl(HANDLE hContact, LPCSTR pszModule, LPCSTR szSubModule, LPCSTR szProto, LPCSTR pszSetting, DBVARIANT *dbv) { return GetCtrl(hContact, pszModule, szSubModule, szProto, pszSetting, dbv, DBVT_ASCIIZ); }
static FORCEINLINE
WORD GetWStringCtrl(HANDLE hContact, LPCSTR pszModule, LPCSTR szSubModule, LPCSTR szProto, LPCSTR pszSetting, DBVARIANT *dbv) { return GetCtrl(hContact, pszModule, szSubModule, szProto, pszSetting, dbv, DBVT_WCHAR); }
static FORCEINLINE
WORD GetUStringCtrl(HANDLE hContact, LPCSTR pszModule, LPCSTR szSubModule, LPCSTR szProto, LPCSTR pszSetting, DBVARIANT *dbv) { return GetCtrl(hContact, pszModule, szSubModule, szProto, pszSetting, dbv, DBVT_UTF8); }
BYTE GetStatic (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting, LPSTR szValue, int cchValue);
#define GetTString GetWString
#define GetTStringEx GetWStringEx
#define GetTStringCtrl GetWStringCtrl
#define WriteTString WriteWString
/**
* misc operations
**/
BYTE Exists (HANDLE hContact, LPCSTR pszModule, LPCSTR pszSetting);
void DeleteArray (HANDLE hContact, LPCSTR pszModule, LPCSTR pszFormat, int iStart);
} /* namespace Setting */
namespace Variant {
BYTE ConvertString (DBVARIANT* dbv, const BYTE destType);
BYTE dbv2String (DBVARIANT* dbv, const BYTE destType);
} /* namespace Variant */
namespace Event {
HANDLE FindLast (HANDLE hContact);
BYTE GetInfo (HANDLE hEvent, DBEVENTINFO *dbei);
BYTE GetInfoWithData(HANDLE hEvent, DBEVENTINFO *dbei);
DWORD GetTime (HANDLE hEvent);
BYTE Exists (HANDLE hContact, HANDLE& hDbExistingEvent, DBEVENTINFO *dbei);
} /* namespace Events */
/**
* enumerating
**/
class CEnumList : public ::LIST<CHAR>
{
static int EnumProc (LPCSTR pszName, DWORD ofsModuleName, LPARAM lParam);
static int EnumSettingsProc(LPCSTR pszName, LPARAM lParam);
static int CompareProc (LPCSTR p1, LPCSTR p2);
public:
CEnumList();
~CEnumList();
LPSTR Insert(LPCSTR str);
INT_PTR EnumModules();
INT_PTR EnumSettings(HANDLE hContact, LPCSTR pszModule);
};
} /* namespace DB */
|