12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #ifndef ECNAMEDPROP_H
- #define ECNAMEDPROP_H
- #include <kopano/zcdefs.h>
- #include <mapidefs.h>
- #include <map>
- class WSTransport;
- struct ltmap {
- bool operator()(const MAPINAMEID *a, const MAPINAMEID *b) const
- {
- int r = memcmp(a->lpguid, b->lpguid, sizeof(GUID));
-
- if(r<0)
- return false;
- else if(r>0)
- return true;
- else {
- if(a->ulKind != b->ulKind)
- return a->ulKind > b->ulKind;
- switch(a->ulKind) {
- case MNID_ID:
- return a->Kind.lID > b->Kind.lID;
- case MNID_STRING:
- return wcscmp(a->Kind.lpwstrName, b->Kind.lpwstrName) < 0;
- default:
- return false;
- }
- }
- }
- };
- class ECNamedProp _kc_final {
- public:
- ECNamedProp(WSTransport *lpTransport);
- virtual ~ECNamedProp();
- virtual HRESULT GetNamesFromIDs(LPSPropTagArray *lppPropTags, LPGUID lpPropSetGuid, ULONG ulFlags, ULONG *lpcPropNames, LPMAPINAMEID **lpppPropNames);
- virtual HRESULT GetIDsFromNames(ULONG cPropNames, LPMAPINAMEID *lppPropNames, ULONG ulFlags, LPSPropTagArray *lppPropTags);
- private:
- std::map<MAPINAMEID *,ULONG,ltmap> mapNames;
- WSTransport * lpTransport;
- HRESULT ResolveLocal(MAPINAMEID *lpName, ULONG *ulId);
- HRESULT ResolveCache(MAPINAMEID *lpName, ULONG *ulId);
- HRESULT ResolveReverseLocal(ULONG ulId, LPGUID lpGuid, ULONG ulFlags, void *lpBase, MAPINAMEID **lppName);
- HRESULT ResolveReverseCache(ULONG ulId, LPGUID lpGuid, ULONG ulFlags, void *lpBase, MAPINAMEID **lppName);
- HRESULT UpdateCache(ULONG ulId, MAPINAMEID *lpName);
- HRESULT HrCopyNameId(LPMAPINAMEID lpSrc, LPMAPINAMEID *lppDst, void *lpBase);
- };
- #endif
|