btrfs: [] on the end of a struct field is a variable length array.
[haiku.git] / headers / libs / alm / Tab.h
blob89df113a2e66528127a84a2eb52946ee677a5c10
1 /*
2 * Copyright 2006 - 2010, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef X_TAB_H
6 #define X_TAB_H
9 #include <Archivable.h>
10 #include <Referenceable.h>
12 #include "Variable.h"
15 namespace BALM {
18 class BALMLayout;
21 class TabBase : public BArchivable {
22 private:
23 TabBase();
24 TabBase(BMessage* archive);
25 virtual ~TabBase();
27 friend class BALMLayout;
28 friend class XTab;
29 friend class YTab;
30 struct BALMLayoutList;
32 bool IsInLayout(BALMLayout* layout);
33 bool AddedToLayout(BALMLayout* layout);
34 void LayoutLeaving(BALMLayout* layout);
35 bool IsSuitableFor(BALMLayout* layout);
37 BALMLayoutList* fLayouts;
41 /**
42 * Vertical grid line (x-tab).
44 class XTab : public Variable, public TabBase, public BReferenceable {
45 public:
46 virtual ~XTab();
48 static BArchivable* Instantiate(BMessage* archive);
49 protected:
50 friend class BALMLayout;
51 XTab(BALMLayout* layout);
53 private:
54 XTab(BMessage* archive);
55 uint32 _reserved[2];
59 class YTab : public Variable, public TabBase, public BReferenceable {
60 public:
61 virtual ~YTab();
63 static BArchivable* Instantiate(BMessage* archive);
64 protected:
65 friend class BALMLayout;
66 YTab(BALMLayout* layout);
67 private:
68 YTab(BMessage* archive);
69 uint32 _reserved[2];
73 } // namespace BALM
76 using BALM::XTab;
77 using BALM::YTab;
79 typedef BObjectList<XTab> XTabList;
80 typedef BObjectList<YTab> YTabList;
83 #endif // X_TAB_H