remove some unused defines

This commit is contained in:
2026-08-12 14:04:49 +03:00
parent 8bf7738e8a
commit e2c0445c1b
15 changed files with 77 additions and 128 deletions
+2
View File
@@ -243,6 +243,7 @@ if(DEFINED PICO_BOARD)
set(PIP_HAS_DYNLIB OFF CACHE BOOL "" FORCE) set(PIP_HAS_DYNLIB OFF CACHE BOOL "" FORCE)
set(PIP_HAS_FFT OFF CACHE BOOL "" FORCE) set(PIP_HAS_FFT OFF CACHE BOOL "" FORCE)
set(PIP_HAS_SERIAL OFF CACHE BOOL "" FORCE) set(PIP_HAS_SERIAL OFF CACHE BOOL "" FORCE)
set(PIP_BUILD_CONSOLE OFF CACHE BOOL "" FORCE)
message(STATUS "Building PIP for Pi Pico SDK ${PICO_SDK_VERSION_STRING}") message(STATUS "Building PIP for Pi Pico SDK ${PICO_SDK_VERSION_STRING}")
endif() endif()
@@ -257,6 +258,7 @@ if(PIP_FREERTOS)
set(PIP_HAS_DYNLIB OFF CACHE BOOL "" FORCE) set(PIP_HAS_DYNLIB OFF CACHE BOOL "" FORCE)
set(PIP_HAS_FFT OFF CACHE BOOL "" FORCE) set(PIP_HAS_FFT OFF CACHE BOOL "" FORCE)
set(PIP_HAS_SERIAL OFF CACHE BOOL "" FORCE) set(PIP_HAS_SERIAL OFF CACHE BOOL "" FORCE)
set(PIP_BUILD_CONSOLE OFF CACHE BOOL "" FORCE)
endif() endif()
if(DEFINED ANDROID_PLATFORM) if(DEFINED ANDROID_PLATFORM)
+43 -48
View File
@@ -22,11 +22,9 @@
#include "piliterals_time.h" #include "piliterals_time.h"
// clang-format off // clang-format off
#ifndef WINDOWS #ifndef WINDOWS
#ifndef PICO_SDK
# include <fcntl.h> # include <fcntl.h>
# include <sys/ioctl.h> # include <sys/ioctl.h>
# include <termios.h> # include <termios.h>
#endif // PICO_SDK
#else #else
# include <wingdi.h> # include <wingdi.h>
# include <wincon.h> # include <wincon.h>
@@ -37,12 +35,11 @@
// clang-format on // clang-format on
#if !defined(PICO_SDK)
using namespace PIScreenTypes; using namespace PIScreenTypes;
PRIVATE_DEFINITION_START(PIScreen::SystemConsole) PRIVATE_DEFINITION_START(PIScreen::SystemConsole)
# ifdef WINDOWS #ifdef WINDOWS
void * hOut; void * hOut;
CONSOLE_SCREEN_BUFFER_INFO sbi, csbi; CONSOLE_SCREEN_BUFFER_INFO sbi, csbi;
CONSOLE_CURSOR_INFO curinfo; CONSOLE_CURSOR_INFO curinfo;
@@ -51,7 +48,7 @@ PRIVATE_DEFINITION_START(PIScreen::SystemConsole)
WORD dattr; WORD dattr;
DWORD smode, written; DWORD smode, written;
PIVector<CHAR_INFO> chars; PIVector<CHAR_INFO> chars;
# endif #endif
PRIVATE_DEFINITION_END(PIScreen::SystemConsole) PRIVATE_DEFINITION_END(PIScreen::SystemConsole)
@@ -62,16 +59,16 @@ PIScreen::SystemConsole::SystemConsole() {
PIScreen::SystemConsole::~SystemConsole() { PIScreen::SystemConsole::~SystemConsole() {
# ifdef WINDOWS #ifdef WINDOWS
SetConsoleMode(PRIVATE->hOut, PRIVATE->smode); SetConsoleMode(PRIVATE->hOut, PRIVATE->smode);
SetConsoleTextAttribute(PRIVATE->hOut, PRIVATE->dattr); SetConsoleTextAttribute(PRIVATE->hOut, PRIVATE->dattr);
# endif #endif
} }
void PIScreen::SystemConsole::begin() { void PIScreen::SystemConsole::begin() {
int w, h; int w, h;
# ifdef WINDOWS #ifdef WINDOWS
PRIVATE->ulcoord.X = 0; PRIVATE->ulcoord.X = 0;
PRIVATE->hOut = GetStdHandle(STD_OUTPUT_HANDLE); PRIVATE->hOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(PRIVATE->hOut, &PRIVATE->sbi); GetConsoleScreenBufferInfo(PRIVATE->hOut, &PRIVATE->sbi);
@@ -81,7 +78,7 @@ void PIScreen::SystemConsole::begin() {
PRIVATE->ulcoord.Y = PRIVATE->sbi.srWindow.Top; PRIVATE->ulcoord.Y = PRIVATE->sbi.srWindow.Top;
GetConsoleMode(PRIVATE->hOut, &PRIVATE->smode); GetConsoleMode(PRIVATE->hOut, &PRIVATE->smode);
GetConsoleCursorInfo(PRIVATE->hOut, &PRIVATE->curinfo); GetConsoleCursorInfo(PRIVATE->hOut, &PRIVATE->curinfo);
# else #else
# ifdef PIP_EMBEDDED # ifdef PIP_EMBEDDED
w = 80; w = 80;
h = 24; h = 24;
@@ -91,14 +88,14 @@ void PIScreen::SystemConsole::begin() {
w = ws.ws_col; w = ws.ws_col;
h = ws.ws_row; h = ws.ws_row;
# endif # endif
# endif #endif
resize(w, h); resize(w, h);
# ifdef WINDOWS #ifdef WINDOWS
SetConsoleMode(PRIVATE->hOut, ENABLE_WRAP_AT_EOL_OUTPUT); SetConsoleMode(PRIVATE->hOut, ENABLE_WRAP_AT_EOL_OUTPUT);
GetConsoleScreenBufferInfo(PRIVATE->hOut, &PRIVATE->sbi); GetConsoleScreenBufferInfo(PRIVATE->hOut, &PRIVATE->sbi);
PRIVATE->bc.X = 0; PRIVATE->bc.X = 0;
PRIVATE->bc.Y = 0; PRIVATE->bc.Y = 0;
# endif #endif
clear(); clear();
clearScreen(); clearScreen();
hideCursor(); hideCursor();
@@ -106,11 +103,11 @@ void PIScreen::SystemConsole::begin() {
void PIScreen::SystemConsole::end() { void PIScreen::SystemConsole::end() {
# ifdef WINDOWS #ifdef WINDOWS
SetConsoleTextAttribute(PRIVATE->hOut, PRIVATE->dattr); SetConsoleTextAttribute(PRIVATE->hOut, PRIVATE->dattr);
# else #else
printf("\e[0m"); printf("\e[0m");
# endif #endif
moveTo(0, height); moveTo(0, height);
showCursor(); showCursor();
} }
@@ -118,18 +115,18 @@ void PIScreen::SystemConsole::end() {
void PIScreen::SystemConsole::prepare() { void PIScreen::SystemConsole::prepare() {
int w = 80, h = 24; int w = 80, h = 24;
# ifdef WINDOWS #ifdef WINDOWS
GetConsoleScreenBufferInfo(PRIVATE->hOut, &PRIVATE->csbi); GetConsoleScreenBufferInfo(PRIVATE->hOut, &PRIVATE->csbi);
w = PRIVATE->csbi.srWindow.Right - PRIVATE->csbi.srWindow.Left + 1; w = PRIVATE->csbi.srWindow.Right - PRIVATE->csbi.srWindow.Left + 1;
h = PRIVATE->csbi.srWindow.Bottom - PRIVATE->csbi.srWindow.Top + 1; h = PRIVATE->csbi.srWindow.Bottom - PRIVATE->csbi.srWindow.Top + 1;
# else #else
# ifndef PIP_EMBEDDED # ifndef PIP_EMBEDDED
winsize ws; winsize ws;
ioctl(0, TIOCGWINSZ, &ws); ioctl(0, TIOCGWINSZ, &ws);
w = ws.ws_col; w = ws.ws_col;
h = ws.ws_row; h = ws.ws_row;
# endif # endif
# endif #endif
resize(w, h); resize(w, h);
} }
@@ -152,10 +149,10 @@ void PIScreen::SystemConsole::resize(int w, int h) {
cells[i].resize(width); cells[i].resize(width);
pcells[i].resize(width, Cell(PIChar())); pcells[i].resize(width, Cell(PIChar()));
} }
# ifdef WINDOWS #ifdef WINDOWS
PRIVATE->sbi.srWindow = PRIVATE->csbi.srWindow; PRIVATE->sbi.srWindow = PRIVATE->csbi.srWindow;
PRIVATE->chars.resize(width * height); PRIVATE->chars.resize(width * height);
# endif #endif
for (int i = 0; i < pcells.size_s(); ++i) for (int i = 0; i < pcells.size_s(); ++i)
pcells[i].fill(Cell()); pcells[i].fill(Cell());
clear(); clear();
@@ -167,7 +164,7 @@ void PIScreen::SystemConsole::print() {
if (mouse_x >= 0 && mouse_x < width && mouse_y >= 0 && mouse_y < height) { if (mouse_x >= 0 && mouse_x < width && mouse_y >= 0 && mouse_y < height) {
/// cells[mouse_y][mouse_x].format.flags ^= Inverse; /// cells[mouse_y][mouse_x].format.flags ^= Inverse;
} }
# ifdef WINDOWS #ifdef WINDOWS
PRIVATE->srect = PRIVATE->sbi.srWindow; PRIVATE->srect = PRIVATE->sbi.srWindow;
int dx0 = -1, dx1 = -1, dy0 = -1, dy1 = -1; int dx0 = -1, dx1 = -1, dy0 = -1, dy1 = -1;
for (int j = 0; j < height; ++j) { for (int j = 0; j < height; ++j) {
@@ -204,7 +201,7 @@ void PIScreen::SystemConsole::print() {
PRIVATE->srect.Right -= width - dx1 - 1; PRIVATE->srect.Right -= width - dx1 - 1;
PRIVATE->srect.Bottom -= height - dy1 - 1; PRIVATE->srect.Bottom -= height - dy1 - 1;
WriteConsoleOutputW(PRIVATE->hOut, PRIVATE->chars.data(), PRIVATE->bs, PRIVATE->bc, &PRIVATE->srect); WriteConsoleOutputW(PRIVATE->hOut, PRIVATE->chars.data(), PRIVATE->bs, PRIVATE->bc, &PRIVATE->srect);
# else #else
PIString s; PIString s;
int si = 0, sj = 0; int si = 0, sj = 0;
CellFormat prf(0xFFFF); CellFormat prf(0xFFFF);
@@ -241,12 +238,12 @@ void PIScreen::SystemConsole::print() {
} }
printf("\e[0m"); printf("\e[0m");
fflush(0); fflush(0);
# endif #endif
pcells = cells; pcells = cells;
} }
# ifdef WINDOWS #ifdef WINDOWS
# define FOREGROUND_MASK (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) # define FOREGROUND_MASK (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
# define BACKGROUND_MASK (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE) # define BACKGROUND_MASK (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE)
ushort PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) { ushort PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) {
@@ -307,7 +304,7 @@ void PIScreen::SystemConsole::newLine() {
PRIVATE->ccoord.Y++; PRIVATE->ccoord.Y++;
SetConsoleCursorPosition(PRIVATE->hOut, PRIVATE->ccoord); SetConsoleCursorPosition(PRIVATE->hOut, PRIVATE->ccoord);
} }
# else // WINDOWS #else // WINDOWS
PIString PIScreen::SystemConsole::formatString(const PIScreenTypes::Cell & c) { PIString PIScreen::SystemConsole::formatString(const PIScreenTypes::Cell & c) {
PIString ts = PIStringAscii("\e[0"); PIString ts = PIStringAscii("\e[0");
switch (c.format.color_char) { switch (c.format.color_char) {
@@ -336,39 +333,39 @@ PIString PIScreen::SystemConsole::formatString(const PIScreenTypes::Cell & c) {
if ((c.format.flags & Inverse) == Inverse) ts += PIStringAscii(";7"); if ((c.format.flags & Inverse) == Inverse) ts += PIStringAscii(";7");
return ts + 'm'; return ts + 'm';
} }
# endif // WINDOWS #endif // WINDOWS
void PIScreen::SystemConsole::toUpperLeft() { void PIScreen::SystemConsole::toUpperLeft() {
# ifdef WINDOWS #ifdef WINDOWS
SetConsoleCursorPosition(PRIVATE->hOut, PRIVATE->ulcoord); SetConsoleCursorPosition(PRIVATE->hOut, PRIVATE->ulcoord);
# else #else
printf("\e[H"); printf("\e[H");
# endif #endif
} }
void PIScreen::SystemConsole::moveTo(int x, int y) { void PIScreen::SystemConsole::moveTo(int x, int y) {
# ifdef WINDOWS #ifdef WINDOWS
PRIVATE->ccoord.X = x; PRIVATE->ccoord.X = x;
PRIVATE->ccoord.Y = PRIVATE->ulcoord.Y + y; PRIVATE->ccoord.Y = PRIVATE->ulcoord.Y + y;
SetConsoleCursorPosition(PRIVATE->hOut, PRIVATE->ccoord); SetConsoleCursorPosition(PRIVATE->hOut, PRIVATE->ccoord);
# else #else
printf("\e[%d;%dH", y + 1, x + 1); printf("\e[%d;%dH", y + 1, x + 1);
# endif #endif
} }
void PIScreen::SystemConsole::clearScreen() { void PIScreen::SystemConsole::clearScreen() {
# ifdef WINDOWS #ifdef WINDOWS
toUpperLeft(); toUpperLeft();
FillConsoleOutputAttribute(PRIVATE->hOut, PRIVATE->dattr, width * (height + 1), PRIVATE->ulcoord, &PRIVATE->written); FillConsoleOutputAttribute(PRIVATE->hOut, PRIVATE->dattr, width * (height + 1), PRIVATE->ulcoord, &PRIVATE->written);
FillConsoleOutputCharacter(PRIVATE->hOut, ' ', width * (height + 1), PRIVATE->ulcoord, &PRIVATE->written); FillConsoleOutputCharacter(PRIVATE->hOut, ' ', width * (height + 1), PRIVATE->ulcoord, &PRIVATE->written);
# else #else
printf("\e[0m\e[H\e[J"); printf("\e[0m\e[H\e[J");
# endif #endif
} }
void PIScreen::SystemConsole::clearScreenLower() { void PIScreen::SystemConsole::clearScreenLower() {
# ifdef WINDOWS #ifdef WINDOWS
getWinCurCoord(); getWinCurCoord();
FillConsoleOutputAttribute(PRIVATE->hOut, FillConsoleOutputAttribute(PRIVATE->hOut,
PRIVATE->dattr, PRIVATE->dattr,
@@ -380,27 +377,27 @@ void PIScreen::SystemConsole::clearScreenLower() {
width * height - width * PRIVATE->ccoord.Y + PRIVATE->ccoord.X, width * height - width * PRIVATE->ccoord.Y + PRIVATE->ccoord.X,
PRIVATE->ccoord, PRIVATE->ccoord,
&PRIVATE->written); &PRIVATE->written);
# else #else
printf("\e[0m\e[J"); printf("\e[0m\e[J");
# endif #endif
} }
void PIScreen::SystemConsole::hideCursor() { void PIScreen::SystemConsole::hideCursor() {
# ifdef WINDOWS #ifdef WINDOWS
PRIVATE->curinfo.bVisible = false; PRIVATE->curinfo.bVisible = false;
SetConsoleCursorInfo(PRIVATE->hOut, &PRIVATE->curinfo); SetConsoleCursorInfo(PRIVATE->hOut, &PRIVATE->curinfo);
# else #else
printf("\e[?25l"); printf("\e[?25l");
# endif #endif
} }
void PIScreen::SystemConsole::showCursor() { void PIScreen::SystemConsole::showCursor() {
# ifdef WINDOWS #ifdef WINDOWS
PRIVATE->curinfo.bVisible = true; PRIVATE->curinfo.bVisible = true;
SetConsoleCursorInfo(PRIVATE->hOut, &PRIVATE->curinfo); SetConsoleCursorInfo(PRIVATE->hOut, &PRIVATE->curinfo);
# else #else
printf("\e[?25h"); printf("\e[?25h");
# endif #endif
} }
@@ -605,9 +602,9 @@ void PIScreen::start(bool wait) {
void PIScreen::stop(bool clear) { void PIScreen::stop(bool clear) {
PIThread::stopAndWait(); PIThread::stopAndWait();
if (clear) console.clearScreen(); if (clear) console.clearScreen();
# ifndef WINDOWS #ifndef WINDOWS
fflush(0); fflush(0);
# endif #endif
} }
@@ -660,5 +657,3 @@ PIScreenTile * PIScreen::tileByName(const PIString & name) {
if (t->name() == name) return t; if (t->name() == name) return t;
return 0; return 0;
} }
#endif // !PICO_SDK
+2 -2
View File
@@ -19,7 +19,7 @@
#include "piscreendrawer.h" #include "piscreendrawer.h"
#if !defined(PICO_SDK)
// comment for use ascii instead of unicode symbols // comment for use ascii instead of unicode symbols
# define USE_UNICODE # define USE_UNICODE
@@ -267,4 +267,4 @@ void PIScreenDrawer::drawText(int x, int y, const PIString & s, Color col_char,
} }
} }
#endif // !PICO_SDK
+2 -2
View File
@@ -21,7 +21,7 @@
#include "piscreendrawer.h" #include "piscreendrawer.h"
#if !defined(PICO_SDK)
using namespace PIScreenTypes; using namespace PIScreenTypes;
@@ -258,4 +258,4 @@ void PIScreenTile::layout() {
} }
} }
#endif // !PICO_SDK
+2 -2
View File
@@ -21,7 +21,7 @@
#include "piscreendrawer.h" #include "piscreendrawer.h"
#if !defined(PICO_SDK)
using namespace PIScreenTypes; using namespace PIScreenTypes;
@@ -695,4 +695,4 @@ void TileInput::reserCursor() {
inv = false; inv = false;
} }
#endif // !PICO_SDK
+2 -2
View File
@@ -22,7 +22,7 @@
#include "piliterals_time.h" #include "piliterals_time.h"
#include "pisharedmemory.h" #include "pisharedmemory.h"
#if !defined(PICO_SDK)
#ifdef PIP_HAS_PROCESS #ifdef PIP_HAS_PROCESS
# ifdef WINDOWS # ifdef WINDOWS
# include <windows.h> # include <windows.h>
@@ -981,4 +981,4 @@ bool PITerminal::resize(int cols, int rows) {
#endif // PIP_HAS_PROCESS #endif // PIP_HAS_PROCESS
#endif // !PICO_SDK
+2 -2
View File
@@ -34,7 +34,7 @@
//! \~\brief //! \~\brief
//! \~english Console screen manager with tile layout, drawing, and input routing. //! \~english Console screen manager with tile layout, drawing, and input routing.
//! \~russian Менеджер консольного экрана с раскладкой тайлов, отрисовкой и маршрутизацией ввода. //! \~russian Менеджер консольного экрана с раскладкой тайлов, отрисовкой и маршрутизацией ввода.
#if !defined(PICO_SDK)
class PIP_CONSOLE_EXPORT PIScreen class PIP_CONSOLE_EXPORT PIScreen
: public PIThread : public PIThread
, public PIScreenTypes::PIScreenBase { , public PIScreenTypes::PIScreenBase {
@@ -215,6 +215,6 @@ private:
PIScreenTile root; PIScreenTile root;
PIScreenTile *tile_focus, *tile_dialog; PIScreenTile *tile_focus, *tile_dialog;
}; };
#endif // !PICO_SDK
#endif // PISCREEN_H #endif // PISCREEN_H
+2 -2
View File
@@ -24,7 +24,7 @@
#ifndef PISCREENDRAWER_H #ifndef PISCREENDRAWER_H
#define PISCREENDRAWER_H #define PISCREENDRAWER_H
#if !defined(PICO_SDK)
#include "pip_console_export.h" #include "pip_console_export.h"
#include "piscreentypes.h" #include "piscreentypes.h"
@@ -147,5 +147,5 @@ private:
}; };
#endif // !PICO_SDK
#endif // PISCREENDRAWER_H #endif // PISCREENDRAWER_H
+2 -2
View File
@@ -38,7 +38,7 @@ class PIScreenDrawer;
//! \details //! \details
//! \~english Base class for all screen tiles providing layout and event handling. //! \~english Base class for all screen tiles providing layout and event handling.
//! \~russian Базовый класс для всех экранных тайлов, обеспечивающий компоновку и обработку событий. //! \~russian Базовый класс для всех экранных тайлов, обеспечивающий компоновку и обработку событий.
#if !defined(PICO_SDK)
class PIP_CONSOLE_EXPORT PIScreenTile: public PIObject { class PIP_CONSOLE_EXPORT PIScreenTile: public PIObject {
friend class PIScreen; friend class PIScreen;
PIOBJECT_SUBCLASS(PIScreenTile, PIObject); PIOBJECT_SUBCLASS(PIScreenTile, PIObject);
@@ -238,6 +238,6 @@ protected:
private: private:
int pw, ph; int pw, ph;
}; };
#endif // !PICO_SDK
#endif // PISCREENTILE_H #endif // PISCREENTILE_H
+2 -2
View File
@@ -27,7 +27,7 @@
#ifndef PISCREENTILES_H #ifndef PISCREENTILES_H
#define PISCREENTILES_H #define PISCREENTILES_H
#if !defined(PICO_SDK)
#include "pip_console_export.h" #include "pip_console_export.h"
#include "piscreentile.h" #include "piscreentile.h"
@@ -445,5 +445,5 @@ protected:
}; };
#endif // !PICO_SDK
#endif // PISCREENTILES_H #endif // PISCREENTILES_H
+2 -2
View File
@@ -27,7 +27,7 @@
#ifndef PISCREENTYPES_H #ifndef PISCREENTYPES_H
#define PISCREENTYPES_H #define PISCREENTYPES_H
#if !defined(PICO_SDK)
#include "pip_console_export.h" #include "pip_console_export.h"
#include "pivariant.h" #include "pivariant.h"
@@ -285,5 +285,5 @@ BINARY_STREAM_READ(PIScreenTypes::TileEvent) {
REGISTER_PIVARIANTSIMPLE(PIScreenTypes::TileEvent) REGISTER_PIVARIANTSIMPLE(PIScreenTypes::TileEvent)
#endif // !PICO_SDK
#endif // PISCREENTYPES_H #endif // PISCREENTYPES_H
+2 -2
View File
@@ -24,7 +24,7 @@
#ifndef PITERMINAL_H #ifndef PITERMINAL_H
#define PITERMINAL_H #define PITERMINAL_H
#if !defined(PICO_SDK)
#include "pikbdlistener.h" #include "pikbdlistener.h"
#include "pip_console_export.h" #include "pip_console_export.h"
@@ -115,5 +115,5 @@ private:
}; };
#endif // !PICO_SDK
#endif // PITERMINAL_H #endif // PITERMINAL_H
+3 -14
View File
@@ -19,13 +19,13 @@
#include "piobject.h" #include "piobject.h"
#include "piconditionvar.h"
#include "pithread.h"
#include "pitime.h" #include "pitime.h"
#ifdef PIP_HAS_THREADS #ifdef PIP_HAS_THREADS
# include "piconditionvar.h"
# include "pifile.h" # include "pifile.h"
# include "piiostream.h" # include "piiostream.h"
# include "pisysteminfo.h" # include "pisysteminfo.h"
# include "pithread.h"
#endif #endif
@@ -176,13 +176,9 @@ PIObject::PIObject(const PIString & name): _signature_(__PIOBJECT_SIGNATURE__),
in_event_cnt = 0; in_event_cnt = 0;
setName(name); setName(name);
setDebug(true); setDebug(true);
#ifdef PIP_HAS_THREADS
mutexObjects().lock(); mutexObjects().lock();
#endif
objects() << this; objects() << this;
#ifdef PIP_HAS_THREADS
mutexObjects().unlock(); mutexObjects().unlock();
#endif
// piCout << "new" << this; // piCout << "new" << this;
} }
@@ -190,13 +186,9 @@ PIObject::PIObject(const PIString & name): _signature_(__PIOBJECT_SIGNATURE__),
PIObject::~PIObject() { PIObject::~PIObject() {
in_event_cnt = 0; in_event_cnt = 0;
// piCout << "delete" << this; // piCout << "delete" << this;
#ifdef PIP_HAS_THREADS
mutexObjects().lock(); mutexObjects().lock();
#endif
objects().removeAll(this); objects().removeAll(this);
#ifdef PIP_HAS_THREADS
mutexObjects().unlock(); mutexObjects().unlock();
#endif
deleted(this); deleted(this);
piDisconnectAll(); piDisconnectAll();
_signature_ = 0; _signature_ = 0;
@@ -555,7 +547,6 @@ PIMap<uint, PIObject::__MetaData> & PIObject::__meta_data() {
} }
#ifdef PIP_HAS_THREADS
void PIObject::callQueuedEvents() { void PIObject::callQueuedEvents() {
mutex_queue.lock(); mutex_queue.lock();
PIVector<__QueuedEvent> qe = events_queue; PIVector<__QueuedEvent> qe = events_queue;
@@ -569,7 +560,6 @@ void PIObject::callQueuedEvents() {
if (e.dest_o->thread_safe_) e.dest_o->mutex_.unlock(); if (e.dest_o->thread_safe_) e.dest_o->mutex_.unlock();
} }
} }
#endif // PIP_HAS_THREADS
//! \details //! \details
@@ -734,8 +724,7 @@ void PIObject::dump(const PIString & line_prefix) const {
PICout(PICoutManipulators::AddNewLine) << line_prefix << " " << src << " -> " << dst->className() << " (" << c.dest PICout(PICoutManipulators::AddNewLine) << line_prefix << " " << src << " -> " << dst->className() << " (" << c.dest
<< ", \"" << dst->name() << "\")::" << hf_fn; << ", \"" << dst->name() << "\")::" << hf_fn;
} else { } else {
PICout(PICoutManipulators::AddNewLine) << line_prefix << " " << src << " -> " PICout(PICoutManipulators::AddNewLine) << line_prefix << " " << src << " -> " << "[lambda]";
<< "[lambda]";
} }
} }
// printf("dump %d connections ok\n",connections.size()); // printf("dump %d connections ok\n",connections.size());
-29
View File
@@ -461,9 +461,7 @@ public:
i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender)); i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender));
} else { } else {
bool ts = sender->thread_safe_; bool ts = sender->thread_safe_;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.lock(); if (ts) i.dest_o->mutex_.lock();
#endif
i.dest_o->eventBegin(); i.dest_o->eventBegin();
sender->eventBegin(); sender->eventBegin();
i.dest_o->emitter_ = sender; i.dest_o->emitter_ = sender;
@@ -471,9 +469,7 @@ public:
sender->eventEnd(); sender->eventEnd();
if (i.dest_o->isPIObject()) { if (i.dest_o->isPIObject()) {
i.dest_o->emitter_ = 0; i.dest_o->emitter_ = 0;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.unlock(); if (ts) i.dest_o->mutex_.unlock();
#endif
i.dest_o->eventEnd(); i.dest_o->eventEnd();
} }
} }
@@ -498,9 +494,7 @@ public:
i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl)); i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl));
} else { } else {
bool ts = sender->thread_safe_; bool ts = sender->thread_safe_;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.lock(); if (ts) i.dest_o->mutex_.lock();
#endif
i.dest_o->eventBegin(); i.dest_o->eventBegin();
sender->eventBegin(); sender->eventBegin();
i.dest_o->emitter_ = sender; i.dest_o->emitter_ = sender;
@@ -511,9 +505,7 @@ public:
sender->eventEnd(); sender->eventEnd();
if (i.dest_o->isPIObject()) { if (i.dest_o->isPIObject()) {
i.dest_o->emitter_ = 0; i.dest_o->emitter_ = 0;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.unlock(); if (ts) i.dest_o->mutex_.unlock();
#endif
i.dest_o->eventEnd(); i.dest_o->eventEnd();
} }
} }
@@ -538,9 +530,7 @@ public:
i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl)); i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl));
} else { } else {
bool ts = sender->thread_safe_; bool ts = sender->thread_safe_;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.lock(); if (ts) i.dest_o->mutex_.lock();
#endif
i.dest_o->eventBegin(); i.dest_o->eventBegin();
sender->eventBegin(); sender->eventBegin();
i.dest_o->emitter_ = sender; i.dest_o->emitter_ = sender;
@@ -552,9 +542,7 @@ public:
sender->eventEnd(); sender->eventEnd();
if (i.dest_o->isPIObject()) { if (i.dest_o->isPIObject()) {
i.dest_o->emitter_ = 0; i.dest_o->emitter_ = 0;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.unlock(); if (ts) i.dest_o->mutex_.unlock();
#endif
i.dest_o->eventEnd(); i.dest_o->eventEnd();
} }
} }
@@ -580,9 +568,7 @@ public:
i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl)); i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl));
} else { } else {
bool ts = sender->thread_safe_; bool ts = sender->thread_safe_;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.lock(); if (ts) i.dest_o->mutex_.lock();
#endif
i.dest_o->eventBegin(); i.dest_o->eventBegin();
sender->eventBegin(); sender->eventBegin();
i.dest_o->emitter_ = sender; i.dest_o->emitter_ = sender;
@@ -595,9 +581,7 @@ public:
sender->eventEnd(); sender->eventEnd();
if (i.dest_o->isPIObject()) { if (i.dest_o->isPIObject()) {
i.dest_o->emitter_ = 0; i.dest_o->emitter_ = 0;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.unlock(); if (ts) i.dest_o->mutex_.unlock();
#endif
i.dest_o->eventEnd(); i.dest_o->eventEnd();
} }
} }
@@ -629,9 +613,7 @@ public:
i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl)); i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender, vl));
} else { } else {
bool ts = sender->thread_safe_; bool ts = sender->thread_safe_;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.lock(); if (ts) i.dest_o->mutex_.lock();
#endif
i.dest_o->eventBegin(); i.dest_o->eventBegin();
sender->eventBegin(); sender->eventBegin();
i.dest_o->emitter_ = sender; i.dest_o->emitter_ = sender;
@@ -645,9 +627,7 @@ public:
sender->eventEnd(); sender->eventEnd();
if (i.dest_o->isPIObject()) { if (i.dest_o->isPIObject()) {
i.dest_o->emitter_ = 0; i.dest_o->emitter_ = 0;
#ifdef PIP_HAS_THREADS
if (ts) i.dest_o->mutex_.unlock(); if (ts) i.dest_o->mutex_.unlock();
#endif
i.dest_o->eventEnd(); i.dest_o->eventEnd();
} }
} }
@@ -658,7 +638,6 @@ public:
//! \~english Returns the first live object with name "name", or \c nullptr. //! \~english Returns the first live object with name "name", or \c nullptr.
//! \~russian Возвращает первый живой объект с именем "name", либо \c nullptr. //! \~russian Возвращает первый живой объект с именем "name", либо \c nullptr.
#ifdef PIP_HAS_THREADS
static PIObject * findByName(const PIString & name) { static PIObject * findByName(const PIString & name) {
PIMutexLocker _ml(mutexObjects()); PIMutexLocker _ml(mutexObjects());
for (auto * i: PIObject::objects()) { for (auto * i: PIObject::objects()) {
@@ -667,7 +646,6 @@ public:
} }
return nullptr; return nullptr;
} }
#endif
//! \~english Returns whether this pointer still refers to a live %PIObject instance. //! \~english Returns whether this pointer still refers to a live %PIObject instance.
//! \~russian Возвращает, указывает ли этот указатель на ещё существующий экземпляр %PIObject. //! \~russian Возвращает, указывает ли этот указатель на ещё существующий экземпляр %PIObject.
@@ -675,7 +653,6 @@ public:
//! \~english Returns whether this object belongs to class "T" or one of its registered descendants. //! \~english Returns whether this object belongs to class "T" or one of its registered descendants.
//! \~russian Возвращает, принадлежит ли этот объект классу "T" или одному из его зарегистрированных потомков. //! \~russian Возвращает, принадлежит ли этот объект классу "T" или одному из его зарегистрированных потомков.
#ifdef PIP_HAS_THREADS
template<typename T> template<typename T>
bool isTypeOf() const { bool isTypeOf() const {
if (!isPIObject()) return false; if (!isPIObject()) return false;
@@ -690,7 +667,6 @@ public:
if (!isTypeOf<T>()) return (T *)nullptr; if (!isTypeOf<T>()) return (T *)nullptr;
return (T *)this; return (T *)this;
} }
#endif
//! \~english Returns whether "o" points to a live %PIObject instance. //! \~english Returns whether "o" points to a live %PIObject instance.
//! \~russian Возвращает, указывает ли "o" на ещё существующий экземпляр %PIObject. //! \~russian Возвращает, указывает ли "o" на ещё существующий экземпляр %PIObject.
@@ -859,13 +835,8 @@ private:
PIObject * emitter_; PIObject * emitter_;
std::atomic_int in_event_cnt; std::atomic_int in_event_cnt;
#ifdef PIP_HAS_THREADS
PIMutex mutex_, mutex_connect, mutex_queue;
bool thread_safe_, proc_event_queue;
#else
PIMutex mutex_, mutex_connect, mutex_queue; PIMutex mutex_, mutex_connect, mutex_queue;
bool thread_safe_ = false, proc_event_queue = false; bool thread_safe_ = false, proc_event_queue = false;
#endif
}; };
#ifdef PIP_HAS_THREADS #ifdef PIP_HAS_THREADS
+1 -9
View File
@@ -20,10 +20,8 @@
#include "pivarianttypes.h" #include "pivarianttypes.h"
#include "colors_p.h" #include "colors_p.h"
#include "piiodevice.h"
#include "pipropertystorage.h" #include "pipropertystorage.h"
#ifdef PIP_HAS_FILESYSTEM
# include "piiodevice.h"
#endif // PIP_HAS_FILESYSTEM
int PIVariantTypes::Enum::selectedValue() const { int PIVariantTypes::Enum::selectedValue() const {
@@ -84,11 +82,7 @@ PIStringList PIVariantTypes::Enum::names() const {
PIVariantTypes::IODevice::IODevice() { PIVariantTypes::IODevice::IODevice() {
#ifdef PIP_HAS_FILESYSTEM
mode = PIIODevice::ReadWrite; mode = PIIODevice::ReadWrite;
#else
mode = 0; // TODO: PIIODevice for PIP_HAS_FILESYSTEM
#endif // PIP_HAS_FILESYSTEM
options = 0; options = 0;
} }
@@ -121,12 +115,10 @@ PIString PIVariantTypes::IODevice::toPICout() const {
} }
if (rwc == 1) s += "o"; if (rwc == 1) s += "o";
s += ", flags="; s += ", flags=";
#ifdef PIP_HAS_FILESYSTEM // TODO: PIIODevice for !PIP_HAS_FILESYSTEM
if (options != 0) { if (options != 0) {
if (((PIIODevice::DeviceOptions)options)[PIIODevice::BlockingRead]) s += " br"; if (((PIIODevice::DeviceOptions)options)[PIIODevice::BlockingRead]) s += " br";
if (((PIIODevice::DeviceOptions)options)[PIIODevice::BlockingWrite]) s += " bw"; if (((PIIODevice::DeviceOptions)options)[PIIODevice::BlockingWrite]) s += " bw";
} }
#endif // PIP_HAS_FILESYSTEM
PIPropertyStorage ps = get(); PIPropertyStorage ps = get();
for (const auto & p: ps) { for (const auto & p: ps) {
s += ", " + p.name + "=\"" + p.value.toString() + "\""; s += ", " + p.name + "=\"" + p.value.toString() + "\"";