Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
Teon Banek c10773522b Add Lisp C++ Preprocessing (LCP)
Summary:
In order to enhance C++ metaprogramming capabilities, a custom
preprocessing step is added before compilation. C++ code may be mixed
with Lisp code in order to generate a complete C++ source code. The
mechanism is hooked into cmake. To notify cmake of .lcp files, `add_lcp`
function in src/CMakeLists.txt needs to be invoked.

The main executable entry point is in tools/lcp, while the source code
is in src/lisp/lcp.lisp

The main goal of LCP is to auto generate class serialization code and
member variable getter functions. This should now be significantly less
error prone, since you cannot forget to serialize a member variable
through this mechanism. Future uses should be generating other repeating
code, such as `Clone` methods or perhaps some debug information.

.lcp files may contain mixed C++ code (enclosed in #>cpp ... cpp<#
blocks) with Common Lisp code.

NOTE: With great power comes great responsibility. Lisp metaprogramming
capabilities are incredibly powerful. To keep the sanity of the team
intact, use Lisp preprocessing only when *really* necessary.

Reviewers: buda, mferencevic, msantl, dgleich, ipaljak, mculinovic, mtomic

Reviewed By: mtomic

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1361
2018-04-30 14:36:30 +02:00
cmake Cleanup and reorganize release directory 2018-01-15 10:12:59 +01:00
config Add durability stress test 2018-04-22 08:32:44 +02:00
customers Implement manage script for card fraud demo 2018-02-12 13:29:12 +01:00
docs Add Lisp C++ Preprocessing (LCP) 2018-04-30 14:36:30 +02:00
experimental Integrate code coverage with Apollo 2018-01-15 12:20:11 +01:00
libs Disable lz4, zstd and snappy libraries for rocksdb 2018-04-30 12:56:12 +02:00
poc Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
release Add single node memgraph binary 2018-04-23 14:05:23 +02:00
src Add Lisp C++ Preprocessing (LCP) 2018-04-30 14:36:30 +02:00
tests Add rocksdb as a lib + initial implementation of the KVStore 2018-04-28 13:19:09 +02:00
tools Add Lisp C++ Preprocessing (LCP) 2018-04-30 14:36:30 +02:00
.arcconfig arcconfig: Default to master for diff and land 2017-11-07 18:41:51 +01:00
.clang-format Edges data structure now supports multiple edge filtering (implicit OR) 2017-09-26 13:46:18 +02:00
.gdbinit Add pretty printer to gdb for TypedValue 2017-08-16 11:32:25 +02:00
.gitignore Add Lisp C++ Preprocessing (LCP) 2018-04-30 14:36:30 +02:00
.ycm_extra_conf.py Add rocksdb as a lib + initial implementation of the KVStore 2018-04-28 13:19:09 +02:00
apollo_archives.py Refactor Apollo build projects 2018-03-27 13:47:18 +02:00
apollo_archives.yaml Refactor Apollo build projects 2018-03-27 13:47:18 +02:00
apollo_build.yaml Refactor Apollo build projects 2018-03-27 13:47:18 +02:00
CHANGELOG.md Mention clog cleanup in changelog 2018-04-20 11:07:23 +02:00
CMakeLists.txt Add rocksdb as a lib + initial implementation of the KVStore 2018-04-28 13:19:09 +02:00
Doxyfile Add initial version of Apollo config files 2018-01-10 14:46:10 +01:00
Doxylogo.png Doxygen setup 2016-12-20 15:49:52 +01:00
init Add Lisp C++ Preprocessing (LCP) 2018-04-30 14:36:30 +02:00
README.md Migrate command line args to gflgs in tests 2017-07-06 13:54:12 +02:00

memgraph

Memgraph is an ACID compliant high performance transactional distributed in-memory graph database featuring runtime native query compiling, lock free data structures, multi-version concurrency control and asynchronous IO.

dependencies

Memgraph can be compiled using any modern c++ compiler. It mostly relies on the standard template library, however, some things do require external libraries.

Some code contains linux-specific libraries and the build is only supported on a 64 bit linux kernel.

  • linux
  • clang 3.8 (good c++11 support, especially lock free atomics)
  • antlr (compiler frontend)
  • cppitertools
  • fmt format
  • google benchmark
  • google test
  • glog
  • gflags