Revision: 21574
Author: gervandiepen
Date: Tue Mar 10 13:52:15 2015 UTC
Log: Merged trunk into nov14
https://code.google.com/p/casacore/source/detail?r=21574
Modified:
/branches/nov14
/branches/nov14/build-tools
/branches/nov14/build-tools/doxygen_pp
/branches/nov14/casa
/branches/nov14/coordinates
/branches/nov14/fits
/branches/nov14/fits/apps
/branches/nov14/images
/branches/nov14/images/Images/ImageExprGram.cc
/branches/nov14/images/Images/ImageExprParse.cc
/branches/nov14/images/apps
/branches/nov14/lattices
/branches/nov14/measures
/branches/nov14/measures/apps
/branches/nov14/measures/fortran
/branches/nov14/mirlib
/branches/nov14/ms
/branches/nov14/msfits
/branches/nov14/msfits/apps
/branches/nov14/scimath
/branches/nov14/scimath_f
/branches/nov14/tables
/branches/nov14/tables/TaQL/TableGram.cc
=======================================
--- /branches/nov14/images/Images/ImageExprGram.cc Wed Jan 28 10:01:12 2015
UTC
+++ /branches/nov14/images/Images/ImageExprGram.cc Tue Mar 10 13:52:15 2015
UTC
@@ -67,9 +67,16 @@
{
ImageExprGramrestart (ImageExprGramin);
yy_start = 1;
+ // Save global state for re-entrancy.
+ const char* savStrpImageExprGram = strpImageExprGram;
+ Int savPosImageExprGram= posImageExprGram;
strpImageExprGram = command.chars(); // get pointer to command
string
posImageExprGram = 0; // initialize string position
- return ImageExprGramparse(); // parse command string
+ int sts = ImageExprGramparse(); // parse command string
+ // Restore global state.
+ strpImageExprGram = savStrpImageExprGram;
+ posImageExprGram= savPosImageExprGram;
+ return sts;
}
//# Give the string position.
=======================================
--- /branches/nov14/images/Images/ImageExprParse.cc Wed Feb 18 09:15:05
2015 UTC
+++ /branches/nov14/images/Images/ImageExprParse.cc Tue Mar 10 13:52:15
2015 UTC
@@ -68,6 +68,27 @@
//# Hold a pointer to the last HDF5 file to lookup unqualified region
names.
static CountedPtr<HDF5File> theLastHDF5;
+#define SAVE_GLOBALS \
+ const Block<LatticeExprNode>* savTempLattices=theTempLattices; \
+ const PtrBlock<const ImageRegion*>* savTempRegions=theTempRegions; \
+ String savDirName=theDirName; \
+ Block<void*> savNodes=theNodes; \
+ Block<Bool> savNodesType=theNodesType; \
+ uInt savNrNodes=theNrNodes; \
+ Table savLastTable=theLastTable; \
+ CountedPtr<HDF5File> savLastHDF5=theLastHDF5;
+
+#define RESTORE_GLOBALS \
+ theTempLattices=savTempLattices; \
+ theTempRegions=savTempRegions; \
+ theDirName=savDirName; \
+ theNodes=savNodes; \
+ theNodesType=savNodesType; \
+ theNrNodes=savNrNodes; \
+ theLastTable=savLastTable; \
+ theLastHDF5=savLastHDF5;
+
+
// Clear the global info.
void imageExprParse_clear()
{
@@ -181,6 +202,8 @@
const PtrBlock<const ImageRegion*>& tempRegions,
const String& dirName)
{
+ // Save the global variables to make it re-entrant.
+ SAVE_GLOBALS;
theTempLattices = &tempLattices;
theTempRegions = &tempRegions;
theDirName = dirName;
@@ -209,6 +232,8 @@
throw (AipsError(message + '\n' + "Scanned so far: " +
command.before(imageExprGramPosition())));
}
+ // Restore the global variables to make it re-entrant.
+ RESTORE_GLOBALS;
return node;
}
=======================================
--- /branches/nov14/tables/TaQL/TableGram.cc Wed Dec 10 08:06:42 2014 UTC
+++ /branches/nov14/tables/TaQL/TableGram.cc Tue Mar 10 13:52:15 2015 UTC
@@ -72,9 +72,16 @@
{
TableGramrestart (TableGramin);
yy_start = 1;
+ // Save global state for re-entrancy.
+ const char* savStrpTableGram = strpTableGram;
+ Int savPosTableGram= posTableGram;
strpTableGram = command.chars(); // get pointer to command string
posTableGram = 0; // initialize string position
- return TableGramparse(); // parse command string
+ int sts = TableGramparse(); // parse command string
+ // Restore global state.
+ strpTableGram = savStrpTableGram;
+ posTableGram= savPosTableGram;
+ return sts;
}
//# Give the string position.