/*
******************************************************************************
* Copyright (C) 2007, International Business Machines Corporation and   *
* others. All Rights Reserved.                                               *
******************************************************************************
*/

package com.ibm.icu.impl.duration.impl;

interface RecordWriter {
  boolean open(String title);
  boolean close();

  void bool(String name, boolean value);
  void boolArray(String name, boolean[] values);
  void character(String name, char value);
  void characterArray(String name, char[] values);
  void namedIndex(String name, String[] names, int value);
  void namedIndexArray(String name, String[] names, byte[] values);
  void string(String name, String value);
  void stringArray(String name, String[] values);
  void stringTable(String name, String[][] values);
}
