Archive for the 'towDdictKit' Category

2017/11/21 twoDdictKitのじっけん v1

オープンソースの「AGTTwoDimensionalDictionary」(By Agant Ltd.)をフレームワーク化したtwoDdictKit.frameworkを呼び出すAppleScriptです。

AGTTwoDimensionalDictionary「kd木」を実装したもので、 2次元ユークリッド空間の座標を扱っています。2次元座標を扱うものの、配列変数ではないので0.1とか-10といった整数値ではない数値による座標を指定可能です。

と自分で書いておきながら「これって何に使えるの?」という疑問からテストしたものだったのと、本フレームワーク自体がそれほど機能を実装されているものではないため、現時点では「とりあえずためしてみました」レベル以上のものではありません。

掲載のAppleScriptでは、サブルーチンとの間のデータのやりとりを値渡しではなく参照渡しで行っています。ふだんは、なるべく単純なプログラムとデータ構造で記述するようにしているので、極力参照渡しは避けているのですが、このデータについては参照渡しでないと手が出なかったもので。

twoDdictKit.frameworkをmacOS 10.10以降用にビルドしたバイナリを用意しましたので、自己責任で~/Library/Frameworksフォルダに入れて使ってみてください。

–> Download towddictkit.framework binary

AppleScript名:twoDdictKitのじっけん v1
– Created 2016-03-03 by Takaaki Naganoya
– 2016 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “towDdictKit” –https://github.com/AgantLtd/twoddict
–http://piyocast.com/as/archives/4991

set aDict to current application’s AGTTwoDimensionalDictionary’s new()
setData(aDict, “Hello”, 0, 0) of me
set aRes to (getData(aDict, 0, 0) of me) as string
–>  ”Hello”

setData(aDict, “Goodbye”, 1, 1) of me
set aRes to (getData(aDict, 1, 1) of me) as string
–>  ”Goodbye”

removeData(aDict, 1, 1) of me
set aRes to (getData(aDict, 1, 1) of me) as string
–>  ”missing value”

–Set Data By Reference
on setData(aDict, aData, aDim, bDim)
  aDict’s setObject:aData atLocation:(addr(aDim, bDim) of me)
end setData

–Return Data By Reference
on getData(aDict, aDim, bDim)
  set aVal to aDict’s objectAtLocation:(addr(aDim, bDim) of me)
end getData

–Return Data By Reference
on removeData(aDict, aDim, bDim)
  aDict’s removeObjectAtLocation:(addr(aDim, bDim) of me)
end removeData

on addr(d1 as number, d2 as number)
  return current application’s CGPointMake(d1, d2)
end addr

★Click Here to Open This Script