diff options
Diffstat (limited to 'c_layer/survival_curve.hpp')
| -rw-r--r-- | c_layer/survival_curve.hpp | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/c_layer/survival_curve.hpp b/c_layer/survival_curve.hpp index ce71cc1..b3dcebd 100644 --- a/c_layer/survival_curve.hpp +++ b/c_layer/survival_curve.hpp @@ -1,56 +1,35 @@ -#include <string> +#include <string_view> struct CurveName { - enum class __attribute__ ((__packed__)) Seniority { + enum class Seniority: std::uint8_t { Senior, Subordinated }; - enum class __attribute__ ((__packed__)) DocClause { + enum class DocClause: std::uint8_t { XR14, MR14, MM14, CR14 }; - void serialize(unsigned char* buf) { - memcpy(buf, &seniority, sizeof(Seniority)); - buf += sizeof(Seniority); - memcpy(buf, &doc_clause, sizeof(DocClause)); - buf += sizeof(DocClause); - strcpy((char*)buf, ticker.c_str()); - }; - std::string full_ticker() const { - std::string r = ticker; + std::string r = {ticker.begin(), ticker.end()}; return r.append("_").append(str_seniority()). append("_").append(str_doc_clause()); } - void serialize(unsigned char* buf, size_t num) { - memcpy(buf, &seniority, sizeof(Seniority)); - buf += sizeof(Seniority); - memcpy(buf, &doc_clause, sizeof(DocClause)); - buf += sizeof(DocClause); - strncpy((char*)buf, ticker.c_str(), num); - }; - - CurveName(std::string& ticker, Seniority seniority, DocClause doc_clause) : - ticker(ticker), - seniority(seniority), - doc_clause(doc_clause) {}; - - CurveName(const unsigned char* buf) { + CurveName(const char* buf) : name(buf) { memcpy(&seniority, buf, sizeof(Seniority)); buf += sizeof(Seniority); memcpy(&doc_clause, buf, sizeof(DocClause)); buf += sizeof(DocClause); - ticker = std::string((char*)buf); + ticker = std::string_view((const char*)buf); } CurveName() {}; - size_t size() { - return sizeof(Seniority) + sizeof(DocClause) + ticker.length() + 1; + size_t size() const { + return sizeof(Seniority) + sizeof(DocClause) + ticker.size() + 1; }; bool operator<(const CurveName &other) const { @@ -82,7 +61,8 @@ struct CurveName { } } - std::string ticker; + const char* name; + std::string_view ticker; Seniority seniority; DocClause doc_clause; }; |
