Change root package

This commit is contained in:
2020-05-23 11:52:06 +02:00
parent 4ad81f68e4
commit 88f2089310
313 changed files with 1553 additions and 1556 deletions

View File

@@ -8,7 +8,7 @@ subprojects {
mavenCentral()
}
group 'io.bartek'
group 'com.bartlomiejpluta'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.collection
package com.bartlomiejpluta.smnp.ext.collection
import io.smnp.ext.provider.LanguageModuleProvider
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
import org.pf4j.Extension
@Extension

View File

@@ -0,0 +1,10 @@
package com.bartlomiejpluta.smnp.ext.debug
import com.bartlomiejpluta.smnp.ext.debug.function.StackTraceFuction
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
import org.pf4j.Extension
@Extension
class DebugModule : NativeModuleProvider("smnp.lang.debug") {
override fun functions() = listOf(StackTraceFuction())
}

View File

@@ -0,0 +1,18 @@
package com.bartlomiejpluta.smnp.ext.debug.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.type.enumeration.DataType.BOOL
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
import com.bartlomiejpluta.smnp.type.model.Value
class StackTraceFuction : Function("stacktrace") {
override fun define(new: FunctionDefinitionTool) {
new function Signature.simple(optional(ofType(BOOL))) body { env, args ->
env.printCallStack(args.getOrNull(0)?.value as Boolean? ?: false)
Value.void()
}
}
}

View File

@@ -1,10 +0,0 @@
package io.smnp.ext.debug
import io.smnp.ext.provider.NativeModuleProvider
import io.smnp.ext.debug.function.StackTraceFuction
import org.pf4j.Extension
@Extension
class DebugModule : NativeModuleProvider("smnp.lang.debug") {
override fun functions() = listOf(StackTraceFuction())
}

View File

@@ -1,18 +0,0 @@
package io.smnp.ext.debug.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature
import io.smnp.type.enumeration.DataType.BOOL
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.matcher.Matcher.Companion.optional
import io.smnp.type.model.Value
class StackTraceFuction : Function("stacktrace") {
override fun define(new: FunctionDefinitionTool) {
new function Signature.simple(optional(ofType(BOOL))) body { env, args ->
env.printCallStack(args.getOrNull(0)?.value as Boolean? ?: false)
Value.void()
}
}
}

View File

@@ -0,0 +1,11 @@
package com.bartlomiejpluta.smnp.ext.dsp
import com.bartlomiejpluta.smnp.ext.dsp.function.FftFunction
import com.bartlomiejpluta.smnp.ext.dsp.function.PlotFunction
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
import org.pf4j.Extension
@Extension
class DspModule : NativeModuleProvider("smnp.dsp") {
override fun functions() = listOf(PlotFunction(), FftFunction())
}

View File

@@ -0,0 +1,19 @@
package com.bartlomiejpluta.smnp.ext.dsp.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.ext.dsp.lib.fft.FourierTransform.fft
import com.bartlomiejpluta.smnp.type.enumeration.DataType.FLOAT
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
import com.bartlomiejpluta.smnp.type.model.Value
class FftFunction : Function("fft") {
override fun define(new: FunctionDefinitionTool) {
new function simple(listOf(INT, FLOAT)) body { _, (signal) ->
val x = (signal.unwrap() as List<Number>).map { it.toDouble() }
Value.list(fft(x).map { Value.float(it.mod.toFloat()) })
}
}
}

View File

@@ -1,16 +1,16 @@
package io.smnp.ext.dsp.function
package com.bartlomiejpluta.smnp.ext.dsp.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.vararg
import io.smnp.error.CustomException
import io.smnp.type.enumeration.DataType.*
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.matcher.Matcher.Companion.listOf
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
import io.smnp.util.config.ConfigMapSchema
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.vararg
import com.bartlomiejpluta.smnp.error.CustomException
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
import org.knowm.xchart.BitmapEncoder
import org.knowm.xchart.BitmapEncoder.BitmapFormat
import org.knowm.xchart.SwingWrapper

View File

@@ -1,4 +1,4 @@
package io.smnp.ext.dsp.lib.complex
package com.bartlomiejpluta.smnp.ext.dsp.lib.complex
import kotlin.math.atan2
import kotlin.math.pow

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.dsp.lib.fft
package com.bartlomiejpluta.smnp.ext.dsp.lib.fft
import io.smnp.ext.dsp.lib.complex.Complex
import com.bartlomiejpluta.smnp.ext.dsp.lib.complex.Complex
import kotlin.math.abs
import kotlin.math.ceil
import kotlin.math.log

View File

@@ -1,11 +0,0 @@
package io.smnp.ext.dsp
import io.smnp.ext.dsp.function.FftFunction
import io.smnp.ext.dsp.function.PlotFunction
import io.smnp.ext.provider.NativeModuleProvider
import org.pf4j.Extension
@Extension
class DspModule : NativeModuleProvider("smnp.dsp") {
override fun functions() = listOf(PlotFunction(), FftFunction())
}

View File

@@ -1,19 +0,0 @@
package io.smnp.ext.dsp.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.ext.dsp.lib.fft.FourierTransform.fft
import io.smnp.type.enumeration.DataType.FLOAT
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.matcher.Matcher.Companion.listOf
import io.smnp.type.model.Value
class FftFunction : Function("fft") {
override fun define(new: FunctionDefinitionTool) {
new function simple(listOf(INT, FLOAT)) body { _, (signal) ->
val x = (signal.unwrap() as List<Number>).map { it.toDouble() }
Value.list(fft(x).map { Value.float(it.mod.toFloat()) })
}
}
}

View File

@@ -0,0 +1,11 @@
package com.bartlomiejpluta.smnp.ext.io
import com.bartlomiejpluta.smnp.ext.io.function.PrintlnFunction
import com.bartlomiejpluta.smnp.ext.io.function.ReadFunction
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
import org.pf4j.Extension
@Extension
class IoModule : NativeModuleProvider("smnp.io") {
override fun functions() = listOf(PrintlnFunction(), ReadFunction())
}

View File

@@ -0,0 +1,16 @@
package com.bartlomiejpluta.smnp.ext.io.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.vararg
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.model.Value
class PrintlnFunction : Function("println") {
override fun define(new: FunctionDefinitionTool) {
new function vararg(anyType()) body { _, (vararg) ->
println((vararg.value as List<Value>).joinToString("") { it.stringify() })
Value.void()
}
}
}

View File

@@ -0,0 +1,18 @@
package com.bartlomiejpluta.smnp.ext.io.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.enumeration.DataType.STRING
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
import com.bartlomiejpluta.smnp.type.model.Value
class ReadFunction : Function("read") {
override fun define(new: FunctionDefinitionTool) {
new function simple(optional(ofType(STRING))) body { _, arguments ->
arguments.getOrNull(0)?.let { print(it.value) }
Value.string(readLine() ?: "")
}
}
}

View File

@@ -1,11 +0,0 @@
package io.smnp.ext.io
import io.smnp.ext.provider.NativeModuleProvider
import io.smnp.ext.io.function.PrintlnFunction
import io.smnp.ext.io.function.ReadFunction
import org.pf4j.Extension
@Extension
class IoModule : NativeModuleProvider("smnp.io") {
override fun functions() = listOf(PrintlnFunction(), ReadFunction())
}

View File

@@ -1,16 +0,0 @@
package io.smnp.ext.io.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.vararg
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.model.Value
class PrintlnFunction : Function("println") {
override fun define(new: FunctionDefinitionTool) {
new function vararg(anyType()) body { _, (vararg) ->
println((vararg.value as List<Value>).joinToString("") { it.stringify() })
Value.void()
}
}
}

View File

@@ -1,18 +0,0 @@
package io.smnp.ext.io.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.enumeration.DataType.STRING
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.matcher.Matcher.Companion.optional
import io.smnp.type.model.Value
class ReadFunction : Function("read") {
override fun define(new: FunctionDefinitionTool) {
new function simple(optional(ofType(STRING))) body { _, arguments ->
arguments.getOrNull(0)?.let { print(it.value) }
Value.string(readLine() ?: "")
}
}
}

View File

@@ -0,0 +1,17 @@
package com.bartlomiejpluta.smnp.ext.lang
import com.bartlomiejpluta.smnp.ext.lang.constructor.IntConstructor
import com.bartlomiejpluta.smnp.ext.lang.constructor.NoteConstructor
import com.bartlomiejpluta.smnp.ext.lang.function.TypeOfFunction
import com.bartlomiejpluta.smnp.ext.lang.method.CharAtMethod
import com.bartlomiejpluta.smnp.ext.lang.method.ListAccessMethod
import com.bartlomiejpluta.smnp.ext.lang.method.MapAccessMethod
import com.bartlomiejpluta.smnp.ext.lang.method.StringifyMethod
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
import org.pf4j.Extension
@Extension
class LangModule : NativeModuleProvider("smnp.lang") {
override fun functions() = listOf(IntConstructor(), NoteConstructor(), TypeOfFunction())
override fun methods() = listOf(ListAccessMethod(), MapAccessMethod(), CharAtMethod(), StringifyMethod())
}

View File

@@ -0,0 +1,21 @@
package com.bartlomiejpluta.smnp.ext.lang.constructor
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.enumeration.DataType.FLOAT
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class IntConstructor : Function("Int") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT)) body { _, (int) ->
int
}
new function simple(ofType(FLOAT)) body { _, (float) ->
Value.int((float.value as Float).toInt())
}
}
}

View File

@@ -1,14 +1,14 @@
package io.smnp.ext.lang.constructor
package com.bartlomiejpluta.smnp.ext.lang.constructor
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.data.entity.Note
import io.smnp.data.enumeration.Pitch
import io.smnp.math.Fraction
import io.smnp.type.enumeration.DataType.*
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.data.enumeration.Pitch
import com.bartlomiejpluta.smnp.math.Fraction
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class NoteConstructor : Function("Note") {
override fun define(new: FunctionDefinitionTool) {

View File

@@ -0,0 +1,15 @@
package com.bartlomiejpluta.smnp.ext.lang.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.model.Value
class TypeOfFunction : Function("typeOf") {
override fun define(new: FunctionDefinitionTool) {
new function simple(anyType()) body { _, (obj) ->
Value.string(obj.typeName)
}
}
}

View File

@@ -0,0 +1,18 @@
package com.bartlomiejpluta.smnp.ext.lang.method
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.error.EvaluationException
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.enumeration.DataType.STRING
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class CharAtMethod : Method(ofType(STRING),"charAt") {
override fun define(new: MethodDefinitionTool) {
new method simple(ofType(INT)) body { _, obj, (index) ->
Value.string((obj.value as String).getOrNull(index.value as Int)?.toString() ?: throw EvaluationException("Index '${index.value}' runs out of string bounds"))
}
}
}

View File

@@ -0,0 +1,25 @@
package com.bartlomiejpluta.smnp.ext.lang.method
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.error.EvaluationException
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.enumeration.DataType.LIST
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class ListAccessMethod : Method(ofType(LIST), "get") {
override fun define(new: MethodDefinitionTool) {
new method simple(ofType(INT)) body { _, value, (index) ->
val list = value.value as List<Value>
val i = index.value as Int
if(i >= list.size) {
throw EvaluationException("Index '$i' runs out of array bounds")
}
list[i]
}
}
}

View File

@@ -0,0 +1,19 @@
package com.bartlomiejpluta.smnp.ext.lang.method
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.error.EvaluationException
import com.bartlomiejpluta.smnp.type.enumeration.DataType.MAP
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class MapAccessMethod : Method(ofType(MAP), "get") {
override fun define(new: MethodDefinitionTool) {
new method simple(anyType()) body { _, obj, (key) ->
val map = (obj.value as Map<Value, Value>)
map[key] ?: throw EvaluationException("Key '${key.value}' not found")
}
}
}

View File

@@ -0,0 +1,15 @@
package com.bartlomiejpluta.smnp.ext.lang.method
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.model.Value
class StringifyMethod : Method(anyType(), "toString") {
override fun define(new: MethodDefinitionTool) {
new method simple() body { _, obj, _ ->
Value.string(obj.stringify())
}
}
}

View File

@@ -1,17 +0,0 @@
package io.smnp.ext.lang
import io.smnp.ext.provider.NativeModuleProvider
import io.smnp.ext.lang.constructor.IntConstructor
import io.smnp.ext.lang.constructor.NoteConstructor
import io.smnp.ext.lang.function.TypeOfFunction
import io.smnp.ext.lang.method.CharAtMethod
import io.smnp.ext.lang.method.ListAccessMethod
import io.smnp.ext.lang.method.MapAccessMethod
import io.smnp.ext.lang.method.StringifyMethod
import org.pf4j.Extension
@Extension
class LangModule : NativeModuleProvider("smnp.lang") {
override fun functions() = listOf(IntConstructor(), NoteConstructor(), TypeOfFunction())
override fun methods() = listOf(ListAccessMethod(), MapAccessMethod(), CharAtMethod(), StringifyMethod())
}

View File

@@ -1,21 +0,0 @@
package io.smnp.ext.lang.constructor
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.enumeration.DataType.FLOAT
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
class IntConstructor : Function("Int") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT)) body { _, (int) ->
int
}
new function simple(ofType(FLOAT)) body { _, (float) ->
Value.int((float.value as Float).toInt())
}
}
}

View File

@@ -1,15 +0,0 @@
package io.smnp.ext.lang.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.model.Value
class TypeOfFunction : Function("typeOf") {
override fun define(new: FunctionDefinitionTool) {
new function simple(anyType()) body { _, (obj) ->
Value.string(obj.typeName)
}
}
}

View File

@@ -1,18 +0,0 @@
package io.smnp.ext.lang.method
import io.smnp.callable.method.Method
import io.smnp.callable.method.MethodDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.error.EvaluationException
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.enumeration.DataType.STRING
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
class CharAtMethod : Method(ofType(STRING),"charAt") {
override fun define(new: MethodDefinitionTool) {
new method simple(ofType(INT)) body { _, obj, (index) ->
Value.string((obj.value as String).getOrNull(index.value as Int)?.toString() ?: throw EvaluationException("Index '${index.value}' runs out of string bounds"))
}
}
}

View File

@@ -1,25 +0,0 @@
package io.smnp.ext.lang.method
import io.smnp.callable.method.Method
import io.smnp.callable.method.MethodDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.error.EvaluationException
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.enumeration.DataType.LIST
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
class ListAccessMethod : Method(ofType(LIST), "get") {
override fun define(new: MethodDefinitionTool) {
new method simple(ofType(INT)) body { _, value, (index) ->
val list = value.value as List<Value>
val i = index.value as Int
if(i >= list.size) {
throw EvaluationException("Index '$i' runs out of array bounds")
}
list[i]
}
}
}

View File

@@ -1,19 +0,0 @@
package io.smnp.ext.lang.method
import io.smnp.callable.method.Method
import io.smnp.callable.method.MethodDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.error.EvaluationException
import io.smnp.type.enumeration.DataType.MAP
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
class MapAccessMethod : Method(ofType(MAP), "get") {
override fun define(new: MethodDefinitionTool) {
new method simple(anyType()) body { _, obj, (key) ->
val map = (obj.value as Map<Value, Value>)
map[key] ?: throw EvaluationException("Key '${key.value}' not found")
}
}
}

View File

@@ -1,15 +0,0 @@
package io.smnp.ext.lang.method
import io.smnp.callable.method.Method
import io.smnp.callable.method.MethodDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.model.Value
class StringifyMethod : Method(anyType(), "toString") {
override fun define(new: MethodDefinitionTool) {
new method simple() body { _, obj, _ ->
Value.string(obj.stringify())
}
}
}

View File

@@ -1,8 +1,8 @@
package io.smnp.ext.math
package com.bartlomiejpluta.smnp.ext.math
import io.smnp.ext.math.function.ModuloFunction
import io.smnp.ext.math.function.RandomFunction
import io.smnp.ext.provider.HybridModuleProvider
import com.bartlomiejpluta.smnp.ext.math.function.ModuloFunction
import com.bartlomiejpluta.smnp.ext.math.function.RandomFunction
import com.bartlomiejpluta.smnp.ext.provider.HybridModuleProvider
import org.pf4j.Extension
@Extension

View File

@@ -0,0 +1,16 @@
package com.bartlomiejpluta.smnp.ext.math.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class ModuloFunction : Function("mod") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT), ofType(INT)) body { _, (a, b) ->
Value.int(a.value as Int % b.value as Int)
}
}
}

View File

@@ -0,0 +1,15 @@
package com.bartlomiejpluta.smnp.ext.math.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.model.Value
import kotlin.random.Random
class RandomFunction : Function("random") {
override fun define(new: FunctionDefinitionTool) {
new function simple() body { _, _ ->
Value.float(Random.nextFloat())
}
}
}

View File

@@ -1,16 +0,0 @@
package io.smnp.ext.math.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
class ModuloFunction : Function("mod") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT), ofType(INT)) body { _, (a, b) ->
Value.int(a.value as Int % b.value as Int)
}
}
}

View File

@@ -1,15 +0,0 @@
package io.smnp.ext.math.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.model.Value
import kotlin.random.Random
class RandomFunction : Function("random") {
override fun define(new: FunctionDefinitionTool) {
new function simple() body { _, _ ->
Value.float(Random.nextFloat())
}
}
}

View File

@@ -0,0 +1,11 @@
package com.bartlomiejpluta.smnp.ext.mic
import com.bartlomiejpluta.smnp.ext.mic.function.MicLevelFunction
import com.bartlomiejpluta.smnp.ext.mic.function.WaitFunction
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
import org.pf4j.Extension
@Extension
class MicrophoneModule : NativeModuleProvider("smnp.audio.mic") {
override fun functions() = listOf(WaitFunction(), MicLevelFunction())
}

View File

@@ -0,0 +1,17 @@
package com.bartlomiejpluta.smnp.ext.mic.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.ext.mic.lib.loop.TestMicrophoneLevelLoop
import com.bartlomiejpluta.smnp.type.model.Value
class MicLevelFunction : Function("micLevel") {
override fun define(new: FunctionDefinitionTool) {
new function simple() body { _, _ ->
val printer = TestMicrophoneLevelLoop()
printer.run()
Value.void()
}
}
}

View File

@@ -0,0 +1,22 @@
package com.bartlomiejpluta.smnp.ext.mic.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.ext.mic.lib.loop.SoundListenerLoop
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class WaitFunction : Function("wait") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT), ofType(INT)) body { _, (inThreshold, outThreshold) ->
val loop = SoundListenerLoop(
inThreshold.value as Int,
outThreshold.value as Int
)
loop.run()
Value.void()
}
}
}

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.mic.lib.loop
package com.bartlomiejpluta.smnp.ext.mic.lib.loop
import io.smnp.error.CustomException
import com.bartlomiejpluta.smnp.error.CustomException
import javax.sound.sampled.AudioFormat
import javax.sound.sampled.AudioSystem
import javax.sound.sampled.DataLine

View File

@@ -1,4 +1,4 @@
package io.smnp.ext.mic.lib.loop
package com.bartlomiejpluta.smnp.ext.mic.lib.loop
class SoundListenerLoop(private val inThreshold: Int, private val outThreshold: Int) : MicrophoneLevelLoop() {
private var noiseReached = false

View File

@@ -1,4 +1,4 @@
package io.smnp.ext.mic.lib.loop
package com.bartlomiejpluta.smnp.ext.mic.lib.loop
import kotlin.math.min

View File

@@ -1,11 +0,0 @@
package io.smnp.ext.mic
import io.smnp.ext.provider.NativeModuleProvider
import io.smnp.ext.mic.function.MicLevelFunction
import io.smnp.ext.mic.function.WaitFunction
import org.pf4j.Extension
@Extension
class MicrophoneModule : NativeModuleProvider("smnp.audio.mic") {
override fun functions() = listOf(WaitFunction(), MicLevelFunction())
}

View File

@@ -1,17 +0,0 @@
package io.smnp.ext.mic.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.ext.mic.lib.loop.TestMicrophoneLevelLoop
import io.smnp.type.model.Value
class MicLevelFunction : Function("micLevel") {
override fun define(new: FunctionDefinitionTool) {
new function simple() body { _, _ ->
val printer = TestMicrophoneLevelLoop()
printer.run()
Value.void()
}
}
}

View File

@@ -1,22 +0,0 @@
package io.smnp.ext.mic.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.ext.mic.lib.loop.SoundListenerLoop
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
class WaitFunction : Function("wait") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT), ofType(INT)) body { _, (inThreshold, outThreshold) ->
val loop = SoundListenerLoop(
inThreshold.value as Int,
outThreshold.value as Int
)
loop.run()
Value.void()
}
}
}

View File

@@ -1,10 +1,10 @@
package io.smnp.ext.midi
package com.bartlomiejpluta.smnp.ext.midi
import io.smnp.environment.Environment
import io.smnp.ext.midi.function.MidiFunction
import io.smnp.ext.midi.function.MidiHelpFunction
import io.smnp.ext.midi.lib.midi.Midi
import io.smnp.ext.provider.HybridModuleProvider
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.ext.midi.function.MidiFunction
import com.bartlomiejpluta.smnp.ext.midi.function.MidiHelpFunction
import com.bartlomiejpluta.smnp.ext.midi.lib.midi.Midi
import com.bartlomiejpluta.smnp.ext.provider.HybridModuleProvider
import org.pf4j.Extension
@Extension

View File

@@ -1,19 +1,19 @@
package io.smnp.ext.midi.function
package com.bartlomiejpluta.smnp.ext.midi.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.callable.signature.Signature.Companion.vararg
import io.smnp.error.CustomException
import io.smnp.ext.midi.lib.midi.Midi
import io.smnp.type.enumeration.DataType.*
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.matcher.Matcher.Companion.listOf
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
import io.smnp.util.config.ConfigMapSchema
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.vararg
import com.bartlomiejpluta.smnp.error.CustomException
import com.bartlomiejpluta.smnp.ext.midi.lib.midi.Midi
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
class MidiFunction : Function("midi") {

View File

@@ -1,18 +1,18 @@
package io.smnp.ext.midi.function
package com.bartlomiejpluta.smnp.ext.midi.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.data.entity.Note
import io.smnp.data.enumeration.Pitch
import io.smnp.error.CustomException
import io.smnp.ext.midi.lib.midi.Midi
import io.smnp.math.Fraction
import io.smnp.type.enumeration.DataType.*
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.matcher.Matcher.Companion.optional
import io.smnp.type.model.Value
import io.smnp.util.config.ConfigMap
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.data.enumeration.Pitch
import com.bartlomiejpluta.smnp.error.CustomException
import com.bartlomiejpluta.smnp.ext.midi.lib.midi.Midi
import com.bartlomiejpluta.smnp.math.Fraction
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.util.config.ConfigMap
class MidiHelpFunction : Function("midiHelp") {
override fun define(new: FunctionDefinitionTool) {

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.midi.lib.compiler
package com.bartlomiejpluta.smnp.ext.midi.lib.compiler
import io.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.data.entity.Note
import javax.sound.midi.Track
class DefaultSequenceCompiler : SequenceCompiler() {

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.midi.lib.compiler
package com.bartlomiejpluta.smnp.ext.midi.lib.compiler
import io.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.data.entity.Note
import javax.sound.midi.Track
class PpqSequenceCompiler : SequenceCompiler() {

View File

@@ -1,9 +1,9 @@
package io.smnp.ext.midi.lib.compiler
package com.bartlomiejpluta.smnp.ext.midi.lib.compiler
import io.smnp.data.entity.Note
import io.smnp.error.CustomException
import io.smnp.error.ShouldNeverReachThisLineException
import io.smnp.util.config.ConfigMap
import com.bartlomiejpluta.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.error.CustomException
import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import com.bartlomiejpluta.smnp.util.config.ConfigMap
import javax.sound.midi.MidiEvent
import javax.sound.midi.Sequence
import javax.sound.midi.ShortMessage

View File

@@ -1,9 +1,9 @@
package io.smnp.ext.midi.lib.midi
package com.bartlomiejpluta.smnp.ext.midi.lib.midi
import io.smnp.ext.midi.lib.compiler.DefaultSequenceCompiler
import io.smnp.ext.midi.lib.compiler.PpqSequenceCompiler
import io.smnp.ext.midi.lib.compiler.SequenceCompiler
import io.smnp.util.config.ConfigMap
import com.bartlomiejpluta.smnp.ext.midi.lib.compiler.DefaultSequenceCompiler
import com.bartlomiejpluta.smnp.ext.midi.lib.compiler.PpqSequenceCompiler
import com.bartlomiejpluta.smnp.ext.midi.lib.compiler.SequenceCompiler
import com.bartlomiejpluta.smnp.util.config.ConfigMap
import java.io.File
import javax.sound.midi.MidiSystem
import javax.sound.midi.Sequence

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.musiccommand
package com.bartlomiejpluta.smnp.ext.musiccommand
import io.smnp.ext.provider.LanguageModuleProvider
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
import org.pf4j.Extension
@Extension

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.musictool
package com.bartlomiejpluta.smnp.ext.musictool
import io.smnp.ext.provider.LanguageModuleProvider
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
import org.pf4j.Extension
@Extension

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.music
package com.bartlomiejpluta.smnp.ext.music
import io.smnp.ext.provider.LanguageModuleProvider
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
import org.pf4j.Extension
@Extension

View File

@@ -1,10 +1,10 @@
package io.smnp.ext.synth
package com.bartlomiejpluta.smnp.ext.synth
import io.smnp.environment.Environment
import io.smnp.ext.provider.HybridModuleProvider
import io.smnp.ext.synth.function.SynthFunction
import io.smnp.ext.synth.function.WaveFunction
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.ext.provider.HybridModuleProvider
import com.bartlomiejpluta.smnp.ext.synth.function.SynthFunction
import com.bartlomiejpluta.smnp.ext.synth.function.WaveFunction
import com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer.Synthesizer
import org.pf4j.Extension
@Extension

View File

@@ -1,19 +1,19 @@
package io.smnp.ext.synth.function
package com.bartlomiejpluta.smnp.ext.synth.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
import io.smnp.ext.synth.lib.wave.Wave
import io.smnp.ext.synth.lib.wave.WaveCompiler
import io.smnp.type.enumeration.DataType.*
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.matcher.Matcher.Companion.listOf
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer.Synthesizer
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.Wave
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.WaveCompiler
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class SynthFunction : Function("synth") {

View File

@@ -1,16 +1,16 @@
package io.smnp.ext.synth.function
package com.bartlomiejpluta.smnp.ext.synth.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
import io.smnp.ext.synth.lib.wave.WaveCompiler
import io.smnp.type.enumeration.DataType.*
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer.Synthesizer
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.WaveCompiler
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class WaveFunction : Function("wave") {

View File

@@ -1,4 +1,4 @@
package io.smnp.ext.synth.lib.envelope
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
class AdsrEnvelope(private val p1: Double, private val p2: Double, private val p3: Double, private val s: Double) : Envelope() {

View File

@@ -1,9 +1,9 @@
package io.smnp.ext.synth.lib.envelope
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
import io.smnp.type.enumeration.DataType.FLOAT
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
import io.smnp.util.config.ConfigMapSchema
import com.bartlomiejpluta.smnp.type.enumeration.DataType.FLOAT
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
object AdsrEnvelopeFactory : EnvelopeFactory {
private val schema = ConfigMapSchema()

View File

@@ -1,4 +1,4 @@
package io.smnp.ext.synth.lib.envelope
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
class ConstantEnvelope : Envelope() {
override fun eval(x: Double, length: Int) = 1.0

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.synth.lib.envelope
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.model.Value
object ConstantEnvelopeFactory : EnvelopeFactory {
override fun createEnvelope(config: Value) = ConstantEnvelope()

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.synth.lib.envelope
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
import io.smnp.ext.synth.lib.wave.Wave
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.Wave
abstract class Envelope {
abstract fun eval(x: Double, length: Int): Double

View File

@@ -1,10 +1,10 @@
package io.smnp.ext.synth.lib.envelope
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
import io.smnp.error.CustomException
import io.smnp.type.enumeration.DataType
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import io.smnp.util.config.ConfigMapSchema
import com.bartlomiejpluta.smnp.error.CustomException
import com.bartlomiejpluta.smnp.type.enumeration.DataType
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
interface EnvelopeFactory {
fun createEnvelope(config: Value): Envelope

View File

@@ -1,8 +1,8 @@
package io.smnp.ext.synth.lib.model
package com.bartlomiejpluta.smnp.ext.synth.lib.model
import io.smnp.data.enumeration.Pitch
import io.smnp.ext.synth.lib.envelope.EnvelopeFactory
import io.smnp.util.config.ConfigMap
import com.bartlomiejpluta.smnp.data.enumeration.Pitch
import com.bartlomiejpluta.smnp.ext.synth.lib.envelope.EnvelopeFactory
import com.bartlomiejpluta.smnp.util.config.ConfigMap
import kotlin.math.pow
private val SEMITONE = 2.0.pow(1.0 / 12.0)

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.synth.lib.synthesizer
package com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer
import io.smnp.ext.synth.lib.wave.Wave
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.Wave
import javax.sound.sampled.AudioFormat
import javax.sound.sampled.AudioSystem
import javax.sound.sampled.SourceDataLine

View File

@@ -1,4 +1,4 @@
package io.smnp.ext.synth.lib.wave
package com.bartlomiejpluta.smnp.ext.synth.lib.wave
import java.io.ByteArrayOutputStream
import kotlin.math.roundToInt

View File

@@ -1,13 +1,13 @@
package io.smnp.ext.synth.lib.wave
package com.bartlomiejpluta.smnp.ext.synth.lib.wave
import io.smnp.data.entity.Note
import io.smnp.error.CustomException
import io.smnp.ext.synth.lib.model.CompilationParameters
import io.smnp.math.Fraction
import io.smnp.type.enumeration.DataType
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import io.smnp.util.config.ConfigMapSchema
import com.bartlomiejpluta.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.error.CustomException
import com.bartlomiejpluta.smnp.ext.synth.lib.model.CompilationParameters
import com.bartlomiejpluta.smnp.math.Fraction
import com.bartlomiejpluta.smnp.type.enumeration.DataType
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
import kotlin.math.log
import kotlin.math.pow

View File

@@ -0,0 +1,11 @@
package com.bartlomiejpluta.smnp.ext.system
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
import com.bartlomiejpluta.smnp.ext.system.function.ExitFunction
import com.bartlomiejpluta.smnp.ext.system.function.SleepFunction
import org.pf4j.Extension
@Extension
class SystemModule : NativeModuleProvider("smnp.system") {
override fun functions() = listOf(ExitFunction(), SleepFunction())
}

View File

@@ -0,0 +1,19 @@
package com.bartlomiejpluta.smnp.ext.system.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
import com.bartlomiejpluta.smnp.type.model.Value
import kotlin.system.exitProcess
class ExitFunction : Function("exit") {
override fun define(new: FunctionDefinitionTool) {
new function simple(optional(ofType(INT))) body { _, arguments ->
val exitCode = arguments.getOrNull(0) ?: Value.int(0)
exitProcess(exitCode.value as Int)
}
}
}

View File

@@ -0,0 +1,17 @@
package com.bartlomiejpluta.smnp.ext.system.function
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.model.Value
class SleepFunction : Function("sleep") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT)) body { _, (milli) ->
Thread.sleep((milli.value as Int).toLong())
Value.void()
}
}
}

View File

@@ -1,11 +0,0 @@
package io.smnp.ext.system
import io.smnp.ext.provider.NativeModuleProvider
import io.smnp.ext.system.function.ExitFunction
import io.smnp.ext.system.function.SleepFunction
import org.pf4j.Extension
@Extension
class SystemModule : NativeModuleProvider("smnp.system") {
override fun functions() = listOf(ExitFunction(), SleepFunction())
}

View File

@@ -1,19 +0,0 @@
package io.smnp.ext.system.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.matcher.Matcher.Companion.optional
import io.smnp.type.model.Value
import kotlin.system.exitProcess
class ExitFunction : Function("exit") {
override fun define(new: FunctionDefinitionTool) {
new function simple(optional(ofType(INT))) body { _, arguments ->
val exitCode = arguments.getOrNull(0) ?: Value.int(0)
exitProcess(exitCode.value as Int)
}
}
}

View File

@@ -1,17 +0,0 @@
package io.smnp.ext.system.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.enumeration.DataType.INT
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.model.Value
class SleepFunction : Function("sleep") {
override fun define(new: FunctionDefinitionTool) {
new function simple(ofType(INT)) body { _, (milli) ->
Thread.sleep((milli.value as Int).toLong())
Value.void()
}
}
}

View File

@@ -1,6 +1,6 @@
package io.smnp.ext.text
package com.bartlomiejpluta.smnp.ext.text
import io.smnp.ext.provider.LanguageModuleProvider
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
import org.pf4j.Extension
@Extension