// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
/*
 *******************************************************************************
 * Copyright (C) 1998-2004, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 *
 * Created on Dec 09, 2003
 *
 *******************************************************************************
 */
package com.ibm.icu.dev.tool.layout;

public class ThaiStateTableModuleWriter extends ModuleWriter
{
    public ThaiStateTableModuleWriter()
    {
        super();
    }

    public void writeTables()
    {
        writeHeader(null, includeFiles);
        
        ThaiCharacterClasses.writeClassTable(output);
        ThaiStateTable.writeStateTable(output);
        
        writeTrailer();
    }

    private static final String[] includeFiles = {"LETypes.h", "ThaiShaping.h"};
}