Guest User

Untitled

a guest
Oct 18th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.87 KB | None | 0 0
  1. import com.couchbase.lite.Array
  2. import com.couchbase.lite.Blob
  3. import com.couchbase.lite.MutableArray
  4. import com.couchbase.lite.Result
  5. import java.util.*
  6.  
  7. interface ArrayDelegator : Iterable<Any> {
  8. fun count(): Int
  9. fun getValue(v: Int): Any
  10. fun getString(v: Int): String
  11. fun getNumber(v: Int): Number
  12. fun getInt(v: Int): Int
  13. fun getLong(v: Int): Long
  14. fun getFloat(v: Int): Float
  15. fun getDouble(v: Int): Double
  16. fun getBoolean(v: Int): Boolean
  17. fun getBlob(v: Int): Blob
  18. fun getDate(v: Int): Date
  19. fun getArray(v: Int): ArrayDelegator
  20. fun getDictionary(v: Int): DictionaryDelegator
  21. fun toList(): List<Any>
  22. }
  23.  
  24. fun Result.getArrayDelegator(): ArrayDelegator {
  25. return object : ArrayDelegator {
  26.  
  27. inner class ArrayIterator : Iterator<Any> {
  28. var index = 0
  29. val count = count()
  30.  
  31. override fun hasNext(): Boolean {
  32. return index < count
  33. }
  34.  
  35. override fun next(): Any {
  36. return getValue(index++)
  37. }
  38. }
  39.  
  40. override fun iterator(): Iterator<Any> {
  41. return ArrayIterator()
  42. }
  43.  
  44. override fun count(): Int {
  45. return this@getArrayDelegator.count()
  46. }
  47.  
  48. override fun getValue(v: Int): Any {
  49. return this@getArrayDelegator.getValue(v)
  50. }
  51.  
  52. override fun getString(v: Int): String {
  53. return this@getArrayDelegator.getString(v)
  54. }
  55.  
  56. override fun getNumber(v: Int): Number {
  57. return this@getArrayDelegator.getNumber(v)
  58. }
  59.  
  60. override fun getInt(v: Int): Int {
  61. return this@getArrayDelegator.getInt(v)
  62. }
  63.  
  64. override fun getLong(v: Int): Long {
  65. return this@getArrayDelegator.getLong(v)
  66. }
  67.  
  68. override fun getFloat(v: Int): Float {
  69. return this@getArrayDelegator.getFloat(v)
  70. }
  71.  
  72. override fun getDouble(v: Int): Double {
  73. return this@getArrayDelegator.getDouble(v)
  74. }
  75.  
  76. override fun getBoolean(v: Int): Boolean {
  77. return this@getArrayDelegator.getBoolean(v)
  78. }
  79.  
  80. override fun getBlob(v: Int): Blob {
  81. return this@getArrayDelegator.getBlob(v)
  82. }
  83.  
  84. override fun getDate(v: Int): Date {
  85. return this@getArrayDelegator.getDate(v)
  86. }
  87.  
  88. override fun getArray(v: Int): ArrayDelegator {
  89. return this@getArrayDelegator.getArray(v).getArrayDelegator()
  90. }
  91.  
  92. override fun getDictionary(v: Int): DictionaryDelegator {
  93. return this@getArrayDelegator.getDictionary(v).getDictionaryAdapter()
  94. }
  95.  
  96. override fun toList(): List<Any> {
  97. return this@getArrayDelegator.toList()
  98. }
  99. }
  100. }
  101.  
  102. fun Array.getArrayDelegator(): ArrayDelegator {
  103. return object : ArrayDelegator {
  104. inner class ArrayIterator : Iterator<Any> {
  105. var index = 0
  106. val count = count()
  107.  
  108. override fun hasNext(): Boolean {
  109. return index < count
  110. }
  111.  
  112. override fun next(): Any {
  113. return getValue(index++)
  114. }
  115. }
  116.  
  117. override fun iterator(): Iterator<Any> {
  118. return ArrayIterator()
  119. }
  120.  
  121. override fun count(): Int {
  122. return this@getArrayDelegator.count()
  123. }
  124.  
  125. override fun getValue(v: Int): Any {
  126. return this@getArrayDelegator.getValue(v)
  127. }
  128.  
  129. override fun getString(v: Int): String {
  130. return this@getArrayDelegator.getString(v)
  131. }
  132.  
  133. override fun getNumber(v: Int): Number {
  134. return this@getArrayDelegator.getNumber(v)
  135. }
  136.  
  137. override fun getInt(v: Int): Int {
  138. return this@getArrayDelegator.getInt(v)
  139. }
  140.  
  141. override fun getLong(v: Int): Long {
  142. return this@getArrayDelegator.getLong(v)
  143. }
  144.  
  145. override fun getFloat(v: Int): Float {
  146. return this@getArrayDelegator.getFloat(v)
  147. }
  148.  
  149. override fun getDouble(v: Int): Double {
  150. return this@getArrayDelegator.getDouble(v)
  151. }
  152.  
  153. override fun getBoolean(v: Int): Boolean {
  154. return this@getArrayDelegator.getBoolean(v)
  155. }
  156.  
  157. override fun getBlob(v: Int): Blob {
  158. return this@getArrayDelegator.getBlob(v)
  159. }
  160.  
  161. override fun getDate(v: Int): Date {
  162. return this@getArrayDelegator.getDate(v)
  163. }
  164.  
  165. override fun getArray(v: Int): ArrayDelegator {
  166. return this@getArrayDelegator.getArray(v).getArrayDelegator()
  167. }
  168.  
  169. override fun getDictionary(v: Int): DictionaryDelegator {
  170. return this@getArrayDelegator.getDictionary(v).getDictionaryAdapter()
  171. }
  172.  
  173. override fun toList(): List<Any> {
  174. return this@getArrayDelegator.toList()
  175. }
  176. }
  177. }
  178.  
  179. fun MutableArray.getArrayDelegator(): ArrayDelegator {
  180. return object : ArrayDelegator {
  181. inner class ArrayIterator : Iterator<Any> {
  182. var index = 0
  183. val count = count()
  184.  
  185. override fun hasNext(): Boolean {
  186. return index < count
  187. }
  188.  
  189. override fun next(): Any {
  190. return getValue(index++)
  191. }
  192. }
  193.  
  194. override fun iterator(): Iterator<Any> {
  195. return ArrayIterator()
  196. }
  197.  
  198. override fun count(): Int {
  199. return this@getArrayDelegator.count()
  200. }
  201.  
  202. override fun getValue(v: Int): Any {
  203. return this@getArrayDelegator.getValue(v)
  204. }
  205.  
  206. override fun getString(v: Int): String {
  207. return this@getArrayDelegator.getString(v)
  208. }
  209.  
  210. override fun getNumber(v: Int): Number {
  211. return this@getArrayDelegator.getNumber(v)
  212. }
  213.  
  214. override fun getInt(v: Int): Int {
  215. return this@getArrayDelegator.getInt(v)
  216. }
  217.  
  218. override fun getLong(v: Int): Long {
  219. return this@getArrayDelegator.getLong(v)
  220. }
  221.  
  222. override fun getFloat(v: Int): Float {
  223. return this@getArrayDelegator.getFloat(v)
  224. }
  225.  
  226. override fun getDouble(v: Int): Double {
  227. return this@getArrayDelegator.getDouble(v)
  228. }
  229.  
  230. override fun getBoolean(v: Int): Boolean {
  231. return this@getArrayDelegator.getBoolean(v)
  232. }
  233.  
  234. override fun getBlob(v: Int): Blob {
  235. return this@getArrayDelegator.getBlob(v)
  236. }
  237.  
  238. override fun getDate(v: Int): Date {
  239. return this@getArrayDelegator.getDate(v)
  240. }
  241.  
  242. override fun getArray(v: Int): ArrayDelegator {
  243. return this@getArrayDelegator.getArray(v).getArrayDelegator()
  244. }
  245.  
  246. override fun getDictionary(v: Int): DictionaryDelegator {
  247. return this@getArrayDelegator.getDictionary(v).getDictionaryAdapter()
  248. }
  249.  
  250. override fun toList(): List<Any> {
  251. return this@getArrayDelegator.toList()
  252. }
  253. }
  254. }
Add Comment
Please, Sign In to add comment