aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/cxxdemo
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-12-01 15:45:37 +0100
committerClifford Wolf <clifford@clifford.at>2015-12-01 15:45:37 +0100
commit473ff0d70008dff87c3353f9291072f3e67d9976 (patch)
tree90bf596482bf9372c72f821fe97c07fb5048c51b /scripts/cxxdemo
parentf2566561b0fdb91504131ac60db4499b28feb03f (diff)
downloadpicorv32-473ff0d70008dff87c3353f9291072f3e67d9976.tar.gz
picorv32-473ff0d70008dff87c3353f9291072f3e67d9976.zip
Extended c++ demo
Diffstat (limited to 'scripts/cxxdemo')
-rw-r--r--scripts/cxxdemo/firmware.cc50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/cxxdemo/firmware.cc b/scripts/cxxdemo/firmware.cc
index e0bddf0..638c0dd 100644
--- a/scripts/cxxdemo/firmware.cc
+++ b/scripts/cxxdemo/firmware.cc
@@ -3,12 +3,62 @@
#include <vector>
#include <algorithm>
+class ExampleBaseClass
+{
+public:
+ ExampleBaseClass() {
+ std::cout << "ExampleBaseClass()" << std::endl;
+ }
+
+ virtual ~ExampleBaseClass() {
+ std::cout << "~ExampleBaseClass()" << std::endl;
+ }
+
+ virtual void print_something_virt() {
+ std::cout << "ExampleBaseClass::print_something_virt()" << std::endl;
+ }
+
+ void print_something_novirt() {
+ std::cout << "ExampleBaseClass::print_something_novirt()" << std::endl;
+ }
+};
+
+class ExampleSubClass : public ExampleBaseClass
+{
+public:
+ ExampleSubClass() {
+ std::cout << "ExampleSubClass()" << std::endl;
+ }
+
+ virtual ~ExampleSubClass() {
+ std::cout << "~ExampleSubClass()" << std::endl;
+ }
+
+ virtual void print_something_virt() {
+ std::cout << "ExampleSubClass::print_something_virt()" << std::endl;
+ }
+
+ void print_something_novirt() {
+ std::cout << "ExampleSubClass::print_something_novirt()" << std::endl;
+ }
+};
+
int main()
{
printf("Hello World, C!\n");
std::cout << "Hello World, C++!" << std::endl;
+ ExampleBaseClass *obj = new ExampleBaseClass;
+ obj->print_something_virt();
+ obj->print_something_novirt();
+ delete obj;
+
+ obj = new ExampleSubClass;
+ obj->print_something_virt();
+ obj->print_something_novirt();
+ delete obj;
+
std::vector<unsigned int> some_ints;
some_ints.push_back(0x48c9b3e4);
some_ints.push_back(0x79109b6a);