genbki.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*-------------------------------------------------------------------------
  2. *
  3. * genbki.h
  4. * Required include file for all POSTGRES catalog header files
  5. *
  6. * genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros
  7. * so that the catalog header files can be read by the C compiler.
  8. * (These same words are recognized by genbki.pl to build the BKI
  9. * bootstrap file from these header files.)
  10. *
  11. *
  12. * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
  13. * Portions Copyright (c) 1994, Regents of the University of California
  14. *
  15. * src/include/catalog/genbki.h
  16. *
  17. *-------------------------------------------------------------------------
  18. */
  19. #ifndef GENBKI_H
  20. #define GENBKI_H
  21. /* Introduces a catalog's structure definition */
  22. #define CATALOG(name,oid) typedef struct CppConcat(FormData_,name)
  23. /* Options that may appear after CATALOG (on the same line) */
  24. #define BKI_BOOTSTRAP
  25. #define BKI_SHARED_RELATION
  26. #define BKI_WITHOUT_OIDS
  27. #define BKI_ROWTYPE_OID(oid)
  28. #define BKI_SCHEMA_MACRO
  29. #define BKI_FORCE_NULL
  30. #define BKI_FORCE_NOT_NULL
  31. /*
  32. * This is never defined; it's here only for documentation.
  33. *
  34. * Variable-length catalog fields (except possibly the first not nullable one)
  35. * should not be visible in C structures, so they are made invisible by #ifdefs
  36. * of an undefined symbol. See also MARKNOTNULL in bootstrap.c for how this is
  37. * handled.
  38. */
  39. #undef CATALOG_VARLEN
  40. /* Declarations that provide the initial content of a catalog */
  41. /* In C, these need to expand into some harmless, repeatable declaration */
  42. #define DATA(x) extern int no_such_variable
  43. #define DESCR(x) extern int no_such_variable
  44. #define SHDESCR(x) extern int no_such_variable
  45. #endif /* GENBKI_H */