/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
 * 
 * This program and the accompanying materials are made available under
 * the terms of the Common Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/cpl-v10.html
 * 
 * $Id: IClassDefConstants.java,v 1.1.1.1 2004/05/09 16:57:46 vlad_r Exp $
 */
package com.vladium.jcd.cls;

// ----------------------------------------------------------------------------
/**
 * @author (C) 2001, Vlad Roubtsov
 */
public
interface IClassDefConstants
{
    // public: ................................................................
    
    String INIT_NAME = "<init>";
    String CLINIT_NAME = "<clinit>";
    String CLINIT_DESCRIPTOR = "()V";

} // end of interface
// ----------------------------------------------------------------------------