Mercurial > hg > Database > jungle-sharp
view Main/jungle-main/store/impl/logger/LoggingChildren.cs @ 28:9588ad364fdd
Last commit before change.
author | Kazuma Takeda |
---|---|
date | Wed, 18 Jan 2017 19:53:29 +0900 |
parents | 1f99e150f336 |
children | f2ea780b3e80 |
line wrap: on
line source
using System.Collections; using UnityEngine; namespace JungleDB { public class LoggingChildren { private TreeNode wrap; private OperationLog log; public LoggingChildren(TreeNode _wrap,OperationLog _log) { wrap = _wrap; log = _log; } public int size() { Children children = wrap.getChildren(); return children.size(); } public Either<Error,LoggingNode> edit(NodeOperation _op) { Either<Error,TreeNode> either = _op.invoke(wrap); if(either.isA()){ return DefaultEither<Error,LoggingNode>.newA(either.a()); } TreeNode newWrap = either.b(); OperationLog newLog = log.add(_op); LoggingNode newLoggingNode = new LoggingNode(newWrap,newLog); return DefaultEither<Error,LoggingNode>.newB(newLoggingNode); } public Either<Error,LoggingNode> addNewChildAt(int _pos) { NodeOperation addNewChildAt = new AppendChildAtOperation(_pos); return edit(addNewChildAt); } public Either<Error,LoggingNode> deleteChildAt(int _pos) { NodeOperation deleteChildAt = new DeleteChildAtOperation(_pos); return edit(deleteChildAt); } public Either<Error,LoggingNode> at(int _pos) { Children children = wrap.getChildren(); Either<Error,TreeNode> either = children.at(_pos); if(either.isA()){ return DefaultEither<Error,LoggingNode>.newA(either.a()); } TreeNode node = either.b(); LoggingNode logNode = new LoggingNode(node); return DefaultEither<Error,LoggingNode>.newB(logNode); } } }