Sprint 2 Step 1: base ASTNode class and Module concept
Adds the C++ editor stack foundation with ASTNode (id, conceptType, parent pointer, virtual dtor) and Module as the first concrete concept (name, targetLanguage). Header-only, compiles with C++20, test passes all assertions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
8
editor/CMakeLists.txt
Normal file
8
editor/CMakeLists.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.20)
|
||||||
|
project(WhetstoneEditor LANGUAGES CXX)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
add_executable(step1_test tests/step1_test.cpp)
|
||||||
|
target_include_directories(step1_test PRIVATE src)
|
||||||
11
editor/src/ast/ASTNode.h
Normal file
11
editor/src/ast/ASTNode.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class ASTNode {
|
||||||
|
public:
|
||||||
|
std::string id;
|
||||||
|
std::string conceptType;
|
||||||
|
ASTNode* parent = nullptr;
|
||||||
|
|
||||||
|
virtual ~ASTNode() = default;
|
||||||
|
};
|
||||||
15
editor/src/ast/Module.h
Normal file
15
editor/src/ast/Module.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "ASTNode.h"
|
||||||
|
|
||||||
|
class Module : public ASTNode {
|
||||||
|
public:
|
||||||
|
std::string name;
|
||||||
|
std::string targetLanguage;
|
||||||
|
|
||||||
|
Module() { conceptType = "Module"; }
|
||||||
|
Module(const std::string& id, const std::string& name, const std::string& lang)
|
||||||
|
: name(name), targetLanguage(lang) {
|
||||||
|
this->id = id;
|
||||||
|
this->conceptType = "Module";
|
||||||
|
}
|
||||||
|
};
|
||||||
16
editor/tests/step1_test.cpp
Normal file
16
editor/tests/step1_test.cpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#include "../src/ast/Module.h"
|
||||||
|
#include <cassert>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Module m("SFE_M001", "SimpleFunctionExample", "python");
|
||||||
|
|
||||||
|
assert(m.id == "SFE_M001");
|
||||||
|
assert(m.name == "SimpleFunctionExample");
|
||||||
|
assert(m.targetLanguage == "python");
|
||||||
|
assert(m.conceptType == "Module");
|
||||||
|
assert(m.parent == nullptr);
|
||||||
|
|
||||||
|
std::cout << "Step 1: PASS" << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user