PIP_NO_FILESYSTEM and PIP_NO_THREADS

This commit is contained in:
2026-03-29 12:22:35 +03:00
parent 15f90d9e17
commit a450235743
17 changed files with 55 additions and 33 deletions

View File

@@ -35,6 +35,7 @@
class PIFile;
class PIStringList;
class PIInit;
class PIP_EXPORT __PIInit_Initializer__ {

View File

@@ -16,6 +16,7 @@
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIP_NO_FILESYSTEM
#include "pidir.h"
#include "piincludes_p.h"
@@ -610,3 +611,4 @@ void PIDir::CurrentDirOverrider::save(const PIFile::FileInfo & info) {
else
PIDir::setCurrent(PIDir::current().path() + PIDir::separator + p);
}
#endif // PIP_NO_FILESYSTEM

View File

@@ -30,6 +30,7 @@
#include "piregularexpression.h"
#ifndef PIP_NO_FILESYSTEM
//! \ingroup IO
//! \~\brief
//! \~english Local directory.
@@ -217,8 +218,10 @@ private:
PIString path_, scan_;
};
#endif // PIP_NO_FILESYSTEM
#ifndef PIP_NO_FILESYSTEM
inline bool operator<(const PIFile::FileInfo & v0, const PIFile::FileInfo & v1) {
return (v0.path < v1.path);
}
@@ -242,6 +245,7 @@ inline PICout operator<<(PICout s, const PIDir & v) {
s.restoreControls();
return s;
}
#endif // PIP_NO_FILESYSTEM
#endif // PIDIR_H

View File

@@ -17,6 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIP_NO_FILESYSTEM
#include "pifile.h"
#include "pidir.h"
@@ -635,3 +636,4 @@ int PIFile::writeAll(const PIString & path, const PIByteArray & data) {
f.clear();
return f.write(data.data(), data.size_s());
}
#endif // PIP_NO_FILESYSTEM

View File

@@ -30,6 +30,7 @@
#include "pipropertystorage.h"
#ifndef PIP_NO_FILESYSTEM
//! \ingroup IO
//! \~\brief
//! \~english Local file.
@@ -345,8 +346,10 @@ private:
llong _size = -1;
PIString prec_str;
};
#endif // PIP_NO_FILESYSTEM
#ifndef PIP_NO_FILESYSTEM
//! \relatesalso PICout
//! \~english Output operator to \a PICout
//! \~russian Оператор вывода в \a PICout
@@ -377,5 +380,6 @@ BINARY_STREAM_READ(PIFile::FileInfo) {
v.perm_group.raw >> v.perm_other.raw;
return s;
}
#endif // PIP_NO_FILESYSTEM
#endif // PIFILE_H

View File

@@ -56,7 +56,7 @@
# define PIP_NO_THREADS
# endif
# ifndef LWIP
# define PIP_NO_SOCKET
# define PIP_NO_SOCKET
# endif
# define PISERIAL_NO_PINS
#endif

View File

@@ -23,6 +23,7 @@
# define _WIN32_WINNT 0x0600
#endif
#ifndef PIP_NO_THREADS
#include "piconditionvar.h"
#include "piincludes_p.h"
#ifdef WINDOWS
@@ -179,3 +180,4 @@ void PIConditionVariable::notifyAll() {
pthread_cond_broadcast(&PRIVATE->nativeHandle);
#endif
}
#endif // PIP_NO_THREADS

View File

@@ -30,6 +30,7 @@
#include "pisystemtime.h"
#ifndef PIP_NO_THREADS
/**
* \brief A condition variable is an object able to block the calling thread until notified to resume.
*
@@ -121,5 +122,5 @@ private:
PRIVATE_DECLARATION(PIP_EXPORT)
};
#endif // PIP_NO_THREADS
#endif // PICONDITIONVAR_H

View File

@@ -107,6 +107,7 @@
//! \}
#ifndef PIP_NO_THREADS
#include "pimutex.h"
#include "piincludes_p.h"
@@ -228,3 +229,4 @@ void PIMutex::destroy() {
pthread_mutex_destroy(&(PRIVATE->mutex));
#endif
}
#endif // PIP_NO_THREADS

View File

@@ -29,6 +29,7 @@
#include "piinit.h"
#ifndef PIP_NO_THREADS
class PIP_EXPORT PIMutex {
public:
NO_COPY_CLASS(PIMutex);
@@ -85,5 +86,5 @@ private:
bool cond;
};
#endif // PIP_NO_THREADS
#endif // PIMUTEX_H

View File

@@ -17,6 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIP_NO_THREADS
#include "pithread.h"
#include "piincludes_p.h"
@@ -1086,3 +1087,4 @@ bool PIThread::_waitForFinish(PISystemTime max_tm) {
#endif
return false;
}
#endif // PIP_NO_THREADS

View File

@@ -33,6 +33,7 @@
class PIThread;
#ifndef PIP_NO_THREADS
#ifndef MICRO_PIP
class PIIntrospectionThreads;
@@ -304,5 +305,5 @@ private:
void setThreadName();
};
#endif // PIP_NO_THREADS
#endif // PITHREAD_H

View File

@@ -17,6 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIP_NO_THREADS
#include "pitimer.h"
#include "piconditionvar.h"
@@ -302,3 +303,4 @@ void PITimer::stop() {
thread->stop();
event.notifyAll();
}
#endif // PIP_NO_THREADS

View File

@@ -33,6 +33,7 @@
class PIThread;
#ifndef PIP_NO_THREADS
class PIP_EXPORT PITimer: public PIObject {
PIOBJECT_SUBCLASS(PITimer, PIObject);
@@ -209,5 +210,5 @@ protected:
PIConditionVariable event;
};
#endif // PIP_NO_THREADS
#endif // PITIMER_H

View File

@@ -26,6 +26,8 @@
# include "pisystemtests.h"
#elif defined(ARDUINO)
# include <Arduino.h>
#elif defined(PICO_SDK)
# include "hardware/time.h"
#endif
#ifdef MICRO_PIP
# include <sys/time.h>
@@ -48,28 +50,13 @@
void piUSleep(int usecs) {
if (usecs <= 0) return;
#ifdef WINDOWS
// printf("Sleep %d\n", usecs / 1000);
if (usecs > 0) Sleep(usecs / 1000);
// printf("Sleep end");
#else
# ifdef FREERTOS
Sleep(usecs / 1000);
#elif defined(FREERTOS)
vTaskDelay(usecs / 1000 / portTICK_PERIOD_MS);
# else
# ifdef MICRO_PIP
if (usecs > 0) {
struct timeval start;
gettimeofday(&start, nullptr);
long long elapsed = 0;
while (elapsed < usecs) {
struct timeval now;
gettimeofday(&now, nullptr);
elapsed = (now.tv_sec - start.tv_sec) * 1000000LL + (now.tv_usec - start.tv_usec);
}
}
# else
#elif defined(PICO_SDK)
sleep_us(usecs);
#else
usecs -= PISystemTests::usleep_offset_us;
if (usecs > 0) usleep(usecs);
# endif
# endif
#endif
}