Revert #113 because of incompatibility with the workshop

This commit is contained in:
Laury
2022-03-23 22:07:20 +01:00
parent e2598031c8
commit 7e64124ddc
7 changed files with 10 additions and 32 deletions

View File

@@ -77,7 +77,6 @@ void EditorController::viewDidDisappear() {
}
bool EditorController::textAreaDidReceiveEvent(TextArea * textArea, Ion::Events::Event event) {
m_script.setCursorPosition(textArea->cursorLocation() - m_script.content());
if (App::app()->textInputDidReceiveEvent(textArea, event)) {
return true;
}
@@ -163,7 +162,7 @@ void EditorController::cleanStorageEmptySpace() {
Ion::Storage::Record::Data scriptValue = m_script.value();
Ion::Storage::sharedStorage()->getAvailableSpaceFromEndOfRecord(
m_script,
scriptValue.size - Script::StatusSize() - Script::CursorPositionSize() - (strlen(m_script.content()) + 1)); // TODO optimize number of script fetches
scriptValue.size - Script::StatusSize() - (strlen(m_script.content()) + 1)); // TODO optimize number of script fetches
}

View File

@@ -1,9 +1,6 @@
#include "script.h"
#include "script_store.h"
#if APP_SCRIPT_LOG
#include <iostream>
#endif
namespace Code {
static inline void intToText(int i, char * buffer, int bufferSize) {
@@ -72,18 +69,6 @@ uint8_t * StatusFromData(Script::Data d) {
return const_cast<uint8_t *>(static_cast<const uint8_t *>(d.buffer));
}
uint16_t * Script::CursorPosition() {
assert(!isNull());
Data d = value();
return (uint16_t *)(StatusFromData(d) + StatusSize());
}
void Script::setCursorPosition(uint16_t position) {
assert(!isNull());
Data d = value();
*CursorPosition() = position;
setValue(d);
}
bool Script::autoImportationStatus() const {
return getStatutBit(k_autoImportationStatusMask);
}
@@ -97,7 +82,7 @@ void Script::toggleAutoimportationStatus() {
const char * Script::content() const {
Data d = value();
return ((const char *)d.buffer) + StatusSize() + CursorPositionSize();
return ((const char *)d.buffer) + StatusSize();
}
bool Script::fetchedFromConsole() const {

View File

@@ -5,8 +5,8 @@
namespace Code {
/* Record: | Size | Name | Body |
* Script: | | | Status | CursorPosition | Content |
/* Record: | Size | Name | Body |
* Script: | | | Status | Content |
*
*
* |FetchedForVariableBoxBit
@@ -23,9 +23,7 @@ namespace Code {
* FetchedForVariableBoxBit is used to prevent circular importation problems,
* such as scriptA importing scriptB, which imports scriptA. Once we get the
* variables from a script to put them in the variable box, we switch the bit to
* 1 and won't reload it afterwards.
*
* Cursor Position is two bytes long and has the cursor position value */
* 1 and won't reload it afterwards. */
class Script : public Ion::Storage::Record {
private:
@@ -35,7 +33,6 @@ private:
// See the comment at the beginning of the file
static constexpr size_t k_statusSize = 1;
static constexpr size_t k_cursorPositionSize = 2;
public:
static constexpr int k_defaultScriptNameMaxSize = 6 + k_defaultScriptNameNumberMaxSize + 1;
@@ -46,16 +43,13 @@ public:
static bool DefaultName(char buffer[], size_t bufferSize);
static bool nameCompliant(const char * name);
static constexpr size_t StatusSize() { return k_statusSize; }
static constexpr size_t CursorPositionSize() { return k_cursorPositionSize; }
Script(Ion::Storage::Record r = Ion::Storage::Record()) : Record(r) {}
bool autoImportationStatus() const;
void toggleAutoimportationStatus();
const char * content() const;
size_t contentSize() { return value().size - k_statusSize - k_cursorPositionSize; }
void setCursorPosition(uint16_t position);
uint16_t * CursorPosition();
size_t contentSize() { return value().size - k_statusSize; }
/* Fetched status */
bool fetchedFromConsole() const;

View File

@@ -51,7 +51,7 @@ void ScriptStore::clearConsoleFetchInformation() {
}
Script::ErrorStatus ScriptStore::addScriptFromTemplate(const ScriptTemplate * scriptTemplate) {
size_t valueSize = Script::StatusSize() + Script::CursorPositionSize() + strlen(scriptTemplate->content()) + 1; // (auto importation status + cursor position + content fetched status) + scriptcontent size + null-terminating char
size_t valueSize = Script::StatusSize() + strlen(scriptTemplate->content()) + 1; // (auto importation status + content fetched status) + scriptcontent size + null-terminating char
assert(Script::nameCompliant(scriptTemplate->name()));
Script::ErrorStatus err = Ion::Storage::sharedStorage()->createRecordWithFullName(scriptTemplate->name(), scriptTemplate->value(), valueSize);
assert(err != Script::ErrorStatus::NonCompliantName);

View File

@@ -51,7 +51,7 @@ private:
* be able to store a Script with default name and its extension, the
* importation status (1 char), the cursor (2 char), the default content "from math import *\n"
* (20 char) and 10 char of free space. */
static constexpr int k_fullFreeSpaceSizeLimit = sizeof(Ion::Storage::record_size_t)+Script::k_defaultScriptNameMaxSize+k_scriptExtensionLength+1+20+10+2;
static constexpr int k_fullFreeSpaceSizeLimit = sizeof(Ion::Storage::record_size_t)+Script::k_defaultScriptNameMaxSize+k_scriptExtensionLength+1+20+10;
};
}

View File

@@ -2,7 +2,7 @@
namespace Code {
constexpr ScriptTemplate emptyScriptTemplate(".py", "\x01" "\x00\x00" R"(from math import *
constexpr ScriptTemplate emptyScriptTemplate(".py", "\x01" R"(from math import *
)");

View File

@@ -10,7 +10,7 @@ public:
constexpr ScriptTemplate(const char * name, const char * value) : m_name(name), m_value(value) {}
static const ScriptTemplate * Empty();
const char * name() const { return m_name; }
const char * content() const { return m_value + Script::StatusSize() + Script::CursorPositionSize(); }
const char * content() const { return m_value; + Script::StatusSize();}
const char * value() const { return m_value; }
private:
const char * m_name;