//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
//
// Ice version 3.7.11
//
// Bar in the module
* Foo is "::Foo::Bar".
*
* Note that the leading "::" is required.
* @param type The value type.
* @return The value created for the given type, or nil if the
* factory is unable to create the value.
*/
type ValueFactory = (type:string) => Ice.Value;
/**
* A value factory manager maintains a collection of value factories.
* An application can supply a custom implementation during communicator
* initialization, otherwise Ice provides a default implementation.
* @see ValueFactory
*/
interface ValueFactoryManager
{
/**
* Add a value factory. Attempting to add a factory with an id for
* which a factory is already registered throws AlreadyRegisteredException.
*
* When unmarshaling an Ice value, the Ice run time reads the
* most-derived type id off the wire and attempts to create an
* instance of the type using a factory. If no instance is created,
* either because no factory was found, or because all factories
* returned nil, the behavior of the Ice run time depends on the
* format with which the value was marshaled:
*
* If the value uses the "sliced" format, Ice ascends the class
* hierarchy until it finds a type that is recognized by a factory,
* or it reaches the least-derived type. If no factory is found that
* can create an instance, the run time throws NoValueFactoryException.
*
* If the value uses the "compact" format, Ice immediately raises
* NoValueFactoryException.
*
* The following order is used to locate a factory for a type:
*
*