summaryrefslogtreecommitdiff
path: root/src/include/xbtag.h
blob: 9b518a35282d7a9a5a494b2ff17d8f1fc49892f2 (plain)
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
/*  xbtag.h

XBase64 Software Library

Copyright (c) 1997,2003,2014,2022 Gary A Kunkel

The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.

Email Contact:

    XDB-devel@lists.sourceforge.net
    XDB-users@lists.sourceforge.net

*/


#ifndef __XB_XBTAG_H__
#define __XB_XBTAG_H__

//#ifdef  CMAKE_COMPILER_IS_GNUCC
//#pragma interface
//#endif

namespace xb{


#ifdef XB_INDEX_SUPPORT

class XBDLLEXPORT xbIx;



//! @brief xbTag is used for linking index tags to a table (aka dbf file).
/*!

  Each dbf file (or table) can have zero, one or many tags.
  Each tag is maintained in a linked list of xbTags.

  NDX index files contain only one index tag.<br>
  MDX index files can contain one to 47 index tags.  The production MDX file is opened automatically
  and the tags are  added to the tag list.

*/

class XBDLLEXPORT xbTag {

 public:
  xbTag( xbIx *pIx, void *vpTag, xbString &sType, xbString &sTagName, xbString &sExpression, xbString &sFilter, xbBool bUnique, xbBool bSort );

  xbIx   *GetIx()                  const;
  void   *GetVpTag()               const;
  const  xbString &GetType()       const;
  const  xbString &GetTagName()    const;
  const  xbString &GetExpression() const;
  const  xbString &GetFilter()     const;
  xbBool GetUnique()               const;
  xbBool GetSort()                 const;

 private:
  xbIx     *pIx;
  void     *vpTag;
  xbString sType;
  xbString sTagName;
  xbString sExpression;
  xbString sFilter;
  xbBool   bUnique;
  xbBool   bSort;          // 0 = Ascending, 1 = Descending
};

#endif // XB_INDEX_SUPPORT


}        /* namespace xb    */
#endif   /* __XB_TAG_H__ */