]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_codesigning/antlr2/antlr/CharInputBuffer.hpp
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_codesigning / antlr2 / antlr / CharInputBuffer.hpp
diff --git a/Security/libsecurity_codesigning/antlr2/antlr/CharInputBuffer.hpp b/Security/libsecurity_codesigning/antlr2/antlr/CharInputBuffer.hpp
new file mode 100644 (file)
index 0000000..ac2da0c
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef INC_CharInputBuffer_hpp__
+# define INC_CharInputBuffer_hpp__
+
+/* ANTLR Translator Generator
+ * Project led by Terence Parr at http://www.jGuru.com
+ * Software rights: http://www.antlr.org/license.html
+ *
+ * $Id:$
+ */
+
+# include <antlr/config.hpp>
+# include <antlr/InputBuffer.hpp>
+
+# ifdef HAS_NOT_CCTYPE_H
+#      include <ctype.h>
+# else
+#      include <cctype>
+# endif
+
+#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
+namespace antlr {
+#endif
+
+/** CharInputBuffer.hpp provides an InputBuffer for plain character arrays (buffers).
+ */
+class CharInputBuffer : public InputBuffer
+{
+public:
+       /** Construct a CharInputBuffer.hpp object with a char* buffer of 'size'
+        * if 'owner' is true, then the buffer will be delete[]-ed on destruction.
+        * @note it is assumed the buffer was allocated with new[]!
+        */
+       CharInputBuffer( unsigned char* buf, size_t size, bool owner = false )
+       : buffer(buf)
+       , ptr(buf)
+       , end(buf + size)
+       , delete_buffer(owner)
+       {
+       }
+
+       /** Destructor
+        * @note If you're using malloced data, then you probably need to change
+        * this destructor. Or better use this class as template for your own.
+        */
+       ~CharInputBuffer( void )
+       {
+               if( delete_buffer && buffer )
+                       delete [] buffer;
+       }
+
+       /** Reset the CharInputBuffer to initial state
+        * Called from LexerInputState::reset.
+        * @see LexerInputState
+        */
+       virtual inline void reset( void )
+       {
+               InputBuffer::reset();
+               ptr = buffer;
+       }
+
+       virtual int getChar( void )
+       {
+               return (ptr < end) ? *ptr++ : EOF;
+       }
+
+protected:
+       unsigned char* buffer;  ///< the buffer with data
+       unsigned char* ptr;             ///< position ptr into the buffer
+       unsigned char* end;             ///< end sentry for buffer
+       bool delete_buffer;             ///< flag signifying if we have to delete the buffer
+};
+
+#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
+}
+#endif
+
+#endif