#ifndef __cmt_parser_h__
#define __cmt_parser_h__
/*
Generation of shell scripts :
We consider for the moment only csh and sh
*/
typedef enum
{
Csh,
Sh,
Bat,
Make
} PrintMode;
typedef enum
{
mgr_style,
cmt_style,
none_style
} CmtDirStyle;
/*
Commands correspond to keywords in the requirements file.
*/
typedef enum
{
CommandNone,
CommandAlias, /* alias */
CommandApplication, /* application */
CommandApplyPattern, /* apply_pattern */
CommandAuthor, /* author */
CommandBranches, /* branch */
CommandBuildStrategy, /* build strategy */
CommandCleanupScript, /* user script */
CommandDocument, /* document */
CommandIgnorePattern, /* ignore_pattern */
CommandIncludeDirs, /* include_dirs */
CommandIncludePath, /* include_path */
CommandLanguage, /* language */
CommandLibrary, /* library */
CommandMacro, /* macro */
CommandMacroPrepend, /* +macro */
CommandMacroAppend, /* macro+ */
CommandMacroRemove, /* macro- */
CommandMacroRemoveAll, /* macro-- */
CommandMakeFragment, /* make_fragment */
CommandManager, /* package manager */
CommandPackage, /* package name */
CommandPath, /* package path */
CommandPathAppend, /* path */
CommandPathPrepend, /* path */
CommandPathRemove, /* path */
CommandPattern, /* pattern */
CommandPrivate, /* private */
CommandPublic, /* public */
CommandSet, /* set */
CommandSetAppend, /* set_append */
CommandSetPrepend, /* set_prepend */
CommandSetRemove, /* set_remove */
CommandSetupScript, /* user script */
CommandTag, /* tag */
CommandTagExclude, /* tag_exclude */
CommandUse, /* use */
CommandVersion, /* package version */
CommandVersionStrategy, /* version strategy */
Commands
} CommandType;
/*
The scope is modified while the requirements file is read
when the keywords public or private are met.
It is also set to public when a used requirements file is read.
*/
typedef enum
{
DeveloperMode,
UserMode
} AccessMode;
typedef enum
{
ScopeUnspecified,
ScopePublic,
ScopePrivate
} ScopeType;
typedef enum
{
PriorityLowest = 0,
PriorityDefault = 1,
PriorityUname = 2,
PrioritySite = 3,
PriorityUserTag = 4,
PriorityTag = 5,
PriorityConfig = 6,
PriorityArgument = 7
} Priority;
typedef enum
{
SetupScript,
CleanupScript
} ScriptType;
typedef enum
{
BestFit, // The current default
BestFitNoCheck, // The current default without compatibility check
FirstChoice, // The first reference will not be overridden
LastChoice, // The last reference wins
KeepAll, // Keep all uses
Strategies
} VersionStrategy;
//
// Build strategy is a mix of various options
// + predefined values should be multiples of 2^n
// + effective value is an OR of these options
// + all options should be specified inthis enum as pairs
// of