memgraph/tools
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
..
apollo Refactor Apollo build projects 2018-03-27 13:47:18 +02:00
gdb-plugins Improve pointer handling in operator_tree gdb plugin 2017-08-22 10:13:49 +02:00
plot Add run_pokec script and minimum refactor 2018-01-23 16:17:09 +01:00
src Clean utils folder 2018-04-11 16:19:46 +02:00
tests Ensure workers recover appropriate snapshot 2018-04-16 16:58:54 +02:00
.gitignore Make csv_to_snapshot more user friendly 2017-10-26 09:37:56 +02:00
analyze_rpc_calls Add RPC analyzer script 2018-02-19 11:10:07 +01:00
CMakeLists.txt Include tools CMakeLists in the top level CMakeLists 2017-12-04 15:18:18 +01:00
lcp Add Lisp C++ Preprocessing (LCP) 2018-04-30 14:36:30 +02:00
manage_distributed_card_fraud Modify kill and clean operations 2018-03-05 10:00:43 +01:00
memory_usage Remove extension from Python executables 2017-11-27 14:39:51 +01:00
mg_import_csv.dockerfile Make csv_to_snapshot more user friendly 2017-10-26 09:37:56 +02:00
neo_to_memgraph Remove extension from Python executables 2017-11-27 14:39:51 +01:00
requirements.txt Add recovery speed measurement tool 2017-11-16 13:29:06 +01:00
setup Include tools CMakeLists in the top level CMakeLists 2017-12-04 15:18:18 +01:00
snapshot_recovery_speed Remove extension from Python executables 2017-11-27 14:39:51 +01:00