File: itemid.h

package info (click to toggle)
wxwidgets3.0 3.0.5.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 120,464 kB
  • sloc: cpp: 896,633; makefile: 52,303; ansic: 21,971; sh: 5,713; python: 2,940; xml: 1,534; perl: 264; javascript: 33
file content (61 lines) | stat: -rw-r--r-- 2,056 bytes parent folder | download | duplicates (12)
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
///////////////////////////////////////////////////////////////////////////////
// Name:        wx/itemid.h
// Purpose:     wxItemId class declaration.
// Author:      Vadim Zeitlin
// Created:     2011-08-17
// Copyright:   (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence:     wxWindows licence
///////////////////////////////////////////////////////////////////////////////

#ifndef _WX_ITEMID_H_
#define _WX_ITEMID_H_

// ----------------------------------------------------------------------------
// wxItemId: an opaque item identifier used with wx{Tree,TreeList,DataView}Ctrl.
// ----------------------------------------------------------------------------

// The template argument T is typically a pointer to some opaque type. While
// wxTreeItemId and wxDataViewItem use a pointer to void, this is dangerous and
// not recommended for the new item id classes.
template <typename T>
class wxItemId
{
public:
    typedef T Type;

    // This ctor is implicit which is fine for non-void* types, but if you use
    // this class with void* you're strongly advised to make the derived class
    // ctor explicit as implicitly converting from any pointer is simply too
    // dangerous.
    wxItemId(Type item = NULL) : m_pItem(item) { }

    // Default copy ctor, assignment operator and dtor are ok.

    bool IsOk() const { return m_pItem != NULL; }
    Type GetID() const { return m_pItem; }
    operator const Type() const { return m_pItem; }

    // This is used for implementation purposes only.
    Type operator->() const { return m_pItem; }

    void Unset() { m_pItem = NULL; }

    // This field is public *only* for compatibility with the old wxTreeItemId
    // implementation and must not be used in any new code.
//private:
    Type m_pItem;
};

template <typename T>
bool operator==(const wxItemId<T>& left, const wxItemId<T>& right)
{
    return left.GetID() == right.GetID();
}

template <typename T>
bool operator!=(const wxItemId<T>& left, const wxItemId<T>& right)
{
    return !(left == right);
}

#endif // _WX_ITEMID_H_