Commit 305f7e1c authored by miller86's avatar miller86

The main purpose of this update is to add a preference to

treat all DBs as time varying. There is a new check box in
the GUI's preferences window and a new CLI method,
SetTreatAllDBsAsTimeVarying(), plus a test of this feature
was added to tests/databases/wave_tv.py

Some changes were also made to add regular expression parsing
of cycle numbers from filenames and a new CL arg, '-cycleregex'
was added too control this from the CL.

An unused data file in FLASH.tar.bz2 was removed also.


git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@1197 18c085ea-50e0-402c-830e-de6fd14e8384
parent d98fa93b
......@@ -183,6 +183,8 @@ $0 = shift @ARGV;
# Jeremy Meredith, Wed Jun 6 16:45:55 EDT 2007
# Added documentation of -forceinteractivecli flag for CLI interpreter.
#
# Mark C. Miller, Thu Jun 14 10:26:37 PDT 2007
# Added documentation for -cycleregex
###############################################################################
use POSIX qw(ceil);
......@@ -384,6 +386,23 @@ $fullusage = "$usage
-objectmode <mode> Require a specific object file mode.
-forceinteractivecli Force the CLI to behave interactively, even if run
with no terminal; similar to python's '-i' flag.
-cycleregex <string> A regex-style regular expression to be used
in extracting cycle numbers from file names. It
is best to bracket this string in single
quotes (') to avoid shell interpretation of
special characters such as star (*). The format
of the string begins with an opening '<' character,
followed by the regular expression itself followed
by a closing '>' character, optionally followed by
a space ' ' character and sub-expression reference
to indicate which part of the regular expression is
the cycle number. Default behavior is as if
-cycleregex '<.*([0-9]+)\..*> \1'
was specified meaning the first sequence of one
or more digits before the first dot (.) found
is used as the cycle number. Do a 'man 7 regex'
to get more information on regular expression
syntax.
Developer options
---------------------------------------------------------------------------
......
......@@ -39,7 +39,7 @@
#include <DataNode.h>
// Type map format string
const char *GlobalAttributes::TypeMapFormatString = "s*i*ibbbbbibbbbbb";
const char *GlobalAttributes::TypeMapFormatString = "s*i*ibbbbbibbbbbbb";
// ****************************************************************************
// Method: GlobalAttributes::GlobalAttributes
......@@ -50,7 +50,7 @@ const char *GlobalAttributes::TypeMapFormatString = "s*i*ibbbbbibbbbbb";
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -72,6 +72,7 @@ GlobalAttributes::GlobalAttributes() :
maintainData = false;
automaticallyAddOperator = false;
tryHarderCyclesTimes = false;
treatAllDBsAsTimeVarying = false;
}
// ****************************************************************************
......@@ -83,7 +84,7 @@ GlobalAttributes::GlobalAttributes() :
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -107,6 +108,7 @@ GlobalAttributes::GlobalAttributes(const GlobalAttributes &obj) :
maintainData = obj.maintainData;
automaticallyAddOperator = obj.automaticallyAddOperator;
tryHarderCyclesTimes = obj.tryHarderCyclesTimes;
treatAllDBsAsTimeVarying = obj.treatAllDBsAsTimeVarying;
SelectAll();
}
......@@ -120,7 +122,7 @@ GlobalAttributes::GlobalAttributes(const GlobalAttributes &obj) :
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -140,7 +142,7 @@ GlobalAttributes::~GlobalAttributes()
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -165,6 +167,7 @@ GlobalAttributes::operator = (const GlobalAttributes &obj)
maintainData = obj.maintainData;
automaticallyAddOperator = obj.automaticallyAddOperator;
tryHarderCyclesTimes = obj.tryHarderCyclesTimes;
treatAllDBsAsTimeVarying = obj.treatAllDBsAsTimeVarying;
SelectAll();
return *this;
......@@ -179,7 +182,7 @@ GlobalAttributes::operator = (const GlobalAttributes &obj)
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -203,7 +206,8 @@ GlobalAttributes::operator == (const GlobalAttributes &obj) const
(maintainView == obj.maintainView) &&
(maintainData == obj.maintainData) &&
(automaticallyAddOperator == obj.automaticallyAddOperator) &&
(tryHarderCyclesTimes == obj.tryHarderCyclesTimes));
(tryHarderCyclesTimes == obj.tryHarderCyclesTimes) &&
(treatAllDBsAsTimeVarying == obj.treatAllDBsAsTimeVarying));
}
// ****************************************************************************
......@@ -215,7 +219,7 @@ GlobalAttributes::operator == (const GlobalAttributes &obj) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -236,7 +240,7 @@ GlobalAttributes::operator != (const GlobalAttributes &obj) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -257,7 +261,7 @@ GlobalAttributes::TypeName() const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -285,7 +289,7 @@ GlobalAttributes::CopyAttributes(const AttributeGroup *atts)
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -311,7 +315,7 @@ GlobalAttributes::CreateCompatible(const std::string &tname) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -338,7 +342,7 @@ GlobalAttributes::NewInstance(bool copy) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -362,6 +366,7 @@ GlobalAttributes::SelectAll()
Select(12, (void *)&maintainData);
Select(13, (void *)&automaticallyAddOperator);
Select(14, (void *)&tryHarderCyclesTimes);
Select(15, (void *)&treatAllDBsAsTimeVarying);
}
///////////////////////////////////////////////////////////////////////////////
......@@ -697,6 +702,13 @@ GlobalAttributes::SetTryHarderCyclesTimes(bool tryHarderCyclesTimes_)
Select(14, (void *)&tryHarderCyclesTimes);
}
void
GlobalAttributes::SetTreatAllDBsAsTimeVarying(bool treatAllDBsAsTimeVarying_)
{
treatAllDBsAsTimeVarying = treatAllDBsAsTimeVarying_;
Select(15, (void *)&treatAllDBsAsTimeVarying);
}
///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////
......@@ -803,6 +815,12 @@ GlobalAttributes::GetTryHarderCyclesTimes() const
return tryHarderCyclesTimes;
}
bool
GlobalAttributes::GetTreatAllDBsAsTimeVarying() const
{
return treatAllDBsAsTimeVarying;
}
///////////////////////////////////////////////////////////////////////////////
// Select property methods
///////////////////////////////////////////////////////////////////////////////
......@@ -832,7 +850,7 @@ GlobalAttributes::SelectWindows()
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -858,6 +876,7 @@ GlobalAttributes::GetFieldName(int index) const
case 12: return "maintainData";
case 13: return "automaticallyAddOperator";
case 14: return "tryHarderCyclesTimes";
case 15: return "treatAllDBsAsTimeVarying";
default: return "invalid index";
}
}
......@@ -871,7 +890,7 @@ GlobalAttributes::GetFieldName(int index) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -897,6 +916,7 @@ GlobalAttributes::GetFieldType(int index) const
case 12: return FieldType_bool;
case 13: return FieldType_bool;
case 14: return FieldType_bool;
case 15: return FieldType_bool;
default: return FieldType_unknown;
}
}
......@@ -910,7 +930,7 @@ GlobalAttributes::GetFieldType(int index) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -936,6 +956,7 @@ GlobalAttributes::GetFieldTypeName(int index) const
case 12: return "bool";
case 13: return "bool";
case 14: return "bool";
case 15: return "bool";
default: return "invalid index";
}
}
......@@ -949,7 +970,7 @@ GlobalAttributes::GetFieldTypeName(int index) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -1037,6 +1058,11 @@ GlobalAttributes::FieldsEqual(int index_, const AttributeGroup *rhs) const
retval = (tryHarderCyclesTimes == obj.tryHarderCyclesTimes);
}
break;
case 15:
{ // new scope
retval = (treatAllDBsAsTimeVarying == obj.treatAllDBsAsTimeVarying);
}
break;
default: retval = false;
}
......
......@@ -50,7 +50,7 @@
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 22 13:39:14 PST 2007
// Creation: Mon Jun 11 17:43:15 PST 2007
//
// Modifications:
//
......@@ -93,6 +93,7 @@ public:
void SetMaintainData(bool maintainData_);
void SetAutomaticallyAddOperator(bool automaticallyAddOperator_);
void SetTryHarderCyclesTimes(bool tryHarderCyclesTimes_);
void SetTreatAllDBsAsTimeVarying(bool treatAllDBsAsTimeVarying_);
// Property getting methods
const stringVector &GetSources() const;
......@@ -112,6 +113,7 @@ public:
bool GetMaintainData() const;
bool GetAutomaticallyAddOperator() const;
bool GetTryHarderCyclesTimes() const;
bool GetTreatAllDBsAsTimeVarying() const;
// Persistence methods
virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd);
......@@ -140,6 +142,7 @@ private:
bool maintainData;
bool automaticallyAddOperator;
bool tryHarderCyclesTimes;
bool treatAllDBsAsTimeVarying;
// Static class format string for type map.
static const char *TypeMapFormatString;
......
......@@ -43,6 +43,9 @@
<Field name="tryHarderCyclesTimes" label="tryHarderCyclesTimes" type="bool">
false
</Field>
<Field name="treatAllDBsAsTimeVarying" label="treatAllDBsAsTimeVarying" type="bool">
false
</Field>
<Function name="CreateNode" user="false" member="true">
</Function>
<Function name="SetFromNode" user="false" member="true">
......
......@@ -37,6 +37,8 @@
#include <StringHelpers.h>
#include <errno.h>
#include <sys/types.h>
#if defined(_WIN32)
#include <win32-regex.h>
......@@ -55,6 +57,16 @@ static string IGNORE_CHARS = StringHelpers::NON_RELEVANT_CHARS;
const int STATIC_BUF_SIZE = 4096;
static char StaticStringBuf[STATIC_BUF_SIZE];
// ****************************************************************************
// Function: RelevantString
//
// Purpose: Return a string containing only the relevant characters of the
// input string. Relevant characters are those NOT in IGNORE_CHARS
//
// Programmer: Mark C. Miller
// Creation: Unknown
//
// ****************************************************************************
string RelevantString(string inStr)
{
string outStr;
......@@ -70,6 +82,16 @@ string RelevantString(string inStr)
return outStr;
}
// ****************************************************************************
// Function: CompareRelevantStrings
//
// Purpose: Compare two strings using only their relevant characters
//
// Programmer: Mark C. Miller
// Creation: Unknown
//
// ****************************************************************************
static int CompareRelevantStrings(const void *arg1, const void *arg2)
{
string str1 = RelevantString(*((char **) arg1));
......@@ -77,10 +99,16 @@ static int CompareRelevantStrings(const void *arg1, const void *arg2)
return strcmp(str1.c_str(),str2.c_str());
}
// ****************************************************************************
// Function: GroupStrings
//
// Purpose: Groups a list of strings by finding identical leading substrings
// of length numLeadingVals.
//
// Groups a list of strings by finding identical leading substrings
// of length numLeadingVals.
// Programmer: Mark C. Miller
// Creation: Unknown
//
// ****************************************************************************
void
StringHelpers::GroupStrings(vector<string> stringList,
vector<vector<string> > &stringGroups,
......@@ -188,10 +216,16 @@ StringHelpers::GroupStrings(vector<string> stringList,
delete [] stringPtrs;
}
// ****************************************************************************
// Function: GroupStringsAsPaths
//
// Purpose: Groups a list of strings that look like file paths into groups
// that have same dirname
//
// Groups a list of strings that look like file paths into groups
// that have same dirname
// Programmer: Mark C. Miller
// Creation: Unknown
//
// ****************************************************************************
void
StringHelpers::GroupStringsAsPaths(vector<string> stringList,
vector<vector<string> > &stringGroups,
......@@ -246,10 +280,16 @@ StringHelpers::GroupStringsAsPaths(vector<string> stringList,
}
// ****************************************************************************
// Function: GroupStringsAsFixedAlpha
//
// Groups a list of strings into a fixed number of groups
// by alphabetizing and then dividing the alphabetized list into pieces
// Purpose: Groups a list of strings into a fixed number of groups
// by alphabetizing and then dividing the alphabetized list into pieces
//
// Programmer: Brad Whitlock
// Creation: Unknown
//
// ****************************************************************************
void
StringHelpers::GroupStringsFixedAlpha(vector<string> stringList,
int numGroups,
......@@ -292,12 +332,21 @@ StringHelpers::GroupStringsFixedAlpha(vector<string> stringList,
}
}
// ****************************************************************************
// Function: GroupStringsAsFixedAlpha
//
// Purpose: Groups a list of strings into a fixed number of groups
// by alphabetizing and then dividing the alphabetized list into pieces
//
// This version does not need to sort the strings since they are already
// sorted because they're in a set. The sort rule for the set is the same
// as that for the other GroupStringsFixedAlpha because IGNORE_CHARS gets
// set to "", which means use the entire string in comparisons.
//
// This version does not need to sort the strings since they are already
// sorted because they're in a set. The sort rule for the set is the same
// as that for the other GroupStringsFixedAlpha because IGNORE_CHARS gets
// set to "", which means use the entire string in comparisons.
// Programmer: Brad Whitlock
// Creation: Unknown
//
// ****************************************************************************
void
StringHelpers::GroupStringsFixedAlpha(
const std::set<std::string> &stringList,
......@@ -325,6 +374,16 @@ StringHelpers::GroupStringsFixedAlpha(
}
}
// ****************************************************************************
// Function: FindRE
//
// Purpose: Find match of a regular expression in a given string. Return the
// starting offset into the string where the match occured.
//
// Programmer: Mark C. Miller
// Creation: Unknown
//
// ****************************************************************************
int
StringHelpers::FindRE(const char *strToSearch, const char *re)
{
......@@ -350,6 +409,99 @@ StringHelpers::FindRE(const char *strToSearch, const char *re)
return (int) pm.rm_so;
}
// ****************************************************************************
// Function: ExtractRESubstr
//
// Purpose: Extract the (sub)string matched by the regular expression.
//
// The format of RE string passed here is an opening '<' followed by the actual
// regular expression string followed by a closing '>', optionally followed
// by a ' ' (space) and a backslashed reference to the specific substring
// containing the cycle digits. For example, to extract the cycle digits
// from strings looking like 'run_23_0010_yana.silo' where '0010' is the cycle
// digits, the string to pass here would look like...
//
// V--substring reference
// "<.*_([0-9]{4})_.*\\..*> \1"
// opening char-^ ^--closing char
// ^------RE part------^
//
// Do a 'man 7 regex' to get more information on regular expression syntax
//
// Programmer: Mark C. Miller
// Creation: June 12, 2007
//
// ****************************************************************************
std::string
StringHelpers::ExtractRESubstr(const char *strToSearch, const char *re)
{
regex_t cre;
regmatch_t pm[255];
string reToUse;
string retval = "";
//
// extract actual RE from VisIt's required format ('<RE> \i')
//
int len = strlen(re);
int matchToExtract;
if (re[0] != '<')
return retval;
char *last = strrchr(re, '>');
if (last == 0)
return retval;
if (*(last+1) == '\0')
{
reToUse = string(re, 1, len-2);
matchToExtract = 0;
}
else if (*(last+1) == ' ' && *(last+2) == '\\')
{
reToUse = string(re, 1, (last-re+1)-2); // -2 for '<' and '>' chars
errno = 0;
matchToExtract = strtol(last+3, 0, 10);
if (errno != 0)
return retval;
}
else
{
return retval;
}
if (regcomp(&cre, reToUse.c_str(), REG_EXTENDED))
return retval;
int rval = regexec(&cre, strToSearch, 255, pm, 0);
regfree(&cre);
if (rval == REG_NOMATCH)
return retval;
for (int i = 0; i < 255; i++)
{
if (pm[i].rm_so == -1)
continue;
if (i == matchToExtract)
{
retval = std::string(strToSearch, pm[i].rm_so,
pm[i].rm_eo - pm[i].rm_so);
break;
}
}
return retval;
}
// ****************************************************************************
// Function: Basename
//
// Purpose: Find the basename of a file path string
//
// Programmer: Mark C. Miller
// Creation: Unknown
//
// ****************************************************************************
static const char *
basename(const char *path, int& start)
{
......@@ -414,6 +566,15 @@ StringHelpers::Basename(const char *path)
return basename(path, dummy1);
}
// ****************************************************************************
// Function: Dirname
//
// Purpose: Find the dirname of a file path string
//
// Programmer: Mark C. Miller
// Creation: Unknown
//
// ****************************************************************************
const char *
StringHelpers::Dirname(const char *path)
{
......
......@@ -74,6 +74,7 @@ namespace StringHelpers
int UTILITY_API FindRE(const char *stringToSearch, const char *re);
string UTILITY_API ExtractRESubstr(const char *stringToSearch, const char *re);
const char UTILITY_API *Basename(const char *path);
const char UTILITY_API *Dirname(const char *path);
......
......@@ -80,7 +80,7 @@ class avtSILMetaData;
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Fri Mar 9 16:15:06 PST 2007
// Creation: Wed Jun 13 13:59:40 PST 2007
//
// Modifications:
//
......@@ -376,6 +376,9 @@ public:
void ParseCompoundForMesh(const std::string &inVar, std::string &meshName) const;
void ParseCompoundForCategory(const std::string &inVar, std::string &meshName) const;
bool VariableNamesEqual(const std::string &v1, const std::string &v2) const;
static std::string cycleFromFilenameRegex;
static void SetCycleFromFilenameRegex(const char *re);
static std::string GetCycleFromFilenameRegex();
protected:
AttributeGroup *CreateSubAttributeGroup(int index);
private:
......
......@@ -4,10 +4,10 @@
false
</Field>
<Field name="minTemporalExtents" label="Minimum temporal extents" type="double">
0.
0.000000
</Field>
<Field name="maxTemporalExtents" label="Maximum temporal extents" type="double">
0.
0.000000
</Field>
<Field name="numStates" label="Number of time states" type="int">
0
......@@ -222,91 +222,97 @@
</Function>
<Function name="Print" user="true" member="true">
</Function>
<Function name="RegisterWarningCallback" user="true" member="true" access="private">
<Function name="RegisterWarningCallback" user="true" member="true">
</Function>
<Function name="WarnCallbackData1" user="true" member="true" access="private">
<Function name="WarnCallbackData1" user="true" member="true">
</Function>
<Function name="WarnCallbackData2" user="true" member="true" access="private">
<Function name="WarnCallbackData2" user="true" member="true">
</Function>
<Function name="IssueWarning" user="true" member="true" access="private">
<Function name="IssueWarning" user="true" member="true">
</Function>
<Function name="VarIsCompound" user="true" member="true" access="private">
<Function name="VarIsCompound" user="true" member="true">
</Function>
<Function name="ParseCompoundForVar" user="true" member="true" access="private">
<Function name="ParseCompoundForVar" user="true" member="true">
</Function>
<Function name="ParseCompoundForMesh" user="true" member="true" access="private">
<Function name="ParseCompoundForMesh" user="true" member="true">
</Function>
<Function name="ParseCompoundForCategory" user="true" member="true" access="private">
<Function name="ParseCompoundForCategory" user="true" member="true">
</Function>
<Function name="VariableNamesEqual" user="true" member="true" access="private">
<Function name="VariableNamesEqual" user="true" member="true">
</Function>
<Function name="CycleFromFilenameRegex" user="true" member="true">
</Function>
<Function name="SetCycleFromFilenameRegex" user="true" member="true">
</Function>
<Function name="GetCycleFromFilenameRegex" user="true" member="true">
</Function>
<Include file="header" quoted="false">
Expression.h
Expression.h
</Include>
<Include file="header" quoted="false">
avtArrayMetaData.h
avtArrayMetaData.h
</Include>
<Include file="header" quoted="false">
avtCurveMetaData.h
avtCurveMetaData.h
</Include>
<Include file="header" quoted="false">
avtDatabaseMetaData.h
avtDatabaseMetaData.h
</Include>
<Include file="header" quoted="false">
avtDefaultPlotMetaData.h
avtDefaultPlotMetaData.h
</Include>
<Include file="header" quoted="false">
avtLabelMetaData.h
avtLabelMetaData.h
</Include>
<Include file="header" quoted="false">
avtMatSpeciesMetaData.h
avtMatSpeciesMetaData.h
</Include>
<Include file="header" quoted="false">
avtMaterialMetaData.h
avtMaterialMetaData.h
</Include>
<Include file="header" quoted="false">
avtMeshMetaData.h
avtMeshMetaData.h
</Include>
<Include file="header" quoted="false">
avtSILCollectionMetaData.h
avtSILCollectionMetaData.h
</Include>
<Include file="header" quoted="false">
avtSILMetaData.h
avtSILMetaData.h
</Include>
<Include file="header" quoted="false">
avtScalarMetaData.h
avtScalarMetaData.h
</Include>
<Include file="header" quoted="false">
avtSpeciesMetaData.h
avtSpeciesMetaData.h
</Include>
<Include file="header" quoted="false">
avtSymmetricTensorMetaData.h
avtSymmetricTensorMetaData.h
</Include>
<Include file="header" quoted="false">
avtTensorMetaData.h
avtTensorMetaData.h
</Include>
<Include file="header" quoted="false">
avtVectorMetaData.h
avtVectorMetaData.h
</Include>
<Include file="source" quoted="false">
ImproperUseException.h
ImproperUseException.h