MCPcopy Create free account
hub / github.com/couchbase/fleece / writeValue

Method writeValue

Fleece/Support/JSONEncoder.cc:129–173  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

127
128
129 void JSONEncoder::writeValue(const Value *v) {
130 switch (v->type()) {
131 case kNull:
132 if (v->isUndefined()) {
133 comma();
134 _out << slice("undefined");
135 } else {
136 writeNull();
137 }
138 break;
139 case kBoolean:
140 writeBool(v->asBool());
141 break;
142 case kNumber:
143 if (v->isInteger()) {
144 auto i = v->asInt();
145 if (v->isUnsigned())
146 writeUInt(i);
147 else
148 writeInt(i);
149 } else if (v->isDouble()) {
150 writeDouble(v->asDouble());
151 } else {
152 writeFloat(v->asFloat());
153 }
154 break;
155 case kString:
156 writeString(v->asString());
157 break;
158 case kData:
159 writeData(v->asData());
160 break;
161 case kArray:
162 beginArray();
163 for (auto iter = v->asArray()->begin(); iter; ++iter)
164 writeValue(iter.value());
165 endArray();
166 break;
167 case kDict:
168 writeDict(v->asDict());
169 break;
170 default:
171 FleeceException::_throw(UnknownValue, "illegal typecode in Value; corrupt data?");
172 }
173 }
174
175} }

Callers

nothing calls this directly

Calls 15

sliceClass · 0.85
isUndefinedMethod · 0.80
typeMethod · 0.45
asBoolMethod · 0.45
isIntegerMethod · 0.45
asIntMethod · 0.45
isUnsignedMethod · 0.45
isDoubleMethod · 0.45
asDoubleMethod · 0.45
asFloatMethod · 0.45
asStringMethod · 0.45
asDataMethod · 0.45

Tested by

no test coverage detected