Global Namespace

// namespaces

namespace doc;
namespace io;
namespace iox;
namespace log;
namespace ui;
    namespace ui.ComboBoxHistory;

// enums

enum FpgaUploaderLogRecordCode;
enum WebSocketLogRecordCode;

// structs

struct ArpFrame;
struct EthernetFrame;
struct IcmpFrame;
struct IpFrame;
struct ModbusRtuReadFrame;
struct ModbusRtuReadWriteMultipleFrame;
struct ModbusRtuWriteFrame;
struct ModbusRtuWriteMultipleFrame;
struct ModbusTcpReadFrame;
struct ModbusTcpReadWriteMultipleFrame;
struct ModbusTcpWriteFrame;
struct ModbusTcpWriteMultipleFrame;
struct TcpFrame;
struct UdpFrame;

// classes

class LogDocument;

// global variables

log.Writer* const g_logWriter;

// global functions

void updateModbusRtuChecksum(void* p);
void initializeModbusTcpAdu(io.ModbusTcpAduHdr* adu);
void updateModbusTcpLength(void* p);

void initializeEthernetIpHdr(
    io.EthernetHdr* ethernetHdr,
    io.IpHdr* ipHdr,
    io.IpProtocol protocol
    );

uint_t calcChecksum16(
    void const* p0,
    size_t size
    );

bigendian unsigned short adjustIpChecksum(uint_t checksum);
bigendian unsigned short calcIpHdrChecksum(io.IpHdr const* ipHdr);

bigendian unsigned short calcTcpUdpChecksum(
    io.IpHdr const* ipHdr,
    void const* p,
    size_t size
    );

void trace(char const* p);
void sendKeepAlive();
void clearLog();
bool errorcode connect();
void disconnect();

size_t errorcode transmit(
    void const* p,
    size_t size = - 1
    );

size_t errorcode receive(
    void* p,
    size_t size
    );

void main();

void onLogRecord(
    uint64_t timestamp,
    uint64_t recordCode,
    void const* p,
    size_t size
    );

uint16_t crc16_ansi(
    void const* p,
    size_t size,
    uint16_t seed = 0
    );

uint16_t crc16_ccitt(
    void const* p,
    size_t size,
    uint16_t seed = 0
    );

uint32_t crc32(
    void const* p,
    size_t size,
    uint32_t seed = 0
    );

uint8_t crc8_ccitt(
    void const* p,
    size_t size,
    uint8_t seed = 0
    );

char findEscapeReplaceChar(char x);

size_t decodeEscapeString(
    std.StringBuilder* string,
    char const* source,
    size_t length = - 1
    );

char* formatIntegerWithThousandSep(
    uint64_t value,
    char sep = ','
    );

char* formatFileSize(uint64_t size);
bool isspace(char c);

size_t decodeHexString(
    std.Buffer* buffer,
    char const* source,
    size_t length = - 1
    );

uint16_t calcIp4Checksum(
    void const* p0,
    size_t size,
    uint16_t seed = 0,
    bool isOddSeed = false
    );

uint16_t finalizeIp4Checksum(uint16_t checksum);

uint64_t sum8(
    void const* p,
    size_t size,
    uint64_t seed = 0
    );

long parseInteger(
    char const* p,
    size_t length = - 1
    );

uint_t parseVersion(
    char const* p,
    size_t length = - 1
    );

bool wildcardCompareStringLowerCase(
    char const thin* string0,
    char const thin* wildcard
    );

char const* detectJLinkLibPath();