)
done
+ AC_MSG_CHECKING([for presence of older antlr3AsciiFileStreamNew()])
+ AC_LINK_IFELSE(
+ [
+ #include <antlr3.h>
+
+ int main() {
+ pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+ pANTLR3_INPUT_STREAM input = antlr3AsciiFileStreamNew(fName);
+ return 0;
+ }
+ ],
+ [
+ AC_MSG_RESULT([found it (must be antlr3 3.2 or similar)])
+ CVC4_ANTLR3_OLD_INPUT_STREAM=0
+ ],
+ [
+ AC_MSG_RESULT(failed)
+ AC_MSG_CHECKING([for presence of newer antlr3FileStreamNew()])
+ AC_LINK_IFELSE(
+ [
+ #include <antlr3.h>
+
+ int main() {
+ pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+ pANTLR3_INPUT_STREAM input = antlr3FileStreamNew(fName, ANTLR3_ENC_8BIT);
+ return 0;
+ }
+ ],
+ [
+ AC_MSG_RESULT([found it (must be antlr3 3.4 or similar)])
+ CVC4_ANTLR3_OLD_INPUT_STREAM=0
+ ],
+ [
+ AC_MSG_ERROR([cannot figure out how to create an antlr3 input stream, bailing..])
+ ]
+ )
+ ]
+ )
+
+ AC_DEFINE_UNQUOTED(CVC4_ANTLR3_OLD_INPUT_STREAM, [$CVC4_ANTLR3_OLD_INPUT_STREAM], [Defined to 1 if we have libantlr3c v3.2 or equivalent.])
+
# Return the old compile variables and pop the language.
LIBS="$OLD_LIBS"
CPPFLAGS="$OLD_CPPFLAGS"
if( useMmap ) {
input = MemoryMappedInputBufferNew(name);
} else {
+ // libantlr3c v3.2 isn't source-compatible with v3.4
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
input = antlr3AsciiFileStreamNew((pANTLR3_UINT8) name.c_str());
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ input = antlr3FileStreamNew((pANTLR3_UINT8) name.c_str(), ANTLR3_ENC_8BIT);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
}
if( input == NULL ) {
throw InputStreamException("Couldn't open file: " + name);
}
/* Create an ANTLR input backed by the buffer. */
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
pANTLR3_INPUT_STREAM inputStream =
antlr3NewAsciiStringInPlaceStream((pANTLR3_UINT8) basep,
cp - basep,
(pANTLR3_UINT8) strdup(name.c_str()));
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ pANTLR3_INPUT_STREAM inputStream =
+ antlr3StringStreamNew((pANTLR3_UINT8) basep,
+ ANTLR3_ENC_8BIT,
+ cp - basep,
+ (pANTLR3_UINT8) strdup(name.c_str()));
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
if( inputStream==NULL ) {
throw InputStreamException("Couldn't initialize input: " + name);
}
char* inputStr = strdup(input.c_str());
char* nameStr = strdup(name.c_str());
AlwaysAssert( inputStr!=NULL && nameStr!=NULL );
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
pANTLR3_INPUT_STREAM inputStream =
antlr3NewAsciiStringInPlaceStream((pANTLR3_UINT8) inputStr,
input.size(),
(pANTLR3_UINT8) nameStr);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ pANTLR3_INPUT_STREAM inputStream =
+ antlr3StringStreamNew((pANTLR3_UINT8) inputStr,
+ ANTLR3_ENC_8BIT,
+ input.size(),
+ (pANTLR3_UINT8) nameStr);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
if( inputStream==NULL ) {
throw InputStreamException("Couldn't initialize string input: '" + input + "'");
}
// Call the common 8 bit ASCII input stream handler
// Initializer type thingy doobry function.
//
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
antlr3AsciiSetupStream(input, ANTLR3_CHARSTREAM);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ antlr38BitSetupStream(input);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
// Now we can set up the file name
//