text: /* @@@LICENSE
  *
  *      Copyright (c) 2009-2015 LG Electronics, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
  * LICENSE@@@ */
  
  
  #ifndef MOJDBREVISIONSET_H_
  #define MOJDBREVISIONSET_H_
  
  #include "db/MojDbDefs.h"
  #include "db/MojDbExtractor.h"
  
  class MojDbRevisionSet : public MojRefCounted
  {
  public:
  	static const MojChar* const PropsKey;  // props
  	static const MojChar* const NameKey;   // name
  
  	MojDbRevisionSet();
  
  	const MojString& name() { return m_name; }
  
  	MojErr fromObject(const MojObject& obj);
  	MojErr addProp(const MojObject& propObj);
  	MojErr update(MojObject* newObj, const MojObject* oldObj) const;
  
  private:
  	using KeySet = MojSet<MojDbKey>;
  	using PropVec = MojVector<MojRefCountedPtr<MojDbPropExtractor>>;
  
  	MojErr diff(MojObject& newObj, const MojObject& oldObj) const;
  	MojErr updateRev(MojObject& obj) const;
  
  	MojString m_name;
  	PropVec m_props;
  	static MojLogger s_log;
  };
  
  #endif /* MOJDBREVISIONSET_H_ */
  