Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

54 rindas
2.8 KiB

  1. #pragma once
  2. #include <cpphibernate/config.h>
  3. #define cpphibernate_make_string(str) \
  4. #str
  5. #define cpphibernate_make_schema(p_name, ...) \
  6. cpphibernate::schema::make_schema( \
  7. cpphibernate_make_string(p_name), \
  8. cpphibernate::schema::make_tables(__VA_ARGS__))
  9. #define cpphibernate_make_table_name(p_name, p_type, p_id, ...) \
  10. cpphibernate::schema::make_table( \
  11. cpphibernate_make_string(p_name), \
  12. boost::hana::type_c<p_type>, \
  13. boost::hana::size_c<p_id>, \
  14. cpphibernate::schema::make_fields(__VA_ARGS__))
  15. #define cpphibernate_make_table(p_name, p_id, ...) \
  16. cpphibernate_make_table_name(p_name, p_name, p_id, __VA_ARGS__)
  17. #define cpphibernate_make_field_custom(p_name, p_getter, p_setter, ...) \
  18. cpphibernate::schema::make_field( \
  19. cpphibernate_make_string(p_name), \
  20. cpphibernate::mp::make_getter(p_getter), \
  21. cpphibernate::mp::make_setter(p_setter), \
  22. cpphibernate::schema::make_attributes(__VA_ARGS__))
  23. #define cpphibernate_make_field_name(p_name, p_member_ptr, ...) \
  24. cpphibernate_make_field_custom( \
  25. p_name, p_member_ptr, p_member_ptr, __VA_ARGS__)
  26. #define cpphibernate_make_field(p_type, p_member, ...) \
  27. cpphibernate_make_field_name( \
  28. p_member, &p_type::p_member, __VA_ARGS__)
  29. #define cpphibernate_make_id(p_member_ptr) \
  30. cpphibernate_make_field_name( \
  31. id, \
  32. p_member_ptr, \
  33. cpphibernate::schema::attribute::primary_key)
  34. #define cpphibernate_make_temp_id(p_dataset, p_value) \
  35. cpphibernate_make_field_custom( \
  36. id, \
  37. ::cpphibernate::mp::make_getter( \
  38. [](p_dataset&) { \
  39. return p_value { }; \
  40. }), \
  41. ::cpphibernate::mp::make_setter( \
  42. [](p_dataset&, p_value&&) { }), \
  43. cpphibernate::schema::attribute::primary_key)