Refactored CMakeLists.txt

* new pip_module() macro
 * fixed exports
 * automatic gather all exports and pass them to Doxygen and PICodeParser
This commit is contained in:
2020-08-01 21:29:32 +03:00
parent 21111b3e67
commit c7ac4fa551
79 changed files with 389 additions and 531 deletions

View File

@@ -36,7 +36,7 @@
template <typename T>
class PIP_EXPORT PIFFTW_Private
class PIFFTW_Private
{
public:
explicit PIFFTW_Private() {

View File

@@ -1,5 +0,0 @@
add_executable(piterminal "main.cpp")
target_link_libraries(piterminal pip pip_console)
if (DEFINED LIB)
install(TARGETS piterminal DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endif ()

View File

@@ -1,280 +0,0 @@
/*
PIP - Platform Independent Primitives
Terminal client for windows, used by PITerminal and pisd
Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
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/>.
*/
#include "piincludes_p.h"
#ifndef WINDOWS
int main (int argc, char * argv[]) {
return 0;
}
#else
# include "piscreentypes.h"
# include "pisharedmemory.h"
# include "../../lib/console/piterminal.cpp"
# include "pifile.h"
# include <wincon.h>
PIVector<PIVector<PIScreenTypes::Cell> > cells;
CONSOLE_SCREEN_BUFFER_INFO sbi;
CHAR_INFO * chars = 0;
HANDLE console = 0, cstdin = 0, pipe = 0, cmd_proc = 0;
PITerminalAuxData data_out;
PIMutex con_mutex;
int con_w = -1, con_h = -1;
PIScreenTypes::Cell CharInfo2Cell(const CHAR_INFO & c) {
PIScreenTypes::Cell ret;
ret.symbol = PIChar::fromConsole(c.Char.AsciiChar);
ret.format.color_char = PIScreenTypes::Black;
if ((c.Attributes & (FOREGROUND_RED)) == FOREGROUND_RED) ret.format.color_char = PIScreenTypes::Red;
if ((c.Attributes & (FOREGROUND_GREEN)) == FOREGROUND_GREEN) ret.format.color_char = PIScreenTypes::Green;
if ((c.Attributes & (FOREGROUND_BLUE)) == FOREGROUND_BLUE) ret.format.color_char = PIScreenTypes::Blue;
if ((c.Attributes & (FOREGROUND_GREEN | FOREGROUND_BLUE)) == (FOREGROUND_GREEN | FOREGROUND_BLUE)) ret.format.color_char = PIScreenTypes::Cyan;
if ((c.Attributes & (FOREGROUND_RED | FOREGROUND_BLUE)) == (FOREGROUND_RED | FOREGROUND_BLUE)) ret.format.color_char = PIScreenTypes::Magenta;
if ((c.Attributes & (FOREGROUND_RED | FOREGROUND_GREEN)) == (FOREGROUND_RED | FOREGROUND_GREEN)) ret.format.color_char = PIScreenTypes::Yellow;
if ((c.Attributes & (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)) == (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)) ret.format.color_char = PIScreenTypes::White;
ret.format.color_back = PIScreenTypes::Black;
if ((c.Attributes & (BACKGROUND_RED)) == (BACKGROUND_RED)) ret.format.color_back = PIScreenTypes::Red;
if ((c.Attributes & (BACKGROUND_GREEN)) == (BACKGROUND_GREEN)) ret.format.color_back = PIScreenTypes::Green;
if ((c.Attributes & (BACKGROUND_BLUE)) == (BACKGROUND_BLUE)) ret.format.color_back = PIScreenTypes::Blue;
if ((c.Attributes & (BACKGROUND_GREEN | BACKGROUND_BLUE)) == (BACKGROUND_GREEN | BACKGROUND_BLUE)) ret.format.color_back = PIScreenTypes::Cyan;
if ((c.Attributes & (BACKGROUND_RED | BACKGROUND_BLUE)) == (BACKGROUND_RED | BACKGROUND_BLUE)) ret.format.color_back = PIScreenTypes::Magenta;
if ((c.Attributes & (BACKGROUND_RED | BACKGROUND_GREEN)) == (BACKGROUND_RED | BACKGROUND_GREEN)) ret.format.color_back = PIScreenTypes::Yellow;
if ((c.Attributes & (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE)) == (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)) ret.format.color_back = PIScreenTypes::White;
if ((c.Attributes & (FOREGROUND_INTENSITY)) > 0) ret.format.flags |= PIScreenTypes::Bold;
return ret;
}
int SpecialKey2VirtualKeyCode(PIKbdListener::SpecialKey k) {
switch (k) {
case PIKbdListener::Tab : return '\t'; break;
case PIKbdListener::Return : return '\n'; break;
case PIKbdListener::Space : return ' '; break;
case PIKbdListener::Backspace : return 8 ;
case PIKbdListener::PageUp : return 33 ;
case PIKbdListener::PageDown : return 34 ;
case PIKbdListener::End : return 35 ;
case PIKbdListener::Home : return 36 ;
case PIKbdListener::LeftArrow : return 37 ;
case PIKbdListener::UpArrow : return 38 ;
case PIKbdListener::RightArrow: return 39 ;
case PIKbdListener::DownArrow : return 40 ;
case PIKbdListener::Insert : return 45 ;
case PIKbdListener::Delete : return 46 ;
case PIKbdListener::F1 : return 112;
case PIKbdListener::F2 : return 113;
case PIKbdListener::F3 : return 114;
case PIKbdListener::F4 : return 115;
case PIKbdListener::F5 : return 116;
case PIKbdListener::F6 : return 117;
case PIKbdListener::F7 : return 118;
case PIKbdListener::F8 : return 119;
case PIKbdListener::F9 : return 120;
case PIKbdListener::F10 : return 121;
case PIKbdListener::F11 : return 122;
case PIKbdListener::F12 : return 123;
default: break;
}
return 0;
}
int KeyModifiers2ControlKeyState(PIKbdListener::KeyModifiers m) {
int ret(0);
if (m[PIKbdListener::Ctrl]) ret |= LEFT_CTRL_PRESSED;
if (m[PIKbdListener::Shift]) ret |= SHIFT_PRESSED;
if (m[PIKbdListener::Alt]) ret |= LEFT_ALT_PRESSED;
return ret;
}
void readConsole(int x, int y, int w, int h) {
GetConsoleScreenBufferInfo(console, &sbi);
COORD bs, bc;
bs.X = w;
bs.Y = h;
bc.X = bc.Y = 0;
memset(chars, 0, w * h * sizeof(CHAR_INFO));
ReadConsoleOutput(console, chars, bs, bc, &(sbi.srWindow));
for (int i = 0; i < h; ++i)
for (int j = 0; j < w; ++j)
cells[i][j] = CharInfo2Cell(chars[i * w + j]);
}
void resizeCells(int w, int h) {
if (chars) delete[] chars;
chars = new CHAR_INFO[w * h];
cells.resize(h);
for (int i = 0; i < h; ++i)
cells[i].resize(w);
}
void resizeConsole(int w, int h) {
if (con_w == w && con_h == h) return;
con_w = w;
con_h = h;
GetConsoleScreenBufferInfo(console, &sbi);
sbi.srWindow.Left = 0;
sbi.srWindow.Right = sbi.srWindow.Left + w - 1;
sbi.srWindow.Bottom = sbi.srWindow.Top + h - 1;
COORD sz; sz.X = w; sz.Y = h;
SetConsoleScreenBufferSize(console, sz);
SetConsoleWindowInfo(console, TRUE, &(sbi.srWindow));
//system(("mode CON: COLS=" + PIString::fromNumber(w) + " LINES=" + PIString::fromNumber(h)).dataAscii());
resizeCells(w, h);
}
class PipeReader: public PIThread {
public:
PipeReader(): PIThread() {
wrote = readed = 0;
msg_size = 0;
start(1);
}
~PipeReader() {
stop();
}
void run() {
in.resize(PIPE_BUFFER_SIZE);
ReadFile(pipe, in.data(), in.size_s(), &readed, 0);
if (GetLastError() == ERROR_BROKEN_PIPE) {
stop();
return;
}
//piCout << errorString();
if (readed > 0) {
in.resize(readed);
stream.append(in);
if (msg_size == 0) {
if (stream.size_s() < 4) return;
stream >> msg_size;
}
if (stream.size_s() >= msg_size) {
msg = PIByteArray(stream.data(), msg_size);
stream.remove(0, msg_size);
msg_size = 0;
parseMessage();
}
if (msg_size == 0 && stream.size_s() < 4) return;
}
}
void parseMessage() {
if (msg.size_s() < 4) return;
PIMutexLocker _ml(con_mutex);
int type; msg >> type;
//piCout << "msg" << type;
switch ((PITerminalAuxMessageType)type) {
case mtKey: {
PIVector<PIKbdListener::KeyEvent> ke;
msg >> ke;
PIVector<INPUT_RECORD> ir(ke.size() * 2);
for (int i = 0; i < ke.size_s(); ++i) {
PIKbdListener::KeyEvent k(ke[i]);
int j = i+i, z = j+1;
ir[j].EventType = KEY_EVENT;
ir[j].Event.KeyEvent.wRepeatCount = 1;
ir[j].Event.KeyEvent.dwControlKeyState = KeyModifiers2ControlKeyState(k.modifiers);
if (PITerminal::isSpecialKey(k.key)) {
ir[j].Event.KeyEvent.wVirtualKeyCode = SpecialKey2VirtualKeyCode((PIKbdListener::SpecialKey)k.key);
ir[j].Event.KeyEvent.uChar.AsciiChar = PIChar(piMaxi(k.key, 0)).toAscii();
} else
ir[j].Event.KeyEvent.uChar.UnicodeChar = PIChar(piMaxi(k.key, 0)).toWChar();
//piCout << ir[j].Event.KeyEvent.wVirtualKeyCode << int(ir[j].Event.KeyEvent.uChar.AsciiChar);
ir[j].Event.KeyEvent.bKeyDown = true;
ir[z] = ir[j];
ir[z].Event.KeyEvent.bKeyDown = false;
}
WriteConsoleInput(cstdin, ir.data(), ir.size_s(), &wrote);
} break;
case mtResize: {
int rw, rh;
msg >> rw >> rh;
resizeConsole(rw, rh);
} break;
default: break;
}
}
DWORD wrote, readed;
int msg_size;
PIByteArray in, stream, msg;
};
void getCursor(int & x, int & y) {
GetConsoleScreenBufferInfo(console, &sbi);
x = sbi.dwCursorPosition.X - sbi.srWindow.Left;
y = sbi.dwCursorPosition.Y - sbi.srWindow.Top;
}
int main (int argc, char * argv[]) {
//piCout << "start";
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
memset(&pi, 0, sizeof(pi));
memset(&sbi, 0, sizeof(sbi));
PIString shmh, pname;
if (argc > 1) shmh = argv[1];
if (argc > 2) pname = argv[2];
if(!CreateProcessA(0, (LPSTR)"cmd", 0, 0, true, 0, 0, 0, &si, &pi)) {
return 1;
}
PISharedMemory shm("piterm_aux" + shmh, 1024*1024);
pipe = CreateFile((LPSTR)pname.dataAscii(), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (pipe == INVALID_HANDLE_VALUE) {
return 1;
}
CloseHandle(pi.hThread);
cmd_proc = pi.hProcess;
console = GetStdHandle(STD_OUTPUT_HANDLE);
cstdin = GetStdHandle(STD_INPUT_HANDLE);
resizeConsole(80, 24);
PipeReader pipe_reader;
pipe_reader.waitForStart();
PIByteArray scr;
while (true) {
//piCout << "loop";
if (!pipe_reader.isRunning()) break;
con_mutex.lock();
getCursor(data_out.cursor_x, data_out.cursor_y);
readConsole(0, 0, con_w, con_h);
scr.clear();
scr << cells;
data_out.size_x = con_w;
data_out.size_y = con_h;
data_out.cells_size = scr.size_s();
con_mutex.unlock();
shm.write(&data_out, sizeof(data_out));
shm.write(scr, sizeof(data_out));
piMSleep(25);
}
//piCout << "exit";
TerminateProcess(pi.hProcess, 0);
CloseHandle(pi.hProcess);
return 0;
}
#endif

View File

@@ -23,10 +23,11 @@
#ifndef PICCLOUDCLIENT_H
#define PICCLOUDCLIENT_H
#include "pip_cloud_export.h"
#include "piiodevice.h"
class PIP_EXPORT PICloudClient {
class PIP_CLOUD_EXPORT PICloudClient {
public:
//!
explicit PICloudClient();

View File

@@ -23,10 +23,11 @@
#ifndef PICCLOUDSERVER_H
#define PICCLOUDSERVER_H
#include "pip_cloud_export.h"
#include "piiodevice.h"
class PIP_EXPORT PICloudServer {
class PIP_CLOUD_EXPORT PICloudServer {
public:
//!
explicit PICloudServer();

View File

@@ -23,9 +23,10 @@
#ifndef PICCLOUDTCP_H
#define PICCLOUDTCP_H
#include "pip_cloud_export.h"
#include "pistring.h"
class PIP_EXPORT PICloudTCP {
class PIP_CLOUD_EXPORT PICloudTCP {
public:
//!
PICloudTCP();

View File

@@ -30,7 +30,7 @@ class PIVariant;
namespace PICodeInfo {
enum PIP_EXPORT TypeFlag {
enum TypeFlag {
NoFlag,
Const = 0x01,
Static = 0x02,
@@ -153,10 +153,10 @@ inline PICout operator <<(PICout s, const PICodeInfo::EnumInfo & v) {
return s;
}
extern PIMap<PIString, PICodeInfo::ClassInfo * > * classesInfo;
extern PIMap<PIString, PICodeInfo::EnumInfo * > * enumsInfo;
extern PIMap<PIString, PICodeInfo::AccessValueFunction> * accessValueFunctions;
extern PIMap<PIString, PICodeInfo::AccessTypeFunction> * accessTypeFunctions;
extern PIP_EXPORT PIMap<PIString, PICodeInfo::ClassInfo * > * classesInfo;
extern PIP_EXPORT PIMap<PIString, PICodeInfo::EnumInfo * > * enumsInfo;
extern PIP_EXPORT PIMap<PIString, PICodeInfo::AccessValueFunction> * accessValueFunctions;
extern PIP_EXPORT PIMap<PIString, PICodeInfo::AccessTypeFunction> * accessTypeFunctions;
inline PIByteArray getMemberValue(const void * p, const char * class_name, const char * member_name) {
if (!p || !class_name || !member_name || !accessValueFunctions) return PIByteArray();
@@ -172,11 +172,11 @@ inline const char * getMemberType(const char * class_name, const char * member_n
return af(member_name);
}
PIVariant getMemberAsVariant(const void * p, const char * class_name, const char * member_name);
PIP_EXPORT PIVariant getMemberAsVariant(const void * p, const char * class_name, const char * member_name);
}
class __PICodeInfoInitializer__ {
class PIP_EXPORT __PICodeInfoInitializer__ {
public:
__PICodeInfoInitializer__() {
if (_inited_) return;

View File

@@ -186,6 +186,9 @@ void PICodeParser::clear() {
evaluator.clearCustomVariables();
cur_def_vis = Global;
anon_num = 0;
PIStringList defs = PIStringAscii(PICODE_DEFINES).split(",");
piForeachC (PIString & d, defs)
defines << Define(d, "");
defines << Define(PIStringAscii("PICODE"), "") << custom_defines;
}

View File

@@ -33,8 +33,8 @@ class PIP_EXPORT PICodeParser {
public:
PICodeParser();
enum PIP_EXPORT Visibility {Global, Public, Protected, Private};
enum PIP_EXPORT Attribute {
enum Visibility {Global, Public, Protected, Private};
enum Attribute {
NoAttributes = 0x0,
Const = 0x01,
Static = 0x02,

View File

@@ -228,7 +228,7 @@ private:
static const EscSeq esc_seq[];
#endif
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
KBFunc ret_func;
int exit_key;
bool exit_enabled, is_active;

View File

@@ -23,11 +23,12 @@
#ifndef PISCREEN_H
#define PISCREEN_H
#include "pip_console_export.h"
#include "piscreentile.h"
#include "piscreendrawer.h"
class PIP_EXPORT PIScreen: public PIThread, public PIScreenTypes::PIScreenBase
class PIP_CONSOLE_EXPORT PIScreen: public PIThread, public PIScreenTypes::PIScreenBase
{
PIOBJECT_SUBCLASS(PIScreen, PIThread)
class SystemConsole;
@@ -100,7 +101,7 @@ public:
//! \}
private:
class SystemConsole {
class PIP_CONSOLE_EXPORT SystemConsole {
public:
SystemConsole();
~SystemConsole();
@@ -124,7 +125,7 @@ private:
#else
PIString formatString(const PIScreenTypes::Cell & c);
#endif
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_CONSOLE_EXPORT)
int width, height, pwidth, pheight;
int mouse_x, mouse_y;
PIVector<PIVector<PIScreenTypes::Cell> > cells, pcells;

View File

@@ -25,12 +25,13 @@
#ifndef PISCREENCONSOLE_H
#define PISCREENCONSOLE_H
#include "pip_console_export.h"
#include "piscreentiles.h"
/// NOTE: incomplete class
/// TODO: write TileVars
class PIP_EXPORT TileVars: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileVars: public PIScreenTile {
public:
TileVars(const PIString & n = PIString());
protected:
@@ -68,7 +69,7 @@ protected:
class PIP_EXPORT PIScreenConsoleTile : public PIScreenTile
class PIP_CONSOLE_EXPORT PIScreenConsoleTile : public PIScreenTile
{
public:
PIScreenConsoleTile();

View File

@@ -23,10 +23,11 @@
#ifndef PISCREENDRAWER_H
#define PISCREENDRAWER_H
#include "pip_console_export.h"
#include "piscreentypes.h"
#include "pistring.h"
class PIP_EXPORT PIScreenDrawer
class PIP_CONSOLE_EXPORT PIScreenDrawer
{
friend class PIScreen;
PIScreenDrawer(PIVector<PIVector<PIScreenTypes::Cell> > & c);

View File

@@ -23,12 +23,13 @@
#ifndef PISCREENTILE_H
#define PISCREENTILE_H
#include "pip_console_export.h"
#include "piscreentypes.h"
#include "pikbdlistener.h"
class PIScreenDrawer;
class PIP_EXPORT PIScreenTile: public PIObject {
class PIP_CONSOLE_EXPORT PIScreenTile: public PIObject {
friend class PIScreen;
PIOBJECT_SUBCLASS(PIScreenTile, PIObject)
public:

View File

@@ -23,10 +23,11 @@
#ifndef PISCREENTILES_H
#define PISCREENTILES_H
#include "pip_console_export.h"
#include "piscreentile.h"
class PIP_EXPORT TileSimple: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileSimple: public PIScreenTile {
PIOBJECT_SUBCLASS(TileSimple, PIScreenTile)
public:
typedef PIPair<PIString, PIScreenTypes::CellFormat> Row;
@@ -43,7 +44,7 @@ protected:
class TileList;
class PIP_EXPORT TileScrollBar: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileScrollBar: public PIScreenTile {
PIOBJECT_SUBCLASS(TileScrollBar, PIScreenTile)
friend class TileList;
public:
@@ -66,7 +67,7 @@ protected:
};
class PIP_EXPORT TileList: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileList: public PIScreenTile {
PIOBJECT_SUBCLASS(TileList, PIScreenTile)
public:
TileList(const PIString & n = PIString());
@@ -98,7 +99,7 @@ protected:
};
class PIP_EXPORT TileButton: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileButton: public PIScreenTile {
PIOBJECT_SUBCLASS(TileButton, PIScreenTile)
public:
TileButton(const PIString & n = PIString());
@@ -118,7 +119,7 @@ protected:
class PIP_EXPORT TileButtons: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileButtons: public PIScreenTile {
PIOBJECT_SUBCLASS(TileButtons, PIScreenTile)
public:
TileButtons(const PIString & n = PIString());
@@ -143,7 +144,7 @@ protected:
};
class PIP_EXPORT TileCheck: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileCheck: public PIScreenTile {
PIOBJECT_SUBCLASS(TileCheck, PIScreenTile)
public:
TileCheck(const PIString & n = PIString());
@@ -162,7 +163,7 @@ protected:
};
class PIP_EXPORT TileProgress: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileProgress: public PIScreenTile {
PIOBJECT_SUBCLASS(TileProgress, PIScreenTile)
public:
TileProgress(const PIString & n = PIString());
@@ -178,7 +179,7 @@ protected:
};
class PIP_EXPORT TilePICout: public TileList {
class PIP_CONSOLE_EXPORT TilePICout: public TileList {
PIOBJECT_SUBCLASS(TilePICout, PIScreenTile)
public:
TilePICout(const PIString & n = PIString());
@@ -191,7 +192,7 @@ protected:
};
class PIP_EXPORT TileInput: public PIScreenTile {
class PIP_CONSOLE_EXPORT TileInput: public PIScreenTile {
PIOBJECT_SUBCLASS(TileInput, PIScreenTile)
public:
TileInput(const PIString & n = PIString());

View File

@@ -23,6 +23,7 @@
#ifndef PISCREENTYPES_H
#define PISCREENTYPES_H
#include "pip_console_export.h"
#include "pivariant.h"
class PIScreenTile;
@@ -30,7 +31,7 @@ class PIScreenTile;
namespace PIScreenTypes {
//! Color for chars or background
enum PIP_EXPORT Color {
enum Color {
Default /** Default */,
Black /** Black */,
Red /** Red */,
@@ -44,7 +45,7 @@ namespace PIScreenTypes {
};
//! Flags for chars
enum PIP_EXPORT CharFlag {
enum CharFlag {
Bold /** Bold or bright */ = 0x1,
Blink /** Blink text */ = 0x2,
Underline /** Underline text */ = 0x4,
@@ -52,14 +53,14 @@ namespace PIScreenTypes {
};
//! Alignment
enum PIP_EXPORT Alignment {
enum Alignment {
Left /** Left */ ,
Center /** Center */ ,
Right /** Right */
};
//! Size policy
enum PIP_EXPORT SizePolicy {
enum SizePolicy {
Fixed /** Fixed size */ ,
Preferred /** Preferred size */ ,
Expanding /** Maximum available size */ ,
@@ -67,13 +68,13 @@ namespace PIScreenTypes {
};
//! Direction
enum PIP_EXPORT Direction {
enum Direction {
Horizontal /** Horizontal */ ,
Vertical /** Vertical */
};
//! Focus flags
enum PIP_EXPORT FocusFlag {
enum FocusFlag {
CanHasFocus /** Tile can has focus */ = 0x1,
NextByTab /** Focus passed to next tile by tab key */ = 0x2,
NextByArrowsHorizontal /** Focus passed to next tile by arrow keys left or right */ = 0x4,
@@ -87,7 +88,7 @@ namespace PIScreenTypes {
typedef PIFlags<CharFlag> CharFlags;
typedef PIFlags<FocusFlag> FocusFlags;
union PIP_EXPORT CellFormat {
union PIP_CONSOLE_EXPORT CellFormat {
CellFormat(ushort f = 0) {raw_format = f;}
CellFormat(Color col_char, Color col_back = Default, CharFlags flags_ = 0) {
color_char = col_char;
@@ -104,7 +105,7 @@ namespace PIScreenTypes {
bool operator !=(const CellFormat & c) const {return raw_format != c.raw_format;}
};
struct PIP_EXPORT Cell {
struct PIP_CONSOLE_EXPORT Cell {
Cell(PIChar c = PIChar(' '), CellFormat f = CellFormat()) {symbol = c; format = f;}
CellFormat format;
PIChar symbol;
@@ -120,7 +121,7 @@ namespace PIScreenTypes {
}
};
struct PIP_EXPORT TileEvent {
struct PIP_CONSOLE_EXPORT TileEvent {
TileEvent(int t = -1, const PIVariant & d = PIVariant()): type(t), data(d) {}
int type;
PIVariant data;

View File

@@ -23,11 +23,12 @@
#ifndef PITERMINAL_H
#define PITERMINAL_H
#include "pip_console_export.h"
#include "pikbdlistener.h"
#include "piscreentypes.h"
class PIP_EXPORT PITerminal: public PIThread
class PIP_CONSOLE_EXPORT PITerminal: public PIThread
{
PIOBJECT_SUBCLASS(PITerminal, PIThread)
public:
@@ -63,7 +64,7 @@ private:
int termType(const PIString & t);
#endif
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_CONSOLE_EXPORT)
int dsize_x, dsize_y;
int size_x, size_y, cursor_x, cursor_y;
bool cursor_blink, cursor_visible;

View File

@@ -30,7 +30,7 @@
class PICout;
template<typename Type0, typename Type1>
class PIP_EXPORT PIPair {
class PIPair {
public:
PIPair() {first = Type0(); second = Type1();}
PIPair(const Type0 & value0, const Type1 & value1) {first = value0; second = value1;}

View File

@@ -30,7 +30,7 @@
template<typename T>
class PIP_EXPORT PIQueue: public PIDeque<T> {
class PIQueue: public PIDeque<T> {
public:
PIQueue() {}
virtual ~PIQueue() {}

View File

@@ -35,7 +35,7 @@
* has logarithmic complexity.
*/
template <typename T>
class PIP_EXPORT PISet: public PIMap<T, uchar> {
class PISet: public PIMap<T, uchar> {
typedef PIMap<T, uchar> _CSet;
public:

View File

@@ -28,7 +28,7 @@
#include "pivector.h"
template<typename T>
class PIP_EXPORT PIStack: public PIVector<T> {
class PIStack: public PIVector<T> {
public:
PIStack() {;}
virtual ~PIStack() {;}

View File

@@ -192,10 +192,10 @@
// Private data macros
#define PRIVATE_DECLARATION \
#define PRIVATE_DECLARATION(e) \
struct __Private__; \
friend struct __Private__; \
struct __PrivateInitializer__ { \
struct e __PrivateInitializer__ { \
__PrivateInitializer__(); \
__PrivateInitializer__(const __PrivateInitializer__ & o); \
~__PrivateInitializer__(); \

View File

@@ -138,7 +138,7 @@ inline std::ostream & operator <<(std::ostream & s, const PIByteArray & ba);
#endif
//! \relatesalso PIByteArray \brief Output to PICout operator
PICout operator <<(PICout s, const PIByteArray & ba);
PIP_EXPORT PICout operator <<(PICout s, const PIByteArray & ba);
#define PBA_OPERATOR_TO int os = s.size_s(); s.enlarge(sizeof(v)); memcpy(s.data(os), &v, sizeof(v));
@@ -212,7 +212,7 @@ inline PIByteArray & operator >>(PIByteArray & s, ldouble & v) {assert(s.size()
//! \relatesalso PIByteArray \brief Restore operator
template<typename T> inline PIByteArray & operator >>(PIByteArray & s, PIFlags<T> & v) {PBA_OPERATOR_FROM return s;}
//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details
PIByteArray & operator >>(PIByteArray & s, PIByteArray & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & s, PIByteArray & v);
//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details
inline PIByteArray & operator >>(PIByteArray & s, PIByteArray::RawData v) {assert(s.size_s() >= v.s); if (v.s > 0) memcpy((void*)(v.d), s.data(), v.s); s.remove(0, v.s); return s;}

View File

@@ -25,9 +25,9 @@
#include "piincludes.h"
extern char * __syslocname__;
extern char * __sysoemname__;
extern char * __utf8name__;
extern PIP_EXPORT char * __syslocname__;
extern PIP_EXPORT char * __sysoemname__;
extern PIP_EXPORT char * __utf8name__;
class PIP_EXPORT PIChar
{

View File

@@ -46,7 +46,7 @@ class PIObject;
namespace PICoutManipulators {
//! \brief Enum contains special characters
enum PIP_EXPORT PICoutSpecialChar {
enum PICoutSpecialChar {
Null /*! Null-character, '\\0' */,
NewLine /*! New line character, '\\n' */,
Tab /*! Tab character, '\\t' */,
@@ -55,7 +55,7 @@ namespace PICoutManipulators {
};
//! \brief Enum contains immediate action
enum PIP_EXPORT PICoutAction {
enum PICoutAction {
Flush /*! Flush the output */,
Backspace /*! Remove last symbol */,
ShowCursor /*! Show cursor */,
@@ -67,7 +67,7 @@ namespace PICoutManipulators {
};
//! \brief Enum contains control of PICout
enum PIP_EXPORT PICoutControl {
enum PICoutControl {
AddNone /*! No controls */ = 0x0,
AddSpaces /*! Spaces will be appear after each output */ = 0x1,
AddNewLine /*! New line will be appear after all output */ = 0x2,
@@ -78,7 +78,7 @@ namespace PICoutManipulators {
};
//! \brief Enum contains output format
enum PIP_EXPORT PICoutFormat {
enum PICoutFormat {
Bin /*! Binary representation of integers */ = 0x01,
Oct /*! Octal representation of integers */ = 0x02,
Dec /*! Decimal representation of integers */ = 0x04,
@@ -128,7 +128,7 @@ public:
~PICout();
class Notifier {
class PIP_EXPORT Notifier {
public:
static Notifier * instance();
static PIObject * object();
@@ -291,7 +291,7 @@ private:
void applyFormat(PICoutManipulators::PICoutFormat f);
static OutputDevices devs;
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
bool fo_, cc_, fc_, act_;
int cnb_, attr_, id_;
PIString * buffer_;

View File

@@ -32,7 +32,7 @@
* \snippet piincludes.cpp flags
*/
template<typename Enum>
class PIP_EXPORT PIFlags {
class PIFlags {
public:
//! Constructor with flags = 0
PIFlags(): flags(0) {;}

View File

@@ -39,7 +39,7 @@ class PICout;
struct lconv;
extern lconv * currentLocale;
extern PIP_EXPORT lconv * currentLocale;
/*! \fn errorString()
* \brief Return readable error description in format "code <number> - <description>" */

View File

@@ -63,7 +63,7 @@ private:
explicit PIInit();
void setFileCharset(const char *charset);
bool fileExists(const PIString & p);
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
char * file_charset;
};

View File

@@ -800,7 +800,7 @@ public:
static bool isTypeOf(const void * o) {return isTypeOf<T>((PIObject*)o);}
static PIString simplifyType(const char * a);
struct __MetaFunc {
struct PIP_EXPORT __MetaFunc {
__MetaFunc(): addr(0), addrV(0) {;}
bool isNull() const {return addr == 0;}
PIString arguments() const;
@@ -813,7 +813,7 @@ public:
PIStringList types;
PIStringList names;
};
struct __MetaData {
struct PIP_EXPORT __MetaData {
__MetaData() {scope_list << PIStringAscii("PIObject"); scope_id << PIStringAscii("PIObject").hash();}
void addScope(const PIString & s, uint shash);
PIStringList scope_list;
@@ -919,7 +919,7 @@ private:
};
void dumpApplication();
bool dumpApplicationToFile(const PIString & path);
PIP_EXPORT void dumpApplication();
PIP_EXPORT bool dumpApplicationToFile(const PIString & path);
#endif // PIOBJECT_H

View File

@@ -32,14 +32,14 @@
* contains unique name and you can identify property by name with propertyValueByName(), propertyByName().
* You can add property using addProperty(const Property&), addProperty(const PIString&, const PIVariant&, const PIString&, int).
*/
class PIPropertyStorage {
class PIP_EXPORT PIPropertyStorage {
public:
PIPropertyStorage() {}
/**
* @brief PIPropertyStorage element.
*/
struct Property {
struct PIP_EXPORT Property {
Property(const PIString & n = PIString(), const PIString & c = PIString(), const PIVariant & v = PIVariant(), int f = 0):
name(n), comment(c), value(v), flags(f) {}

View File

@@ -39,7 +39,7 @@
template<typename T>
class PIP_EXPORT __PIVariantFunctions__ {
class __PIVariantFunctions__ {
public:
static PIString typeNameHelper() {return PIStringAscii("");}
@@ -59,7 +59,7 @@ struct PIP_EXPORT __PIVariantInfo__ {
};
template<typename T>
struct PIP_EXPORT __PIVariantTypeInfo__ {
struct __PIVariantTypeInfo__ {
typedef T PureType;
typedef const T ConstPureType;
typedef T * PointerType;
@@ -102,7 +102,7 @@ REGISTER_VARIANT_TYPEINFO(ns::classname)
#define REGISTER_VARIANT_CPP(classname) \
template <typename T> \
class PIP_EXPORT __##classname##_PIVariantInitializer__ { \
class __##classname##_PIVariantInitializer__ { \
public: \
__##classname##_PIVariantInitializer__(const PIString & name) { \
if (__PIVariantInfoStorage__::get()->map->contains(name)) \
@@ -115,7 +115,7 @@ public: \
#define REGISTER_NS_VARIANT_CPP(ns, classname) \
template <typename T> \
class PIP_EXPORT __##ns##classname##_PIVariantInitializer__ { \
class __##ns##classname##_PIVariantInitializer__ { \
public: \
__##ns##classname##_PIVariantInitializer__(const PIString & name) { \
if (__PIVariantInfoStorage__::get()->map->contains(name)) \
@@ -155,7 +155,7 @@ PIByteArray __PIVariantFunctions__<classname_from>::castHelper<classname_to>(PIB
PIByteArray ret; ret << t; \
return ret;} \
template <typename T, typename C> \
class PIP_EXPORT __##classname_from##_##classname_to##_PIVariantCastInitializer__ { \
class __##classname_from##_##classname_to##_PIVariantCastInitializer__ { \
public: \
__##classname_from##_##classname_to##_PIVariantCastInitializer__(const PIString & name, const PIString & cname) { \
__PIVariantInfo__ * vi(__PIVariantInfoStorage__::get()->map->value(name, 0)); \
@@ -206,7 +206,7 @@ class PIP_EXPORT PIVariant {
public:
//! Type of %PIVariant content
enum PIP_EXPORT Type {
enum Type {
pivInvalid /** Invalid type , default type of empty contructor */ = 0 ,
pivBool /** bool */ ,
pivChar /** char */ ,

View File

@@ -23,11 +23,12 @@
#ifndef PIAUTH_H
#define PIAUTH_H
#include "pip_crypt_export.h"
#include "piobject.h"
#include "picrypt.h"
class PIP_EXPORT PIAuth : public PIObject
class PIP_CRYPT_EXPORT PIAuth : public PIObject
{
PIOBJECT(PIAuth)
public:

View File

@@ -23,9 +23,10 @@
#ifndef PICRYPT_H
#define PICRYPT_H
#include "pip_crypt_export.h"
#include "pistring.h"
class PIP_EXPORT PICrypt {
class PIP_CRYPT_EXPORT PICrypt {
public:
//! Construct and generate random key
PICrypt();

View File

@@ -30,8 +30,7 @@ class PIP_EXPORT PIGeoPosition : public PIMathVectorT3d
{
public:
enum CoordinateSystem
{
enum CoordinateSystem {
Unknown=0, /// Unknown coordinate system
Geodetic, /// Geodetic latitude, longitude, and height above ellipsoid
Geocentric, /// Geocentric (regular spherical coordinates)

View File

@@ -44,7 +44,7 @@ public:
PIVector<TypeInfo> getInfo() const;
#pragma pack(push, 1)
struct _Type {
struct PIP_EXPORT _Type {
_Type();
uint id;
uint count;
@@ -54,7 +54,7 @@ public:
};
#pragma pack(pop)
struct TypeInfo: _Type {
struct PIP_EXPORT TypeInfo: _Type {
PIString name;
};
@@ -63,7 +63,7 @@ public:
mutable PIMutex mutex;
};
PIByteArray & operator <<(PIByteArray & s, const PIIntrospectionContainers::TypeInfo & v);
PIByteArray & operator >>(PIByteArray & s, PIIntrospectionContainers::TypeInfo & v);
PIP_EXPORT PIByteArray & operator <<(PIByteArray & s, const PIIntrospectionContainers::TypeInfo & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & s, PIIntrospectionContainers::TypeInfo & v);
#endif // PIINTROSPECTION_CONTAINERS_P_H

View File

@@ -27,7 +27,7 @@
#include "pisystemmonitor.h"
class PIIntrospection {
class PIP_EXPORT PIIntrospection {
public:
enum InfoTypes {
@@ -38,12 +38,12 @@ public:
itThreads = 0x10,
};
struct RequiredInfo {
struct PIP_EXPORT RequiredInfo {
RequiredInfo();
PIFlags<InfoTypes> types;
};
struct ProcessInfo {
struct PIP_EXPORT ProcessInfo {
ProcessInfo();
PIString execCommand, hostname, user, OS_name, OS_version, architecture;
@@ -53,14 +53,14 @@ public:
PIStringList build_options;
};
struct ProcessStat {
struct PIP_EXPORT ProcessStat {
ProcessStat() {}
PISystemMonitor::ProcessStats proc;
PIVector<PISystemMonitor::ThreadStats> threads;
};
struct ObjectInfo {
struct PIP_EXPORT ObjectInfo {
ObjectInfo();
PIString classname, name;
@@ -91,13 +91,13 @@ public:
};
PIByteArray & operator <<(PIByteArray & b, const PIIntrospection::RequiredInfo & v);
PIByteArray & operator >>(PIByteArray & b, PIIntrospection::RequiredInfo & v);
PIP_EXPORT PIByteArray & operator <<(PIByteArray & b, const PIIntrospection::RequiredInfo & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & b, PIIntrospection::RequiredInfo & v);
PIByteArray & operator <<(PIByteArray & b, const PIIntrospection::ProcessInfo & v);
PIByteArray & operator >>(PIByteArray & b, PIIntrospection::ProcessInfo & v);
PIP_EXPORT PIByteArray & operator <<(PIByteArray & b, const PIIntrospection::ProcessInfo & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & b, PIIntrospection::ProcessInfo & v);
PIByteArray & operator <<(PIByteArray & b, const PIIntrospection::ObjectInfo & v);
PIByteArray & operator >>(PIByteArray & b, PIIntrospection::ObjectInfo & v);
PIP_EXPORT PIByteArray & operator <<(PIByteArray & b, const PIIntrospection::ObjectInfo & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & b, PIIntrospection::ObjectInfo & v);
#endif // PIINTROSPECTION_SERVER_P_H

View File

@@ -35,7 +35,7 @@ public:
sWaiting,
};
struct ThreadInfo {
struct PIP_EXPORT ThreadInfo {
ThreadInfo();
PIString classname, name;
int id, delay;
@@ -57,7 +57,7 @@ public:
};
PIByteArray & operator <<(PIByteArray & b, const PIIntrospectionThreads::ThreadInfo & v);
PIByteArray & operator >>(PIByteArray & b, PIIntrospectionThreads::ThreadInfo & v);
PIP_EXPORT PIByteArray & operator <<(PIByteArray & b, const PIIntrospectionThreads::ThreadInfo & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & b, PIIntrospectionThreads::ThreadInfo & v);
#endif // PIINTROSPECTION_THREADS_P_H

View File

@@ -56,7 +56,7 @@ public:
};
//! \brief Struct contains information about all records with same ID
struct BinLogRecordInfo {
struct PIP_EXPORT BinLogRecordInfo {
BinLogRecordInfo() {
id = count = 0;
minimum_size = maximum_size = 0;
@@ -70,7 +70,7 @@ public:
};
//! \brief Struct contains full information about Binary Log file and about all Records using map of \a BinLogRecordInfo
struct BinLogInfo {
struct PIP_EXPORT BinLogInfo {
PIString path;
int records_count;
llong log_size;
@@ -80,7 +80,7 @@ public:
};
//! \brief Struct contains position, ID and timestamp of record in file
struct BinLogIndex {
struct PIP_EXPORT BinLogIndex {
int id;
llong pos;
PISystemTime timestamp;
@@ -293,7 +293,7 @@ protected:
DeviceInfoFlags deviceInfoFlags() const {return PIIODevice::Reliable;}
private:
struct BinLogRecord {
struct PIP_EXPORT BinLogRecord {
int id;
int size;
PISystemTime timestamp;

View File

@@ -505,8 +505,8 @@ private:
#ifdef PIP_STD_IOSTREAM
std::ostream & operator <<(std::ostream & s, const PIConfig::Branch & v);
std::ostream & operator <<(std::ostream & s, const PIConfig::Entry & v);
PIP_EXPORT std::ostream & operator <<(std::ostream & s, const PIConfig::Branch & v);
PIP_EXPORT std::ostream & operator <<(std::ostream & s, const PIConfig::Entry & v);
#endif
inline PICout operator <<(PICout s, const PIConfig::Branch & v) {s.setControl(0, true); v.piCoutt(s, ""); s.restoreControl(); return s;}

View File

@@ -43,7 +43,7 @@ public:
explicit PIEthernet();
//! \brief Type of %PIEthernet
enum PIP_EXPORT Type {
enum Type {
UDP /** UDP - User Datagram Protocol */ ,
TCP_Client /** TCP client - allow connection to TCP server */ ,
TCP_Server /** TCP server - receive connections from TCP clients */ ,
@@ -51,7 +51,7 @@ public:
};
//! \brief Parameters of %PIEthernet
enum PIP_EXPORT Parameters {
enum Parameters {
ReuseAddress /** Rebind address if there is already binded. Enabled by default */ = 0x1,
Broadcast /** Broadcast send. Disabled by default */ = 0x2,
SeparateSockets /** If this parameter is set, %PIEthernet will initialize two different sockets,
@@ -63,7 +63,7 @@ public:
//! \brief IPv4 network address, IP and port
class Address {
class PIP_EXPORT Address {
friend class PIEthernet;
friend inline PIByteArray & operator <<(PIByteArray & s, const PIEthernet::Address & v);
friend inline PIByteArray & operator >>(PIByteArray & s, PIEthernet::Address & v);
@@ -322,7 +322,7 @@ public:
//! Flags of network interface
enum PIP_EXPORT InterfaceFlag {
enum InterfaceFlag {
ifActive /** Is active */ = 0x1,
ifRunning /** Is running */ = 0x2,
ifBroadcast /** Support broadcast */ = 0x4,
@@ -485,7 +485,7 @@ protected:
void applyTimeout(int fd, int opt, double ms);
void applyOptInt(int level, int opt, int val);
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
int sock, sock_s;
bool connected_, connecting_, listen_threaded, server_bounded;
mutable Address addr_r, addr_s, addr_lr;

View File

@@ -38,7 +38,7 @@ public:
struct PIP_EXPORT FileInfo {
FileInfo() {size = 0; id_group = id_user = 0;}
enum PIP_EXPORT Flag {
enum Flag {
File = 0x01,
Dir = 0x02,
Dot = 0x04,
@@ -292,7 +292,7 @@ protected:
private:
PIString strType(const PIIODevice::DeviceMode type);
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
int ret, prec_, fdi;
PIString prec_str;

View File

@@ -26,7 +26,7 @@
#include "pithread.h"
class PIGPIO: public PIThread
class PIP_EXPORT PIGPIO: public PIThread
{
PIOBJECT_SUBCLASS(PIGPIO, PIThread)
public:
@@ -85,7 +85,7 @@ public:
//! \}
private:
struct GPIOData {
struct PIP_EXPORT GPIOData {
GPIOData() {dir = PIGPIO::In; num = fd = -1;}
PIString name;
int dir;

View File

@@ -36,7 +36,7 @@ public:
explicit PIPeer(const PIString & name = PIString());
virtual ~PIPeer();
class PeerInfo {
class PIP_EXPORT PeerInfo {
friend class PIPeer;
friend PIByteArray & operator <<(PIByteArray & s, const PIPeer::PeerInfo & v);
friend PIByteArray & operator >>(PIByteArray & s, PIPeer::PeerInfo & v);
@@ -44,7 +44,7 @@ public:
PeerInfo() {dist = sync = cnt = 0; trace = -1; was_update = false; _data = 0;}
~PeerInfo() {}
struct PeerAddress {
struct PIP_EXPORT PeerAddress {
PeerAddress(const PIEthernet::Address & a = PIEthernet::Address(), const PIEthernet::Address & m = PIEthernet::Address("255.255.255.0"));
bool isAvailable() const {return ping > 0;}
PIEthernet::Address address;

View File

@@ -72,7 +72,7 @@ public:
};
//! \brief Information about serial device
struct DeviceInfo {
struct PIP_EXPORT DeviceInfo {
DeviceInfo();
//! \brief String representation of USB ID in format \"xxxx:xxxx\"
@@ -246,7 +246,7 @@ protected:
bool openDevice();
bool closeDevice();
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
int fd, vtime;
bool sending;
PITimeMeasurer tm_;

View File

@@ -86,7 +86,7 @@ private:
void initPrivate();
int dsize;
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
};

View File

@@ -77,7 +77,7 @@ private:
uchar spi_bits;
PIByteArray tx_buf, rx_buf;
PIByteArray recv_buf;
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
};
#endif // PISPI_H

View File

@@ -34,7 +34,7 @@ public:
explicit PIUSB(ushort vid = 0, ushort pid = 0);
~PIUSB() {closeDevice();}
struct Endpoint {
struct PIP_EXPORT Endpoint {
Endpoint(uchar a = 0, uchar at = 0, ushort mps = 0) {address = a; attributes = at; max_packet_size = mps; parse();}
enum Direction {Write = 0, Read = 1};
@@ -54,7 +54,7 @@ public:
UsageType usage_type;
};
struct Interface {
struct PIP_EXPORT Interface {
Interface() {index = value_to_select = class_code = subclass_code = protocol_code = 0;}
uchar index;
uchar value_to_select;
@@ -64,7 +64,7 @@ public:
PIVector<PIUSB::Endpoint> endpoints;
};
struct Configuration {
struct PIP_EXPORT Configuration {
Configuration() {index = value_to_select = attributes = max_power = 0; self_powered = remote_wakeup = false;}
uchar index;
uchar value_to_select;
@@ -75,7 +75,7 @@ public:
PIVector<PIUSB::Interface> interfaces;
};
struct Descriptor {
struct PIP_EXPORT Descriptor {
Descriptor() {usb_spec_number = 0; device_class = device_subclass = device_protocol = max_packet_size = 0; id_vendor = id_product = id_device_release = 0; index_manufacturer = index_product = index_serial = 0;}
ushort usb_spec_number;
uchar device_class;
@@ -148,6 +148,6 @@ protected:
};
PICout operator <<(PICout s, const PIUSB::Endpoint & v);
PIP_EXPORT PICout operator <<(PICout s, const PIUSB::Endpoint & v);
#endif // PIUSB_H

View File

@@ -102,7 +102,7 @@ protected:
llong bytes_all, bytes_cur;
private:
enum PIP_EXPORT PacketType {pt_Unknown, pt_Data, pt_ReplySuccess, pt_ReplyInvalid, pt_Break, pt_Start, pt_Pause};
enum PacketType {pt_Unknown, pt_Data, pt_ReplySuccess, pt_ReplyInvalid, pt_Break, pt_Start, pt_Pause};
# pragma pack(push,1)
struct PIP_EXPORT StartRequest {

View File

@@ -23,11 +23,12 @@
#ifndef PIBROADCAST_H
#define PIBROADCAST_H
#include "pip_io_utils_export.h"
#include "piethutilbase.h"
#include "piethernet.h"
class PIBroadcast: public PIThread, public PIEthUtilBase {
class PIP_IO_UTILS_EXPORT PIBroadcast: public PIThread, public PIEthUtilBase {
PIOBJECT_SUBCLASS(PIBroadcast, PIThread)
public:

View File

@@ -404,7 +404,7 @@ private:
void __DevicePool_threadReadDP(void * ddp);
extern PIConnection::DevicePool * __device_pool__;
extern PIP_EXPORT PIConnection::DevicePool * __device_pool__;
class PIP_EXPORT __DevicePoolContainer__ {
public:

View File

@@ -49,7 +49,7 @@ public:
};
//! Information about current diagnostics state
struct State {
struct PIP_EXPORT State {
State();
float immediate_freq;
float integral_freq;
@@ -123,7 +123,7 @@ public:
//! \}
private:
struct Entry {
struct PIP_EXPORT Entry {
Entry() {bytes_ok = bytes_fail = 0; cnt_ok = cnt_fail = 0; empty = true;}
ullong bytes_ok;
ullong bytes_fail;

View File

@@ -23,9 +23,10 @@
#ifndef PIETHUTILBASE_H
#define PIETHUTILBASE_H
#include "pip_io_utils_export.h"
#include "pibytearray.h"
class PIEthUtilBase {
class PIP_IO_UTILS_EXPORT PIEthUtilBase {
public:
PIEthUtilBase();
~PIEthUtilBase();

View File

@@ -35,7 +35,7 @@ public:
PIFileTransfer();
~PIFileTransfer();
enum PIP_EXPORT StepType {pft_None, pft_Description, pft_Data};
enum StepType {pft_None, pft_Description, pft_Data};
struct PIP_EXPORT PFTFileInfo: public PIFile::FileInfo {
PFTFileInfo(const PIFile::FileInfo &fi = PIFile::FileInfo()): PIFile::FileInfo(fi) {}

View File

@@ -23,20 +23,21 @@
#ifndef PISTREAMPACKER_H
#define PISTREAMPACKER_H
#include "pip_io_utils_export.h"
#include "piobject.h"
#include "piethutilbase.h"
class PIIODevice;
class PIP_EXPORT PIStreamPacker: public PIObject, public PIEthUtilBase {
class PIP_IO_UTILS_EXPORT PIStreamPacker: public PIObject, public PIEthUtilBase {
PIOBJECT(PIStreamPacker)
public:
//! Contructs packer and try to assign \"dev\"
PIStreamPacker(PIIODevice * dev = 0);
//! Progress info
struct Progress {
struct PIP_IO_UTILS_EXPORT Progress {
Progress();
//! Is send/receive in progress

View File

@@ -23,9 +23,10 @@
#ifndef PILUAPROGRAM_H
#define PILUAPROGRAM_H
#include "pip_lua_export.h"
#include "pip_lua.h"
class PILuaProgram
class PIP_LUA_EXPORT PILuaProgram
{
public:
//! Constructs an empty PILuaProgram, initialize Lua context
@@ -44,7 +45,7 @@ public:
luabridge::Namespace getGlobalNamespace();
private:
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_LUA_EXPORT)
};
#endif // PILUAPROGRAM_H

View File

@@ -25,8 +25,8 @@
#include "pibytearray.h"
PIByteArray piCompress(const PIByteArray & ba, int level = 6);
PIP_EXPORT PIByteArray piCompress(const PIByteArray & ba, int level = 6);
PIByteArray piDecompress(const PIByteArray & zba);
PIP_EXPORT PIByteArray piDecompress(const PIByteArray & zba);
#endif // PICOMPRESS_H

View File

@@ -30,12 +30,12 @@ typedef complexd (*FuncFunc)(void * , int, complexd * );
namespace PIEvaluatorTypes {
enum PIP_EXPORT eType {etNumber, etOperator, etVariable, etFunction};
enum PIP_EXPORT Operation {oNone, oAdd, oSubtract, oMultiply, oDivide, oResidue, oPower,
enum eType {etNumber, etOperator, etVariable, etFunction};
enum Operation {oNone, oAdd, oSubtract, oMultiply, oDivide, oResidue, oPower,
oEqual, oNotEqual, oGreater, oSmaller, oGreaterEqual, oSmallerEqual,
oAnd, oOr, oFunction
};
enum PIP_EXPORT BaseFunctions {bfUnknown, bfSin, bfCos, bfTg, bfCtg,
enum BaseFunctions {bfUnknown, bfSin, bfCos, bfTg, bfCtg,
bfArcsin, bfArccos, bfArctg, bfArcctg,
bfExp, bfRandom, bfRandomn,
bfSh, bfCh, bfTh, bfCth,

View File

@@ -23,6 +23,7 @@
#ifndef PIFFT_H
#define PIFFT_H
#include "pip_fftw_export.h"
#include "pimathcomplex.h"
class PIP_EXPORT PIFFT_double
@@ -123,7 +124,7 @@ typedef PIFFT_float PIFFTf;
#ifndef CC_VC
#define _PIFFTW_H(type) class _PIFFTW_P_##type##_ { \
#define _PIFFTW_H(type) class PIP_FFTW_EXPORT _PIFFTW_P_##type##_ { \
public: \
_PIFFTW_P_##type##_(); \
~_PIFFTW_P_##type##_(); \
@@ -138,7 +139,7 @@ _PIFFTW_H(double)
_PIFFTW_H(ldouble)
template <typename T>
class PIP_EXPORT PIFFTW
class PIFFTW
{
public:
explicit PIFFTW() {p = 0; newP(p);}

View File

@@ -103,21 +103,21 @@ inline float sqr(const float & v) {return v * v;}
inline double sqr(const double & v) {return v * v;}
inline double sinc(const double & v) {if (v == 0.) return 1.; double t = M_PI * v; return sin(t) / t;}
double piJ0(const double & v);
double piJ1(const double & v);
double piJn(int n, const double & v);
double piY0(const double & v);
double piY1(const double & v);
double piYn(int n, const double & v);
PIP_EXPORT double piJ0(const double & v);
PIP_EXPORT double piJ1(const double & v);
PIP_EXPORT double piJn(int n, const double & v);
PIP_EXPORT double piY0(const double & v);
PIP_EXPORT double piY1(const double & v);
PIP_EXPORT double piYn(int n, const double & v);
inline double toDb(double val) {return 10. * log10(val);}
inline double fromDb(double val) {return pow(10., val / 10.);}
inline double toRad(double deg) {return deg * M_PI_180;}
inline double toDeg(double rad) {return rad * M_180_PI;}
// [-1 ; 1]
double randomd();
PIP_EXPORT double randomd();
// [-1 ; 1] normal
double randomn(double dv = 0., double sv = 1.);
PIP_EXPORT double randomn(double dv = 0., double sv = 1.);
inline PIVector<double> abs(const PIVector<double> & v) {

View File

@@ -27,7 +27,7 @@
/// Differential evaluations
struct TransferFunction {
struct PIP_EXPORT TransferFunction {
PIVector<double> vector_Bm, vector_An;
};

View File

@@ -25,7 +25,7 @@
#include "pimathmatrix.h"
class PIQuaternion
class PIP_EXPORT PIQuaternion
{
friend PIQuaternion operator*(const PIQuaternion & q0, const PIQuaternion & q1);
friend PIQuaternion operator*(const double & a, const PIQuaternion & q);
@@ -57,8 +57,8 @@ protected:
};
PIQuaternion operator *(const double & a, const PIQuaternion & q);
PIQuaternion operator *(const PIQuaternion & q0, const PIQuaternion & q1);
PIP_EXPORT PIQuaternion operator *(const double & a, const PIQuaternion & q);
PIP_EXPORT PIQuaternion operator *(const PIQuaternion & q0, const PIQuaternion & q1);
inline PIQuaternion operator +(const PIQuaternion & q0, const PIQuaternion & q1) {return PIQuaternion(q0.vector() + q1.vector(), q0.scalar() + q1.scalar());}
inline PIQuaternion operator -(const PIQuaternion & q0, const PIQuaternion & q1) {return PIQuaternion(q0.vector() - q1.vector(), q0.scalar() - q1.scalar());}
inline PIQuaternion operator -(const PIQuaternion & q0) {return PIQuaternion(-q0.vector(), -q0.scalar());}

View File

@@ -26,7 +26,7 @@
#include "pimathbase.h"
template <typename T>
class PIP_EXPORT PIStatistic {
class PIStatistic {
public:
PIStatistic() {mean = variance = skewness = kurtosis = T();}

View File

@@ -20,10 +20,11 @@
#ifndef PIOPENCL_H
#define PIOPENCL_H
#include "pip_opencl_export.h"
#include "pivariant.h"
class PIOpenCL {
class PIP_OPENCL_EXPORT PIOpenCL {
public:
struct KernelArg;
@@ -69,7 +70,7 @@ public:
Double,
};
struct KernelArg {
struct PIP_OPENCL_EXPORT KernelArg {
KernelArg();
AddressQualifier address_qualifier;
AccessQualifier access_qualifier;
@@ -85,7 +86,7 @@ public:
void init(void * _k, uint index);
};
struct Device {
struct PIP_OPENCL_EXPORT Device {
Device() {id = platform_id = 0; max_compute_units = max_clock_frequency = 0; max_memory_size = 0;}
bool isValid() const {return id != 0;}
PIString displayText() const {return name.trimmed() + " (" + device_version.trimmed() + ")";}
@@ -100,7 +101,7 @@ public:
ullong max_memory_size;
};
struct Platform {
struct PIP_OPENCL_EXPORT Platform {
Platform() {id = 0;}
bool isValid() const {return id != 0;}
PIString displayText() const {return name.trimmed() + " (" + version.trimmed() + ", " + profile.trimmed() + ")";}
@@ -113,7 +114,7 @@ public:
PIVector<Device> devices;
};
class Context {
class PIP_OPENCL_EXPORT Context {
friend class Program;
public:
~Context();
@@ -125,10 +126,10 @@ public:
void zero();
void deletePrograms();
PIVector<Program * > programs_;
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_OPENCL_EXPORT)
};
class Program {
class PIP_OPENCL_EXPORT Program {
friend class Context;
friend class Kernel;
public:
@@ -143,10 +144,10 @@ public:
Context * context_;
PIString source_;
PIVector<Kernel * > kernels_;
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_OPENCL_EXPORT)
};
class Kernel {
class PIP_OPENCL_EXPORT Kernel {
friend class Program;
public:
const PIString & name() const {return name_;}
@@ -165,7 +166,7 @@ public:
Program * program_;
PIString name_;
PIVector<KernelArg> args_;
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_OPENCL_EXPORT)
};
static void init();
@@ -177,7 +178,7 @@ public:
private:
static PIString prog_header;
PIOpenCL() {;}
class Initializer {
class PIP_OPENCL_EXPORT Initializer {
public:
Initializer();
static Initializer * instance();

View File

@@ -20,6 +20,8 @@
#ifndef PIPLATFORM_H
#define PIPLATFORM_H
#include <pip_export.h>
#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
# define WINDOWS
# define ARCH_BITS_64
@@ -90,11 +92,5 @@
# define typeof __typeof__
#endif
#if defined(DOXYGEN) || defined(CC_GCC) || defined(PICODE)
# undef PIP_EXPORT
# define PIP_EXPORT
# undef DEPRECATED
# define DEPRECATED
#endif
#endif // PIPLATFORM_H

View File

@@ -42,7 +42,7 @@ private:
bool loadInternal();
void getLastError();
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
PIString libpath, liberror;
};

View File

@@ -93,7 +93,7 @@ private:
void exec_();
void startProc(bool detached);
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
PIStringList args, env;
PIString wd;
PIByteArray out;

View File

@@ -26,7 +26,7 @@ class PIP_EXPORT PISystemInfo {
public:
PISystemInfo();
struct MountInfo {
struct PIP_EXPORT MountInfo {
MountInfo();
PIString mount_point;
PIString device;

View File

@@ -32,7 +32,7 @@ public:
~PISystemMonitor();
#pragma pack(push, 1)
struct ProcessStatsFixed {
struct PIP_EXPORT ProcessStatsFixed {
ProcessStatsFixed();
int ID;
int parent_ID;
@@ -52,7 +52,7 @@ public:
float cpu_load_user;
};
struct ThreadStatsFixed {
struct PIP_EXPORT ThreadStatsFixed {
ThreadStatsFixed();
llong id;
PISystemTime work_time;
@@ -63,7 +63,7 @@ public:
};
#pragma pack(pop)
struct ProcessStats: ProcessStatsFixed {
struct PIP_EXPORT ProcessStats: ProcessStatsFixed {
void makeStrings();
PIString exec_name;
PIString state;
@@ -74,7 +74,7 @@ public:
PIString data_memsize_readable;
};
struct ThreadStats: ThreadStatsFixed {
struct PIP_EXPORT ThreadStats: ThreadStatsFixed {
PIString name;
PIDateTime created;
};
@@ -107,10 +107,10 @@ private:
mutable PIMutex stat_mutex;
int pID_, page_size, cpu_count, cycle;
#ifndef FREERTOS
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
#endif
class Pool {
class PIP_EXPORT Pool {
friend class PISystemMonitor;
public:
static Pool * instance();
@@ -136,9 +136,9 @@ inline PICout operator <<(PICout s, const PISystemMonitor::ThreadStats & v) {
return s;
}
PIByteArray & operator <<(PIByteArray & s, const PISystemMonitor::ProcessStats & v);
PIByteArray & operator >>(PIByteArray & s, PISystemMonitor::ProcessStats & v);
PIByteArray & operator <<(PIByteArray & s, const PISystemMonitor::ThreadStats & v);
PIByteArray & operator >>(PIByteArray & s, PISystemMonitor::ThreadStats & v);
PIP_EXPORT PIByteArray & operator <<(PIByteArray & s, const PISystemMonitor::ProcessStats & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & s, PISystemMonitor::ProcessStats & v);
PIP_EXPORT PIByteArray & operator <<(PIByteArray & s, const PISystemMonitor::ThreadStats & v);
PIP_EXPORT PIByteArray & operator >>(PIByteArray & s, PISystemMonitor::ThreadStats & v);
#endif // PISYSTEMMONITOR_H

View File

@@ -23,16 +23,16 @@
#include "pibase.h"
namespace PISystemTests {
PIP_EXPORT extern long time_resolution_ns;
PIP_EXPORT extern long time_elapsed_ns;
PIP_EXPORT extern long usleep_offset_us;
extern PIP_EXPORT long time_resolution_ns;
extern PIP_EXPORT long time_elapsed_ns;
extern PIP_EXPORT long usleep_offset_us;
class PISystemTestReader {
class PIP_EXPORT PISystemTestReader {
public:
PISystemTestReader();
};
extern PISystemTestReader pisystestreader;
extern PIP_EXPORT PISystemTestReader pisystestreader;
}
#endif // PISYSTEMTESTS_H

View File

@@ -111,7 +111,7 @@ public:
virtual bool waitFor(PIMutex& lk, int timeoutMs, const std::function<bool()>& condition);
private:
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
};

View File

@@ -28,7 +28,7 @@
template<typename T = PIByteArray>
class PIP_EXPORT PIGrabberBase: public PIThread
class PIGrabberBase: public PIThread
{
PIOBJECT_SUBCLASS(PIGrabberBase, PIThread)
public:

View File

@@ -59,7 +59,7 @@ private:
void init();
void destroy();
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
};

View File

@@ -243,7 +243,7 @@ protected:
PITimeMeasurer tmf_, tms_, tmr_;
PIThread::Priority priority_;
ThreadFunc ret_func;
PRIVATE_DECLARATION
PRIVATE_DECLARATION(PIP_EXPORT)
private:
bool _startThread(void * func);

View File

@@ -24,7 +24,7 @@
#include <atomic>
class PIThreadPoolExecutor {
class PIP_EXPORT PIThreadPoolExecutor {
public:
explicit PIThreadPoolExecutor(size_t corePoolSize = -1, PIBlockingDequeue<std::function<void()> > * taskQueue_ = 0);