stamenStatic Menu Generator | 
          
| git clone git://git.dimitrijedobrota.com/stamen.git | 
| Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING | 
| commit | 223faf962edad1fc475af8a65afc8319d683bc0e | 
| parent | cd12b2fea38be76fe6bd2c607598c785d979c25e | 
| author | Dimitrije Dobrota < mail@dimitrijedobrota.com > | 
| date | Fri, 14 Jun 2024 11:27:37 +0200 | 
Add support for custom free function header
| M | demo/main.cpp | | | + - | 
| M | src/generate.cpp | | | ++++++++++++++ ------------- | 
2 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/ demo/main.cpp b/ demo/main.cpp
@@ -1,5 +1,5 @@
#include "demo_menu.hpp"
          #include "stamen.h"
          #include "stamen.hpp"
          #include <iostream>
          diff --git a/ src/generate.cpp b/ src/generate.cpp
@@ -11,26 +11,18 @@
struct arguments_t {
              std::string config;
              std::string display;
              std::string header = "shared.h";
              bool cpp = false;
              bool user = false;
          } opt;
          void generateIncludeHeaders(std::ostream &os) {
              if (opt.user) {
                  if (opt.cpp) os << "#include \"stamen.hpp\"\n\n";
                  else os << "#include \"stamen.h\"\n\n";
              } else {
                  if (opt.cpp) os << "#include <stamen/stamen.hpp>\n\n";
                  else os << "#include <stamen/stamen.h>\n\n";
              }
          }
          void generateInclude(std::ostream &os) {
              os << "#ifndef STAMEN_MENU_H\n";
              os << "#define STAMEN_MENU_H\n\n";
              generateIncludeHeaders(os);
              for (const auto &[code, menu] : stamen::menu::menu_lookup) {
                  os << std::format("int {}(int);\n", menu.getCode());
              }
        
        
          @@ -39,8 +31,14 @@ 
          void generateInclude(std::ostream &os) {
        
        
          }
          void generateSource(std::ostream &os) {
              os << "#include \"shared.h\"\n";
              generateIncludeHeaders(os);
              os << std::format("#include \"{}\"\n", opt.header);
              if (opt.user) {
                  if (opt.cpp) os << "#include \"stamen.hpp\"\n\n";
                  else os << "#include \"stamen.h\"\n\n";
              } else {
                  if (opt.cpp) os << "#include <stamen/stamen.hpp>\n\n";
                  else os << "#include <stamen/stamen.h>\n\n";
              }
              os << std::format("extern int {}(const char *title, ", opt.display);
              if (opt.cpp) os << "const stamen::item_t itemv[], int size);\n\n";
        
        
          @@ -68,13 +66,15 @@ 
          void generateSource(std::ostream &os) {
        
        
          int parse_opt(int key, const char *arg, args::Parser *parser) {
              auto arguments = (arguments_t *)parser->input();
              switch (key) {
              case 'u': arguments->user = true; break;
              case 'd': arguments->display = arg; break;
              case 'h': arguments->header = arg; break;
              case 'u': arguments->user = true; break;
              case 666: arguments->cpp = false; break;
              case 777: arguments->cpp = true; break;
              case args::ARG:
                  if (!arguments->config.empty()) {
                      args::failure(parser, 1, 0, "Too many arguments");
                      args::failure(parser, 0, 0, "Too many arguments");
                      args::help(parser, stderr, args::STD_USAGE);
                  }
                  arguments->config = arg;
                  break;
        
        
          @@ -98,6 +98,7 @@ 
          static const args::option_t options[]{
        
        
              {0, 0, 0, 0, "Output settings", 2},
              {"display", 'd', "FUNC", 0, "Set display function to be called"},
              {"user", 'u', 0, 0, "Include user stamen headers"},
              {"header", 'h', "FUNC", 0, "Header with free functions, default: shared.h"},
              {0, 0, 0, 0, "Informational Options", -1},
              {0},
          };