A C++ wrapper for the basic C datatypes defined by the pEpEngine.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
roker fe88301c3b implement the wrapper for certain types. 12 months ago
src implement the wrapper for certain types. 12 months ago
test add 1st rough version of test/Makefile 12 months ago
.gitignore add .gitignore 12 months ago
LICENSE Initial commit 1 year ago
Makefile implement the wrapper for certain types. 12 months ago
Makefile.conf add Makefiles & Makefile.conf, stolen from libpEpAdapter. 12 months ago
README.md copy discussion result from pad to README.md 1 year ago

README.md

libpEpDatatypes – A C++ wrapper for the basic C datatypes defined by the pEpEngine.

Resources

Requirements & Platforms

  • License: GPL3

  • C++ standard: C++11

  • supported compilers: at least gcc and clang (both have to work)

  • Build sytem: GNU Make – Platforms: Linux, macOS ** Target: static library libpEpDatatypes.a

  • Windows and Android builds will be done separatly

Design goals & principles

  • implement move c'tor & operator for cheep moves
  • Qpen question: deep copy / shallow copy (with ref couning?) / only explicit copy?
  • always initialize all members. Better safe than sorry.
  • Ownership of the member pointees: rule of thumb: "const" pointees are non-owned, non-const pointees are owned by the data structure. Exceptional cases are documented explicitly.

Public API

  • defined in namespace pEp::DT
  • header files are installed in PREFIX/include/pEp/ and are used via #include <pEp/filename.hh> – (Also shared with libpEpAdapter!)
  • the linked list datatypes implement the API of std::forward_list

Example usage

The following API is the target we're heading to:

#include <pEp/Types.hh>
#include <pEp/Adapter.hh>

int main()
{
    pEp::Message msg = "From: Alice Cooper <alice@mail.com>\n"
                       "To: Bob Smith <bob@mail.com>\n"
                       "Subject: Meeting\n"
                       "\n"
                       "Dear Bob,\n"
                       "\n"
                       "I will come.\n"
                       "\n"
                       "Alice.\n"_CRLF;

    try {
        auto enc = msg.encrypt();
        enc.send();
    }
    catch (pEp::err& e)
    {
    }

    return 0;
}

As an intermediate step the p≡p API in the engine must be fully supported:

#include <pEp/message_api.h> // from pEpEngine
#include <pEp/Types.hh>      // from libpEpDatatypes
#include <pEp/Adapter.hh>    // from libpEpDatatypes

int main()
{
    pEp::Message msg_plain =
            "From: Alice Cooper <alice@mail.com>\nTo: Bob "
            "Smith <bob@mail.com>\nSubject: Meeting\n\n"
            "Dear Bob,\n\nI will come.\n\nAlice."_CRLF;
     
    ::message* msg_enc = nullptr;
    PEP_STATUS status = encrypt_message(msg_plain, enc_enc, ...);
    pEp::Message msg{std::move(msg_enc)}; // ownership of the pointee goes to 'msg'
    
    return 0;
}

Implementation details

  • Code-formatting: clang-format. Please try and use .clang-format from libpEpAdapter
  • Include guards: #ifdef/#define style (not #pragma once), naming style: LIBPEPDATATYPES_FILENAME_HH