Browse Source

WIP: Input support.

* Currently only allows cores to register and describe digital inputs.
    * Removed unnecessary protected destructor from PlipVideo.
master
Ian Burgmyer 4 years ago
parent
commit
ef0cd6bc9e
  1. 2
      CMakeLists.txt
  2. 20
      libplip/PlipInput.cpp
  3. 26
      libplip/PlipInput.h
  4. 21
      libplip/PlipInputDefinition.cpp
  5. 32
      libplip/PlipInputDefinition.h
  6. 2
      libplip/PlipVersion.h
  7. 1
      libplip/PlipVideo.h

2
CMakeLists.txt

@ -27,6 +27,8 @@ add_custom_target(
add_library(${lib_name}
libplip/Plip.cpp
libplip/PlipInput.cpp
libplip/PlipInputDefinition.cpp
)
add_dependencies(${lib_name} GENERATE_LIB_VERSION_HEADER)

20
libplip/PlipInput.cpp

@ -0,0 +1,20 @@
/* PlipInput.cpp
*
* Provides an interface between the emulation core and the frontend.
*/
#include "PlipInput.h"
namespace Plip {
void PlipInput::AddInput(int id, const PlipInputDefinition& input) {
m_coreInput.insert(std::pair<int, PlipInputDefinition>(id, input));
}
void PlipInput::AddInput(std::map<int, PlipInputDefinition> inputList) {
m_coreInput.insert(inputList.begin(), inputList.end());
}
void PlipInput::ClearInput() {
m_coreInput.clear();
}
}

26
libplip/PlipInput.h

@ -0,0 +1,26 @@
/* PlipInput.h
*
* Provides an interface between the emulation core and the frontend.
*/
#pragma once
#include <map>
#include <string>
#include "PlipInputDefinition.h"
namespace Plip {
class PlipInput {
public:
void AddInput(int id, const PlipInputDefinition &input);
void AddInput(std::map<int, PlipInputDefinition> inputList);
void ClearInput();
protected:
PlipInput() = default;
private:
std::map<int, PlipInputDefinition> m_coreInput;
};
}

21
libplip/PlipInputDefinition.cpp

@ -0,0 +1,21 @@
/* PlipInputDefinition.cpp
*
* Allows the core to define an input for the frontend to handle.
*/
#include "PlipInputDefinition.h"
namespace Plip {
PlipInputDefinition::PlipInputDefinition(PlipInputType type, const std::string &description) {
m_type = type;
m_description = description;
}
std::string PlipInputDefinition::GetDescription() const {
return m_description;
}
PlipInputType PlipInputDefinition::GetType() const {
return m_type;
}
}

32
libplip/PlipInputDefinition.h

@ -0,0 +1,32 @@
/* PlipInputDefinition.h
*
* Allows the core to define an input for the frontend to handle.
*/
#pragma once
#include <string>
namespace Plip {
union PlipInputData {
bool digital = false;
};
enum class PlipInputType {
Digital
};
class PlipInputDefinition {
public:
PlipInputDefinition(PlipInputType type, const std::string &description);
std::string GetDescription() const;
PlipInputType GetType() const;
PlipInputData data;
private:
PlipInputType m_type;
std::string m_description;
};
}

2
libplip/PlipVersion.h

@ -5,5 +5,5 @@
#define GIT_FOUND
#define GIT_BRANCH "master"
#define GIT_REVISION "a6b8d9f"
#define GIT_REVISION "e43f14f"
/* #undef GIT_TAG */

1
libplip/PlipVideo.h

@ -31,6 +31,5 @@ namespace Plip {
protected:
PlipVideo() = default;
~PlipVideo() = default;
};
}

Loading…
Cancel
Save