Mercurial > hg > Database > jungle-sharp
view Main/jungle-main/transaction/DefaultTreeNodeAttribute.cs @ 32:07318c10b894
add getBytes method.
author | Kazuma Takeda |
---|---|
date | Fri, 20 Jan 2017 07:43:43 +0900 |
parents | 1466993c104c |
children | f2ea780b3e80 |
line wrap: on
line source
using UnityEngine; using System.Collections; using System.Collections.Generic; using System; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO; namespace JungleDB { public class DefaultTreeNodeAttribute : TreeNodeAttributes { public List<TreeNode> children; public TreeMap<string, object> attrs; public DefaultTreeNodeAttribute(List<TreeNode> _children, TreeMap<string, object> _attrs){ children = _children; attrs = _attrs; } public TreeMap<string, object> getAttributesAsRawMap(){ return attrs; } public Either<Error, TreeNode> delete(string _key) { if (_key == null) { return DefaultEither<Error,TreeNode>.newA (NodeEditorError.NULL_VALUE_NOT_ALLOWED); } if (null == attrs.getRoot()) { return DefaultEither<Error,TreeNode>.newA(NodeEditorError.DELETE_KEY_NOT_FOUND); } TreeMap<string, object> newMap = attrs.delete(_key); TreeNode newNode = new DefaultTreeNode(children, newMap); return DefaultEither<Error,TreeNode>.newB(newNode); } public Either<Error, TreeNode> put(string _key, object _value){ if (_key == null || _value == null) { return DefaultEither<Error, TreeNode>.newA (NodeEditorError.NULL_VALUE_NOT_ALLOWED); } TreeMap<string, object> newMap = attrs.put (_key, _value); TreeNode newNode = new DefaultTreeNode (children, newMap); return DefaultEither<Error, TreeNode>.newB (newNode); } public object get(string _key) { if (_key == null) return null; object op = attrs.get(_key); if (op != null) return op; return null; } public T get<T> (string _key) { if (_key == null) return default(T); T op = (T)attrs.get (_key); if (op != null) return op; return default(T); } public string getString(string key) { return attrs.get(key).ToString(); } /// <summary> /// Gets the bytes. /// need Serializable to class. /// </summary> /// <returns>byte[]</returns> /// <param name="key">Key.</param> public byte[] getBytes(string key) { var formatter = new BinaryFormatter(); object source = attrs.get (key); using (var stream = new MemoryStream()) { formatter.Serialize(stream, source); return stream.ToArray(); } } public IEnumerator<string> getKeys(){ return attrs.keys (); } } }