From e0b84fad0c383e3287dc15e43cd255e06af4d3bf Mon Sep 17 00:00:00 2001 From: Peter Gentium Date: Sun, 8 Sep 2024 01:04:41 +1000 Subject: [PATCH] More wireframing --- configure.ac | 24 +++++++++++++++--- core/Makefile.am | 2 +- core/include/association.h | 15 +++++++++++ core/include/attentionGrabber.h | 24 ++++++++++++++++++ core/include/attentionTrigger.h | 7 ++++++ core/include/chronomenon.h | 30 ++++++++++++++++++++++ core/include/concept.h | 11 +++++++++ core/include/existent.h | 11 +++++++++ core/include/mentalEntity.h | 8 ++++++ core/include/mind.h | 23 ++++++++++++----- core/include/nonNeutralQualia.h | 2 +- core/include/quale.h | 3 ++- core/include/qualeBundle.h | 14 +++++++++++ core/include/thought.h | 44 ++++++++++++++++++++++++++++++--- core/main.cpp | 30 +++++++++++++++++++++- core/mind.cpp | 10 ++++++++ core/painfulQuale.cpp | 2 ++ 17 files changed, 242 insertions(+), 18 deletions(-) create mode 100644 core/include/association.h create mode 100644 core/include/attentionGrabber.h create mode 100644 core/include/attentionTrigger.h create mode 100644 core/include/chronomenon.h create mode 100644 core/include/concept.h create mode 100644 core/include/existent.h create mode 100644 core/include/mentalEntity.h create mode 100644 core/include/qualeBundle.h create mode 100644 core/mind.cpp create mode 100644 core/painfulQuale.cpp diff --git a/configure.ac b/configure.ac index 2315ce5..4bee969 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,7 @@ -AC_INIT([The Harriman-Peikoff Project], [0.00], - [latentprion@gmail.com], [harikoff], - [github.com/latentprion/harikoff]) +AC_INIT([The Harriman-Peikoff Project],[0.00],[latentprion@gmail.com],[harikoff],[github.com/latentprion/harikoff]) + +AC_DEFUN([TEST_IS_NUMBER], [`echo $1 | grep -c '^[0-9]\+$'` -gt 0]) +AC_DEFUN([TEST_NOT_NUMBER], [`echo $1 | grep -c '^[0-9]\+$'` -eq 0]) # Safety checks in case user overwritten --srcdir AC_CONFIG_SRCDIR(core/main.cpp) @@ -17,8 +18,23 @@ AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_PROG_CC AC_PROG_CXX -AC_CONFIG_HEADERS([config.h]) # AC_CHECK_HEADERS([stdio.h]) +# AC_MSG_ERROR([You must set the number of sensors with num_sensors], 1)) +AS_IF([test "X$num_sensors" = "X"], + AC_MSG_ERROR([You must set num_sensors])) +AS_IF([test `echo $num_sensors | grep -c '^[0-9]\+$'` -gt 0], + AC_MSG_ERROR([num_sensors must be an integer])) +AS_IF([test $num_sensors -lt 1], + AC_MSG_ERROR([Harikoff needs at least 1 sensor])) + +num_sensors_desc="Number of sensors harikoff has direct purview over" +AC_ARG_VAR([num_sensors], + AS_HELP_STRING([num_sensors=],[$num_sensors_desc])) + +AC_DEFINE_UNQUOTED([CONFIG_NUM_SENSORS], [$num_sensors], [$num_sensors_desc]) + +AC_CONFIG_HEADERS([config.h]) + AC_CONFIG_FILES([Makefile core/Makefile]) AC_OUTPUT diff --git a/core/Makefile.am b/core/Makefile.am index 3993fbc..d8d8971 100644 --- a/core/Makefile.am +++ b/core/Makefile.am @@ -1,4 +1,4 @@ bin_PROGRAMS = harikoff -harikoff_SOURCES = main.cpp +harikoff_SOURCES = main.cpp painfulQuale.cpp mind.cpp harikoff_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/core/include diff --git a/core/include/association.h b/core/include/association.h new file mode 100644 index 0000000..a438b61 --- /dev/null +++ b/core/include/association.h @@ -0,0 +1,15 @@ +#ifndef _ASSOCIATION_H +#define _ASSOCIATION_H + +#include +#include + +class Association +{ +public: + Association(Quale quale, Chronomenon chron); + Association(Quale quale, Existent ex); + Association(Quale quale, Existent ex); +}; + +#endif diff --git a/core/include/attentionGrabber.h b/core/include/attentionGrabber.h new file mode 100644 index 0000000..bc3ccad --- /dev/null +++ b/core/include/attentionGrabber.h @@ -0,0 +1,24 @@ +#ifndef _ATTENTION_GRABBER_H +#define _ATTENTION_GRABBER_H + +#include +#include +#include + +class AttentionGrabber +{ +public: + AttentionGrabber(AttentionTrigger cause, Chronomenon chron) + : isNull(false) + {} + + void setNull(void) { isNull = true; } + int operator!(void) { return isNull; } + +public: + AttentionTrigger cause; + Chronomenon chron; + bool isNull; +}; + +#endif diff --git a/core/include/attentionTrigger.h b/core/include/attentionTrigger.h new file mode 100644 index 0000000..cb45f31 --- /dev/null +++ b/core/include/attentionTrigger.h @@ -0,0 +1,7 @@ +#ifndef _ATTENTION_TRIGGER_H +#define _ATTENTION_TRIGGER_H + +class AttentionTrigger +{}; + +#endif diff --git a/core/include/chronomenon.h b/core/include/chronomenon.h new file mode 100644 index 0000000..5627f2d --- /dev/null +++ b/core/include/chronomenon.h @@ -0,0 +1,30 @@ +#ifndef _CHRONOMENON_H +#define _CHRONOMENON_H + +#include +#include +#include + +class Chronomenon +: public MentalEntity +{ +public: + class Timestamp + { + uintptr_t value; + }; + + class Duration + { + uintptr_t value; + }; + +public: + Chronomenon extract(Timestamp start, Duration len); + +public: + std::vector qualia; +}; + +#endif + diff --git a/core/include/concept.h b/core/include/concept.h new file mode 100644 index 0000000..3cc1c5b --- /dev/null +++ b/core/include/concept.h @@ -0,0 +1,11 @@ +#ifndef _CONCEPT_H +#define _CONCEPT_H + +#include + +class Concept +: public MentalEntity +{ +}; + +#endif diff --git a/core/include/existent.h b/core/include/existent.h new file mode 100644 index 0000000..c70933a --- /dev/null +++ b/core/include/existent.h @@ -0,0 +1,11 @@ +#ifndef _EXISTENT_H +#define _EXISTENT_H + +#include + +class Existent +: public MentalEntity +{ +}; + +#endif diff --git a/core/include/mentalEntity.h b/core/include/mentalEntity.h new file mode 100644 index 0000000..3bf99da --- /dev/null +++ b/core/include/mentalEntity.h @@ -0,0 +1,8 @@ +#ifndef _MENTAL_ENTITY_H +#define _MENTAL_ENTITY_H + +class MentalEntity +{ +}; + +#endif diff --git a/core/include/mind.h b/core/include/mind.h index af5b172..e696628 100644 --- a/core/include/mind.h +++ b/core/include/mind.h @@ -1,21 +1,32 @@ #ifndef _MIND_H #define _MIND_H +#include +#include + #include -#include +#include +#include class Mind { public: - void wander(void) + AttentionGrabber poll(void); + void focusOn(std::shared_ptr thought) { - Thought idleThought(subconscious); - - idleThought.walk(); + currentThought = thought; } + void execute(void) + {}; + + bool recognizes(AttentionTrigger intrin) + { return !!(std::rand() / 2); }; + public: - Subconscious subconscious; + std::shared_ptr currentThought; + Concept Desirables, + Undesirables; }; #endif diff --git a/core/include/nonNeutralQualia.h b/core/include/nonNeutralQualia.h index be3e81a..bdbcd2b 100644 --- a/core/include/nonNeutralQualia.h +++ b/core/include/nonNeutralQualia.h @@ -3,7 +3,7 @@ #include -class PleasantQuale +class PleasurableQuale : public NonNeutralQuale { public: diff --git a/core/include/quale.h b/core/include/quale.h index d965f8a..dbb4058 100644 --- a/core/include/quale.h +++ b/core/include/quale.h @@ -2,6 +2,7 @@ #define _QUALE_H #include +#include class Quale { @@ -27,7 +28,7 @@ class NeutralQuale }; class NonNeutralQuale -: public Quale +: public Quale, public AttentionTrigger { public: virtual void eventInd(void); diff --git a/core/include/qualeBundle.h b/core/include/qualeBundle.h new file mode 100644 index 0000000..69974a4 --- /dev/null +++ b/core/include/qualeBundle.h @@ -0,0 +1,14 @@ +#ifndef _QUALE_BUNDLE_H +#define _QUALE_BUNDLE_H + +#include +#include +#include + +typedef std::array QualeBundle_t; +class QualeBundle +{ + QualeBundle_t qualia; +}; + +#endif diff --git a/core/include/thought.h b/core/include/thought.h index f6d1927..2475642 100644 --- a/core/include/thought.h +++ b/core/include/thought.h @@ -3,14 +3,25 @@ #include #include -#include +#include + class Thought { public: - Thought(ThoughtContentSource csource) - {} + enum class Goal + { + DRIFT, + ASSOCIATE_CAUSAL_QUALE_WITH_INTRINSIC_MOTIVATORS, + RESPOND_TO_CAUSAL_QUALE + }; + Thought(void) + { + setGoal(Goal::DRIFT); + } + +public: void walk(void) { for (;;) @@ -20,9 +31,34 @@ public: }; void step(void) { std::cout <<"Step\n"; } + void setGoal(Goal g) + { goal = g; } public: - Scene scene; + Scene scene; + Goal goal; +}; + +class ActiveThought +: public Thought +{ +public: + ActiveThought(AttentionGrabber ag) + : currFocus(ag) + { + setGoal(Goal::ASSOCIATE_CAUSAL_QUALE_WITH_INTRINSIC_MOTIVATORS); + } + +public: + AttentionGrabber currFocus; +}; + +class IdleThought +: public Thought +{ +public: + IdleThought(void) + {} }; #endif diff --git a/core/main.cpp b/core/main.cpp index 7b4dd52..3b7f4dd 100644 --- a/core/main.cpp +++ b/core/main.cpp @@ -6,7 +6,35 @@ int main(int argc, char **argv) for (;;) { - mind.wander(); + AttentionGrabber currentEmergency = mind.poll(); + + if (!currentEmergency) + { + // Idle thought's goal is automatically Goal::DRIFT. + auto idleThought = std::make_shared(); + + mind.focusOn(idleThought); + } + else + { + Thought::Goal goal; + + auto urgentThought = std::make_shared(currentEmergency); + + if (mind.recognizes(currentEmergency.cause)) { + goal = Thought::Goal + ::ASSOCIATE_CAUSAL_QUALE_WITH_INTRINSIC_MOTIVATORS; + } + else { + goal = Thought::Goal + ::RESPOND_TO_CAUSAL_QUALE; + } + + urgentThought->setGoal(goal); + mind.focusOn(urgentThought); + } + + mind.execute(); } return 0; diff --git a/core/mind.cpp b/core/mind.cpp new file mode 100644 index 0000000..cee0de4 --- /dev/null +++ b/core/mind.cpp @@ -0,0 +1,10 @@ + +#include + +AttentionGrabber Mind::poll(void) +{ + AttentionTrigger tmpAt; + Chronomenon tmpChron; + + return AttentionGrabber(tmpAt, tmpChron); +} diff --git a/core/painfulQuale.cpp b/core/painfulQuale.cpp new file mode 100644 index 0000000..622ffb0 --- /dev/null +++ b/core/painfulQuale.cpp @@ -0,0 +1,2 @@ + +#include