 Issue 10874009:
  Use a proper enum type for procedures that can be called  (Closed)
    
  
    Issue 10874009:
  Use a proper enum type for procedures that can be called  (Closed) 
  | Index: src/shared/Communication.h | 
| =================================================================== | 
| --- a/src/shared/Communication.h | 
| +++ b/src/shared/Communication.h | 
| @@ -9,24 +9,36 @@ | 
| #include <vector> | 
| #include <Windows.h> | 
| namespace Communication | 
| { | 
| extern const std::wstring pipeName; | 
| const int bufferSize = 1024; | 
| - enum {TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL}; | 
| - typedef int32_t ValueType; | 
| + enum ProcType : uint32_t { | 
| 
Felix Dahlke
2013/06/04 06:47:32
I can't find anything about this, but I think you
 
Wladimir Palant
2013/06/04 09:26:13
It is a standard feature, see http://en.wikipedia.
 
Felix Dahlke
2013/06/04 11:55:21
Didn't know it's a new standard feature, in this c
 | 
| + PROC_MATCHES, | 
| + PROC_GET_ELEMHIDE_SELECTORS, | 
| + PROC_AVAILABLE_SUBSCRIPTIONS, | 
| + PROC_LISTED_SUBSCRIPTIONS, | 
| + PROC_SET_SUBSCRIPTION, | 
| + PROC_UPDATE_ALL_SUBSCRIPTIONS, | 
| + PROC_GET_EXCEPTION_DOMAINS, | 
| + PROC_ADD_FILTER, | 
| + }; | 
| + enum ValueType : uint32_t { | 
| + TYPE_PROC, TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL | 
| + }; | 
| typedef uint32_t SizeType; | 
| class InputBuffer | 
| { | 
| public: | 
| InputBuffer(const std::string& data) : buffer(data), hasType(false) {} | 
| + InputBuffer& operator>>(ProcType& value) { return Read(value, TYPE_PROC); } | 
| InputBuffer& operator>>(std::string& value) { return ReadString(value, TYPE_STRING); } | 
| InputBuffer& operator>>(std::wstring& value) { return ReadString(value, TYPE_WSTRING); } | 
| InputBuffer& operator>>(int64_t& value) { return Read(value, TYPE_INT64); } | 
| InputBuffer& operator>>(int32_t& value) { return Read(value, TYPE_INT32); } | 
| InputBuffer& operator>>(bool& value) { return Read(value, TYPE_BOOL); } | 
| private: | 
| std::istringstream buffer; | 
| ValueType currentType; | 
| @@ -88,16 +100,17 @@ namespace Communication | 
| // Explicit copy constructor to allow returning OutputBuffer by value | 
| OutputBuffer(const OutputBuffer& copy) : buffer(copy.buffer.str()) {} | 
| std::string Get() | 
| { | 
| return buffer.str(); | 
| } | 
| + OutputBuffer& operator<<(ProcType value) { return Write(value, TYPE_PROC); } | 
| OutputBuffer& operator<<(const std::string& value) { return WriteString(value, TYPE_STRING); } | 
| OutputBuffer& operator<<(const std::wstring& value) { return WriteString(value, TYPE_WSTRING); } | 
| OutputBuffer& operator<<(int64_t value) { return Write(value, TYPE_INT64); } | 
| OutputBuffer& operator<<(int32_t value) { return Write(value, TYPE_INT32); } | 
| OutputBuffer& operator<<(bool value) { return Write(value, TYPE_BOOL); } | 
| private: | 
| std::ostringstream buffer; |