/* EOTemplateGenerator.h created by mgentry on Mon 14-Jun-1999 */

#import <Foundation/Foundation.h>

@class EOEntity;
@class MiscMergeEngine;

@interface EOTemplateGenerator : NSObject
{
    // Templates - the primary class
    NSString *mainHeaderTemplate;
    NSString *mainSourceTemplate;
    // Templates - the secondary (sub)class
    NSString *stubHeaderTemplate;
    NSString *stubSourceTemplate;
    // Templates - Java only has two
    NSString *mainJavaTemplate;
    NSString *stubJavaTemplate;

    NSStringEncoding outputEncoding;
    NSStringEncoding templateEncoding;

    NSMutableArray *searchPaths;
    NSMutableArray *entityNames;
    NSMutableArray *entityWildcards;
    NSMutableArray *models;
    NSMutableDictionary *userVariables;

    NSString *classPrefix;
    NSString *destination;
    NSString *subclassDestination;
    MiscMergeEngine *filenameEngine;
    BOOL      javaMode;
    BOOL      javaClientMode;
    BOOL      useJavaPackagePaths;
    BOOL      verboseMode;
    BOOL      forceOverwrites;
}

- init;
- (void)displayHelpAndExit:(int)exitStatus;
- (void)processCommandLineArguments;
- (void)addDefaultSearchPaths;

- (void)generate;
- (void)generateEntity:(EOEntity *)entity;
- (void)generateEntity:(EOEntity *)entity
        withTemplate:(NSString *)templateName
        asPrimary:(BOOL)primary
        extension:(NSString *)fileExtension;

@end