001 // Copyright 2007 Waterken Inc. under the terms of the MIT X license
002 // found at http://www.opensource.org/licenses/mit-license.html
003 package org.waterken.syntax;
004
005 import java.lang.reflect.Type;
006
007 import org.joe_e.Powerless;
008 import org.joe_e.array.ByteArray;
009 import org.joe_e.array.ConstArray;
010
011 /**
012 * An object serializer.
013 */
014 public interface
015 Serializer extends Powerless {
016
017 /**
018 * Serializes an object.
019 * @param export reference exporter
020 * @param type implict type for <code>value</code>
021 * @param value value to serialize
022 * @return serialized content
023 */
024 ByteArray serialize(Exporter export,Type type,Object value)throws Exception;
025
026 /**
027 * Serializes a tuple.
028 * @param export reference exporter
029 * @param types each implict type for <code>values</code>
030 * @param values values to serialize
031 * @return serialized content
032 */
033 ByteArray serializeTuple(Exporter export, ConstArray<Type> types,
034 ConstArray<?> values) throws Exception;
035 }