Skip to content

Commit 50b902e

Browse files
committed
upd
1 parent aee0dcf commit 50b902e

File tree

3 files changed

+118
-39
lines changed

3 files changed

+118
-39
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=StringUtils
2-
version=1.4.30
2+
version=1.4.31
33
author=AlexGyver <[email protected]>
44
maintainer=AlexGyver <[email protected]>
55
sentence=Bunch of converting functions for string data

src/utils/Text.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
#include <Arduino.h>
33
#include <limits.h>
44

5-
#include "convert/b64.h"
6-
#include "convert/convert.h"
7-
#include "convert/unicode.h"
8-
#include "convert/url.h"
5+
#include "./convert/b64.h"
6+
#include "./convert/convert.h"
7+
#include "./convert/unicode.h"
8+
#include "./convert/url.h"
99
#include "hash.h"
1010

1111
namespace su {

src/utils/Value.h

Lines changed: 113 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#pragma once
22
#include <Arduino.h>
33

4+
#include "./convert/convert.h"
45
#include "Text.h"
5-
#include "convert/convert.h"
66

7-
// автоматическое преобразование любых данных к строке Text
7+
// автоматическое преобразование любых численных данных к строке Text
88

99
#ifndef SU_ANYVALUE_BUF_LEN
1010
#define SU_ANYVALUE_BUF_LEN 21
@@ -18,78 +18,157 @@ class ValueT : public Text {
1818
public:
1919
using Text::Text;
2020

21-
ValueT() : Text() {}
21+
ValueT() {
22+
_str = buf;
23+
_type = Type::value;
24+
}
2225

2326
ValueT(const Text& value) : Text(value) {}
2427

25-
ValueT(const bool value) {
28+
ValueT(bool value) : ValueT() {
2629
buf[0] = value ? '1' : '0';
2730
buf[1] = 0;
2831
_len = 1;
29-
_init();
3032
}
3133

32-
ValueT(const char value) {
34+
ValueT(char value) : ValueT() {
3335
buf[0] = value;
3436
buf[1] = 0;
3537
_len = 1;
36-
_init();
3738
}
38-
ValueT(const unsigned char value, uint8_t base = DEC) {
39+
ValueT(unsigned char value, uint8_t base = DEC) : ValueT() {
3940
_len = intToStr(value, buf, base);
40-
_init();
4141
}
4242

43-
ValueT(const short value, uint8_t base = DEC) {
43+
ValueT(short value, uint8_t base = DEC) : ValueT() {
4444
_len = intToStr(value, buf, base);
45-
_init();
4645
}
47-
ValueT(const unsigned short value, uint8_t base = DEC) {
46+
ValueT(unsigned short value, uint8_t base = DEC) : ValueT() {
4847
_len = uintToStr(value, buf, base);
49-
_init();
5048
}
5149

52-
ValueT(const int value, uint8_t base = DEC) {
50+
ValueT(int value, uint8_t base = DEC) : ValueT() {
5351
_len = intToStr(value, buf, base);
54-
_init();
5552
}
56-
ValueT(const unsigned int value, uint8_t base = DEC) {
53+
ValueT(unsigned int value, uint8_t base = DEC) : ValueT() {
5754
_len = uintToStr(value, buf, base);
58-
_init();
5955
}
6056

61-
ValueT(const long value, uint8_t base = DEC) {
57+
ValueT(long value, uint8_t base = DEC) : ValueT() {
6258
_len = intToStr(value, buf, base);
63-
_init();
6459
}
65-
ValueT(const unsigned long value, uint8_t base = DEC) {
60+
ValueT(unsigned long value, uint8_t base = DEC) : ValueT() {
6661
_len = uintToStr(value, buf, base);
67-
_init();
6862
}
6963

70-
ValueT(const long long value, uint8_t base = DEC) {
71-
if (value >= 0 && value < UINT32_MAX) _len = uintToStr(value, buf, base);
72-
else if (value < 0 && value > -INT32_MAX) _len = intToStr(value, buf, base);
73-
else _len = int64ToStr(value, buf, base);
74-
_init();
64+
ValueT(long long value, uint8_t base = DEC) : ValueT() {
65+
switch (value) {
66+
case INT32_MIN ...(-1): _len = intToStr(value, buf, base); break;
67+
case 0 ... UINT32_MAX: _len = uintToStr(value, buf, base); break;
68+
default: _len = int64ToStr(value, buf, base); break;
69+
}
7570
}
76-
ValueT(const unsigned long long value, uint8_t base = DEC) {
77-
_len = (value <= UINT32_MAX) ? uintToStr(value, buf, base) : uint64ToStr(value, buf, base);
78-
_init();
71+
ValueT(unsigned long long value, uint8_t base = DEC) : ValueT() {
72+
switch (value) {
73+
case 0 ... UINT32_MAX: _len = uintToStr(value, buf, base); break;
74+
default: _len = uint64ToStr(value, buf, base); break;
75+
}
7976
}
8077

81-
ValueT(const double value, uint8_t dec = 2) {
78+
ValueT(double value, uint8_t dec = 2) : ValueT() {
8279
_len = floatToStr(value, buf, dec);
83-
_init();
80+
}
81+
82+
// assign
83+
ValueT& operator=(bool value) {
84+
buf[0] = value ? '1' : '0';
85+
buf[1] = 0;
86+
_len = 1;
87+
return *this;
88+
}
89+
90+
ValueT& operator=(char value) {
91+
buf[0] = value;
92+
buf[1] = 0;
93+
_len = 1;
94+
return *this;
95+
}
96+
ValueT& operator=(unsigned char value) {
97+
_len = intToStr(value, buf, DEC);
98+
return *this;
99+
}
100+
101+
ValueT& operator=(short value) {
102+
_len = intToStr(value, buf, DEC);
103+
return *this;
104+
}
105+
ValueT& operator=(unsigned short value) {
106+
_len = uintToStr(value, buf, DEC);
107+
return *this;
108+
}
109+
110+
ValueT& operator=(int value) {
111+
_len = intToStr(value, buf, DEC);
112+
return *this;
113+
}
114+
ValueT& operator=(unsigned int value) {
115+
_len = uintToStr(value, buf, DEC);
116+
return *this;
117+
}
118+
119+
ValueT& operator=(long value) {
120+
_len = intToStr(value, buf, DEC);
121+
return *this;
122+
}
123+
ValueT& operator=(unsigned long value) {
124+
_len = uintToStr(value, buf, DEC);
125+
return *this;
126+
}
127+
128+
ValueT& operator=(long long value) {
129+
switch (value) {
130+
case INT32_MIN ...(-1): _len = intToStr(value, buf, DEC); break;
131+
case 0 ... UINT32_MAX: _len = uintToStr(value, buf, DEC); break;
132+
default: _len = int64ToStr(value, buf, DEC); break;
133+
}
134+
return *this;
135+
}
136+
ValueT& operator=(unsigned long long value) {
137+
switch (value) {
138+
case 0 ... UINT32_MAX: _len = uintToStr(value, buf, DEC); break;
139+
default: _len = uint64ToStr(value, buf, DEC); break;
140+
}
141+
return *this;
142+
}
143+
144+
ValueT& operator=(double value) {
145+
_len = floatToStr(value, buf, 2);
146+
return *this;
147+
}
148+
149+
// copy
150+
ValueT(const ValueT& v) : ValueT() {
151+
_copy(v);
152+
}
153+
ValueT(ValueT&& v) : ValueT() {
154+
_copy(v);
155+
}
156+
ValueT& operator=(const ValueT& v) {
157+
_copy(v);
158+
return *this;
159+
}
160+
ValueT& operator=(ValueT&& v) {
161+
_copy(v);
162+
return *this;
84163
}
85164

86165
protected:
87166
char buf[bufsize] = {0};
88167

89168
private:
90-
void _init() {
91-
_str = buf;
92-
_type = Type::value;
169+
void _copy(const ValueT& v) {
170+
memcpy(buf, v.buf, v._len);
171+
_len = v._len;
93172
}
94173
};
95174

0 commit comments

Comments
 (0)