Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
target/
.idea/
_site/
.bsp/
33 changes: 22 additions & 11 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
organization in ThisBuild := "de.surfice"
ThisBuild / organization := "de.surfice"

version in ThisBuild := "0.0.2-SNAPSHOT"
ThisBuild / version := "0.0.2-SNAPSHOT"

scalaVersion in ThisBuild := "2.11.12"
ThisBuild / scalaVersion := "2.13.8"

val Version = new {
val slogging = "0.5.3"
val objc = "0.0.5-SNAPSHOT"
val objc = "0.0.6"
val utest = "0.6.3"
}


lazy val commonSettings = Seq(
scalacOptions ++= Seq("-deprecation","-unchecked","-feature","-language:implicitConversions","-Xlint"),
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full),
//addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full),
scalacOptions += "-Ymacro-annotations",
libraryDependencies ++= Seq(
"de.surfice" %%% "scalanative-interop-objc" % Version.objc,
"com.lihaoyi" %%% "utest" % Version.utest % "test"
),
"org.scala-lang" % "scala-reflect" % scalaVersion.value
//"de.surfice" %%% "scalanative-interop-objc" % Version.objc,
//"com.lihaoyi" %%% "utest" % Version.utest % "test"
),
testFrameworks += new TestFramework("utest.runner.Framework")
)

Expand All @@ -31,10 +33,20 @@ lazy val cocoa = project.in(file("."))
.settings(dontPublish:_*)
.settings(
name := "sncocoa"
)

lazy val objc = project
.enablePlugins(ScalaNativePlugin)
.settings(commonSettings ++ nativeSettings ++ publishingSettings:_*)
.settings(
libraryDependencies ++= Seq(
"de.surfice" %% "smacrotools" % "0.0.9-SNAPSHOT"
)
)

lazy val foundation = project
.enablePlugins(ScalaNativePlugin)
.dependsOn(objc)
.settings(commonSettings ++ nativeSettings ++ publishingSettings:_*)
.settings(
name := "scalanative-cocoa-foundation"
Expand Down Expand Up @@ -78,8 +90,8 @@ lazy val test = project
lazy val dontPublish = Seq(
publish := {},
publishLocal := {},
com.typesafe.sbt.pgp.PgpKeys.publishSigned := {},
com.typesafe.sbt.pgp.PgpKeys.publishLocalSigned := {},
com.jsuereth.sbtpgp.PgpKeys.publishSigned := {},
com.jsuereth.sbtpgp.PgpKeys.publishLocalSigned := {},
publishArtifact := false,
publishTo := Some(Resolver.file("Unused transient repository",file("target/unusedrepo")))
)
Expand Down Expand Up @@ -114,4 +126,3 @@ lazy val publishingSettings = Seq(
</developers>
)
)

3 changes: 2 additions & 1 deletion foundation/src/main/scala/cocoa/foundation/Foundation.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
package cocoa.foundation

import scala.scalanative.native._
import scala.scalanative.unsafe._
import objc.runtime._
import cocoa.foundation._

Expand All @@ -29,6 +30,6 @@ object Foundation {
// def CFBridgingRetain_(X: id): CFTypeRef = extern
// def CFBridgingRelease_(X: CFTypeRef): id = extern

def NSLog(format: NSString, args: CVararg*): Unit = extern
def NSLog(format: NSString, args: CVarArg*): Unit = extern
def NXReadNSObjectFromCoder(decoder: NSCoder): NSObject = extern
}
4 changes: 2 additions & 2 deletions foundation/src/main/scala/cocoa/foundation/Macros.scala
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ private[this] class Macros(val c: blackbox.Context) extends BlackboxMacroTools w

def nsquoteImpl() = {
val expr = c.prefix match {
case Expr(Apply(x,args)) => q"scalanative.native.CQuote(..$args).c()"
case Expr(Apply(x,args)) => q"scalanative.unsafe.CQuote(..$args).c()"
}
c.Expr(q"cocoa.foundation.NSString($expr)")
}
Expand All @@ -35,7 +35,7 @@ private[this] class Macros(val c: blackbox.Context) extends BlackboxMacroTools w
q"""import objc.runtime._
import objc.helper._
val sel = sel_registerName(${cstring(genSelectorString(method))})
$callSuper.cast[${method.returnType}]
$callSuper.asInstanceOf[${method.returnType}]
"""
}
t
Expand Down
6 changes: 4 additions & 2 deletions foundation/src/main/scala/cocoa/foundation/NSArray.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import de.surfice.smacrotools.debug

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import scalanative.unsigned._
import objc._


Expand Down Expand Up @@ -80,7 +82,7 @@ object NSArray extends NSArrayClass {
// TODO: use Iterable instead of Seq
def arrayWithObjects[T<:NSObject](objects: Seq[T]): NSArray[T] = Zone { implicit z =>
val count = objects.size
val array = stackalloc[id]( sizeof[id] * count)
val array = stackalloc[id]( sizeof[id] * count.toUInt)
for(i<-0 until count)
!(array + i) = objects(i).toPtr
arrayWithObjects_count_(array,count.toULong)
Expand All @@ -93,4 +95,4 @@ object NSArray extends NSArrayClass {
def apply(idx: Int): T = ns.objectAtIndex_(idx.toUInt)
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cocoa.foundation

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import objc._

import scala.scalanative.posix.inttypes.uint8_t
Expand Down Expand Up @@ -50,4 +51,4 @@ abstract class NSCharacterSetClass extends NSObjectClass {

object NSCharacterSet extends NSCharacterSetClass {
override type InstanceType = NSCharacterSet
}
}
1 change: 1 addition & 0 deletions foundation/src/main/scala/cocoa/foundation/NSCoder.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cocoa.foundation

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import objc._
import scala.scalanative.native.objc.runtime.{int32_t, int64_t}
import scala.scalanative.posix.inttypes.uint8_t
Expand Down
3 changes: 1 addition & 2 deletions foundation/src/main/scala/cocoa/foundation/NSCoding.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._
import objc._

import scala.scalanative.native.extern

@ObjC
trait NSCoding {
@inline def encodeWithCoder_(aCoder: NSCoder): Unit = extern
Expand Down
1 change: 1 addition & 0 deletions foundation/src/main/scala/cocoa/foundation/NSCopying.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._
import objc._

@ObjC
Expand Down
3 changes: 2 additions & 1 deletion foundation/src/main/scala/cocoa/foundation/NSData.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._
import objc._

import scala.language.experimental.macros
Expand Down Expand Up @@ -58,4 +59,4 @@ abstract class NSDataClass extends NSObjectClass {

object NSData extends NSDataClass {
override type InstanceType = NSData
}
}
3 changes: 2 additions & 1 deletion foundation/src/main/scala/cocoa/foundation/NSDate.scala_
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._

import scala.language.experimental.macros

Expand Down Expand Up @@ -40,4 +41,4 @@ abstract class NSDateClass extends NSObjectClass {

object NSDate extends NSDateClass {
override type InstanceType = NSDate
}
}
8 changes: 5 additions & 3 deletions foundation/src/main/scala/cocoa/foundation/NSDictionary.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
package cocoa.foundation

import scala.scalanative.native._
import scala.scalanative.unsafe._
import scala.scalanative.unsigned._
import objc._


Expand Down Expand Up @@ -63,8 +65,8 @@ object NSDictionary extends NSDictionaryClass {
// TODO: use Iterable instead of Seq?
def dictionaryWithObjects[K<:NSObject, V<:NSObject](objects: Seq[(K,V)]): NSDictionary[K,V] = Zone { implicit z =>
val count = objects.size
val objArray = stackalloc[id]( sizeof[id] * count)
val keyArray = stackalloc[id]( sizeof[id] * count )
val objArray = stackalloc[id]( sizeof[id] * count.toUInt)
val keyArray = stackalloc[id]( sizeof[id] * count.toUInt )
for(i<-0 until count) {
!(keyArray + i) = objects(i)._1.toPtr
!(objArray + i) = objects(i)._2.toPtr
Expand All @@ -74,4 +76,4 @@ object NSDictionary extends NSDictionaryClass {
}


}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._
import objc._

@ObjC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import cocoa.foundation.NSFastEnumeration.NSFastEnumerationState

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import objc._

@ObjC
Expand Down
3 changes: 2 additions & 1 deletion foundation/src/main/scala/cocoa/foundation/NSError.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._
import objc._

@ObjC
Expand All @@ -28,4 +29,4 @@ abstract class NSErrorClass extends NSObjectClass {

object NSError extends NSErrorClass {
override type InstanceType = NSError
}
}
3 changes: 2 additions & 1 deletion foundation/src/main/scala/cocoa/foundation/NSIndexSet.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cocoa.foundation

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import objc._

@ObjC
Expand Down Expand Up @@ -47,4 +48,4 @@ abstract class NSIndexSetClass extends NSObjectClass {

object NSIndexSet extends NSIndexSetClass {
override type InstanceType = NSIndexSet
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cocoa.foundation

import scala.scalanative.native._
import scala.scalanative.unsafe._

import scala.language.experimental.macros

Expand Down Expand Up @@ -28,4 +29,4 @@ abstract class NSInvocationClass {
}

object NSInvocation extends NSInvocationClass {
}
}
3 changes: 2 additions & 1 deletion foundation/src/main/scala/cocoa/foundation/NSLocale.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._
import objc._

import scala.language.experimental.macros
Expand Down Expand Up @@ -41,4 +42,4 @@ abstract class NSLocaleClass extends NSObjectClass {

object NSLocale extends NSLocaleClass {
override type InstanceType = NSLocale
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package cocoa.foundation

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import scalanative.unsigned._
import objc._

@ObjC
Expand Down Expand Up @@ -59,7 +61,7 @@ object NSMutableArray extends NSMutableArrayClass {
// TODO: use Iterable instead of Seq
def arrayWithObjects[T<:NSObject](objects: Seq[T]): NSMutableArray[T] = Zone { implicit z =>
val count = objects.size
val array = stackalloc[id]( sizeof[id] * count)
val array = stackalloc[id]( sizeof[id] * count.toUInt)
for(i<-0 until count)
!(array + i) = objects(i).toPtr
arrayWithObjects_count_(array,count.toULong)
Expand All @@ -72,4 +74,4 @@ object NSMutableArray extends NSMutableArrayClass {
}

def empty[V<:NSObject]: NSMutableArray[V] = alloc().init().asInstanceOf[NSMutableArray[V]]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._

import scala.language.experimental.macros

Expand Down Expand Up @@ -56,4 +57,4 @@ abstract class NSMutableArrayClass extends NSArrayClass {

object NSMutableArray extends NSMutableArrayClass {
override type InstanceType = NSMutableArray[_]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cocoa.foundation

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import objc._


Expand Down Expand Up @@ -42,4 +43,4 @@ abstract class NSMutableCharacterSetClass extends NSCharacterSetClass {

object NSMutableCharacterSet extends NSMutableCharacterSetClass {
override type InstanceType = NSMutableCharacterSet
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package cocoa.foundation

import scalanative.native._
import scalanative.unsafe._
import objc._

@ObjC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cocoa.foundation

import scala.language.experimental.macros
import scalanative.native._
import scalanative.unsafe._
import objc._

@ObjC
Expand All @@ -28,4 +29,4 @@ abstract class NSMutableDataClass extends NSDataClass {

object NSMutableData extends NSMutableDataClass {
override type InstanceType = NSMutableData
}
}
Loading