definition module EdProject;

import EdTypes, EdConstants, EdMyIO;

DclMod :== True;
IclMod :== False;

::	Def_and_Imp		:== Bool;

::	Project;    

PR_InitProject :: Project;
PR_ProjectSet :: !Project -> Bool;
PR_NewProject :: !Pathname !EditWdOptions !CompilerOptions !CodeGenOptions !ApplicationOptions !ProjectOptions
				!(List Pathname) !LinkOptions -> Project;PR_SetBuilt	:: !Project -> Project;
PR_AddNewDependencies :: !Pathname !(List Pathname) !Project -> Project;
// MW P..
PR_AddABCLinkInfo :: !Pathname !(List LinkObjFileName) !(List LinkLibraryName) !Project -> Project;
PR_GetABCLinkInfo :: !Project -> ABCLinkInfo;
PR_GetABCLinkPathsCache	:: !Project -> ABCLinkPathsCache;
PR_SetABCLinkPathsCache	:: !ABCLinkPathsCache !Project -> Project;
// .. MW P
PR_SetRoot :: !Pathname !EditWdOptions !CompilerOptions !Project -> Project;
PR_SetCompiled :: !Modulename !Project -> Project;
PR_SetCodeGenerated	:: !Modulename !Project -> Project;
PR_SetSysCodeGenerated :: !Project -> Project;
PR_SetLinked :: !Project -> Project;
PR_SetSaved :: !Project -> Project;
PR_SetCodeGenOptions :: !CodeGenOptions !Project -> Project;
PR_SetApplicationOptions :: !ApplicationOptions !Project -> Project;
PR_SetProjectOptions :: !ProjectOptions !Project -> Project;
PR_SetPaths	:: !Bool !(List Pathname) !(List Pathname) !Project -> Project;
PR_GetCodeGenOptions :: !Project -> CodeGenOptions;
PR_GetProcessor :: !Project -> Processor;
PR_GetApplicationOptions :: !Project -> ApplicationOptions;
PR_GetProjectOptions :: !Project -> ProjectOptions;
PR_GetPaths	:: !Project -> List Pathname;
PR_GetRootModuleName :: !Project -> Pathname;
PR_GetRootPathName :: !Project -> Pathname;
PR_GetModulenames :: !Bool !Def_and_Imp !Project -> List Pathname;
PR_Built :: !Project -> Bool;
PR_SrcUpToDate :: !Modulename !Project -> Bool;
PR_ABCUpToDate :: !Modulename !Project -> Bool;
PR_SysUptoDate :: !Project -> Bool;
PR_ExecUpToDate :: !Project -> Bool;
PR_Saved :: !Project -> Bool;
PR_AddRootModule ::	!Bool !CodeGenOptions !ApplicationOptions !ProjectOptions !(List Pathname) !LinkOptions
					!Modulename !ModInfo -> Project;
PR_AddModule :: !Modulename !ModInfo !Project -> Project;
PR_GetModuleInfo :: !Modulename !Project -> (!Bool,!ModInfo);
PR_UpdateModule :: !Modulename !(ModInfo -> ModInfo) !Project -> Project;

PR_SetLinkOptions	:: !Project !LinkOptions -> Project;
PR_GetLinkOptions	:: !Project -> LinkOptions;
