// // Copyright (c) ZeroC, Inc. All rights reserved. // // // Ice version 3.7.11 // // // // Generated from file `ValueFactory.ice' // // Warning: do not edit this file. // // // export namespace Ice { /** * Create a new value for a given value type. The type is the * absolute Slice type id, i.e., the id relative to the * unnamed top-level Slice module. For example, the absolute * Slice type id for an interface 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: * *
    * *
  1. The Ice run-time looks for a factory registered * specifically for the type.
  2. * *
  3. If no instance has been created, the Ice run-time looks * for the default factory, which is registered with an empty type id. *
  4. * *
  5. If no instance has been created by any of the preceding * steps, the Ice run-time looks for a factory that may have been * statically generated by the language mapping for non-abstract classes. *
  6. * *
* @param factory The factory to add. * @param id The type id for which the factory can create instances, or * an empty string for the default factory. */ add(factory:Ice.ValueFactory, id:string):void; /** * Find an value factory registered with this communicator. * @param id The type id for which the factory can create instances, * or an empty string for the default factory. * @return The value factory, or null if no value factory was * found for the given id. */ find(id:string):Ice.ValueFactory; } }