]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/rbbinode.h
ICU-62108.0.1.tar.gz
[apple/icu.git] / icuSources / common / rbbinode.h
index 68286792946087ae1890c7d945c34695e3edf22b..f3525960225500581fa084de067f199a12636c3f 100644 (file)
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
 /********************************************************************
  * COPYRIGHT:
- * Copyright (c) 2001-2003, International Business Machines Corporation and
+ * Copyright (c) 2001-2016, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************/
 
  * others. All Rights Reserved.
  ********************************************************************/
 
@@ -8,6 +10,7 @@
 #define RBBINODE_H
 
 #include "unicode/utypes.h"
 #define RBBINODE_H
 
 #include "unicode/utypes.h"
+#include "unicode/unistr.h"
 #include "unicode/uobject.h"
 
 //
 #include "unicode/uobject.h"
 
 //
@@ -79,6 +82,10 @@ class RBBINode : public UMemory {
         UBool         fLookAheadEnd;        // For endMark nodes, set TRUE if
                                             //   marking the end of a look-ahead rule.
 
         UBool         fLookAheadEnd;        // For endMark nodes, set TRUE if
                                             //   marking the end of a look-ahead rule.
 
+        UBool         fRuleRoot;            // True if this node is the root of a rule.
+        UBool         fChainIn;             // True if chaining into this rule is allowed
+                                            //     (no '^' present).
+
         UVector       *fFirstPosSet;
         UVector       *fLastPosSet;         // TODO: rename fFirstPos & fLastPos to avoid confusion.
         UVector       *fFollowPos;
         UVector       *fFirstPosSet;
         UVector       *fLastPosSet;         // TODO: rename fFirstPos & fLastPos to avoid confusion.
         UVector       *fFollowPos;
@@ -94,22 +101,19 @@ class RBBINode : public UMemory {
         void         findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &status);
 
 #ifdef RBBI_DEBUG
         void         findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &status);
 
 #ifdef RBBI_DEBUG
-        void        printNode();
-        void        printTree(UBool withHeading);
-#else
-        // Do-nothing inline functions for non-debug builds.  Can't make empty defines for member
-        //   functions - they won't compile at the call sites.
-        int         fakeField;
-        #define printNode() fakeField=0;
-        #define printTree(withHeading) fakeField=0;
+        static void printNodeHeader();
+        static void printNode(const RBBINode *n);
+        static void printTree(const RBBINode *n, UBool withHeading);
 #endif
 
     private:
         RBBINode &operator = (const RBBINode &other); // No defs.
         UBool operator == (const RBBINode &other);    // Private, so these functions won't accidently be used.
 
 #endif
 
     private:
         RBBINode &operator = (const RBBINode &other); // No defs.
         UBool operator == (const RBBINode &other);    // Private, so these functions won't accidently be used.
 
+#ifdef RBBI_DEBUG
+    public:
         int           fSerialNum;           //  Debugging aids.
         int           fSerialNum;           //  Debugging aids.
-        static int    gLastSerial;
+#endif
 };
 
 #ifdef RBBI_DEBUG
 };
 
 #ifdef RBBI_DEBUG