diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-08-27 18:49:06 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-08-27 18:49:06 +0000 |
commit | 7659b5f58e04b75d5142e419023976b1235a68f6 (patch) | |
tree | 30bc2fa144504d994cde083c8cb29b1c88ecaaf8 /cpp | |
parent | adding escapes for references, identity (diff) | |
download | ice-7659b5f58e04b75d5142e419023976b1235a68f6.tar.bz2 ice-7659b5f58e04b75d5142e419023976b1235a68f6.tar.xz ice-7659b5f58e04b75d5142e419023976b1235a68f6.zip |
adding XMLTransform
Diffstat (limited to 'cpp')
21 files changed, 5904 insertions, 2 deletions
diff --git a/cpp/src/Makefile b/cpp/src/Makefile index f9805968570..b105fe7c886 100644 --- a/cpp/src/Makefile +++ b/cpp/src/Makefile @@ -30,7 +30,8 @@ SUBDIRS = IceUtil \ Yellow \ IcePack \ Glacier \ - IcePatch + IcePatch \ + XMLTransform $(EVERYTHING):: @for subdir in $(SUBDIRS); \ diff --git a/cpp/src/XMLTransform/.depend b/cpp/src/XMLTransform/.depend new file mode 100644 index 00000000000..2bc4cc7a121 --- /dev/null +++ b/cpp/src/XMLTransform/.depend @@ -0,0 +1,3 @@ +ErrorReporter.o: ErrorReporter.cpp ../XMLTransform/ErrorReporter.h +XMLTransform.o: XMLTransform.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Facet.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/XMLTransform/XMLTransform.h ../../include/Freeze/DB.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/IceUtil/OutputUtil.h ../XMLTransform/ErrorReporter.h +TransformDB.o: TransformDB.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Facet.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/XMLTransform/XMLTransform.h ../../include/Freeze/DB.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/IceUtil/OutputUtil.h ../../include/Freeze/Freeze.h ../../include/Freeze/Initialize.h ../../include/Freeze/Evictor.h ../../include/Freeze/Map.h diff --git a/cpp/src/XMLTransform/ErrorReporter.cpp b/cpp/src/XMLTransform/ErrorReporter.cpp new file mode 100644 index 00000000000..186a5ab8095 --- /dev/null +++ b/cpp/src/XMLTransform/ErrorReporter.cpp @@ -0,0 +1,81 @@ +// ********************************************************************** +// +// Copyright (c) 2002 +// Mutable Realms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <XMLTransform/ErrorReporter.h> + +#include <iostream> +#include <sstream> + +using namespace std; +using namespace XMLTransform; + +DOMTreeErrorReporter::DOMTreeErrorReporter() +{ +} + +void +DOMTreeErrorReporter::warning(const SAXParseException& ex) +{ + ostringstream out; + out << "Warning at file \"" << toString(DOMString(ex.getSystemId())) + << "\", line " << ex.getLineNumber() + << ", column " << ex.getColumnNumber() + << "\n Message: " << toString(DOMString(ex.getMessage())) << "\n"; + _errors.append(out.str()); +} + +void +DOMTreeErrorReporter::error(const SAXParseException& ex) +{ + ostringstream out; + out << "Error at file \"" << toString(DOMString(ex.getSystemId())) + << "\", line " << ex.getLineNumber() + << ", column " << ex.getColumnNumber() + << "\n Message: " << toString(DOMString(ex.getMessage())) << "\n"; + _errors.append(out.str()); +} + +void +DOMTreeErrorReporter::fatalError(const SAXParseException& ex) +{ + ostringstream out; + out << "Fatal at file \"" << toString(DOMString(ex.getSystemId())) + << "\", line " << ex.getLineNumber() + << ", column " << ex.getColumnNumber() + << "\n Message: " << toString(DOMString(ex.getMessage())) << "\n"; + _errors.append(out.str()); +} + +void +DOMTreeErrorReporter::resetErrors() +{ + _errors.clear(); +} + +bool +DOMTreeErrorReporter::getSawErrors() const +{ + return !_errors.empty(); +} + +string +DOMTreeErrorReporter::getErrors() const +{ + return _errors; +} + +string +DOMTreeErrorReporter::toString(const DOMString& s) +{ + char* t = s.transcode(); + string r(t); + delete[] t; + return r; +} diff --git a/cpp/src/XMLTransform/ErrorReporter.h b/cpp/src/XMLTransform/ErrorReporter.h new file mode 100644 index 00000000000..8f65786c864 --- /dev/null +++ b/cpp/src/XMLTransform/ErrorReporter.h @@ -0,0 +1,50 @@ +// ********************************************************************** +// +// Copyright (c) 2002 +// Mutable Realms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#ifndef ERROR_REPORTER_H +#define ERROR_REPORTER_H + +#include <sax/ErrorHandler.hpp> +#include <sax/SAXParseException.hpp> +#include <dom/DOMString.hpp> + +#include <string> + +namespace XMLTransform +{ + +class DOMTreeErrorReporter : public ErrorHandler +{ +public: + + DOMTreeErrorReporter(); + + void warning(const SAXParseException&); + + void error(const SAXParseException&); + + void fatalError(const SAXParseException&); + + void resetErrors(); + + bool getSawErrors() const; + + ::std::string getErrors() const; + +private: + + ::std::string _errors; + + ::std::string toString(const DOMString&); +}; + +} + +#endif diff --git a/cpp/src/XMLTransform/Makefile b/cpp/src/XMLTransform/Makefile new file mode 100644 index 00000000000..0ae4d8d0609 --- /dev/null +++ b/cpp/src/XMLTransform/Makefile @@ -0,0 +1,54 @@ +# ********************************************************************** +# +# Copyright (c) 2002 +# Mutable Realms, Inc. +# Huntsville, AL, USA +# +# All Rights Reserved +# +# ********************************************************************** + +top_srcdir = ../.. + +BASE = libXMLTransform.so +VERSIONED_BASE = $(BASE).$(VERSION) + +NAME = $(top_srcdir)/lib/$(BASE) +VERSIONED_NAME = $(top_srcdir)/lib/$(VERSIONED_BASE) + +TRANSFORM_DB = $(top_srcdir)/bin/transformdb + +TARGETS = $(NAME) $(VERSIONED_NAME) $(TRANSFORM_DB) + +OBJS = ErrorReporter.o \ + XMLTransform.o + +TRANSFORM_OBJS = TransformDB.o + +SRCS = $(OBJS:.o=.cpp) \ + $(TRANSFORM_OBJS:.o=.cpp) + +HDIR = $(includedir)/XMLTransform +SDIR = $(slicedir)/XMLTransform + +include $(top_srcdir)/config/Make.rules + +CPPFLAGS := -I.. $(CPPFLAGS) $(XERCESC_FLAGS) +LDFLAGS := $(LDFLAGS) $(XERCESC_LIBS) -L$(DB_HOME)/lib + +$(VERSIONED_NAME): $(OBJS) + rm -f $@ + $(CXX) -Xlinker -soname -Xlinker $(VERSIONED_BASE) $(LDFLAGS) -shared -o $@ $(OBJS) + +$(NAME): $(VERSIONED_NAME) + rm -f $@ + ln -s $(VERSIONED_BASE) $@ + +$(TRANSFORM_DB): $(TRANSFORM_OBJS) + rm -f $@ + $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(TRANSFORM_OBJS) -lFreeze -lIceXML -lXMLTransform $(LIBS) -ldb + +clean:: + rm -f $(TRANSFORM_DB) + +include .depend diff --git a/cpp/src/XMLTransform/TransformDB.cpp b/cpp/src/XMLTransform/TransformDB.cpp new file mode 100644 index 00000000000..7dc6be200e1 --- /dev/null +++ b/cpp/src/XMLTransform/TransformDB.cpp @@ -0,0 +1,176 @@ +// ********************************************************************** +// +// Copyright (c) 2002 +// Mutable Realms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <XMLTransform/XMLTransform.h> +#include <Freeze/Freeze.h> + +using namespace std; + +static void +usage(const string& appName) +{ + cerr << "Usage: " << appName << " [options] db-env db old-schema new-schema\n"; + cerr << + "Options:\n" + "-IDIR Add directory DIR to the schema include path.\n" + "-h, --help Show this message.\n" + "-v, --version Display the Ice version.\n" + ; +} + +int +main(int argc, char* argv[]) +{ + Ice::CommunicatorPtr communicator; + Freeze::DBEnvironmentPtr dbEnv; + Freeze::DBPtr db; + bool failure = false; + + try + { + communicator = Ice::initialize(argc, argv); + + Ice::StringSeq paths; + + int idx = 1; + while(idx < argc) + { + if(strncmp(argv[idx], "-I", 2) == 0) + { + if(strlen(argv[idx]) == 2) + { + usage(argv[0]); + return EXIT_FAILURE; + } + paths.push_back(argv[idx] + 2); + for(int j = idx; j + 1 < argc; ++j) + { + argv[j] = argv[j + 1]; + } + --argc; + } + else if(strcmp(argv[idx], "-h") == 0 || strcmp(argv[idx], "--help") == 0) + { + usage(argv[0]); + return EXIT_SUCCESS; + } + else if(strcmp(argv[idx], "-v") == 0 || strcmp(argv[idx], "--version") == 0) + { + cout << ICE_STRING_VERSION << endl; + return EXIT_SUCCESS; + } + else if(argv[idx][0] == '-') + { + cerr << argv[0] << ": unknown option `" << argv[idx] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + idx++; + } + + if(argc < 5) + { + usage(argv[0]); + return EXIT_FAILURE; + } + + try + { + dbEnv = Freeze::initialize(communicator, argv[1]); + db = dbEnv->openDB(argv[2], false); + + XMLTransform::DBTransformer transformer; + transformer.transform(dbEnv, db, paths, argv[3], argv[4]); + } + catch(const Freeze::DBNotFoundException&) + { + cout << argv[0] << ": database `" << argv[2] << "' not found in environment `" << argv[1] << "'" << endl; + failure = true; + } + catch(const Freeze::DBException& ex) + { + cout << argv[0] << ": database failure: " << ex << ": " << ex.message << endl; + failure = true; + } + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + failure = true; + } + + if(db) + { + try + { + db->close(); + } + catch(const Freeze::DBException& ex) + { + cerr << argv[0] << ": " << ex << ": " << ex.message << endl; + failure = true; + } + catch(const Ice::Exception& ex) + { + cerr << argv[0] << ": " << ex << endl; + failure = true; + } + catch(...) + { + cerr << argv[0] << ": unknown exception" << endl; + failure = true; + } + db = 0; + } + + if(dbEnv) + { + try + { + dbEnv->close(); + } + catch(const Freeze::DBException& ex) + { + cerr << argv[0] << ": " << ex << ": " << ex.message << endl; + failure = true; + } + catch(const Ice::Exception& ex) + { + cerr << argv[0] << ": " << ex << endl; + failure = true; + } + catch(...) + { + cerr << argv[0] << ": unknown exception" << endl; + failure = true; + } + dbEnv = 0; + } + + try + { + communicator->destroy(); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + failure = true; + } + + if(failure) + { + return EXIT_FAILURE; + } + else + { + return EXIT_SUCCESS; + } +} diff --git a/cpp/src/XMLTransform/XMLTransform.cpp b/cpp/src/XMLTransform/XMLTransform.cpp new file mode 100644 index 00000000000..268f676a5a2 --- /dev/null +++ b/cpp/src/XMLTransform/XMLTransform.cpp @@ -0,0 +1,2507 @@ +// ********************************************************************** +// +// Copyright (c) 2002 +// Mutable Realms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <XMLTransform/XMLTransform.h> +#include <XMLTransform/ErrorReporter.h> +#include <Freeze/DB.h> + +#include <util/PlatformUtils.hpp> +#include <util/XMLString.hpp> +#include <util/XMLUniDefs.hpp> +#include <util/TranscodingException.hpp> +#include <framework/MemBufInputSource.hpp> +#include <framework/XMLFormatter.hpp> +#include <dom/DOMString.hpp> +#include <dom/DOM.hpp> +#include <parsers/DOMParser.hpp> +#include <sax/SAXParseException.hpp> + +#include <sys/stat.h> + +using namespace std; +using namespace Freeze; +using namespace XMLTransform; + +// +// Implementation of exception types. +// +XMLTransform::IllegalTransform::IllegalTransform(const char* file, int line) : + Exception(file, line) +{ +} + +string +XMLTransform::IllegalTransform::ice_name() const +{ + return "IllegalTransform"; +} + +void +XMLTransform::IllegalTransform::ice_print(ostream& out) const +{ + Exception::ice_print(out); + out << ":\n" << reason; +} + +::IceUtil::Exception* +XMLTransform::IllegalTransform::ice_clone() const +{ + return new IllegalTransform(*this); +} + +void +XMLTransform::IllegalTransform::ice_throw() const +{ + throw *this; +} + +XMLTransform::IncompatibleSchema::IncompatibleSchema(const char* file, int line) : + Exception(file, line) +{ +} + +string +XMLTransform::IncompatibleSchema::ice_name() const +{ + return "IncompatibleSchema"; +} + +void +XMLTransform::IncompatibleSchema::ice_print(ostream& out) const +{ + Exception::ice_print(out); + out << ":\n" << reason; +} + +::IceUtil::Exception* +XMLTransform::IncompatibleSchema::ice_clone() const +{ + return new IncompatibleSchema(*this); +} + +void +XMLTransform::IncompatibleSchema::ice_throw() const +{ + throw *this; +} + +XMLTransform::InvalidSchema::InvalidSchema(const char* file, int line) : + Exception(file, line) +{ +} + +string +XMLTransform::InvalidSchema::ice_name() const +{ + return "InvalidSchema"; +} + +void +XMLTransform::InvalidSchema::ice_print(ostream& out) const +{ + Exception::ice_print(out); + out << ":\n" << reason; +} + +::IceUtil::Exception* +XMLTransform::InvalidSchema::ice_clone() const +{ + return new InvalidSchema(*this); +} + +void +XMLTransform::InvalidSchema::ice_throw() const +{ + throw *this; +} + +XMLTransform::SchemaViolation::SchemaViolation(const char* file, int line) : + Exception(file, line) +{ +} + +string +XMLTransform::SchemaViolation::ice_name() const +{ + return "SchemaViolation"; +} + +void +XMLTransform::SchemaViolation::ice_print(ostream& out) const +{ + Exception::ice_print(out); + out << ":\n" << reason; +} + +::IceUtil::Exception* +XMLTransform::SchemaViolation::ice_clone() const +{ + return new SchemaViolation(*this); +} + +void +XMLTransform::SchemaViolation::ice_throw() const +{ + throw *this; +} + +XMLTransform::TransformException::TransformException(const char* file, int line) : + Exception(file, line) +{ +} + +string +XMLTransform::TransformException::ice_name() const +{ + return "TransformException"; +} + +void +XMLTransform::TransformException::ice_print(ostream& out) const +{ + Exception::ice_print(out); + out << ":\n" << reason; +} + +::IceUtil::Exception* +XMLTransform::TransformException::ice_clone() const +{ + return new TransformException(*this); +} + +void +XMLTransform::TransformException::ice_throw() const +{ + throw *this; +} + +// +// Helper to convert a DOMString to a native string. +// +static string +toString(const DOMString& s) +{ + char* t = s.transcode(); + string r(t); + delete[] t; + return r; +} + +// +// Helpers for finding named child nodes. +// +static DOM_Node +findChild(const DOM_Node& parent, const string& namespaceURI, const string& localname) +{ + DOM_NodeList children = parent.getChildNodes(); + for(unsigned int i = 0; i < children.getLength(); ++i) + { + DOM_Node child = children.item(i); + if(toString(child.getNamespaceURI()) == namespaceURI && toString(child.getLocalName()) == localname) + { + return child; + } + } + + return DOM_Node(); +} + +static DOM_Node +findChild(const DOM_Node& parent, const string& name) +{ + DOM_NodeList children = parent.getChildNodes(); + for(unsigned int i = 0; i < children.getLength(); ++i) + { + DOM_Node child = children.item(i); + if(toString(child.getNodeName()) == name) + { + return child; + } + } + return DOM_Node(); +} + +// +// Helpers to retrieve a named attribute. +// +static string +getAttributeByName(const DOM_Node& node, const string& name) +{ + DOM_NamedNodeMap attributes = node.getAttributes(); + string value; + DOM_Node n = attributes.getNamedItem(DOMString(name.c_str())); + if(!n.isNull()) + { + value = toString(n.getNodeValue()); + } + + return value; +} + +// +// Helpers for specific attributes. +// +static string +getTypeAttribute(const DOM_Node& node) +{ + static const string typeName = "type"; + return getAttributeByName(node, typeName); +} + +static string +getNameAttribute(const DOM_Node& node) +{ + static const string nameName = "name"; + return getAttributeByName(node, nameName); +} + +// +// Find a file in one of the given directories. +// +static string +findFile(const string& name, const Ice::StringSeq& paths) +{ + struct stat st; + + // + // If the file is found in the current working directory, + // return now. + // + if(stat(name.c_str(), &st) == 0) + { + return name; + } + + for(Ice::StringSeq::size_type i = 0; i < paths.size(); i++) + { + string file = paths[i] + "/" + name; + if(stat(file.c_str(), &st) == 0) + { + return file; + } + } + + return name; +} + + +// +// DocumentMap. This maps namespace uri -> a set of documents. +// +typedef multimap< string, DocumentInfoPtr> DocumentMap; + +// +// Document info holds the DOM root of the document, a map of prefix to namespace URI & the documents +// targetNamespace. +// +XMLTransform::DocumentInfo::DocumentInfo(const DOM_Document& document, const DOM_Node& root, + const string& targetNamespace) : + _document(document), + _targetNamespace(targetNamespace) +{ + static const string targetNamespaceAttrName = "targetNamespace"; + static const string xmlnsAttrName = "xmlns"; + + DOM_NamedNodeMap attributes = root.getAttributes(); + unsigned int max = attributes.getLength(); + for(unsigned int i = 0; i < max; ++i) + { + DOM_Node attribute = attributes.item(i); + string attrName = toString(attribute.getNodeName()); + if(attrName.substr(0, 5) == xmlnsAttrName) + { + string ns; + if(attrName.size() > 5) + { + ns = attrName.substr(6); + } + string uri = toString(attribute.getNodeValue()); + _nsMap.insert(make_pair(ns, uri)); + } + else if(attrName == targetNamespaceAttrName) + { + _targetNamespace = toString(attribute.getNodeValue()); + } + } +} + +DOM_Document +XMLTransform::DocumentInfo::getDocument() const +{ + return _document; +} + +string +XMLTransform::DocumentInfo::findURI(const string& prefix) const +{ + string uri; + PrefixURIMap::const_iterator q = _nsMap.find(prefix); + if(q != _nsMap.end()) + { + uri = q->second; + } + return uri; +} + +string +XMLTransform::DocumentInfo::getTargetNamespace() const +{ + return _targetNamespace; +} + +// +// Convert a QName from prefix:local to local@namespaceURI. +// +static string +convertQName(const string& qname, const DocumentInfoPtr& info) +{ + size_t pos = qname.find(':'); + string prefix; + string localName; + if(pos != string::npos) + { + prefix = qname.substr(0, pos); + localName = qname.substr(pos+1); + } + else + { + localName = qname; + } + + string uri = info->findURI(prefix); + if(uri.empty()) + { + // + // No namespace - TODO: not InvalidSchema - it's an invalid instance document. + // + throw InvalidSchema(__FILE__, __LINE__); + } + + string n = localName; + n += '@'; + n += uri; + + return n; +} + +// +// TODO: These cannot be allocated as static strings since xerces API calls cannot be made until +// XMLPlatformUtils::Initialize has been called. +// +//static DOMString schemaURI("http://www.w3.org/2001/XMLSchema"); +//static DOMString schemaElementName("schema"); + +// +// TODO: All the xs: searching should be replaced by correct searches. +// +static const string sequenceElementName = "xs:sequence"; +static const string annotationElementName = "xs:annotation"; +static const string appinfoElementName = "xs:appinfo"; +static const string importElementName = "xs:import"; +static const string elementElementName = "xs:element"; +static const string complexContentElementName = "xs:complexContent"; +static const string extensionElementName = "xs:extension"; +static const string restrictionElementName = "xs:restriction"; +static const string enumerationElementName = "xs:enumeration"; + +// +// TODO: have print do something sensible. +// + +// +// Transform implementations. +// +XMLTransform::Transform::Transform() +{ +} + +XMLTransform::Transform::~Transform() +{ +} + +static ::IceUtil::XMLOutput& +operator<<(::IceUtil::XMLOutput& os, const DOM_Node& node) +{ + switch(node.getNodeType()) + { + case DOM_Node::TEXT_NODE: + { + os << ::IceUtil::startEscapes << toString(node.getNodeValue()) << ::IceUtil::endEscapes; + break; + } + + case DOM_Node::ELEMENT_NODE: + { + os << ::IceUtil::se(toString(node.getNodeName())); + DOM_NamedNodeMap attributes = node.getAttributes(); + for(unsigned int i = 0; i < attributes.getLength(); ++i) + { + DOM_Node attribute = attributes.item(i); + os << ::IceUtil::attr(toString(attribute.getNodeName()), toString(attribute.getNodeValue())); + } + + DOM_Node child = node.getFirstChild(); + while(!child.isNull()) + { + os << child; + child = child.getNextSibling(); + } + + os << ::IceUtil::ee; + break; + } + + default: + assert(false); + } + return os; +} + +namespace XMLTransform +{ + +// +// Nil transform - this transform does nothing. +// +class NilTransform : public Transform +{ +public: + + NilTransform() + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node) + { + if(node.isNull()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + + os << node; + } + + virtual ostream& + print(ostream& os) + { + os << "[nil transform]\n"; + return os; + } +}; + +typedef ::IceUtil::Handle<NilTransform> NilTransformPtr; + +// +// This transform is the root transform for marshaled documents. +// +// TODO: complete, rename +// +class InternalTransform : public Transform +{ +public: + + InternalTransform() + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node) + { + } + + virtual ostream& + print(ostream& os) + { + os << "[internal transform]\n"; + return os; + } +}; + +typedef ::IceUtil::Handle<InternalTransform> InternalTransformPtr; + +// +// This transform applies to an element. It holds the element name, and applies the contained transform. +// +class ElementTransform : public Transform +{ +public: + + ElementTransform(const string& namespaceURI, const string& name, TransformPtr transform) : + _ns(namespaceURI), + _name(name), + _transform(transform) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, const DOM_Node& node) + { + _transform->transform(os, info, _name, node); + } + + virtual ostream& + print(ostream& os) + { + os << "[element: " << _name << "]\n"; + _transform->print(os); + os << "[/element: " << _name << "]\n"; + return os; + } + + const string& namespaceURI() const { return _ns; } + const string& name() const { return _name; } + +private: + + string _ns; + string _name; + + TransformPtr _transform; +}; + +typedef ::IceUtil::Handle<ElementTransform> ElementTransformPtr; + +// +// This transform validates that the contained enumeration value is still valid. +// +class ValidateEnumerationTransform : public Transform +{ +public: + + ValidateEnumerationTransform(const vector<string>& values) : + _values(values) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node) + { + if(node.isNull()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + + DOM_Node child = node.getFirstChild(); + if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE) + { + throw SchemaViolation(__FILE__, __LINE__); + } + string value = toString(child.getNodeValue()); + if(find(_values.begin(), _values.end(), value) == _values.end()) + { + throw IllegalTransform(__FILE__, __LINE__); + } + os << node; + } + + virtual ostream& + print(ostream& os) + { + os << "[validate enumeration]\n"; + return os; + } + +private: + + vector<string> _values; +}; + +typedef ::IceUtil::Handle<ValidateEnumerationTransform> ValidateEnumerationTransformPtr; + +// +// This transform validates the transform of an integer type. +// +class ValidateIntegerTransform : public Transform +{ +public: + + ValidateIntegerTransform(const string& from, const string& to) : + _from(from), + _to(to) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node) + { + if(node.isNull()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + + DOM_Node child = node.getFirstChild(); + if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE) + { + throw SchemaViolation(__FILE__, __LINE__); + } + string value = toString(child.getNodeValue()); +#ifdef WIN32 + Ice::Long v = _atoi64(value.c_str()); +#else + Ice::Long v = atoll(value.c_str()); +#endif + if(_to == "xs:byte") + { + if(v < SCHAR_MIN || v > SCHAR_MAX) + { + throw IllegalTransform(__FILE__, __LINE__); + } + } + else if(_to == "xs:short") + { + if(v < SHRT_MIN || v > SHRT_MAX) + { + throw IllegalTransform(__FILE__, __LINE__); + } + } + else if(_to == "xs:int") + { + if(v < INT_MIN || v > INT_MAX) + { + throw IllegalTransform(__FILE__, __LINE__); + } + } + else if(_to == "xs:long") + { + } + os << node; + } + + virtual ostream& + print(ostream& os) + { + os << "[validate integer: from=" << _from << " to=" << _to << "]\n"; + return os; + } + +private: + + string _from; + string _to; +}; + +typedef ::IceUtil::Handle<ValidateIntegerTransform> ValidateIntegerTransformPtr; + +// +// This transform validates a transformation of a floating point type. +// +class ValidateFloatTransform : public Transform +{ +public: + + ValidateFloatTransform(const string& from, const string& to) : + _from(from), + _to(to) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node) + { + if(node.isNull()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + + DOM_Node child = node.getFirstChild(); + if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE) + { + throw SchemaViolation(__FILE__, __LINE__); + } + os << node; + } + + virtual ostream& + print(ostream& os) + { + os << "[validate float: from=" << _from << " to=" << _to << "]\n"; + return os; + } + +private: + + string _from; + string _to; +}; + +typedef ::IceUtil::Handle<ValidateFloatTransform> ValidateFloatTransformPtr; + +// +// Transform a sequence. The transform holds the transform for the contained elements in the sequence. +// +class SequenceTransform : public Transform +{ +public: + + SequenceTransform(TransformPtr transform) : + _transform(transform) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, const DOM_Node& node) + { + if(node.isNull()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + string name = toString(node.getNodeName()); + os << ::IceUtil::se(name); + string length = getAttributeByName(node, "length"); + + os << ::IceUtil::attr("length", length); + + long l = atol(length.c_str()); + + DOM_NodeList children = node.getChildNodes(); + for(unsigned int i = 0; i < children.getLength(); ++i) + { + DOM_Node child = children.item(i); + if(child.getNodeType() != DOM_Node::ELEMENT_NODE) + { + continue; + } + + static const string sequenceElementName = "e"; + string nodeName = toString(child.getLocalName()); + if(l == 0 || nodeName != sequenceElementName) + { + throw SchemaViolation(__FILE__, __LINE__); + } + _transform->transform(os, info, nodeName, child); + --l; + } + + os << ::IceUtil::ee; + } + + virtual ostream& + print(ostream& os) + { + os << "[sequence]\n"; + _transform->print(os); + os << "[/sequence]\n"; + return os; + } + +private: + + TransformPtr _transform; +}; + +typedef ::IceUtil::Handle<SequenceTransform> SequenceTransformPtr; + +// +// Transform the content of a struct. The transform holds a list of name->transform pairs in new instance +// document order. For a given transform the corresponding node is found and the transform is applied. +// +class StructTransform : public Transform +{ +public: + + StructTransform() + { + } + + StructTransform(const vector<ElementTransformPtr>& transforms) : + _transforms(transforms) + { + } + + void + setTransforms(const vector<ElementTransformPtr>& transforms) + { + _transforms = transforms; + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, const DOM_Node& node) + { + if(node.isNull()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + os << ::IceUtil::se(toString(node.getNodeName())); + DOM_NamedNodeMap attributes = node.getAttributes(); + for(unsigned int i = 0; i < attributes.getLength(); ++i) + { + DOM_Node attribute = attributes.item(i); + os << ::IceUtil::attr(toString(attribute.getNodeName()), toString(attribute.getNodeValue())); + } + + DOM_NodeList children = node.getChildNodes(); + for(vector<ElementTransformPtr>::const_iterator p = _transforms.begin(); p != _transforms.end(); ++p) + { + DOM_Node child = findChild(node, (*p)->namespaceURI(), (*p)->name()); + (*p)->transform(os, info, (*p)->name(), child); + } + + os << ::IceUtil::ee; + } + + virtual ostream& + print(ostream& os) + { + os << "[struct]\n"; + for(unsigned int i = 0; i < _transforms.size(); ++i) + { + _transforms[i]->print(os); + } + os << "[/struct]\n"; + return os; + } + +private: + + vector<ElementTransformPtr> _transforms; +}; + +typedef ::IceUtil::Handle<StructTransform> StructTransformPtr; + +// +// Transform for an object instance. This reads the object type in the xsi:type attribute. Next the specific +// transform is retrieved from the map and applied. The holder of the actual maps owns the lifecycle of the +// transform map. +// +class ClassTransform : public Transform +{ +public: + + ClassTransform(TransformMap* transforms) : + _transforms(transforms) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string& name, const DOM_Node& node) + { + // + // First check for the "href" attribute, which indicates a + // reference to another object. We simply emit the node + // as-is. The referenced object, which is a child of the + // root node, will be transformed automatically. + // + static const string hrefAttrName = "href"; + string id = getAttributeByName(node, hrefAttrName); + if(!id.empty()) + { + os << node; + return; + } + + // + // Otherwise, xsi:type must be present. + // + static const string xsitypeAttrName = "xsi:type"; + string type = getAttributeByName(node, xsitypeAttrName); + if(type.empty()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + + string n = convertQName(type, info); + + // + // Technically this is only permitted to be a more derived + // type - however, this will not be enforced here. + // + TransformMap::const_iterator p = _transforms->find(n); + if(p == _transforms->end()) + { + throw SchemaViolation(__FILE__, __LINE__); + } + p->second->transform(os, info, name, node); + } + + virtual ostream& + print(ostream& os) + { + os << "[class]\n"; + return os; + } + +private: + + TransformMap* _transforms; + +}; + +typedef ::IceUtil::Handle<ClassTransform> ClassTransformPtr; + +// +// This transform produces a new struct. The contents of the struct will contain whatever default value is +// appropriate. +// +class DefaultInitializedStructTransform : public Transform +{ +public: + + DefaultInitializedStructTransform(const vector<ElementTransformPtr>& transforms) : + _transforms(transforms) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string& name, const DOM_Node& node) + { + os << ::IceUtil::se(name); + + DOM_Node child; // Nil + + for(vector<ElementTransformPtr>::const_iterator p = _transforms.begin(); p != _transforms.end(); ++p) + { + (*p)->transform(os, info, (*p)->name(), child); + } + + os << ::IceUtil::ee; + } + + virtual ostream& + print(ostream& os) + { + os << "[empty struct]\n"; + for(unsigned int i = 0; i < _transforms.size(); ++i) + { + _transforms[i]->print(os); + } + os << "[/struct end]\n"; + return os; + } + +private: + + vector<ElementTransformPtr> _transforms; +}; + +typedef ::IceUtil::Handle<DefaultInitializedStructTransform> DefaultInitializedStructTransformPtr; + +// +// This transform is used in building up new values. It emits a known tag & string. +// +class EmitStringTransform : public Transform +{ +public: + + EmitStringTransform(const string& s) : + _s(s) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string& name, const DOM_Node&) + { + os << ::IceUtil::se(name); + os << ::IceUtil::startEscapes << _s << ::IceUtil::endEscapes; + os << ::IceUtil::ee; + } + + virtual ostream& + print(ostream& os) + { + os << "[emit string: \"" << _s << "\"]\n"; + return os; + } + +private: + + string _s; +}; + +typedef ::IceUtil::Handle<EmitStringTransform> EmitStringTransformPtr; + +// +// This transform is used in building up new values. It emits a known tag with a given attribute. +// +class EmitAttributeTransform : public Transform +{ +public: + + EmitAttributeTransform(const string& attrName, const string& attrValue) : + _attrName(attrName), + _attrValue(attrValue) + { + } + + virtual void + transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string& name, const DOM_Node&) + { + os << ::IceUtil::se(name); + os << ::IceUtil::attr(_attrName, _attrValue); + os << ::IceUtil::ee; + } + + virtual ostream& + print(ostream& os) + { + os << "[emit attribute: " << _attrName << "=\"" << _attrValue << "\"]\n"; + return os; + } + +private: + + string _attrName; + string _attrValue; + +}; + +typedef ::IceUtil::Handle<EmitAttributeTransform> EmitAttributeTransformPtr; + +// +// Transform factory. Process old & new schema document to produce set of transforms between old & new +// instance documents for the described types. +// +class TransformFactory +{ +public: + + TransformFactory(const Ice::StringSeq&); + ~TransformFactory(); + + void create(const DOM_Document&, const DOM_Document&, TransformMap*, TransformMap*); + +private: + + friend struct StringTypeTable; + enum Type + { + TypeInteger, // byte, short, int, long + TypeFloat, // float, double + TypeString, + TypeEnumeration, + TypeStruct, + TypeClass, + TypeException, + TypeDictionary, + TypeSequence, + TypeProxy, + TypeReference, + TypeInternal + }; + + // + // Schema import handling. + // + void import(DocumentMap&, const string&, const string&); + void processImport(const DOM_Document&, DocumentMap&); + + // + // Element processing. + // + void processElements(const DocumentInfoPtr& info); + + // + // Type searching primitives. + // + bool findTypeInDocument(const DOM_Document& doc, const string& local, DOM_Node&); + bool findType(const DocumentMap&, const DocumentInfoPtr&, const string&, DOM_Node&, DocumentInfoPtr&); + + Type getType(const DOM_Node&); + Type getTypeByName(const DocumentMap&, const DocumentInfoPtr&, const string&, DOM_Node&, DocumentInfoPtr&); + + // + // Top-level transform creation routine. + // + TransformPtr createTransform(const DocumentInfoPtr&, const string&, + const DocumentInfoPtr&, const string&); + + // + // Subsequent creation routines. + // + TransformPtr createComplexTypeTransform(const DOM_Node&, const DOM_Node&); + TransformPtr createSimpleTypeTransform(const DOM_Node&, const DOM_Node&); + + TransformPtr createStaticClassTransform(const DOM_Node&, const DOM_Node&); + void createEnumValues(const DOM_Node&, vector< string>&); + TransformPtr createEnumerationTransform(const DOM_Node&); + + void createSequenceElementTransform(const DocumentInfoPtr&, const DOM_Node&, + const DocumentInfoPtr&, const DOM_Node&, + vector<ElementTransformPtr>&); + void createClassContentTransform(const DocumentInfoPtr&, const DOM_Node&, + const DocumentInfoPtr&, const DOM_Node&, + vector<ElementTransformPtr>&); + + // + // Top-level transform creation routine for new datatypes (that is datatypes which were not contained in + // the old schema). + // + TransformPtr createDefaultInitializedTransform(const DocumentInfoPtr&, const string&); + + // + // Subsequent creation routines for new datatypes. + // + void createDefaultInitializedSequenceElementTransform(const DocumentInfoPtr&, const DOM_Node&, + vector<ElementTransformPtr>&); + + // + // Utility routines. + // + DOM_Node findSchemaRoot(const DOM_Document&); + + // + // Search paths for importing schemas. + // + Ice::StringSeq _paths; + + // + // Map of local@uri class transforms (based on static type). This information cached for creation of the + // transform. + // + TransformMap* _staticClassTransforms; + + // + // Map of local@uri element names to transforms. Needed for actual transform. + // + TransformMap* _elements; + + // + // Set of documents. The set of all documents is the entire document set. + // + // The map maps from targetNamespace to DocumentInfo. + // + DocumentMap _fromDocs; + DocumentMap _toDocs; + + // + // Map of qualified type names to transform. This information cached for creation of the transform. + // + TransformMap _types; + + // + // Map of local@uri transforms for creating new types. This information cached for creation of the + // transform. + // + TransformMap _defaultInitializedTransforms; +}; + +} // End of namespace XMLTransform + +// +// Constructor & destructor. +// +XMLTransform::TransformFactory::TransformFactory(const Ice::StringSeq& paths) : + _paths(paths) +{ +} + +XMLTransform::TransformFactory::~TransformFactory() +{ +} + +// +// Member function implementation. +// + +// +// Create a transform set for the given old schema (fromDoc) and the new schema (toDoc). The result is two +// maps: A map of local@uri -> element transform and a map of transforms for specific class types. +// +void +XMLTransform::TransformFactory::create(const DOM_Document& fromDoc, const DOM_Document& toDoc, TransformMap* elements, + TransformMap* staticClassTransforms) +{ + // + // Setup member state. + // + _elements = elements; + _staticClassTransforms = staticClassTransforms; + _fromDocs.clear(); + _toDocs.clear(); + _types.clear(); + _defaultInitializedTransforms.clear(); + + // + // Create both of the document infos for the old & new schemas. + // Add the root documents to the document map. + // + DOM_Node fromSchema = findSchemaRoot(fromDoc); + assert(!fromSchema.isNull()); + DocumentInfoPtr fromInfo = new DocumentInfo(fromDoc, fromSchema); + + DOM_Node toSchema = findSchemaRoot(toDoc); + assert(!toSchema.isNull()); + DocumentInfoPtr toInfo = new DocumentInfo(toDoc, toSchema); + + _fromDocs.insert(make_pair(fromInfo->getTargetNamespace(), fromInfo)); + _toDocs.insert(make_pair(toInfo->getTargetNamespace(), toInfo)); + + // + // Process the import declarations for the source schema documents. + // + processImport(fromDoc, _fromDocs); + processImport(toDoc, _toDocs); + + // + // Finally process each element from the old schema document. + // + for(DocumentMap::const_iterator p = _fromDocs.begin(); p != _fromDocs.end(); ++p) + { + processElements(p->second); + } +} + +void +XMLTransform::TransformFactory::import(DocumentMap& documents, const string& ns, const string& loc) +{ + DOMTreeErrorReporter errorReporter; + DOMParser parser; + parser.setValidationScheme(DOMParser::Val_Never); + parser.setDoNamespaces(true); + parser.setErrorHandler(&errorReporter); + + try + { + string file = findFile(loc, _paths); + parser.parse(file.c_str()); + if(errorReporter.getSawErrors()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = errorReporter.getErrors(); + throw ex; + } + } + catch(const XMLException& ex) + { + InvalidSchema e(__FILE__, __LINE__); + e.reason = "XML exception while importing " + loc + ": " + toString(ex.getMessage()); + throw e; + } + catch(const SAXParseException& ex) + { + InvalidSchema e(__FILE__, __LINE__); + e.reason = "SAX exception while importing " + loc + ": " + toString(ex.getMessage()); + throw e; + } + catch(...) + { + InvalidSchema e(__FILE__, __LINE__); + e.reason = "unknown exception while importing " + loc; + throw e; + } + + DOM_Document document = parser.getDocument(); + DOM_Node schema = findSchemaRoot(document); + + DocumentInfoPtr info = new DocumentInfo(document, schema, ns); + documents.insert(make_pair(info->getTargetNamespace(), info)); + + // + // Process any imports in the imported document. + // + processImport(document, documents); +} + +void +XMLTransform::TransformFactory::processImport(const DOM_Document& parent, DocumentMap& documents) +{ + DOM_Node schema = findSchemaRoot(parent); + assert(!schema.isNull()); + + DOM_Node child = schema.getFirstChild(); + while(!child.isNull()) + { + string nodeName = toString(child.getNodeName()); + if(nodeName == importElementName) + { + string ns = getAttributeByName(child, "namespace"); + string loc = getAttributeByName(child, "schemaLocation"); + + import(documents, ns, loc); + } + child = child.getNextSibling(); + } +} + +void +XMLTransform::TransformFactory::processElements(const DocumentInfoPtr& info) +{ + DOM_Node schema = findSchemaRoot(info->getDocument()); + + DOM_NodeList children = schema.getChildNodes(); + for(unsigned int i = 0; i < children.getLength(); ++i) + { + DOM_Node child = children.item(i); + if(child.getNodeType() != DOM_Node::ELEMENT_NODE) + { + continue; + } + + string nodeName = toString(child.getNodeName()); + if(nodeName != elementElementName) + { + continue; + } + + // + // The element name must be an unqualified name. + // + string nameAttr = getNameAttribute(child); + assert(nameAttr.find(':') == string::npos); + + DOM_Node to; + DocumentInfoPtr toNodeInfo; // Overrides the top-level toInfo. + if(!findType(_toDocs, info, nameAttr, to, toNodeInfo)) + { + // + // No equivalent in the new schema. + // + continue; + } + assert(!to.isNull() && toNodeInfo); + + string toNodeName = toString(to.getNodeName()); + string toNameAttr = getNameAttribute(to); + assert(toNameAttr == nameAttr); // Sanity check. + + // + // Construct the full element name - local@uri. + // + string fullElementName = nameAttr; + fullElementName += '@'; + fullElementName += info->getTargetNamespace(); + + // + // Redefinitions of elements is not permitted. + // + if(_elements->find(fullElementName) != _elements->end()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "redefinition of element " + nameAttr; + throw ex; + } + + string fromTypeName = getTypeAttribute(child); + string toTypeName = getTypeAttribute(to); + + // + // Ignore anonymous elements (operation contents). + // + if(fromTypeName.empty() && toTypeName.empty()) + { + continue; + } + + // + // However, it's not legal for an element to change type. + // + if(fromTypeName.empty() || toTypeName.empty()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "element " + nameAttr + " has changed type"; + throw ex; + } + + TransformPtr transform = createTransform(info, fromTypeName, toNodeInfo, toTypeName); + + // + // Add association between name & transform + // + _elements->insert(make_pair(fullElementName, transform)); + } +} + +// +// Search for a type in a particular document. Return true if the type is present, false otherwise. +// +bool +XMLTransform::TransformFactory::findTypeInDocument(const DOM_Document& doc, const string& local, DOM_Node& target) +{ + DOM_Node schema = findSchemaRoot(doc); + + DOM_NodeList children = schema.getChildNodes(); + unsigned int i; + for(i = 0; i < children.getLength(); ++i) + { + DOM_Node child = children.item(i); + if(child.getNodeType() == DOM_Node::ELEMENT_NODE) + { + string na = getNameAttribute(child); + if(na == local) + { + target = child; + return true; + } + } + } + + return false; +} + +// +// This find method takes the type QName and then maps the prefix portion to a namespace in the current +// document (info). Next the documents which have the given targetNamespace are searched for an element node +// with that name. Return true if the type is found, false otherwise. +// +bool +XMLTransform::TransformFactory::findType(const DocumentMap& docs, const DocumentInfoPtr& info, const string& type, + DOM_Node& n, DocumentInfoPtr& nInfo) +{ + string uri; + string local; + + size_t pos = type.find(':'); + if(pos != string::npos) + { + string prefix = type.substr(0, pos); + uri = info->findURI(prefix); + if(uri.empty()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "no URI found for prefix " + prefix; + throw ex; + } + local = type.substr(pos + 1); + } + else + { + uri = info->getTargetNamespace(); + local = type; + } + + // + // Run through each document with targetNamespace == uri. If the type is contained in the document, then + // return the node & the document info. + // + pair<DocumentMap::const_iterator, DocumentMap::const_iterator> range = docs.equal_range(uri); + for(DocumentMap::const_iterator q = range.first; q != range.second; ++q) + { + if(findTypeInDocument(q->second->getDocument(), local, n)) + { + nInfo = q->second; + return true; + } + } + + return false; +} + +namespace XMLTransform +{ + +// +// Why won't MSVC allow name to be a string? +// +struct StringTypeTable +{ + const char* name; // COMPILERFIX: const string name; + TransformFactory::Type type; + + bool operator==(const string& rhs) const { return string(name) == rhs; } +}; + +} + +TransformFactory::Type +XMLTransform::TransformFactory::getType(const DOM_Node& node) +{ + // + // Check the appinfo element for the actual type. + // + static const StringTypeTable items[] = + { + { "enumeration", TypeEnumeration }, + { "struct", TypeStruct }, + { "class", TypeClass }, + { "exception", TypeException }, + { "dictionary", TypeDictionary }, + { "sequence", TypeSequence }, + { "proxy", TypeProxy }, + { "reference", TypeReference }, + { "internal", TypeInternal } + }; + static const StringTypeTable* begin = &items[0]; + static const StringTypeTable* end = &items[sizeof(items)/sizeof(items[0])]; + + string type; + + // + // Locate the annotation/appinfo/type node. + // + DOM_Node child = findChild(node, annotationElementName); + if(!child.isNull()) + { + child = findChild(child, appinfoElementName); + if(!child.isNull()) + { + child = findChild(child, "type"); + if(!child.isNull()) + { + child = child.getFirstChild(); + if(!child.isNull()) + { + type = toString(child.getNodeValue()); + } + } + } + } + + const StringTypeTable* p = find(begin, end, type); + if(p == end) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "no type found for element " + getNameAttribute(node); + throw ex; + } + + return p->type; +} + +TransformFactory::Type +XMLTransform::TransformFactory::getTypeByName(const DocumentMap& docs, const DocumentInfoPtr& info, const string& type, + DOM_Node& n, DocumentInfoPtr& nInfo) +{ + // + // First check to see if the type is a primitive schema type. + // + static const StringTypeTable items[] = + { + { "xs:byte", TypeInteger }, + { "xs:short", TypeInteger }, + { "xs:int", TypeInteger }, + { "xs:long", TypeInteger }, + { "xs:float", TypeFloat }, + { "xs:double", TypeFloat }, + { "xs:string", TypeString }, + }; + static const StringTypeTable* begin = &items[0]; + static const StringTypeTable* end = &items[sizeof(items)/sizeof(items[0])]; + + const StringTypeTable* p = find(begin, end, type); + if(p != end) + { + return p->type; + } + + if(!findType(docs, info, type, n, nInfo)) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "no node found for type " + type; + throw ex; + } + assert(!n.isNull() && nInfo); + + return getType(n); +} + +TransformPtr +XMLTransform::TransformFactory::createTransform(const DocumentInfoPtr& fromTypeInfo, const string& fromTypeName, + const DocumentInfoPtr& toTypeInfo, const string& toTypeName) +{ + DOM_Node from; + DocumentInfoPtr fromInfo; + Type fromType = getTypeByName(_fromDocs, fromTypeInfo, fromTypeName, from, fromInfo); + + DOM_Node to; + DocumentInfoPtr toInfo; + Type toType = getTypeByName(_toDocs, toTypeInfo, toTypeName, to, toInfo); + + TransformMap::const_iterator p = _types.find(fromTypeName); + if(p != _types.end()) + { + return p->second; + } + + TransformPtr transform = 0; + + // + // First handle transforms where the types are equivalent. + // + if(fromType == toType) + { + switch(fromType) + { + case TypeInteger: + { + // + // Don't cache this transform. + // + return new ValidateIntegerTransform(fromTypeName, toTypeName); + } + + case TypeFloat: + { + // + // Don't cache this transform. + // + return new ValidateFloatTransform(fromTypeName, toTypeName); + } + + case TypeString: + case TypeProxy: // Same as string + case TypeReference: // Same as string + { + transform = new NilTransform(); + break; + } + + case TypeEnumeration: + { + // + // If the type names are not the same then it's illegal. + // + // TODO: This doesn't allow the renaming of types. By removing this comparison renaming of types + // would be permitted. Should this be permitted? + // + if(fromTypeName != toTypeName) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "renaming types is not supported (from " + fromTypeName + " to " + toTypeName + ")"; + throw ex; + } + + transform = createEnumerationTransform(to); + break; + } + + case TypeStruct: + { + // + // If the type names are not the same then it's illegal. + // + // TODO: This doesn't allow the renaming of types. By removing this comparison renaming of types + // would be permitted. Should this be permitted? + // + if(fromTypeName != toTypeName) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "renaming types is not supported (from " + fromTypeName + " to " + toTypeName + ")"; + throw ex; + } + + vector<ElementTransformPtr> v; + createSequenceElementTransform(fromInfo, findChild(from, sequenceElementName), + toInfo, findChild(to, sequenceElementName), v); + transform = new StructTransform(v); + break; + } + + case TypeDictionary: + { + // + // If the type names are not the same then it's illegal. + // + // TODO: This doesn't allow the renaming of types. By removing this comparison renaming of types + // would be permitted. Should this be permitted? + // + if(fromTypeName != toTypeName) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "renaming types is not supported (from " + fromTypeName + " to " + toTypeName + ")"; + throw ex; + } + + DOM_Node fromSeq = findChild(from, sequenceElementName); + DOM_Node toSeq = findChild(to, sequenceElementName); + if(fromSeq.isNull() || toSeq.isNull()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "missing sequence element in " + fromTypeName; + throw ex; + } + + // + // Sequences have one element - which contains the type of the sequence. + // + DOM_Node fromElement = findChild(fromSeq, elementElementName); + DOM_Node toElement = findChild(toSeq, elementElementName); + + if(fromElement.isNull() || toElement.isNull()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "invalid sequence element in " + fromTypeName; + throw ex; + } + + transform = new SequenceTransform(createTransform(fromInfo, getTypeAttribute(fromElement), + toInfo, getTypeAttribute(toElement))); + break; + } + + case TypeSequence: + { + // + // If the type names are not the same then it's illegal. + // + // TODO: This doesn't allow the renaming of types. By removing this comparison renaming of types + // would be permitted. Should this be permitted? + // + if(fromTypeName != toTypeName) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "renaming types is not supported (from " + fromTypeName + " to " + toTypeName + ")"; + throw ex; + } + + DOM_Node fromSeq = findChild(from, sequenceElementName); + DOM_Node toSeq = findChild(to, sequenceElementName); + if(fromSeq.isNull() || toSeq.isNull()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "missing sequence element in " + fromTypeName; + throw ex; + } + + // + // Sequences have one element - which contains the type of the sequence. + // + DOM_Node fromElement = findChild(fromSeq, elementElementName); + DOM_Node toElement = findChild(toSeq, elementElementName); + if(fromElement.isNull() || toElement.isNull()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "invalid sequence element in " + fromTypeName; + throw ex; + } + + transform = new SequenceTransform(createTransform(fromInfo, getTypeAttribute(fromElement), + toInfo, getTypeAttribute(toElement))); + break; + } + + case TypeClass: + { + // + // If the type names are not the same then it's illegal. + // + // TODO: This doesn't allow the renaming of types. By removing this comparison renaming of types + // would be permitted. Should this be permitted? + // + if(fromTypeName != toTypeName) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "renaming types is not supported (from " + fromTypeName + " to " + toTypeName + ")"; + throw ex; + } + + string type = getNameAttribute(to); + type += '@'; + type += toInfo->getTargetNamespace(); + + if(_staticClassTransforms->find(type) == _staticClassTransforms->end()) + { + StructTransform* st = new StructTransform; + _staticClassTransforms->insert(make_pair(type, st)); + + vector<ElementTransformPtr> v; + createClassContentTransform(fromInfo, from, toInfo, to, v); + + st->setTransforms(v); + } + + return new ClassTransform(_staticClassTransforms); + } + + case TypeInternal: + { + // + // No transformation created for internal stuff. + // + transform = new InternalTransform(); + break; + } + + case TypeException: + default: + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "invalid type"; + throw ex; + } + } + } + + if(!transform) + { + // + // Next we have transforms from type-to-type. + // + if(fromType == TypeString && toType == TypeEnumeration) + { + // + // String to enumeration transform needs to validate the string as a member of the enumeration + // values. + // + transform = createEnumerationTransform(to); + } + else if(fromType == TypeEnumeration && toType == TypeString) + { + // + // Enumeration to string transform is nil transform. + // + transform = new NilTransform(); + } + } + + // + // TODO: struct->class, class->struct. + // + + if(!transform) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "cannot transform from " + fromTypeName + " to " + toTypeName; + throw ex; + } + + _types.insert(make_pair(fromTypeName, transform)); + + return transform; +} + +void +XMLTransform::TransformFactory::createSequenceElementTransform(const DocumentInfoPtr& fromInfo, const DOM_Node& from, + const DocumentInfoPtr& toInfo, const DOM_Node& to, + vector<ElementTransformPtr>& v) +{ + // + // Precondition: The nodes must not be nil. + // + if(from.isNull() || to.isNull()) + { + throw InvalidSchema(__FILE__, __LINE__); + } + + // + // Allowable transforms: + // + // * Node added. + // * Node removed. + // * Node moved. + // + + DOM_NodeList fromSeqChildren = from.getChildNodes(); + DOM_NodeList toSeqChildren = to.getChildNodes(); + + // + // First run through the to set. This loop handles the node + // remove, and node changed transforms (plus allowable type + // changes). + // + for(unsigned int i = 0; i < toSeqChildren.getLength(); ++i) + { + ElementTransformPtr transform; + DOM_Node toChild = toSeqChildren.item(i); + if(toChild.getNodeType() != DOM_Node::ELEMENT_NODE) + { + continue; + } + + if(toString(toChild.getNodeName()) != elementElementName) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "expected " + elementElementName + " but found " + toString(toChild.getNodeName()); + throw ex; + } + + string toElementName = getNameAttribute(toChild); + string toTypeName = getTypeAttribute(toChild); + + // + // Search for the node in the fromSeqChildren list. + // + for(unsigned int j = 0; j < fromSeqChildren.getLength(); ++j) + { + DOM_Node fromChild = fromSeqChildren.item(j); + + if(fromChild.getNodeType() != DOM_Node::ELEMENT_NODE) + { + // Skip non element nodes. + continue; + } + + if(toString(fromChild.getNodeName()) != elementElementName) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "expected " + elementElementName + " but found " + toString(fromChild.getNodeName()); + throw ex; + } + + string fromElementName = getNameAttribute(fromChild); + + if(fromElementName == toElementName) + { + transform = new ElementTransform(toInfo->getTargetNamespace(), toElementName, + createTransform(fromInfo, getTypeAttribute(fromChild), + toInfo, toTypeName)); + } + } + + // + // If there is no transform then this is a new node type. Create a transform to add an empty element + // of the appropriate type. + // + if(!transform) + { + transform = new ElementTransform(toInfo->getTargetNamespace(), toElementName, + createDefaultInitializedTransform(toInfo, toTypeName)); + } + + v.push_back(transform); + } +} + +void +XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPtr& fromInfo, const DOM_Node& from, + const DocumentInfoPtr& toInfo, const DOM_Node& to, + vector<ElementTransformPtr>& v) +{ + static const string baseAttrName = "base"; + + DOM_Node fromContent = findChild(from, complexContentElementName); + DOM_Node toContent = findChild(to, complexContentElementName); + + if(fromContent.isNull() && toContent.isNull()) + { + // + // Must be base of a class hierarchy (while this implementation is a little more flexible, with Ice it + // is limited to ::Ice::Object). + // + createSequenceElementTransform(fromInfo, findChild(from, sequenceElementName), + toInfo, findChild(to, sequenceElementName), v); + return; + } + + if(fromContent.isNull() || toContent.isNull()) + { + throw InvalidSchema(__FILE__, __LINE__); + } + + DOM_Node fromExtension = findChild(fromContent, extensionElementName); + DOM_Node toExtension = findChild(toContent, extensionElementName); + + if(fromExtension.isNull() || toExtension.isNull()) + { + throw InvalidSchema(__FILE__, __LINE__); + } + + string fromBaseName = getAttributeByName(fromExtension, baseAttrName); + string toBaseName = getAttributeByName(toExtension, baseAttrName); + + // + // It's not legal to change the base class. + // + if(fromBaseName != toBaseName) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "can't change base class from " + fromBaseName + " to " + toBaseName; + throw ex; + } + + DOM_Node fromBaseNode; + DocumentInfoPtr fromBaseInfo; + if(!findType(_fromDocs, fromInfo, fromBaseName, fromBaseNode, fromBaseInfo)) + { + SchemaViolation ex(__FILE__, __LINE__); + ex.reason = "unable to find type for " + fromBaseName; + throw ex; + } + assert(!fromBaseNode.isNull() && fromBaseInfo); + + DOM_Node toBaseNode; + DocumentInfoPtr toBaseInfo; + if(!findType(_toDocs, toInfo, toBaseName, toBaseNode, toBaseInfo)) + { + SchemaViolation ex(__FILE__, __LINE__); + ex.reason = "unable to find type for " + toBaseName; + throw ex; + } + assert(!toBaseNode.isNull() && toBaseInfo); + + // + // Find the content transform for the base type. + // + createClassContentTransform(fromBaseInfo, fromBaseNode, toBaseInfo, toBaseNode, v); + + createSequenceElementTransform(fromInfo, findChild(fromExtension, sequenceElementName), + toInfo, findChild(toExtension, sequenceElementName), v); +} + +void +XMLTransform::TransformFactory::createEnumValues(const DOM_Node& to, vector<string>& values) +{ + DOM_Node toRes = findChild(to, restrictionElementName); + if(toRes.isNull()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "didn't find " + restrictionElementName + " in " + toString(to.getNodeName()); + throw ex; + } + + // + // Gather up a list of allowable values. + // + DOM_NodeList toResChildren = toRes.getChildNodes(); + + for(unsigned int i = 0; i < toResChildren.getLength(); ++i) + { + DOM_Node toChild = toResChildren.item(i); + + if(toChild.getNodeType() != DOM_Node::ELEMENT_NODE) + { + continue; + } + + if(toString(toChild.getNodeName()) != enumerationElementName) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "expected " + enumerationElementName + " but found " + toString(toChild.getNodeName()); + throw ex; + } + + string value = getAttributeByName(toChild, "value"); + if(value.empty()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "didn't find value attribute in " + toString(toChild.getNodeName()); + throw ex; + } + + values.push_back(value); + } +} + +TransformPtr +XMLTransform::TransformFactory::createEnumerationTransform(const DOM_Node& to) +{ + vector<string> values; + createEnumValues(to, values); + + return new ValidateEnumerationTransform(values); +} + +TransformPtr +XMLTransform::TransformFactory::createDefaultInitializedTransform(const DocumentInfoPtr& info, const string& typeName) +{ + string fullTypeName = convertQName(typeName, info); + TransformMap::const_iterator p = _defaultInitializedTransforms.find(fullTypeName); + if(p != _defaultInitializedTransforms.end()) + { + // + // Return cached empty transform. + // + return p->second; + } + + DOM_Node n; + DocumentInfoPtr nInfo; + Type type = getTypeByName(_toDocs, info, typeName, n, nInfo); + + TransformPtr transform = 0; + switch(type) + { + case TypeInteger: + transform = new EmitStringTransform("0"); + break; + + case TypeFloat: + transform = new EmitStringTransform("0.0"); + break; + + case TypeProxy: + case TypeReference: + case TypeString: + // + // Default string, reference & proxy is empty. + // + transform = new EmitStringTransform(""); + break; + + case TypeEnumeration: + { + if(n.isNull()) + { + throw InvalidSchema(__FILE__, __LINE__); + } + + vector<string> values; + createEnumValues(n, values); + transform = new EmitStringTransform(values[0]); + break; + } + + case TypeStruct: + { + if(n.isNull()) + { + throw InvalidSchema(__FILE__, __LINE__); + } + + DOM_Node seq = findChild(n, sequenceElementName); + if(seq.isNull()) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "didn't find " + sequenceElementName + " in struct"; + throw ex; + } + + vector<ElementTransformPtr> v; + createDefaultInitializedSequenceElementTransform(info, seq, v); + transform = new DefaultInitializedStructTransform(v); + break; + } + + case TypeDictionary: + case TypeSequence: + { + if(n.isNull()) + { + throw InvalidSchema(__FILE__, __LINE__); + } + transform = new EmitAttributeTransform("length", "0"); + break; + } + + case TypeInternal: + case TypeException: + case TypeClass: + default: + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "cannot create default initialized value"; + throw ex; + } + } + + if(!transform) + { + IllegalTransform ex(__FILE__, __LINE__); + ex.reason = "can't create default transform for " + typeName; + throw ex; + } + + _defaultInitializedTransforms.insert(make_pair(fullTypeName, transform)); + + return transform; +} + +void +XMLTransform::TransformFactory::createDefaultInitializedSequenceElementTransform(const DocumentInfoPtr& info, + const DOM_Node& node, + vector<ElementTransformPtr>& v) +{ + // + // Allowable transforms: + // + // * Node added. + // * Node removed. + // * Node moved. + // + + DOM_NodeList seqChild = node.getChildNodes(); + for(unsigned int i = 0; i < seqChild.getLength(); ++i) + { + DOM_Node child = seqChild.item(i); + if(child.getNodeType() != DOM_Node::ELEMENT_NODE) + { + continue; + } + + if(toString(child.getNodeName()) != elementElementName) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "expected " + elementElementName + " but found " + toString(child.getNodeName()); + throw ex; + } + + v.push_back(new ElementTransform(info->getTargetNamespace(), getNameAttribute(child), + createDefaultInitializedTransform(info, getTypeAttribute(child)))); + } +} + +DOM_Node +XMLTransform::TransformFactory::findSchemaRoot(const DOM_Document& root) +{ + DOMString schemaURI("http://www.w3.org/2001/XMLSchema"); + DOMString schemaLocalName("schema"); + DOM_Node n; + + DOM_NodeList nodes = root.getElementsByTagNameNS(schemaURI, schemaLocalName); + if(nodes.getLength() != 1) + { + InvalidSchema ex(__FILE__, __LINE__); + ex.reason = "unable to find schema root"; + throw ex; + } + return nodes.item(0); +} + + +XMLTransform::Transformer::Transformer(const Ice::StringSeq& paths, const DOM_Document& fromDoc, + const DOM_Document& toDoc) +{ + TransformFactory factory(paths); + factory.create(fromDoc, toDoc, &_elements, &_staticClassTransforms); +} + +XMLTransform::Transformer::~Transformer() +{ +} + +void +XMLTransform::Transformer::transform(::IceUtil::XMLOutput& os, const DOM_Document& doc, bool emitRoot) +{ + DOM_Node root = doc.getFirstChild(); + + unsigned int i; + + if(emitRoot) + { + os << ::IceUtil::se(toString(root.getNodeName())); + DOM_NamedNodeMap attributes = root.getAttributes(); + for(i = 0; i < attributes.getLength(); ++i) + { + DOM_Node attribute = attributes.item(i); + os << ::IceUtil::attr(toString(attribute.getNodeName()), toString(attribute.getNodeValue())); + } + } + + DocumentInfoPtr info = new DocumentInfo(doc, root); + + DOM_NodeList children = root.getChildNodes(); + for(i = 0; i < children.getLength(); ++i) + { + DOM_Node child = children.item(i); + if(child.getNodeType() != DOM_Node::ELEMENT_NODE) + { + continue; + } + + string nodeName = toString(child.getNodeName()); + + // + // Create local@namespace version of the element name. + // + string n = convertQName(nodeName, info); + + TransformMap::const_iterator p = _elements.find(n); + if(p == _elements.end()) + { + SchemaViolation ex(__FILE__, __LINE__); + ex.reason = "cannot find element " + n; + throw ex; + } + + p->second->transform(os, info, nodeName, child); + } + + if(emitRoot) + { + os << ::IceUtil::ee; + } +} + +XMLTransform::DBTransformer::DBTransformer() +{ + try + { + XMLPlatformUtils::Initialize(); + } + catch(const XMLException& ex) + { + cerr << "Error during xerces initialization: " << toString(ex.getMessage()) << endl; + throw Ice::SystemException(__FILE__, __LINE__); // TODO: Better exception? + } +} + +XMLTransform::DBTransformer::~DBTransformer() +{ + XMLPlatformUtils::Terminate(); +} + +void +XMLTransform::DBTransformer::transform(const DBEnvironmentPtr& dbEnv, const DBPtr& db, const Ice::StringSeq& paths, + const string& oldSchemaFile, const string& newSchemaFile) +{ + DOMParser parser; + parser.setValidationScheme(DOMParser::Val_Auto); + parser.setDoNamespaces(true); + + DOMTreeErrorReporter errReporter; + parser.setErrorHandler(&errReporter); + + DOM_Document oldSchema, newSchema; + + try + { + parser.parse(oldSchemaFile.c_str()); + oldSchema = parser.getDocument(); + + parser.parse(newSchemaFile.c_str()); + newSchema = parser.getDocument(); + } + catch(const XMLException& ex) + { + InvalidSchema e(__FILE__, __LINE__); + e.reason = "XML exception: " + toString(ex.getMessage()); + throw e; + } + catch(const SAXException& ex) + { + InvalidSchema e(__FILE__, __LINE__); + e.reason = "SAX exception: " + toString(ex.getMessage()); + throw e; + } + catch(...) + { + InvalidSchema e(__FILE__, __LINE__); + e.reason = "Unexpected exception"; + throw e; + } + + DBCursorPtr cursor; + DBTransactionPtr txn; + string reason; + try + { + Transformer transformer(paths, oldSchema, newSchema); + + const string header = "<ice:data xmlns=\"http://www.noorg.org/schemas\"" + " xmlns:ice=\"http://www.mutablerealms.com/schemas\"" + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:schemaLocation=\"http://www.noorg.org/schemas " + oldSchemaFile + "\">"; + const string footer = "</ice:data>"; + + // + // The database will be modified in place. Since keys can be changed, + // we can't use a cursor to perform the changes. We collect all of the + // keys first, then update the records. + // + vector<Key> keys; + cursor = db->getCursor(); + do + { + Key k; + Value v; + cursor->curr(k, v); + keys.push_back(k); + } + while(cursor->next()); + cursor->close(); + cursor = 0; + + txn = dbEnv->startTransaction(); + + vector<Key>::const_iterator p; + for(p = keys.begin(); p != keys.end(); ++p) + { + const Key& k = *p; + + // + // Transform key + // + string fullKey; + fullKey.append(header); + fullKey.append(&k[0], k.size()); + fullKey.append(footer); + MemBufInputSource keySource((const XMLByte*)fullKey.data(), fullKey.size(), "key"); + parser.parse(keySource); + DOM_Document keyDoc = parser.getDocument(); + + ostringstream keyStream; + IceUtil::XMLOutput keyOut(keyStream); + transformer.transform(keyOut, keyDoc, false); + + Key newKey; + const std::string& keyStr = keyStream.str(); + newKey.resize(keyStr.size()); + std::copy(keyStr.begin(), keyStr.end(), newKey.begin()); + + // + // Transform value + // + Value value = db->get(k); + string fullValue; + fullValue.append(header); + fullValue.append(&value[0], value.size()); + fullValue.append(footer); + MemBufInputSource valueSource((const XMLByte*)fullValue.data(), fullValue.size(), "value"); + parser.parse(valueSource); + DOM_Document valueDoc = parser.getDocument(); + + ostringstream valueStream; + IceUtil::XMLOutput valueOut(valueStream); + transformer.transform(valueOut, valueDoc, false); + + Value newValue; + const std::string& valueStr = valueStream.str(); + newValue.resize(valueStr.size()); + std::copy(valueStr.begin(), valueStr.end(), newValue.begin()); + + // + // Update database - only insert new key,value pair if the transformed + // key doesn't match an existing key. + // + db->del(k); + if(db->contains(newKey)) + { + reason = "transformed key matches an existing record:\n" + keyStr; + txn->abort(); + txn = 0; + break; + } + db->put(newKey, newValue); + } + + if(txn) + { + txn->commit(); + txn = 0; + } + } + catch(const DBNotFoundException&) + { + // Database is empty + } + catch(const XMLException& ex) + { + reason = "XML exception: " + toString(ex.getMessage()); + } + catch(const SAXException& ex) + { + reason = "SAX exception: " + toString(ex.getMessage()); + } + catch(const DOM_DOMException& ex) + { + ostringstream out; + out << "DOM exception (" << ex.code << ") " << toString(ex.msg); + reason = out.str(); + } + catch(...) + { + if(cursor) + { + cursor->close(); + } + if(txn) + { + txn->abort(); + } + throw; + } + + if(cursor) + { + cursor->close(); + } + + if(txn) + { + txn->abort(); + } + + if(!reason.empty()) + { + TransformException ex(__FILE__, __LINE__); + ex.reason = reason; + throw ex; + } +} diff --git a/cpp/src/XMLTransform/xmltransform.dsp b/cpp/src/XMLTransform/xmltransform.dsp new file mode 100644 index 00000000000..cfc0277cfbd --- /dev/null +++ b/cpp/src/XMLTransform/xmltransform.dsp @@ -0,0 +1,126 @@ +# Microsoft Developer Studio Project File - Name="XMLTransform" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=XMLTransform - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "XMLTransform.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "XMLTransform.mak" CFG="XMLTransform - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "XMLTransform - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "XMLTransform - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "XMLTransform - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBRARY_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MD /W3 /WX /GR /GX /O2 /I "." /I ".." /I "../../include" /D "NDEBUG" /D "_USRDLL" /D "XML_TRANSFORM_API_EXPORTS" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 xerces-c_1.lib /nologo /dll /machine:I386 /out:"Release/xmltransform001.dll" /libpath:"../../../lib"
+# SUBTRACT LINK32 /pdb:none /debug /nodefaultlib
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=copy Release\xmltransform001.* ..\..\lib
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "XMLTransform - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBRARY_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /WX /Gm /GR /GX /Zi /Od /I "." /I ".." /I "../../include" /D "_DEBUG" /D "_USRDLL" /D "XML_TRANSFORM_API_EXPORTS" /D "_CONSOLE" /D "_UNICODE" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 xerces-c_1D.lib /nologo /dll /debug /machine:I386 /out:"Debug/xmltransform001d.dll" /pdbtype:sept /libpath:"../../../lib"
+# SUBTRACT LINK32 /pdb:none /nodefaultlib
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=copy Debug\xmltransform001d.* ..\..\lib
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "XMLTransform - Win32 Release"
+# Name "XMLTransform - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\XMLTransform.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ErrorReporter.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\include\XMLTransform\XMLTransform.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# End Group
+# End Target
+# End Project
diff --git a/cpp/src/XMLTransform/xmltransformC.dsp b/cpp/src/XMLTransform/xmltransformC.dsp new file mode 100644 index 00000000000..e9cb2a37831 --- /dev/null +++ b/cpp/src/XMLTransform/xmltransformC.dsp @@ -0,0 +1,98 @@ +# Microsoft Developer Studio Project File - Name="XMLTransformC" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=XMLTransformC - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "XMLTransformC.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "XMLTransformC.mak" CFG="XMLTransformC - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "XMLTransformC - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "XMLTransformC - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "XMLTransformC - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /WX /GR /GX /O2 /I ".." /I "../../include" /I "dummyinclude" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 setargv.obj /nologo /subsystem:console /machine:I386 /out:"../../bin/transformdb.exe" /libpath:"../../../lib"
+# SUBTRACT LINK32 /debug /nodefaultlib
+
+!ELSEIF "$(CFG)" == "XMLTransformC - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /WX /Gm /GR /GX /Zi /Od /I ".." /I "../../include" /I "dummyinclude" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 setargv.obj /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/transformdb.exe" /pdbtype:sept /libpath:"../../../lib"
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF
+
+# Begin Target
+
+# Name "XMLTransformC - Win32 Release"
+# Name "XMLTransformC - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\TransformDB.cpp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/cpp/test/Makefile b/cpp/test/Makefile index 8fc7fc58b7e..914be198e29 100644 --- a/cpp/test/Makefile +++ b/cpp/test/Makefile @@ -20,7 +20,8 @@ SUBDIRS = IceUtil \ Yellow \ IcePack \ Freeze \ - Glacier + Glacier \ + XMLTransform $(EVERYTHING):: @for subdir in $(SUBDIRS); \ diff --git a/cpp/test/XMLTransform/Makefile b/cpp/test/XMLTransform/Makefile new file mode 100644 index 00000000000..369690284a4 --- /dev/null +++ b/cpp/test/XMLTransform/Makefile @@ -0,0 +1,22 @@ +# ********************************************************************** +# +# Copyright (c) 2002 +# Mutable Realms, Inc. +# Huntsville, AL, USA +# +# All Rights Reserved +# +# ********************************************************************** + +top_srcdir = ../.. + +include $(top_srcdir)/config/Make.rules + +SUBDIRS = transform + +$(EVERYTHING):: + @for subdir in $(SUBDIRS); \ + do \ + echo "making $@ in $$subdir"; \ + ( cd $$subdir && $(MAKE) $@ ) || exit 1; \ + done diff --git a/cpp/test/XMLTransform/transform/.depend b/cpp/test/XMLTransform/transform/.depend new file mode 100644 index 00000000000..48e6e05ed75 --- /dev/null +++ b/cpp/test/XMLTransform/transform/.depend @@ -0,0 +1,32 @@ +Populate.o: Populate.cpp ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/InstanceF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h ../../../include/Freeze/Map.h ../../../include/XMLTransform/XMLTransform.h ../../../include/IceUtil/OutputUtil.h ../../include/TestCommon.h IntByteMap.h IntShortMap.h IntIntMap.h IntLongMap.h IntFloatMap.h IntDoubleMap.h IntSeq1MapOld.h TestOld.h IntSeq2MapOld.h IntSeq3MapOld.h IntSeq4MapOld.h IntE1MapOld.h IntD1MapOld.h IntS1MapOld.h IntC1MapOld.h +IntByteMap.o: IntByteMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntByteMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntShortMap.o: IntShortMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntShortMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntIntMap.o: IntIntMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntIntMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntLongMap.o: IntLongMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntLongMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntFloatMap.o: IntFloatMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntFloatMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntDoubleMap.o: IntDoubleMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntDoubleMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntSeq1MapOld.o: IntSeq1MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq1MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +IntSeq2MapOld.o: IntSeq2MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq2MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +IntSeq3MapOld.o: IntSeq3MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq3MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +IntSeq4MapOld.o: IntSeq4MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq4MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +IntE1MapOld.o: IntE1MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntE1MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +IntD1MapOld.o: IntD1MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntD1MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +IntS1MapOld.o: IntS1MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntS1MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +IntC1MapOld.o: IntC1MapOld.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntC1MapOld.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestOld.h +TestOld.o: TestOld.cpp TestOld.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/Stream.h ../../../include/Ice/BuiltinSequences.h +Validate.o: Validate.cpp ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/InstanceF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h ../../../include/Freeze/Map.h ../../include/TestCommon.h IntByteMap.h IntShortMap.h IntIntMap.h IntLongMap.h IntFloatMap.h IntDoubleMap.h IntSeq1MapNew.h TestNew.h IntSeq2MapNew.h IntSeq3MapNew.h IntSeq4MapNew.h IntE1MapNew.h IntD1MapNew.h IntS1MapNew.h IntC1MapNew.h +IntByteMap.o: IntByteMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntByteMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntShortMap.o: IntShortMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntShortMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntIntMap.o: IntIntMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntIntMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntLongMap.o: IntLongMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntLongMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntFloatMap.o: IntFloatMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntFloatMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntDoubleMap.o: IntDoubleMap.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntDoubleMap.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h +IntSeq1MapNew.o: IntSeq1MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq1MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +IntSeq2MapNew.o: IntSeq2MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq2MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +IntSeq3MapNew.o: IntSeq3MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq3MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +IntSeq4MapNew.o: IntSeq4MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntSeq4MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +IntE1MapNew.o: IntE1MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntE1MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +IntD1MapNew.o: IntD1MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntD1MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +IntS1MapNew.o: IntS1MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntS1MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +IntC1MapNew.o: IntC1MapNew.cpp ../../../include/IceXML/StreamI.h ../../../include/Ice/Stream.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/BuiltinSequences.h ../../../include/Ice/CommunicatorF.h ../../../include/IceUtil/OutputUtil.h IntC1MapNew.h ../../../include/Freeze/Map.h ../../../include/Ice/Ice.h ../../../include/Ice/Initialize.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/LoggerUtil.h ../../../include/Ice/LoggerF.h ../../../include/Ice/Communicator.h ../../../include/Ice/UserExceptionFactoryF.h ../../../include/Ice/RouterF.h ../../../include/Ice/LocatorF.h ../../../include/Ice/PluginF.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/UserExceptionFactory.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/ServantLocator.h ../../../include/Ice/IdentityUtil.h ../../../include/Freeze/DB.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h TestNew.h +TestNew.o: TestNew.cpp TestNew.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Exception.h ../../../include/IceUtil/Config.h ../../../include/Ice/Config.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Exception.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/StreamF.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Mutex.h ../../../include/IceUtil/Lock.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/ConnectionF.h ../../../include/Ice/EndpointF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Current.h ../../../include/Ice/Identity.h ../../../include/Ice/Facet.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/IceUtil/Monitor.h ../../../include/IceUtil/Cond.h ../../../include/IceUtil/Time.h ../../../include/Ice/BasicStream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/ObjectFactoryF.h ../../../include/Ice/Incoming.h ../../../include/Ice/Direct.h ../../../include/Ice/ServantLocatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/ObjectFactory.h ../../../include/Ice/Stream.h ../../../include/Ice/BuiltinSequences.h diff --git a/cpp/test/XMLTransform/transform/Makefile b/cpp/test/XMLTransform/transform/Makefile new file mode 100644 index 00000000000..ded12fd58d9 --- /dev/null +++ b/cpp/test/XMLTransform/transform/Makefile @@ -0,0 +1,201 @@ +# ********************************************************************** +# +# Copyright (c) 2002 +# Mutable Realms, Inc. +# Huntsville, AL, USA +# +# All Rights Reserved +# +# ********************************************************************** + +top_srcdir = ../../.. + +POPULATE = populate +VALIDATE = validate + +TARGETS = $(POPULATE) \ + $(VALIDATE) + +POPULATE_OBJS = Populate.o \ + IntByteMap.o \ + IntShortMap.o \ + IntIntMap.o \ + IntLongMap.o \ + IntFloatMap.o \ + IntDoubleMap.o \ + IntSeq1MapOld.o \ + IntSeq2MapOld.o \ + IntSeq3MapOld.o \ + IntSeq4MapOld.o \ + IntE1MapOld.o \ + IntD1MapOld.o \ + IntS1MapOld.o \ + IntC1MapOld.o \ + TestOld.o + +VALIDATE_OBJS = Validate.o \ + IntByteMap.o \ + IntShortMap.o \ + IntIntMap.o \ + IntLongMap.o \ + IntFloatMap.o \ + IntDoubleMap.o \ + IntSeq1MapNew.o \ + IntSeq2MapNew.o \ + IntSeq3MapNew.o \ + IntSeq4MapNew.o \ + IntE1MapNew.o \ + IntD1MapNew.o \ + IntS1MapNew.o \ + IntC1MapNew.o \ + TestNew.o + +SRCS = $(POPULATE_OBJS:.o=.cpp) \ + $(VALIDATE_OBJS:.o=.cpp) + +SCHEMAS = TestOld.xsd \ + TestNew.xsd + +include $(top_srcdir)/config/Make.rules + +CPPFLAGS := -I. -I../../include $(XERCESC_FLAGS) -I$(DB_HOME)/include $(CPPFLAGS) +LDFLAGS := $(LDFLAGS) $(XERCESC_LIBS) -L$(DB_HOME)/lib + +$(POPULATE): $(POPULATE_OBJS) $(SCHEMAS) + rm -f $@ + $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(POPULATE_OBJS) -lFreeze -lIceXML -lXMLTransform $(LIBS) -ldb + +$(VALIDATE): $(VALIDATE_OBJS) + rm -f $@ + $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(VALIDATE_OBJS) -lFreeze -lIceXML -lXMLTransform $(LIBS) -ldb + +IntByteMap.h IntByteMap.cpp: $(SLICE2FREEZE) + rm -f IntByteMap.h IntByteMap.cpp + $(SLICE2FREEZE) --dict IntByteMap,int,byte IntByteMap + +IntShortMap.h IntShortMap.cpp: $(SLICE2FREEZE) + rm -f IntShortMap.h IntShortMap.cpp + $(SLICE2FREEZE) --dict IntShortMap,int,short IntShortMap + +IntIntMap.h IntIntMap.cpp: $(SLICE2FREEZE) + rm -f IntIntMap.h IntIntMap.cpp + $(SLICE2FREEZE) --dict IntIntMap,int,int IntIntMap + +IntLongMap.h IntLongMap.cpp: $(SLICE2FREEZE) + rm -f IntLongMap.h IntLongMap.cpp + $(SLICE2FREEZE) --dict IntLongMap,int,long IntLongMap + +IntFloatMap.h IntFloatMap.cpp: $(SLICE2FREEZE) + rm -f IntFloatMap.h IntFloatMap.cpp + $(SLICE2FREEZE) --dict IntFloatMap,int,float IntFloatMap + +IntDoubleMap.h IntDoubleMap.cpp: $(SLICE2FREEZE) + rm -f IntDoubleMap.h IntDoubleMap.cpp + $(SLICE2FREEZE) --dict IntDoubleMap,int,double IntDoubleMap + +IntSeq1MapOld.h IntSeq1MapOld.cpp: $(SLICE2FREEZE) + rm -f IntSeq1MapOld.h IntSeq1MapOld.cpp + $(SLICE2FREEZE) --dict IntSeq1Map,int,Test::Seq1 IntSeq1MapOld TestOld.ice + +IntSeq1MapNew.h IntSeq1MapNew.cpp: $(SLICE2FREEZE) + rm -f IntSeq1MapNew.h IntSeq1MapNew.cpp + $(SLICE2FREEZE) --dict IntSeq1Map,int,Test::Seq1 IntSeq1MapNew TestNew.ice + +IntSeq2MapOld.h IntSeq2MapOld.cpp: $(SLICE2FREEZE) + rm -f IntSeq2MapOld.h IntSeq2MapOld.cpp + $(SLICE2FREEZE) --dict IntSeq2Map,int,Test::Seq2 IntSeq2MapOld TestOld.ice + +IntSeq2MapNew.h IntSeq2MapNew.cpp: $(SLICE2FREEZE) + rm -f IntSeq2MapNew.h IntSeq2MapNew.cpp + $(SLICE2FREEZE) --dict IntSeq2Map,int,Test::Seq2 IntSeq2MapNew TestNew.ice + +IntSeq3MapOld.h IntSeq3MapOld.cpp: $(SLICE2FREEZE) + rm -f IntSeq3MapOld.h IntSeq3MapOld.cpp + $(SLICE2FREEZE) --dict IntSeq3Map,int,Test::Seq3 IntSeq3MapOld TestOld.ice + +IntSeq3MapNew.h IntSeq3MapNew.cpp: $(SLICE2FREEZE) + rm -f IntSeq3MapNew.h IntSeq3MapNew.cpp + $(SLICE2FREEZE) --dict IntSeq3Map,int,Test::Seq3 IntSeq3MapNew TestNew.ice + +IntSeq4MapOld.h IntSeq4MapOld.cpp: $(SLICE2FREEZE) + rm -f IntSeq4MapOld.h IntSeq4MapOld.cpp + $(SLICE2FREEZE) --dict IntSeq4Map,int,Test::Seq4 IntSeq4MapOld TestOld.ice + +IntSeq4MapNew.h IntSeq4MapNew.cpp: $(SLICE2FREEZE) + rm -f IntSeq4MapNew.h IntSeq4MapNew.cpp + $(SLICE2FREEZE) --dict IntSeq4Map,int,Test::Seq4 IntSeq4MapNew TestNew.ice + +IntE1MapOld.h IntE1MapOld.cpp: $(SLICE2FREEZE) + rm -f IntE1MapOld.h IntE1MapOld.cpp + $(SLICE2FREEZE) --dict IntE1Map,int,Test::E1 IntE1MapOld TestOld.ice + +IntE1MapNew.h IntE1MapNew.cpp: $(SLICE2FREEZE) + rm -f IntE1MapNew.h IntE1MapNew.cpp + $(SLICE2FREEZE) --dict IntE1Map,int,Test::E1 IntE1MapNew TestNew.ice + +IntD1MapOld.h IntD1MapOld.cpp: $(SLICE2FREEZE) + rm -f IntD1MapOld.h IntD1MapOld.cpp + $(SLICE2FREEZE) --dict IntD1Map,int,Test::D1 IntD1MapOld TestOld.ice + +IntD1MapNew.h IntD1MapNew.cpp: $(SLICE2FREEZE) + rm -f IntD1MapNew.h IntD1MapNew.cpp + $(SLICE2FREEZE) --dict IntD1Map,int,Test::D1 IntD1MapNew TestNew.ice + +IntS1MapOld.h IntS1MapOld.cpp: $(SLICE2FREEZE) + rm -f IntS1MapOld.h IntS1MapOld.cpp + $(SLICE2FREEZE) --dict IntS1Map,int,Test::S1 IntS1MapOld TestOld.ice + +IntS1MapNew.h IntS1MapNew.cpp: $(SLICE2FREEZE) + rm -f IntS1MapNew.h IntS1MapNew.cpp + $(SLICE2FREEZE) --dict IntS1Map,int,Test::S1 IntS1MapNew TestNew.ice + +IntC1MapOld.h IntC1MapOld.cpp: $(SLICE2FREEZE) + rm -f IntC1MapOld.h IntC1MapOld.cpp + $(SLICE2FREEZE) --dict IntC1Map,int,Test::C1 IntC1MapOld TestOld.ice + +IntC1MapNew.h IntC1MapNew.cpp: $(SLICE2FREEZE) + rm -f IntC1MapNew.h IntC1MapNew.cpp + $(SLICE2FREEZE) --dict IntC1Map,int,Test::C1 IntC1MapNew TestNew.ice + +TestOld.xsd: TestOld.ice $(SLICE2XSD) + $(SLICE2XSD) TestOld.ice + +TestNew.xsd: TestNew.ice $(SLICE2XSD) + $(SLICE2XSD) TestNew.ice + +TestOld.h TestOld.cpp: TestOld.ice + rm -f TestOld.h TestOld.cpp + $(SLICE2CPP) TestOld.ice + +TestNew.h TestNew.cpp: TestNew.ice + rm -f TestNew.h TestNew.cpp + $(SLICE2CPP) TestNew.ice + +clean:: + rm -f IntByteMap.h IntByteMap.cpp + rm -f IntShortMap.h IntShortMap.cpp + rm -f IntIntMap.h IntIntMap.cpp + rm -f IntLongMap.h IntLongMap.cpp + rm -f IntFloatMap.h IntFloatMap.cpp + rm -f IntDoubleMap.h IntDoubleMap.cpp + rm -f old.xsd new.xsd + rm -f TestOld.h TestOld.cpp TestOld.xsd + rm -f TestNew.h TestNew.cpp TestNew.xsd + rm -f IntSeq1MapOld.h IntSeq1MapOld.cpp + rm -f IntSeq1MapNew.h IntSeq1MapNew.cpp + rm -f IntSeq2MapOld.h IntSeq2MapOld.cpp + rm -f IntSeq2MapNew.h IntSeq2MapNew.cpp + rm -f IntSeq3MapOld.h IntSeq3MapOld.cpp + rm -f IntSeq3MapNew.h IntSeq3MapNew.cpp + rm -f IntSeq4MapOld.h IntSeq4MapOld.cpp + rm -f IntSeq4MapNew.h IntSeq4MapNew.cpp + rm -f IntE1MapOld.h IntE1MapOld.cpp + rm -f IntE1MapNew.h IntE1MapNew.cpp + rm -f IntD1MapOld.h IntD1MapOld.cpp + rm -f IntD1MapNew.h IntD1MapNew.cpp + rm -f IntS1MapOld.h IntS1MapOld.cpp + rm -f IntS1MapNew.h IntS1MapNew.cpp + rm -f IntC1MapOld.h IntC1MapOld.cpp + rm -f IntC1MapNew.h IntC1MapNew.cpp + +include .depend diff --git a/cpp/test/XMLTransform/transform/Populate.cpp b/cpp/test/XMLTransform/transform/Populate.cpp new file mode 100644 index 00000000000..66dcc41bb8c --- /dev/null +++ b/cpp/test/XMLTransform/transform/Populate.cpp @@ -0,0 +1,938 @@ +// ********************************************************************** +// +// Copyright (c) 2002 +// Mutable Realms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Freeze/Freeze.h> +#include <XMLTransform/XMLTransform.h> +#include <TestCommon.h> +#include <IntByteMap.h> +#include <IntShortMap.h> +#include <IntIntMap.h> +#include <IntLongMap.h> +#include <IntFloatMap.h> +#include <IntDoubleMap.h> +#include <IntSeq1MapOld.h> +#include <IntSeq2MapOld.h> +#include <IntSeq3MapOld.h> +#include <IntSeq4MapOld.h> +#include <IntE1MapOld.h> +#include <IntD1MapOld.h> +#include <IntS1MapOld.h> +#include <IntC1MapOld.h> + +#include <fstream> + +using namespace std; +using namespace Ice; +using namespace Freeze; + +#define NUM_KEYS 50 +#define NUM_ELEMENTS 50 + +static const string oldSchema = "old.xsd"; +static const string newSchema = "new.xsd"; +static StringSeq paths; + +static void +usage(const char* n) +{ + cerr << "Usage: " << n << " [options]\n"; + cerr << + "Options:\n" + "-IDIR Add directory DIR to the schema search path.\n" + "--db-dir DIR Use directory DIR for the database environment.\n" + ; +} + +static void +emitSchema(const string& file, const string& import, const string& valueType) +{ + ofstream out(file.c_str()); + test(out.good()); + + out << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl + << "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"" << endl + << " elementFormDefault=\"qualified\"" << endl + << " xmlns:tns=\"http://www.noorg.org/schemas\"" << endl + << " targetNamespace=\"http://www.noorg.org/schemas\">" << endl + << " <xs:import namespace=\"http://www.noorg.org/schemas\" schemaLocation=\"" << import << "\"/>" << endl + << " <xs:element name=\"Key\" type=\"xs:int\"/>" << endl + << " <xs:element name=\"Value\" type=\"" << valueType << "\"/></xs:schema>" << endl; +} + +static void +emitSchemas(const string& fromValueType, const string& toValueType) +{ + emitSchema(oldSchema, "TestOld.xsd", fromValueType); + emitSchema(newSchema, "TestNew.xsd", toValueType); +} + +static void +transformPrimitive(const DBEnvironmentPtr& dbEnv) +{ + Int i; + + DBPtr db; + XMLTransform::DBTransformer transformer; + + cout << "transforming primitives... " << flush; + + try + { + // + // Transform byte to short + // + db = dbEnv->openDB("byteToShort", true); + db->clear(); + + { + IntByteMap map(db); + for(i = 0; i < NUM_KEYS; i++) + { + map.insert(make_pair(i, i)); + } + } + + emitSchemas("xs:byte", "xs:short"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform short to int + // + db = dbEnv->openDB("shortToInt", true); + db->clear(); + + { + IntShortMap map(db); + for(i = 0; i < NUM_KEYS; i++) + { + map.insert(make_pair(i, i)); + } + } + + emitSchemas("xs:short", "xs:int"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform int to long + // + db = dbEnv->openDB("intToLong", true); + db->clear(); + + { + IntIntMap map(db); + for(i = 0; i < NUM_KEYS; i++) + { + map.insert(make_pair(i, i)); + } + } + + emitSchemas("xs:int", "xs:long"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform long to byte + // + db = dbEnv->openDB("longToByte", true); + db->clear(); + + { + IntLongMap map(db); + for(i = 0; i < NUM_KEYS; i++) + { + map.insert(make_pair(i, i)); + } + } + + emitSchemas("xs:long", "xs:byte"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform float to double + // + db = dbEnv->openDB("floatToDouble", true); + db->clear(); + + { + IntFloatMap map(db); + for(i = 0; i < NUM_KEYS; i++) + { + map.insert(make_pair(i, i)); + } + } + + emitSchemas("xs:float", "xs:double"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform long to byte (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntLongMap map(db); + Long l; + l = SCHAR_MIN; + map.insert(make_pair(0, l)); + map.insert(make_pair(1, l - 1)); // Out of range for byte. + l = SCHAR_MAX; + map.insert(make_pair(2, l)); + map.insert(make_pair(3, l + 1)); // Out of range for byte. + } + + emitSchemas("xs:long", "xs:byte"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + // + // Transform long to short (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntLongMap map(db); + Long l; + l = SHRT_MIN; + map.insert(make_pair(0, l)); + map.insert(make_pair(1, l - 1)); // Out of range for short. + l = SHRT_MAX; + map.insert(make_pair(2, l)); + map.insert(make_pair(3, l + 1)); // Out of range for short. + } + + emitSchemas("xs:long", "xs:short"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + // + // Transform long to int (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntLongMap map(db); + Long l; + l = INT_MIN; + map.insert(make_pair(0, l)); + map.insert(make_pair(1, l - 1)); // Out of range for int. + l = INT_MAX; + map.insert(make_pair(2, l)); + map.insert(make_pair(3, l + 1)); // Out of range for int. + } + + emitSchemas("xs:long", "xs:int"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +transformPrimitiveSequence(const DBEnvironmentPtr& dbEnv) +{ + Int i; + + DBPtr db; + XMLTransform::DBTransformer transformer; + + cout << "transforming primitive sequences... " << flush; + + try + { + // + // Transform byte to short sequence + // + db = dbEnv->openDB("byteToShortSeq", true); + db->clear(); + + { + IntSeq1Map map(db); + Test::Seq1 seq; + for(i = 0; i < NUM_ELEMENTS; i++) + { + seq.push_back(i); + } + map.insert(make_pair(0, seq)); + } + + emitSchemas("tns:_internal.Test.Seq1Type", "tns:_internal.Test.Seq1Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform short to int sequence + // + db = dbEnv->openDB("shortToIntSeq", true); + db->clear(); + + { + IntSeq2Map map(db); + Test::Seq2 seq; + for(i = 0; i < NUM_ELEMENTS; i++) + { + seq.push_back(i); + } + map.insert(make_pair(0, seq)); + } + + emitSchemas("tns:_internal.Test.Seq2Type", "tns:_internal.Test.Seq2Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform int to long sequence + // + db = dbEnv->openDB("intToLongSeq", true); + db->clear(); + + { + IntSeq3Map map(db); + Test::Seq3 seq; + for(i = 0; i < NUM_ELEMENTS; i++) + { + seq.push_back(i); + } + map.insert(make_pair(0, seq)); + } + + emitSchemas("tns:_internal.Test.Seq3Type", "tns:_internal.Test.Seq3Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform long to byte sequence + // + db = dbEnv->openDB("longToByteSeq", true); + db->clear(); + + { + IntSeq4Map map(db); + Test::Seq4 seq; + for(i = 0; i < NUM_ELEMENTS; i++) + { + seq.push_back(i); + } + map.insert(make_pair(0, seq)); + } + + emitSchemas("tns:_internal.Test.Seq4Type", "tns:_internal.Test.Seq4Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform long to byte sequence (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntSeq4Map map(db); + Test::Seq4 seq; + Long l; + l = SCHAR_MIN; + seq.push_back(l); + seq.push_back(l - 1); // Out of range for byte. + l = SCHAR_MAX; + seq.push_back(l); + seq.push_back(l + 1); // Out of range for byte. + map.insert(make_pair(0, seq)); + } + + emitSchemas("tns:_internal.Test.Seq4Type", "tns:_internal.Test.Seq4Type"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +transformEnum(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + XMLTransform::DBTransformer transformer; + + cout << "transforming enumerations... " << flush; + + try + { + // + // Don't use E1::three, which is removed in new schema + // + db = dbEnv->openDB("enum", true); + db->clear(); + + { + IntE1Map map(db); + map.insert(make_pair(0, Test::one)); + map.insert(make_pair(1, Test::two)); + } + + emitSchemas("tns:_internal.Test.E1Type", "tns:_internal.Test.E1Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Use E1::three, which is removed in new schema (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntE1Map map(db); + map.insert(make_pair(0, Test::one)); + map.insert(make_pair(1, Test::two)); + map.insert(make_pair(2, Test::three)); + } + + emitSchemas("tns:_internal.Test.E1Type", "tns:_internal.Test.E1Type"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +transformDictionary(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + XMLTransform::DBTransformer transformer; + + cout << "transforming dictionaries... " << flush; + + try + { + // + // Don't use E1::three, which is removed in new schema + // + db = dbEnv->openDB("dict", true); + db->clear(); + + { + IntD1Map map(db); + Test::D1 dict; + dict.insert(make_pair(string("one"), Test::one)); + dict.insert(make_pair(string("two"), Test::two)); + map.insert(make_pair(0, dict)); + } + + emitSchemas("tns:_internal.Test.D1Type", "tns:_internal.Test.D1Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Use E1::three, which is removed in new schema (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntD1Map map(db); + Test::D1 dict; + dict.insert(make_pair(string("one"), Test::one)); + dict.insert(make_pair(string("two"), Test::two)); + dict.insert(make_pair(string("three"), Test::three)); + map.insert(make_pair(0, dict)); + } + + emitSchemas("tns:_internal.Test.D1Type", "tns:_internal.Test.D1Type"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +transformStruct(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + XMLTransform::DBTransformer transformer; + + cout << "transforming structs... " << flush; + + try + { + // + // Transform S1 + // + db = dbEnv->openDB("struct", true); + db->clear(); + + { + IntS1Map map(db); + Test::S1 s1; + s1.b = false; + s1.i = 0; + map.insert(make_pair(0, s1)); + s1.b = true; + s1.i = 1; + map.insert(make_pair(1, s1)); + s1.b = true; + s1.i = 2; + map.insert(make_pair(2, s1)); + } + + emitSchemas("tns:_internal.Test.S1Type", "tns:_internal.Test.S1Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform S1 (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntS1Map map(db); + Test::S1 s1; + s1.b = false; + s1.i = SCHAR_MIN; + map.insert(make_pair(0, s1)); + s1.b = true; + s1.i = SCHAR_MAX; + map.insert(make_pair(1, s1)); + s1.b = true; + s1.i = ((Int)SCHAR_MAX) + 1; // Out of range for byte + map.insert(make_pair(2, s1)); + } + + emitSchemas("tns:_internal.Test.S1Type", "tns:_internal.Test.S1Type"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +transformClass(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + XMLTransform::DBTransformer transformer; + + cout << "transforming classes... " << flush; + + try + { + // + // Transform C2 + // + db = dbEnv->openDB("class", true); + db->clear(); + + { + IntC1Map map(db); + Test::C2Ptr c2; + c2 = new Test::C2; + c2->s = "0"; + c2->f = 0; + c2->b = 0; + c2->i = 0; + c2->l = 0; + c2->d = 0; + map.insert(make_pair(0, c2)); + c2 = new Test::C2; + c2->s = "1"; + c2->f = 1; + c2->b = 1; + c2->i = 1; + c2->l = 1; + c2->d = 1; + map.insert(make_pair(1, c2)); + c2 = new Test::C2; + c2->s = "2"; + c2->f = 2; + c2->b = 2; + c2->i = 2; + c2->l = 2; + c2->d = 2; + map.insert(make_pair(2, c2)); + + // + // Add an object with facets. + // + Test::C1Ptr c1Facet; + Test::C2Ptr c2Facet; + c2 = new Test::C2; + c2->s = "3"; + c2->f = 3; + c2->b = 3; + c2->i = 3; + c2->l = 3; + c2->d = 3; + c1Facet = new Test::C1; + c1Facet->s = "c1-0"; + c1Facet->f = 0; + c1Facet->b = 0; + c2->ice_addFacet(c1Facet, "c1-0"); + c1Facet = new Test::C1; + c1Facet->s = "c1-1"; + c1Facet->f = 1; + c1Facet->b = 1; + c2->ice_addFacet(c1Facet, "c1-1"); + c2Facet = new Test::C2; + c2Facet->s = "c1-2"; + c2Facet->f = 2; + c2Facet->b = 2; + c2Facet->i = 2; + c2Facet->l = 2; + c2Facet->d = 2; + c1Facet = new Test::C1; + c1Facet->s = "c2-0"; + c1Facet->f = 0; + c1Facet->b = 0; + c2Facet->ice_addFacet(c1Facet, "c2-0"); // Nested facet + c2->ice_addFacet(c2Facet, "c1-2"); + map.insert(make_pair(3, c2)); + } + + emitSchemas("tns:_internal.Test.C1Type", "tns:_internal.Test.C1Type"); + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + db->close(); + db = 0; + + // + // Transform C2 (should fail) + // + db = dbEnv->openDB("failure", true); + db->clear(); + + { + IntC1Map map(db); + Test::C2Ptr c2; + c2 = new Test::C2; + c2->s = "0"; + c2->f = 0; + c2->b = 0; + c2->i = 0; + c2->l = INT_MIN; + c2->d = 0; + map.insert(make_pair(0, c2)); + c2 = new Test::C2; + c2->s = "1"; + c2->f = 1; + c2->b = 1; + c2->i = 1; + c2->l = INT_MAX; + c2->d = 1; + map.insert(make_pair(1, c2)); + c2 = new Test::C2; + c2->s = "2"; + c2->f = 2; + c2->b = 2; + c2->i = 2; + c2->l = INT_MAX; + c2->l++; // Out of range for int + c2->d = 2; + map.insert(make_pair(2, c2)); + } + + emitSchemas("tns:_internal.Test.C1Type", "tns:_internal.Test.C1Type"); + + try + { + transformer.transform(dbEnv, db, paths, oldSchema, newSchema); + test(false); + } + catch(const XMLTransform::IllegalTransform&) + { + // Expected. + } + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + string dbEnvDir = "db"; + + int idx = 1; + while(idx < argc) + { + if(strncmp(argv[idx], "-I", 2) == 0) + { + string path = argv[idx] + 2; + if(path.length()) + { + paths.push_back(path); + } + + for(int i = idx ; i + 1 < argc ; ++i) + { + argv[i] = argv[i + 1]; + } + --argc; + } + else if(strcmp(argv[idx], "--db-dir") == 0) + { + if(idx + 1 >= argc) + { + cerr << argv[0] << ": argument expected for`" << argv[idx] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + + dbEnvDir = argv[idx + 1]; + for(int i = idx ; i + 2 < argc ; ++i) + { + argv[i] = argv[i + 2]; + } + argc -= 2; + } + else if(argv[idx][0] == '-') + { + cerr << argv[0] << ": unknown option `" << argv[idx] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + else + { + ++idx; + } + } + + DBEnvironmentPtr dbEnv; + + try + { + dbEnv = Freeze::initialize(communicator, dbEnvDir); + transformPrimitive(dbEnv); + transformPrimitiveSequence(dbEnv); + transformEnum(dbEnv); + transformDictionary(dbEnv); + transformStruct(dbEnv); + transformClass(dbEnv); + } + catch(...) + { + if(dbEnv) + { + dbEnv->close(); + } + throw; + } + + if(dbEnv) + { + dbEnv->close(); + } + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + Ice::CommunicatorPtr communicator; + + try + { + communicator = Ice::initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + return status; +} diff --git a/cpp/test/XMLTransform/transform/TestNew.ice b/cpp/test/XMLTransform/transform/TestNew.ice new file mode 100644 index 00000000000..7d36fe6bfb7 --- /dev/null +++ b/cpp/test/XMLTransform/transform/TestNew.ice @@ -0,0 +1,34 @@ +module Test +{ + +sequence<short> Seq1; // changed from byte to short +sequence<int> Seq2; // changed from short to int +sequence<long> Seq3; // changed from int to long +sequence<byte> Seq4; // changed from long to byte + +enum E1 { one, two, four }; // three removed, four added + +dictionary<string, E1> D1; + +struct S1 +{ + // b removed + byte i; // changed from int to byte + short s; // added +}; + +class C1 +{ + string s; // unchanged + // f removed + short b; // changed from byte to short +}; + +class C2 extends C1 +{ + int l; // changed from long to int + int i; // moved + // d removed +}; + +}; diff --git a/cpp/test/XMLTransform/transform/TestOld.ice b/cpp/test/XMLTransform/transform/TestOld.ice new file mode 100644 index 00000000000..d63e7cf317e --- /dev/null +++ b/cpp/test/XMLTransform/transform/TestOld.ice @@ -0,0 +1,33 @@ +module Test +{ + +sequence<byte> Seq1; +sequence<short> Seq2; +sequence<int> Seq3; +sequence<long> Seq4; + +enum E1 { one, two, three }; + +dictionary<string, E1> D1; + +struct S1 +{ + bool b; + int i; +}; + +class C1 +{ + string s; + float f; + byte b; +}; + +class C2 extends C1 +{ + int i; + long l; + double d; +}; + +}; diff --git a/cpp/test/XMLTransform/transform/Validate.cpp b/cpp/test/XMLTransform/transform/Validate.cpp new file mode 100644 index 00000000000..e5e4f034244 --- /dev/null +++ b/cpp/test/XMLTransform/transform/Validate.cpp @@ -0,0 +1,592 @@ +// ********************************************************************** +// +// Copyright (c) 2002 +// Mutable Realms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Freeze/Freeze.h> +#include <TestCommon.h> +#include <IntByteMap.h> +#include <IntShortMap.h> +#include <IntIntMap.h> +#include <IntLongMap.h> +#include <IntFloatMap.h> +#include <IntDoubleMap.h> +#include <IntSeq1MapNew.h> +#include <IntSeq2MapNew.h> +#include <IntSeq3MapNew.h> +#include <IntSeq4MapNew.h> +#include <IntE1MapNew.h> +#include <IntD1MapNew.h> +#include <IntS1MapNew.h> +#include <IntC1MapNew.h> + +#include <fstream> + +using namespace std; +using namespace Ice; +using namespace Freeze; + +#define NUM_KEYS 50 +#define NUM_ELEMENTS 50 + +static void +usage(const char* n) +{ + cerr << "Usage: " << n << " [options]\n"; + cerr << + "Options:\n" + "--db-dir DIR Use directory DIR for the database environment.\n" + ; +} + +static void +validatePrimitive(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + + cout << "validating primitive transformations... " << flush; + + try + { + + // + // Validate byte to short transformation + // + db = dbEnv->openDB("byteToShort", false); + + { + IntShortMap map(db); + for(IntShortMap::iterator p = map.begin(); p != map.end(); ++p) + { + test(p->second == p->first); + } + } + + db->close(); + db = 0; + + // + // Validate short to int transformation + // + db = dbEnv->openDB("shortToInt", false); + + { + IntIntMap map(db); + for(IntIntMap::iterator p = map.begin(); p != map.end(); ++p) + { + test(p->second == p->first); + } + } + + db->close(); + db = 0; + + // + // Validate int to long transformation + // + db = dbEnv->openDB("intToLong", false); + + { + IntLongMap map(db); + for(IntLongMap::iterator p = map.begin(); p != map.end(); ++p) + { + test(p->second == p->first); + } + } + + db->close(); + db = 0; + + // + // Validate long to byte transformation + // + db = dbEnv->openDB("longToByte", false); + + { + IntByteMap map(db); + for(IntByteMap::iterator p = map.begin(); p != map.end(); ++p) + { + test(p->second == p->first); + } + } + + db->close(); + db = 0; + + // + // Validate float to double transformation + // + db = dbEnv->openDB("floatToDouble", false); + + { + IntDoubleMap map(db); + for(IntDoubleMap::iterator p = map.begin(); p != map.end(); ++p) + { + test(p->second - p->first <= 0.001); + } + } + + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +validatePrimitiveSequence(const DBEnvironmentPtr& dbEnv) +{ + Int i; + + DBPtr db; + + cout << "validating primitive sequence transformations... " << flush; + + try + { + // + // Validate byte to short sequence transformation + // + db = dbEnv->openDB("byteToShortSeq", false); + + { + IntSeq1Map map(db); + test(map.size() == 1); + IntSeq1Map::iterator p = map.find(0); + test(p != map.end()); + const Test::Seq1& seq = p->second; + test(seq.size() == NUM_ELEMENTS); + for(i = 0; i < NUM_ELEMENTS; i++) + { + test(seq[i] == i); + } + } + + db->close(); + db = 0; + + // + // Validate short to int sequence transformation + // + db = dbEnv->openDB("shortToIntSeq", false); + + { + IntSeq2Map map(db); + test(map.size() == 1); + IntSeq2Map::iterator p = map.find(0); + test(p != map.end()); + const Test::Seq2& seq = p->second; + test(seq.size() == NUM_ELEMENTS); + for(i = 0; i < NUM_ELEMENTS; i++) + { + test(seq[i] == i); + } + } + + db->close(); + db = 0; + + // + // Validate int to long sequence transformation + // + db = dbEnv->openDB("intToLongSeq", false); + + { + IntSeq3Map map(db); + test(map.size() == 1); + IntSeq3Map::iterator p = map.find(0); + test(p != map.end()); + const Test::Seq3& seq = p->second; + test(seq.size() == NUM_ELEMENTS); + for(i = 0; i < NUM_ELEMENTS; i++) + { + test(seq[i] == i); + } + } + + db->close(); + db = 0; + + // + // Validate long to byte sequence transformation + // + db = dbEnv->openDB("longToByteSeq", false); + + { + IntSeq4Map map(db); + test(map.size() == 1); + IntSeq4Map::iterator p = map.find(0); + test(p != map.end()); + const Test::Seq4& seq = p->second; + test(seq.size() == NUM_ELEMENTS); + for(i = 0; i < NUM_ELEMENTS; i++) + { + test(seq[i] == i); + } + } + + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +validateEnum(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + + cout << "validating enumeration transformations... " << flush; + + try + { + // + // Validate removal of E1::three + // + db = dbEnv->openDB("enum", false); + + { + IntE1Map map(db); + test(map.size() == 2); + IntE1Map::iterator p; + p = map.find(0); + test(p != map.end()); + test(p->second == Test::one); + p = map.find(1); + test(p != map.end()); + test(p->second == Test::two); + } + + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +validateDictionary(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + + cout << "validating dictionary transformations... " << flush; + + try + { + // + // Validate removal of E1::three + // + db = dbEnv->openDB("dict", false); + + { + IntD1Map map(db); + IntD1Map::iterator p = map.find(0); + test(p != map.end()); + const Test::D1& dict = p->second; + test(dict.size() == 2); + Test::D1::const_iterator q; + q = dict.find("one"); + test(q != dict.end()); + test(q->second == Test::one); + q = dict.find("two"); + test(q != dict.end()); + test(q->second == Test::two); + } + + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +validateStruct(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + + cout << "validating struct transformations... " << flush; + + try + { + // + // Validate S1 + // + db = dbEnv->openDB("struct", false); + + { + IntS1Map map(db); + for(IntS1Map::iterator p = map.begin(); p != map.end(); ++p) + { + test(p->second.i == p->first); + test(p->second.s == 0); + } + } + + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static void +validateClass(const DBEnvironmentPtr& dbEnv) +{ + DBPtr db; + + CommunicatorPtr communicator = dbEnv->getCommunicator(); + communicator->addObjectFactory(Test::C1::ice_factory(), Test::C1::ice_staticId()); + communicator->addObjectFactory(Test::C2::ice_factory(), Test::C2::ice_staticId()); + + cout << "validating class transformations... " << flush; + + try + { + // + // Validate C2 + // + db = dbEnv->openDB("class", false); + + { + IntC1Map map(db); + for(IntC1Map::iterator p = map.begin(); p != map.end(); ++p) + { + Test::C2Ptr c2 = Test::C2Ptr::dynamicCast(p->second); + test(c2); + test(c2->s.size() == 1 && c2->s[0] == '0' + p->first); + test(c2->b == p->first); + test(c2->l == p->first); + test(c2->i == p->first); + if(c2->s == "3") + { + // + // Test facets + // + Ice::ObjectPtr obj; + Test::C1Ptr c1; + + obj = c2->ice_findFacet("c1-0"); + test(obj); + c1 = Test::C1Ptr::dynamicCast(obj); + test(c1); + test(c1->s == "c1-0"); + test(c1->b == 0); + + obj = c2->ice_findFacet("c1-1"); + test(obj); + c1 = Test::C1Ptr::dynamicCast(obj); + test(c1); + test(c1->s == "c1-1"); + test(c1->b == 1); + + obj = c2->ice_findFacet("c1-2"); + test(obj); + Test::C2Ptr c2Facet = Test::C2Ptr::dynamicCast(obj); + test(c2Facet); + test(c2Facet->s == "c1-2"); + test(c2Facet->b == 2); + test(c2Facet->i == 2); + test(c2Facet->l == 2); + + obj = c2Facet->ice_findFacet("c2-0"); + test(obj); + c1 = Test::C1Ptr::dynamicCast(obj); + test(c1); + test(c1->s == "c2-0"); + test(c1->b == 0); + } + } + } + + db->close(); + db = 0; + + cout << "ok" << endl; + } + catch(...) + { + cout << "failed" << endl; + if(db) + { + db->close(); + } + throw; + } + + if(db) + { + db->close(); + } +} + +static int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + string dbEnvDir = "db"; + + int idx = 1; + while(idx < argc) + { + if(strcmp(argv[idx], "--db-dir") == 0) + { + if(idx + 1 >= argc) + { + cerr << argv[0] << ": argument expected for`" << argv[idx] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + + dbEnvDir = argv[idx + 1]; + for(int i = idx ; i + 2 < argc ; ++i) + { + argv[i] = argv[i + 2]; + } + argc -= 2; + } + else if(argv[idx][0] == '-') + { + cerr << argv[0] << ": unknown option `" << argv[idx] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + else + { + ++idx; + } + } + + DBEnvironmentPtr dbEnv; + + try + { + dbEnv = Freeze::initialize(communicator, dbEnvDir); + validatePrimitive(dbEnv); + validatePrimitiveSequence(dbEnv); + validateEnum(dbEnv); + validateDictionary(dbEnv); + validateStruct(dbEnv); + validateClass(dbEnv); + } + catch(...) + { + if(dbEnv) + { + dbEnv->close(); + } + throw; + } + + if(dbEnv) + { + dbEnv->close(); + } + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + Ice::CommunicatorPtr communicator; + + try + { + communicator = Ice::initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + return status; +} diff --git a/cpp/test/XMLTransform/transform/db/.dummy b/cpp/test/XMLTransform/transform/db/.dummy new file mode 100644 index 00000000000..029d4b7cff2 --- /dev/null +++ b/cpp/test/XMLTransform/transform/db/.dummy @@ -0,0 +1 @@ +Dummy file, so that `cvs export' creates this otherwise empty directory. diff --git a/cpp/test/XMLTransform/transform/run.py b/cpp/test/XMLTransform/transform/run.py new file mode 100755 index 00000000000..7eeffce1f4b --- /dev/null +++ b/cpp/test/XMLTransform/transform/run.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2002 +# Mutable Realms, Inc. +# Huntsville, AL, USA +# +# All Rights Reserved +# +# ********************************************************************** + +import os, sys + +for toplevel in [".", "..", "../..", "../../..", "../../../.."]: + toplevel = os.path.normpath(toplevel) + if os.path.exists(os.path.join(toplevel, "config", "TestUtil.py")): + break +else: + raise "can't find toplevel directory!" + +sys.path.append(os.path.join(toplevel, "config")) +import TestUtil + +name = os.path.join("XMLTransform", "transform") + +testdir = os.path.join(toplevel, "test", name) + +dbdir = os.path.join(testdir, "db") +TestUtil.cleanDbDir(dbdir) + +populate = os.path.join(testdir, "populate") +populateOptions = " -I" + toplevel + "/schema -I" + testdir + " --db-dir " + dbdir; + +print "starting populate...", +populatePipe = os.popen(populate + populateOptions) +print "ok" + +for output in populatePipe.xreadlines(): + print output, + +populateStatus = populatePipe.close() + +if populateStatus: + sys.exit(1) + +validate = os.path.join(testdir, "validate") +validateOptions = " --db-dir " + dbdir; + +print "starting validate...", +validatePipe = os.popen(validate + validateOptions) +print "ok" + +for output in validatePipe.xreadlines(): + print output, + +validateStatus = validatePipe.close() + +if validateStatus: + sys.exit(1) + +sys.exit(0) diff --git a/cpp/test/XMLTransform/transform/transformP.dsp b/cpp/test/XMLTransform/transform/transformP.dsp new file mode 100644 index 00000000000..fb41f42afb5 --- /dev/null +++ b/cpp/test/XMLTransform/transform/transformP.dsp @@ -0,0 +1,510 @@ +# Microsoft Developer Studio Project File - Name="transformP" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=transformP - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "transformP.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "transformP.mak" CFG="transformP - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "transformP - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "transformP - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "transformP - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /WX /GR /GX /O2 /I "." /I "../../../include" /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 /nologo /subsystem:console /machine:I386 /out:"populate.exe" /libpath:"../../../lib"
+# SUBTRACT LINK32 /debug /nodefaultlib
+
+!ELSEIF "$(CFG)" == "transformP - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /WX /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /out:"populate.exe" /pdbtype:sept /libpath:"../../../lib"
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF
+
+# Begin Target
+
+# Name "transformP - Win32 Release"
+# Name "transformP - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Populate.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntByteMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntShortMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntIntMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntLongMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntFloatMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntDoubleMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq1MapOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq2MapOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq3MapOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq4MapOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntE1MapOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntD1MapOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntS1MapOld.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntC1MapOld.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\TestOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntByteMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntShortMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntIntMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntLongMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntFloatMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntDoubleMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq1MapOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq2MapOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq3MapOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq4MapOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntE1MapOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntD1MapOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntS1MapOld.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntC1MapOld.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\TestOld.ice
+
+!IF "$(CFG)" == "transformP - Win32 Release"
+
+USERDEP__TESTO="..\..\..\bin\slice2cpp.exe" "..\..\..\bin\slice2xsd.exe" "..\..\..\bin\slice2freeze.exe"
+# Begin Custom Build
+InputPath=.\TestOld.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\..\lib \
+ ..\..\..\bin\slice2cpp.exe TestOld.ice \
+ ..\..\..\bin\slice2xsd.exe TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntByteMap,int,byte IntByteMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntShortMap,int,short IntShortMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntIntMap,int,int IntIntMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntLongMap,int,long IntLongMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntFloatMap,int,float IntFloatMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntDoubleMap,int,double IntDoubleMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq1Map,int,Test::Seq1 IntSeq1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq2Map,int,Test::Seq2 IntSeq2MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq3Map,int,Test::Seq3 IntSeq3MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq4Map,int,Test::Seq4 IntSeq4MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntE1Map,int,Test::E1 IntE1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntD1Map,int,Test::D1 IntD1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntS1Map,int,Test::S1 IntS1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntC1Map,int,Test::C1 IntC1MapOld TestOld.ice \
+
+
+"TestOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"TestOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"TestOld.xsd" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntByteMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntByteMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntShortMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntShortMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntIntMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntIntMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntLongMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntLongMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntFloatMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntFloatMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntDoubleMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntDoubleMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "transformP - Win32 Debug"
+
+USERDEP__TESTO="..\..\..\bin\slice2cpp.exe" "..\..\..\bin\slice2xsd.exe" "..\..\..\bin\slice2freeze.exe"
+# Begin Custom Build
+InputPath=.\TestOld.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\..\lib \
+ ..\..\..\bin\slice2cpp.exe TestOld.ice \
+ ..\..\..\bin\slice2xsd.exe TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntByteMap,int,byte IntByteMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntShortMap,int,short IntShortMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntIntMap,int,int IntIntMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntLongMap,int,long IntLongMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntFloatMap,int,float IntFloatMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntDoubleMap,int,double IntDoubleMap \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq1Map,int,Test::Seq1 IntSeq1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq2Map,int,Test::Seq2 IntSeq2MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq3Map,int,Test::Seq3 IntSeq3MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq4Map,int,Test::Seq4 IntSeq4MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntE1Map,int,Test::E1 IntE1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntD1Map,int,Test::D1 IntD1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntS1Map,int,Test::S1 IntS1MapOld TestOld.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntC1Map,int,Test::C1 IntC1MapOld TestOld.ice \
+
+
+"TestOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"TestOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"TestOld.xsd" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntByteMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntByteMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntShortMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntShortMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntIntMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntIntMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntLongMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntLongMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntFloatMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntFloatMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntDoubleMap.cpp" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntDoubleMap.h" : "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapOld.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapOld.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestNew.ice
+
+!IF "$(CFG)" == "transformP - Win32 Release"
+
+USERDEP__TESTN="..\..\..\bin\slice2xsd.exe"
+# Begin Custom Build
+InputPath=.\TestNew.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\..\lib \
+ ..\..\..\bin\slice2xsd.exe TestNew.ice \
+
+
+"TestNew.xsd" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "transformP - Win32 Debug"
+
+USERDEP__TESTN="..\..\..\bin\slice2xsd.exe"
+# Begin Custom Build
+InputPath=.\TestNew.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\..\lib \
+ ..\..\..\bin\slice2xsd.exe TestNew.ice \
+
+
+"TestNew.xsd" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/cpp/test/XMLTransform/transform/transformV.dsp b/cpp/test/XMLTransform/transform/transformV.dsp new file mode 100644 index 00000000000..2f3380ef0a3 --- /dev/null +++ b/cpp/test/XMLTransform/transform/transformV.dsp @@ -0,0 +1,381 @@ +# Microsoft Developer Studio Project File - Name="transformV" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=transformV - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "transformV.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "transformV.mak" CFG="transformV - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "transformV - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "transformV - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "transformV - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /WX /GR /GX /O2 /I "." /I "../../../include" /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 /nologo /subsystem:console /machine:I386 /out:"validate.exe" /libpath:"../../../lib"
+# SUBTRACT LINK32 /debug /nodefaultlib
+
+!ELSEIF "$(CFG)" == "transformV - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /WX /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /out:"validate.exe" /pdbtype:sept /libpath:"../../../lib"
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF
+
+# Begin Target
+
+# Name "transformV - Win32 Release"
+# Name "transformV - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Validate.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntByteMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntShortMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntIntMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntLongMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntFloatMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntDoubleMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq1MapNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq2MapNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq3MapNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq4MapNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntE1MapNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntD1MapNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntS1MapNew.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntC1MapNew.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\TestNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntByteMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntShortMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntIntMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntLongMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntFloatMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntDoubleMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq1MapNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq2MapNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq3MapNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntSeq4MapNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntE1MapNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntD1MapNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntS1MapNew.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\IntC1MapNew.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\TestNew.ice
+
+!IF "$(CFG)" == "transformV - Win32 Release"
+
+USERDEP__TESTN="..\..\..\bin\slice2cpp.exe" "..\..\..\bin\slice2freeze.exe"
+# Begin Custom Build
+InputPath=.\TestNew.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\..\lib \
+ ..\..\..\bin\slice2cpp.exe TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq1Map,int,Test::Seq1 IntSeq1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq2Map,int,Test::Seq2 IntSeq2MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq3Map,int,Test::Seq3 IntSeq3MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq4Map,int,Test::Seq4 IntSeq4MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntE1Map,int,Test::E1 IntE1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntD1Map,int,Test::D1 IntD1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntS1Map,int,Test::S1 IntS1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntC1Map,int,Test::C1 IntC1MapNew TestNew.ice \
+
+
+"TestNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"TestNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "transformV - Win32 Debug"
+
+USERDEP__TESTN="..\..\..\bin\slice2cpp.exe" "..\..\..\bin\slice2freeze.exe"
+# Begin Custom Build
+InputPath=.\TestNew.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\..\lib \
+ ..\..\..\bin\slice2cpp.exe TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq1Map,int,Test::Seq1 IntSeq1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq2Map,int,Test::Seq2 IntSeq2MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq3Map,int,Test::Seq3 IntSeq3MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntSeq4Map,int,Test::Seq4 IntSeq4MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntE1Map,int,Test::E1 IntE1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntD1Map,int,Test::D1 IntD1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntS1Map,int,Test::S1 IntS1MapNew TestNew.ice \
+ ..\..\..\bin\slice2freeze.exe --dict IntC1Map,int,Test::C1 IntC1MapNew TestNew.ice \
+
+
+"TestNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"TestNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq2MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq3MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntSeq4MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntE1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntD1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntS1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapNew.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"IntC1MapNew.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# End Target
+# End Project
|