Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 4f23c27070572be9f0b80d659f540b78 > files > 92

motor-debug-3.4.0-2mdv2009.0.i586.rpm

#ifndef __MOTORPROJECT_H__
#define __MOTORPROJECT_H__

#include "motorcommon.h"
#include "projectname.h"
#include "projectfiles.h"
#include "projectpaths.h"
#include "projecttempl.h"
#include "projectdesk.h"
#include "projectdebug.h"
#include "motortagbrowser.h"

#define	CR_GNU_DOC		2
#define	CR_GENERATE_SOURCE	4

#define	LP_NOCHECK		2

__MOTOR_BEGIN_NAMESPACE

class motorproject:
    public projectname,
    public projectfiles,
    public projectdebug,
    public projectdesk,
    public projectpaths,
    public projecttempl
{
    public:
	enum makemodekind {
	    automake,
	    manual
	};

    protected:
	string cflags, lflags, destdir, vcsname;
	makemodekind makemode;
	bool gettextized, fdmake, fdcomp, fdvcs;
	int options;

	void writemakefunc();
	void arrangebuildstuff();
	void getdisp();
	void addgnudoc();
	bool onprojectstart();
	void checkautomake();

	static char *svmakefile(const char *value, const char *key);

    public:
	motorproject();
	motorproject(const projectname aname, int aoptions = 0);

	~motorproject();

	void populateparselist(pparamslist *parselist);

	bool load(const projectname aname);
	void save();
	bool close();

	void chdir();

	bool create(int options = 0);
	bool build();
	void clean();
	void dist(const string &targetname, const string &destdir);
	bool runtags();
	void regenerate();
	bool remove();
	void runtarget(const string &targetname);
	bool execvcs(const string &action);

	void getflags(string &acflags, string &alflags) const;
	void setflags(const string &acflags, const string &alflags);

	bool isgettextized() const;
	void setgettextized(bool a);

	void setvcs(const string &avcsname);
	string getvcs() const;

	makemodekind getmakemode() const;
	void setmakemode(makemodekind amakemode);

	void settemplate(const string &atemplate);
	void generate();
	void import(const string &mask, const string &root, int options = 0);

	bool addfile(const motorfile afile, int options = 0);
	void removefile(const motorfile afile, motorfile::filekind akind = motorfile::source);

	string getprojfname() const;
};

__MOTOR_END_NAMESPACE

#ifdef __MOTOR_USE_NAMESPACES

using motor::motorproject;

#endif

extern motorproject project;

#endif