xref: /onnv-gate/usr/src/cmd/man/src/util/nsgmls.src/include/SdText.h (revision 0:68f95e015346)
1 // Copyright (c) 1995 James Clark
2 // See the file COPYING for copying permission.
3 #pragma ident	"%Z%%M%	%I%	%E% SMI"
4 
5 #ifndef SdText_INCLUDED
6 #define SdText_INCLUDED 1
7 
8 #ifdef __GNUG__
9 #pragma interface
10 #endif
11 
12 #include "types.h"
13 #include "StringOf.h"
14 #include "Vector.h"
15 #include "Location.h"
16 #include <stddef.h>
17 
18 #ifdef SP_NAMESPACE
19 namespace SP_NAMESPACE {
20 #endif
21 
22 struct SP_API SdTextItem {
23   SdTextItem();
24   Location loc;
25   size_t index;
26 };
27 
28 class SP_API SdText {
29 public:
30   SdText();
31   SdText(const Location &loc, Boolean lita);
32   void swap(SdText &);
33   void addChar(SyntaxChar, const Location &);
34   const String<SyntaxChar> &string() const;
35   Boolean lita() const;
36   Location endDelimLocation() const;
37 private:
38   Boolean lita_;
39   String<SyntaxChar> chars_;
40   Vector<SdTextItem> items_;
41   friend class SdTextIter;
42 };
43 
44 class SP_API SdTextIter {
45 public:
46   SdTextIter(const SdText &);
47   Boolean next(const SyntaxChar *&, size_t &, Location &);
48 private:
49   const SdText *ptr_;
50   size_t itemIndex_;
51 };
52 
53 inline
lita()54 Boolean SdText::lita() const
55 {
56   return lita_;
57 }
58 
59 inline
string()60 const String<SyntaxChar> &SdText::string() const
61 {
62   return chars_;
63 }
64 
65 #ifdef SP_NAMESPACE
66 }
67 #endif
68 
69 #endif /* not SdText_INCLUDED */
70