#ifndef __ARCH_OPTIONS__
#define __ARCH_OPTIONS__
#include "error.hh"
#include "xml.hh"
class Architecture;
class ArchOption {
protected:
string name; public:
string getName(void) const { return name; }
virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const=0;
virtual ~ArchOption(void) {}
static bool onOrOff(const string &p); };
class OptionDatabase {
Architecture *glb; map<string,ArchOption *> optionmap; void registerOption(ArchOption *option); public:
OptionDatabase(Architecture *g); ~OptionDatabase(void); string set(const string &nm,const string &p1="",const string &p2="",const string &p3=""); void parseOne(const Element *el); void restoreXml(const Element *el); };
class OptionExtraPop : public ArchOption {
public:
OptionExtraPop(void) { name = "extrapop"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionReadOnly : public ArchOption {
public:
OptionReadOnly(void) { name = "readonly"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionDefaultPrototype : public ArchOption {
public:
OptionDefaultPrototype(void) { name = "defaultprototype"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionInferConstPtr : public ArchOption {
public:
OptionInferConstPtr(void) { name = "inferconstptr"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionForLoops : public ArchOption {
public:
OptionForLoops(void) { name = "analyzeforloops"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionInline : public ArchOption {
public:
OptionInline(void) { name = "inline"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionNoReturn : public ArchOption {
public:
OptionNoReturn(void) { name = "noreturn"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionStructAlign : public ArchOption {
public:
OptionStructAlign(void) { name = "structalign"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionWarning : public ArchOption {
public:
OptionWarning(void) { name = "warning"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionNullPrinting : public ArchOption {
public:
OptionNullPrinting(void) { name = "nullprinting"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionInPlaceOps : public ArchOption {
public:
OptionInPlaceOps(void) { name = "inplaceops"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionConventionPrinting : public ArchOption {
public:
OptionConventionPrinting(void) { name = "conventionprinting"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionNoCastPrinting : public ArchOption {
public:
OptionNoCastPrinting(void) { name = "nocastprinting"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionHideExtensions : public ArchOption {
public:
OptionHideExtensions(void) { name="hideextensions"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionMaxLineWidth : public ArchOption {
public:
OptionMaxLineWidth(void) { name = "maxlinewidth"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionIndentIncrement : public ArchOption {
public:
OptionIndentIncrement(void) { name = "indentincrement"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionCommentIndent : public ArchOption {
public:
OptionCommentIndent(void) { name = "commentindent"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionCommentStyle : public ArchOption {
public:
OptionCommentStyle(void) { name = "commentstyle"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionCommentHeader : public ArchOption {
public:
OptionCommentHeader(void) { name = "commentheader"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionCommentInstruction : public ArchOption {
public:
OptionCommentInstruction(void) { name = "commentinstruction"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionIntegerFormat : public ArchOption {
public:
OptionIntegerFormat(void) { name = "integerformat"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionSetAction : public ArchOption {
public:
OptionSetAction(void) { name = "setaction"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionCurrentAction : public ArchOption {
public:
OptionCurrentAction(void) { name = "currentaction"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionAllowContextSet : public ArchOption {
public:
OptionAllowContextSet(void) { name = "allowcontextset"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionIgnoreUnimplemented : public ArchOption {
public:
OptionIgnoreUnimplemented(void) { name = "ignoreunimplemented"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionErrorUnimplemented : public ArchOption {
public:
OptionErrorUnimplemented(void) { name = "errorunimplemented"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionErrorReinterpreted : public ArchOption {
public:
OptionErrorReinterpreted(void) { name = "errorreinterpreted"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionErrorTooManyInstructions : public ArchOption {
public:
OptionErrorTooManyInstructions(void) { name = "errortoomanyinstructions"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionProtoEval : public ArchOption {
public:
OptionProtoEval(void) { name = "protoeval"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionSetLanguage : public ArchOption {
public:
OptionSetLanguage(void) { name = "setlanguage"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionJumpLoad : public ArchOption {
public:
OptionJumpLoad(void) { name = "jumpload"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionToggleRule : public ArchOption {
public:
OptionToggleRule(void) { name = "togglerule"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionAliasBlock : public ArchOption {
public:
OptionAliasBlock(void) { name = "aliasblock"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionMaxInstruction : public ArchOption {
public:
OptionMaxInstruction(void) { name="maxinstruction"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
class OptionNamespaceStrategy : public ArchOption {
public:
OptionNamespaceStrategy(void) { name = "namespacestrategy"; } virtual string apply(Architecture *glb,const string &p1,const string &p2,const string &p3) const;
};
#endif