Type.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Copyright (c) 2021, Jan de Visser <jan@de-visser.net>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/HashMap.h>
  8. #include <AK/String.h>
  9. namespace SQL {
  10. #define ENUMERATE_SQL_TYPES(S) \
  11. S("text", 0, Text, String, 64 + sizeof(int)) \
  12. S("int", 1, Integer, int, sizeof(int)) \
  13. S("float", 2, Float, double, sizeof(double))
  14. enum class SQLType {
  15. #undef __ENUMERATE_SQL_TYPE
  16. #define __ENUMERATE_SQL_TYPE(name, cardinal, type, impl, size) type = (cardinal),
  17. ENUMERATE_SQL_TYPES(__ENUMERATE_SQL_TYPE)
  18. #undef __ENUMERATE_SQL_TYPE
  19. };
  20. inline static size_t size_of(SQLType t)
  21. {
  22. switch (t) {
  23. #undef __ENUMERATE_SQL_TYPE
  24. #define __ENUMERATE_SQL_TYPE(name, cardinal, type, impl, size) \
  25. case SQLType::type: \
  26. return size;
  27. ENUMERATE_SQL_TYPES(__ENUMERATE_SQL_TYPE)
  28. #undef __ENUMERATE_SQL_TYPE
  29. default:
  30. VERIFY_NOT_REACHED();
  31. }
  32. }
  33. enum class Order {
  34. Ascending,
  35. Descending,
  36. };
  37. enum class Nulls {
  38. First,
  39. Last,
  40. };
  41. }