File indexing completed on 2024-06-16 11:34:37

0001 /***************************************************************************
0002  *   Copyright (C) 2003-2004 by David Saxton                               *
0003  *   david@bluehaze.org                                                    *
0004  *                                                                         *
0005  *   This program is free software; you can redistribute it and/or modify  *
0006  *   it under the terms of the GNU General Public License as published by  *
0007  *   the Free Software Foundation; either version 2 of the License, or     *
0008  *   (at your option) any later version.                                   *
0009  ***************************************************************************/
0010 
0011 #ifndef MICROINFO_H
0012 #define MICROINFO_H
0013 
0014 #include <QStringList>
0015 
0016 class AsmInfo;
0017 class MicroPackage;
0018 
0019 /**
0020 @author David Saxton
0021 */
0022 class MicroInfo
0023 {
0024 public:
0025     enum Support { FullSupport = 1 << 0, PartialSupport = 1 << 1, NoSupport = 1 << 2 };
0026     enum { AllSupport = FullSupport | PartialSupport | NoSupport };
0027 
0028     MicroInfo();
0029     virtual ~MicroInfo();
0030 
0031     virtual AsmInfo *instructionSet() = 0;
0032     /**
0033      * Returns the gpsim emulator support status
0034      */
0035     virtual Support gpsimSupport() const
0036     {
0037         return NoSupport;
0038     }
0039     /**
0040      * Returns the FlowCode support (i.e. constructing flowcode for the PIC)
0041      */
0042     virtual Support flowcodeSupport() const
0043     {
0044         return NoSupport;
0045     }
0046     /**
0047      * Returns the Microbe support (i.e. compiling)
0048      */
0049     virtual Support microbeSupport() const
0050     {
0051         return NoSupport;
0052     }
0053     /**
0054      * Returns a pointer to the Micro Package in use
0055      */
0056     MicroPackage *package() const
0057     {
0058         return m_package;
0059     }
0060     /**
0061      * Returns an id unique to the Micro
0062      */
0063     QString id() const
0064     {
0065         return m_id;
0066     }
0067 
0068 protected:
0069     QString m_id;
0070     MicroPackage *m_package;
0071 };
0072 
0073 #endif