Reduce footprint by using string literals.
authorSudarshan Prasad <sudarshan.prasad@intel.com>
Thu, 29 Jan 2015 21:11:32 +0000 (13:11 -0800)
committerSudarshan Prasad <sudarshan.prasad@intel.com>
Thu, 29 Jan 2015 22:04:39 +0000 (22:04 +0000)
Original author: Ossama Othman <ossama.othman@intel.com>
This change is cherry picked from master to
connectivity-abstraction branch.

This change replaces the std::string based exception description
string constants in resource/include/StringConstants.h with
string literals instead.  Switching to string literals has a number of
advantages in this case:

- reduced start-up time for binaries that link against liboc
  since the static std::string constants no longer have to
  be initialized at run-time.
- the compiler is free to place the strings in read-only
  memory.
- reduced static and run-time footprint.

Please refer to original commit for more details:
https://gerrit.iotivity.org/gerrit/#/c/128/

Change-Id: I234545cdc288e71f4e7e8594e1634fcbdadafe70
Signed-off-by: Sudarshan Prasad <sudarshan.prasad@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/273
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Sashi Penta <sashi.kumar.penta@intel.com>
resource/include/StringConstants.h

index 1bdd1c1..6e9ac63 100644 (file)
@@ -29,87 +29,85 @@ namespace OC
 {
     namespace InitException
     {
-        static const std::string NO_ERROR                   = "No Error";
-        static const std::string INVALID_URI                = "Invalid URI";
-        static const std::string INVALID_PORT               = "Invalid Port";
-        static const std::string INVALID_IP                 = "Invalid IP";
-        static const std::string INVALID_CB                 = "Invalid Callback";
-        static const std::string INVALID_METHOD             = "Invalid Method";
-        static const std::string GENERAL_FAULT              = "General Fault";
-        static const std::string UNKNOWN_ERROR              = "Unknown Error";
+        static const char NO_ERROR[]                   = "No Error";
+        static const char INVALID_URI[]                = "Invalid URI";
+        static const char INVALID_PORT[]               = "Invalid Port";
+        static const char INVALID_IP[]                 = "Invalid IP";
+        static const char INVALID_CB[]                 = "Invalid Callback";
+        static const char INVALID_METHOD[]             = "Invalid Method";
+        static const char GENERAL_FAULT[]              = "General Fault";
+        static const char UNKNOWN_ERROR[]              = "Unknown Error";
 
-        static const std::string STACK_INIT_ERROR           = "Error Initializing Stack";
-        static const std::string NOT_CONFIGURED_AS_SERVER   =
+        static const char STACK_INIT_ERROR[]           = "Error Initializing Stack";
+        static const char NOT_CONFIGURED_AS_SERVER[]   =
                           "Cannot static construct a Server when configured as a client";
-        static const std::string INVALID_PARAM              = "Invalid Param";
-        static const std::string MISSING_URI                = "Missing URI;";
-        static const std::string MISSING_TYPE               = "Missing Resource Type;";
-        static const std::string MISSING_INTERFACE          = "Missing Interface;";
-        static const std::string MISSING_CLIENT_WRAPPER     = "Missing ClientWrapper;";
+        static const char INVALID_PARAM[]              = "Invalid Param";
+        static const char MISSING_URI[]                = "Missing URI;";
+        static const char MISSING_TYPE[]               = "Missing Resource Type;";
+        static const char MISSING_INTERFACE[]          = "Missing Interface;";
+        static const char MISSING_CLIENT_WRAPPER[]     = "Missing ClientWrapper;";
     }
 
     namespace Exception // Not To Be Confused With 'InitException'
     {
-        static const std::string SVCTYPE_OUTOFPROC          = "ServiceType::OutOfProc";
-        static const std::string BIND_TYPE_FAILED           = "Bind Type to resource failed";
-        static const std::string BIND_INTERFACE_FAILED      = "Bind Interface to resource failed";
-        static const std::string START_PRESENCE_FAILED      = "startPresence failed";
-        static const std::string END_PRESENCE_FAILED        = "stopPresence failed";
-        static const std::string INVALID_ARRAY              = "Array type should have at least []";
-        static const std::string STR_NULL_RESPONSE          = "Response is NULL";
-        static const std::string STR_PAYLOAD_OVERFLOW       = "Payload overflow";
-        static const std::string NIL_GUARD_NULL             = "nullptr at nil_guard()";
-        static const std::string GENERAL_JSON_PARSE_FAILED  = "JSON Parser Error";
-        static const std::string RESOURCE_UNREG_FAILED      = "Unregistering resource failed";
-        static const std::string OPTION_ID_RANGE_INVALID    =
+        static const char SVCTYPE_OUTOFPROC[]          = "ServiceType::OutOfProc";
+        static const char BIND_TYPE_FAILED[]           = "Bind Type to resource failed";
+        static const char BIND_INTERFACE_FAILED[]      = "Bind Interface to resource failed";
+        static const char START_PRESENCE_FAILED[]      = "startPresence failed";
+        static const char END_PRESENCE_FAILED[]        = "stopPresence failed";
+        static const char INVALID_ARRAY[]              = "Array type should have at least []";
+        static const char STR_NULL_RESPONSE[]          = "Response is NULL";
+        static const char STR_PAYLOAD_OVERFLOW[]       = "Payload overflow";
+        static const char NIL_GUARD_NULL[]             = "nullptr at nil_guard()";
+        static const char GENERAL_JSON_PARSE_FAILED[]  = "JSON Parser Error";
+        static const char RESOURCE_UNREG_FAILED[]      = "Unregistering resource failed";
+        static const char OPTION_ID_RANGE_INVALID[]    =
                             "Error: OptionID valid only from 2048 to 3000 inclusive.";
 
-        static const std::string NO_ERROR                   = "No Error";
-        static const std::string RESOURCE_CREATED           = "Resource Created";
-        static const std::string RESOURCE_DELETED           = "Resource Deleted";
-        static const std::string INVALID_URI                = "Invalid URI";
-        static const std::string INVALID_IP                 = "Invalid IP";
-        static const std::string INVALID_PORT               = "Invalid Port";
-        static const std::string INVALID_CB                 = "Invalid Callback";
-        static const std::string INVALID_METHOD             = "Invalid Method";
-        static const std::string INVALID_QUERY              = "Invalid Query";
-        static const std::string INVALID_PARAM              = "Invalid Param";
-        static const std::string INVALID_OBESERVE           = "Invalid Observe Param";
-        static const std::string NO_MEMORY                  = "No Memory";
-        static const std::string COMM_ERROR                 = "Communication Error";
-        static const std::string NOT_IMPL                   = "Not Implemented";
-        static const std::string NOT_FOUND                  = "Resource Not Found";
-        static const std::string RESOURCE_ERROR             = "Resource Error";
-        static const std::string SLOW_RESOURCE              = "Slow Resource";
-        static const std::string NO_OBSERVERS               = "No Observers";
-        static const std::string OBSV_NO_FOUND              = "Stack observer not found";
-        static const std::string OBSV_NOT_ADDED             = "Stack observer not added";
-        static const std::string OBSV_NOT_REMOVED           = "Stack observer not removed";
-        static const std::string STACK_RESOURCE_DELETED     =
-                "The specified resource has been deleted";
-        static const std::string PRESENCE_STOPPED           = "Stack presence stopped";
-        static const std::string PRESENCE_TIMEOUT           = "Stack presence timed out";
-        static const std::string PRESENCE_NOT_HANDLED       = "Stack presence should not be handled";
-        static const std::string INVALID_OPTION             = "Invalid option";
-        static const std::string GENERAL_FAULT              = "General Fault";
-        static const std::string MALFORMED_STACK_RESPONSE   =
-                "Response from OC_STACK is malformed";
-        static const std::string VIRTUAL_DO_NOT_HANDLE      = "Virtual Do Not Handle";
-        static const std::string PERSISTENT_BUFFER_REQUIRED = "Persistent response buffer required";
-        static const std::string STACK_CONTINUE             = "Stack continue";
-        static const std::string INVALID_REQUEST_HANDLE     = "Invalid request handle";
-        static const std::string UNKNOWN_ERROR              = "Unknown Error";
-        static const std::string INVALID_REPRESENTATION     = "Invalid Payload JSON";
-        static const std::string INVALID_JSON_TYPE          = "Unrecognized JSON Type ";
-        static const std::string INVALID_JSON_NUMERIC       = "Unrecognized JSON Numeric ";
-        static const std::string INVALID_JSON_ARRAY_DEPTH   = "Max JSON Array Depth exceeded";
-        static const std::string INVALID_JSON_TYPE_TAG      = "Invalid JSON Type Tag";
-        static const std::string INVALID_ATTRIBUTE          = "Invalid Attribute: ";
+        static const char NO_ERROR[]                   = "No Error";
+        static const char RESOURCE_CREATED[]           = "Resource Created";
+        static const char RESOURCE_DELETED[]           = "Resource Deleted";
+        static const char INVALID_URI[]                = "Invalid URI";
+        static const char INVALID_IP[]                 = "Invalid IP";
+        static const char INVALID_PORT[]               = "Invalid Port";
+        static const char INVALID_CB[]                 = "Invalid Callback";
+        static const char INVALID_METHOD[]             = "Invalid Method";
+        static const char INVALID_QUERY[]              = "Invalid Query";
+        static const char INVALID_PARAM[]              = "Invalid Param";
+        static const char INVALID_OBESERVE[]           = "Invalid Observe Param";
+        static const char NO_MEMORY[]                  = "No Memory";
+        static const char COMM_ERROR[]                 = "Communication Error";
+        static const char NOT_IMPL[]                   = "Not Implemented";
+        static const char NOT_FOUND[]                  = "Resource Not Found";
+        static const char RESOURCE_ERROR[]             = "Resource Error";
+        static const char SLOW_RESOURCE[]              = "Slow Resource";
+        static const char NO_OBSERVERS[]               = "No Observers";
+        static const char OBSV_NO_FOUND[]              = "Stack observer not found";
+        static const char OBSV_NOT_ADDED[]             = "Stack observer not added";
+        static const char OBSV_NOT_REMOVED[]           = "Stack observer not removed";
+        static const char STACK_RESOURCE_DELETED[]     = "The specified resource has been deleted";
+        static const char PRESENCE_STOPPED[]           = "Stack presence stopped";
+        static const char PRESENCE_TIMEOUT[]           = "Stack presence timed out";
+        static const char PRESENCE_NOT_HANDLED[]       = "Stack presence should not be handled";
+        static const char INVALID_OPTION[]             = "Invalid option";
+        static const char GENERAL_FAULT[]              = "General Fault";
+        static const char MALFORMED_STACK_RESPONSE[]   = "Response from OC_STACK is malformed";
+        static const char VIRTUAL_DO_NOT_HANDLE[]      = "Virtual Do Not Handle";
+        static const char PERSISTENT_BUFFER_REQUIRED[] = "Persistent response buffer required";
+        static const char STACK_CONTINUE[]             = "Stack continue";
+        static const char INVALID_REQUEST_HANDLE[]     = "Invalid request handle";
+        static const char UNKNOWN_ERROR[]              = "Unknown Error";
+        static const char INVALID_REPRESENTATION[]     = "Invalid Payload JSON";
+        static const char INVALID_JSON_TYPE[]          = "Unrecognized JSON Type ";
+        static const char INVALID_JSON_NUMERIC[]       = "Unrecognized JSON Numeric ";
+        static const char INVALID_JSON_ARRAY_DEPTH[]   = "Max JSON Array Depth exceeded";
+        static const char INVALID_JSON_TYPE_TAG[]      = "Invalid JSON Type Tag";
+        static const char INVALID_ATTRIBUTE[]          = "Invalid Attribute: ";
     }
 
     namespace Error
     {
-        static const std::string INVALID_IP                 = "Invalid IP";
+        static const char INVALID_IP[]                 = "Invalid IP";
     }
 
     namespace PlatformCommands