bool StringPropertySet::Parse(const StringRef& str) { RETURN_TRUE_IF_EMPTY(str); //Key=Value,... List<StringRef> outPairs; StringParser::Split(str, ",", outPairs); List<StringRef> keyValuePair; for (auto& optionPair : outPairs) { keyValuePair.Clear(); StringParser::Split(optionPair, "=", keyValuePair); if (keyValuePair.Count() == 2) { Add(keyValuePair[0], keyValuePair[1]); } else if (keyValuePair.Count() == 1) { Add(keyValuePair[0], HeapString::Empty); } else { Log::FormatError("Invalid attribute str:{} in {}", optionPair.c_str(), str.c_str()); return false; } } return true; }
bool IEntity::AcceptComponentEvent(IEventArg& e) { RETURN_TRUE_IF_EMPTY(mComponents); for (IComponent* component:mComponents) { component->AcceptEvent(e); } return true; }
bool BaseFeatureLayer::Enter() { RETURN_TRUE_IF_EMPTY(mLayers); mIndex = 0; StringRef layerName = mLayers[mIndex]; mCurrentLayer = (BaseCaseLayer*)SceneManager::Instance().RunningScene()->CreateLayer(layerName, StringRef::Empty, IEventArg::Empty, LayerCreateFlags::AlwaysCreate); mCurrentLayer->SetLogicZ(-1); AddChild(mCurrentLayer); return true; }
bool IMesh::TryUpdateVertex(VertexGraphicsBuffer& bufferObject, size_t vertexIndex, const ICollection<Point3F>& vertices, const Matrix4& matrix) const { RETURN_TRUE_IF_EMPTY(vertices); bufferObject.ReserveSize(vertexIndex, vertices.Count()); size_t count = vertices.Count(); const Point3F* verticesPtr = vertices.Items(); FOR_EACH_SIZE(i, count) { Point3F pos = matrix.Transform(verticesPtr[i]); bufferObject.AppendOrUpdateData(vertexIndex + i, pos); }
size_t Base91Decoder::OnCode(const MemoryByteData& input, MemoryByteData& output) const { RETURN_TRUE_IF_EMPTY(input); const unsigned char *ib = (unsigned char *)input.Data(); byte* result = output.MutableData(); byte* originalResult = result; unsigned long queue = 0; unsigned int nbits = 0; int val = -1; for (size_t len = input.Size(); len--;) { unsigned int d = mDecodeChars[*ib++]; if (d == 91) continue; /* ignore non-alphabet chars */ if (val == -1) val = d; /* start next value */ else { val += d * 91; queue |= val << nbits; nbits += (val & 8191) > 88 ? 13 : 14; do { *result++ = (byte)queue; queue >>= 8; nbits -= 8; } while (nbits > 7); val = -1; /* mark value complete */ } } /* process remaining bits; write at most 1 byte */ if (val != -1) *result++ = (byte)(queue | val << nbits); return result-originalResult; }