#define PM_BSOCK 5 /* BSOCK buffer */
#define PM_MAX PM_BSOCK /* Number of types */
+int pm_strcat(POOLMEM **pm, const char *str);
+int pm_strcat(POOLMEM *&pm, const char *str);
+int pm_strcat(POOL_MEM &pm, const char *str);
+int pm_strcat(POOLMEM *&pm, POOL_MEM &str);
+int pm_strcat(POOL_MEM &pm, POOL_MEM &str);
+
+int pm_strcpy(POOLMEM **pm, const char *str);
+int pm_strcpy(POOLMEM *&pm, const char *str);
+int pm_strcpy(POOL_MEM &pm, const char *str);
+int pm_strcpy(POOLMEM *&pm, POOL_MEM &str);
+
+int pm_memcpy(POOLMEM **pm, const char *data, int32_t n);
+int pm_memcpy(POOLMEM *&pm, const char *data, int32_t n);
+int pm_memcpy(POOL_MEM &pm, const char *data, int32_t n);
+int pm_memcpy(POOLMEM *&pm, POOL_MEM &data, int32_t n);
+
class POOL_MEM {
char *mem;
public:
POOL_MEM() { mem = get_pool_memory(PM_NAME); *mem = 0; }
POOL_MEM(int pool) { mem = get_pool_memory(pool); *mem = 0; }
+ POOL_MEM(POOL_MEM &pm) : mem(get_pool_memory(PM_NAME)) { check_size(pm.size()); memcpy(mem, pm.mem, size()); };
+ POOL_MEM(const char * str) : mem(get_pool_memory(PM_NAME)) { pm_strcpy(*this, str); };
~POOL_MEM() { free_pool_memory(mem); mem = NULL; }
char *c_str() const { return mem; }
POOLMEM *&addr() { return mem; }
void realloc_pm(int32_t size);
int strcpy(const char *str);
int strcat(const char *str);
+ /* Copy operator with reference and pointers */
+ POOL_MEM &operator=(POOL_MEM &pm) { pm_memcpy(*this, pm.mem, pm.size()); return *this; };
+ POOL_MEM &operator=(POOL_MEM *pm) { pm_memcpy(*this, pm->mem, pm->size()); return *this; };
};
-int pm_strcat(POOLMEM **pm, const char *str);
-int pm_strcat(POOLMEM *&pm, const char *str);
-int pm_strcat(POOL_MEM &pm, const char *str);
-int pm_strcat(POOLMEM *&pm, POOL_MEM &str);
-int pm_strcat(POOL_MEM &pm, POOL_MEM &str);
-
-int pm_strcpy(POOLMEM **pm, const char *str);
-int pm_strcpy(POOLMEM *&pm, const char *str);
-int pm_strcpy(POOL_MEM &pm, const char *str);
-int pm_strcpy(POOLMEM *&pm, POOL_MEM &str);
-
-int pm_memcpy(POOLMEM **pm, const char *data, int32_t n);
-int pm_memcpy(POOLMEM *&pm, const char *data, int32_t n);
-int pm_memcpy(POOL_MEM &pm, const char *data, int32_t n);
-int pm_memcpy(POOLMEM *&pm, POOL_MEM &data, int32_t n);
-
#endif