]> Lady’s Gitweb - CGirls/blobdiff - request.h
Improve handling of strings
[CGirls] / request.h
index 2ab70e0a01e87ae681a74ac6850dc0df34bb5c01..e1606dc275a717607f47027a29e1b633a54815cb 100644 (file)
--- a/request.h
+++ b/request.h
@@ -4,37 +4,56 @@
 #ifndef CGIRLS_REQUEST_H
 #define CGIRLS_REQUEST_H
 
-enum cgirls_mediatype : unsigned char {
-       // Unspecified media type
-       cgirls_mediatype_any = 0x00,
-       // Text media types
-       cgirls_mediatype_txt = 0x10,
-       cgirls_mediatype_htm = 0x11,
-       // X·M·L media types
-       cgirls_mediatype_xml = 0x20,
-       cgirls_mediatype_rdf = 0x21,
+/*
+The following constant expressions provide recognized media type
+extensions.
+*/
+constexpr char* cgirls_mtype_any = nullptr;
+constexpr char cgirls_mtype_txt[] = ".txt";
+constexpr char cgirls_mtype_htm[] = ".htm";
+constexpr char cgirls_mtype_xml[] = ".xml";
+constexpr char cgirls_mtype_rdf[] = ".rdf";
+typedef char const* cgirls_mtype;
+constexpr size_t cgirls_n·mtypes = 4;
+static cgirls_mtype const cgirls_mtypes[cgirls_n·mtypes] = {
+       cgirls_mtype_txt,
+       cgirls_mtype_htm,
+       cgirls_mtype_xml,
+       cgirls_mtype_rdf,
 };
-typedef enum cgirls_mediatype cgirls_mediatype;
 
-enum cgirls_vb : unsigned char {
-       // Actions in general
-       cgirls_vb_index = 0x00,
-       // Actions on projects
-       cgirls_vb_branches = 0x10,
-       cgirls_vb_tags = 0x11,
-       // Actions on single objects
-       cgirls_vb_show = 0x20,
-       cgirls_vb_raw = 0x21,
-       cgirls_vb_blame = 0x22,
-       // Actions on ranges of objects
-       cgirls_vb_log = 0x30,
-       cgirls_vb_shortlog = 0x31,
-       cgirls_vb_atom = 0x32,
-       cgirls_vb_patch = 0x33,
-       // Unknown verb
-       cgirls_vb_unknown = 0xFF,
+/*
+The following constant expressions provide recognized action verbs.
+*/
+// Actions in general:
+constexpr char cgirls_vb_index[] = "index";
+constexpr char cgirls_vb_unknown[] = "unknown";
+// Actions on projects:
+// constexpr char cgirls_vb_branches[] = "branches";
+// constexpr char cgirls_vb_tags[] = "tags";
+// Actions on single objects:
+constexpr char cgirls_vb_show[] = "show";
+// constexpr char cgirls_vb_raw[] = "raw";
+// constexpr char cgirls_vb_blame[] = "blame";
+// Actions on ranges of commits:
+// constexpr char cgirls_vb_diff[] = "diff";
+// Actions on lists of commits:
+// constexpr char cgirls_vb_log[] = "log";
+// constexpr char cgirls_vb_shortlog[] = "shortlog";
+// constexpr char cgirls_vb_atom[] = "atom";
+// constexpr char cgirls_vb_patch[] = "patch";
+typedef char const* cgirls_vb;
+constexpr size_t cgirls_n·vbs = 3;
+static cgirls_vb const cgirls_vbs[cgirls_n·vbs] = {
+       cgirls_vb_index,
+       cgirls_vb_unknown,
+       cgirls_vb_show,
+};
+constexpr size_t cgirls_n·parsable·vbs = 2;
+static cgirls_vb const cgirls_parsable·vbs[cgirls_n·parsable·vbs] = {
+       cgirls_vb_index,
+       cgirls_vb_show,
 };
-typedef enum cgirls_vb cgirls_vb;
 
 typedef struct cgirls_req_status cgirls_req_status;
 struct cgirls_req_status {
@@ -45,7 +64,7 @@ struct cgirls_req_status {
 typedef struct cgirls_req cgirls_req;
 struct cgirls_req {
        cgirls_vb cgirls_action;
-       cgirls_mediatype cgirls_type;
+       cgirls_mtype cgirls_type;
        char* cgirls_project;
        char* cgirls_id;
        char** cgirls_subpath;
This page took 0.025694 seconds and 4 git commands to generate.