Compare commits

..

6 Commits

Author SHA1 Message Date
83c81384be remove comments, they are redundant. 2025-12-14 22:05:30 +00:00
e848037b30
Merge pull request #33 from pblivingston/read-write-only
Meta functions read/write only
2025-12-14 22:03:28 +00:00
pblivingston
66b3fb355c Update CHANGELOG.md
pester tests pass for all kinds

manual tests pass for all kinds
- bus.device.asio
2025-12-13 16:39:01 -05:00
pblivingston
30da69469b asio, recorder.prefix
string pester tests for potato pass

manual test passes
- bus.device.asio
2025-12-13 16:39:01 -05:00
pblivingston
59f3168436 device properties
implemented here first because string pester tests can confirm the behavior works

string pester tests for potato pass
manual tests to confirm error behavior pass
2025-12-13 16:39:01 -05:00
pblivingston
b273aa7a51 ReadOnly, WriteOnly
added ReadOnly and WriteOnly params to meta functions that will override the setter and getter, respectively

prelim pester tests for potato for safety pass
2025-12-13 16:39:01 -05:00
5 changed files with 35 additions and 86 deletions

View File

@ -72,9 +72,11 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details
### Changed
- Device: explicit $arg types for consistency
- Meta functions can now take a -ReadOnly or -WriteOnly switch parameter
- Meta: AddBoolMembers, AddIntMembers $arg types for consistency
- Float getters/setters now default to two decimal places.
- Device: explicit $arg types for consistency
- Device members now added with meta functions
- some vban.instream | vban.outstream commands now added with meta functions
- on
@ -84,6 +86,7 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details
- Recorder.Armstrip|Armbus -> BoolArrayMember: now have .Get()
- Cast Recorder getters to types for consistency
- Recorder.Prefix now added with AddStringMembers
- Strip.Mono is now an alias for Strip.MC on virtual strips
- Strip.AppMute|AppGain can now take an app index; see README for details

View File

@ -99,23 +99,13 @@ class VirtualBus : Bus {
class BusDevice : IODevice {
BusDevice ([int]$index, [Object]$remote) : base ($index, $remote) {
if ($this.index -eq 0) {
$this.AddASIO()
AddStringMembers -PARAMS @('asio') -WriteOnly
}
}
[string] identifier () {
return 'Bus[' + $this.index + '].Device'
}
hidden [void] AddASIO () {
Add-Member -InputObject $this -MemberType ScriptProperty -Name 'asio' `
-Value {
return Write-Warning ("ERROR: $($this.identifier()).asio is write only")
} -SecondValue {
param([string]$arg)
return $this.Setter('asio', $arg)
} -Force
}
}
function Make_Buses ([Object]$remote) {

View File

@ -99,53 +99,8 @@ class EqCell : IRemote {
class IODevice : IRemote {
IODevice ([int]$index, [Object]$remote) : base ($index, $remote) {
AddStringMembers -WriteOnly -PARAMS @('wdm', 'ks', 'mme')
AddStringMembers -ReadOnly -PARAMS @('name')
AddIntMembers -ReadOnly -PARAMS @('sr')
}
hidden $_name = $($this | Add-Member ScriptProperty 'name' `
{
$this.Getter_String('name')
} `
{
return Write-Warning ("ERROR: $($this.identifier()).name is read only")
}
)
hidden $_sr = $($this | Add-Member ScriptProperty 'sr' `
{
[int]$this.Getter('sr')
} `
{
return Write-Warning ("ERROR: $($this.identifier()).sr is read only")
}
)
hidden $_wdm = $($this | Add-Member ScriptProperty 'wdm' `
{
return Write-Warning ("ERROR: $($this.identifier()).wdm is write only")
} `
{
param([string]$arg)
return $this.Setter('wdm', $arg)
}
)
hidden $_ks = $($this | Add-Member ScriptProperty 'ks' `
{
return Write-Warning ("ERROR: $($this.identifier()).ks is write only")
} `
{
param([string]$arg)
return $this.Setter('ks', $arg)
}
)
hidden $_mme = $($this | Add-Member ScriptProperty 'mme' `
{
return Write-Warning ("ERROR: $($this.identifier()).mme is write only")
} `
{
param([string]$arg)
return $this.Setter('mme', $arg)
}
)
}

View File

@ -1,65 +1,57 @@
function AddBoolMembers () {
param(
[String[]]$PARAMS
[String[]]$PARAMS, [Switch]$readOnly, [Switch]$writeOnly
)
[hashtable]$Signatures = @{}
foreach ($param in $PARAMS) {
# Define getter
$Signatures['Getter'] = "[bool]`$this.Getter('{0}')" -f $param
# Define setter
$Signatures['Setter'] = "param ( [bool]`$arg )`n`$this.Setter('{0}', `$arg)" `
-f $param
Addmember
Addmember -ReadOnly:$readOnly -WriteOnly:$writeOnly
}
}
function AddFloatMembers () {
param(
[String[]]$PARAMS,
[String[]]$PARAMS, [Switch]$readOnly, [Switch]$writeOnly,
[int]$decimals = 2
)
[hashtable]$Signatures = @{}
foreach ($param in $PARAMS) {
# Define getter
$Signatures['Getter'] = "[math]::Round(`$this.Getter('{0}'), {1})" -f $param, $decimals
# Define setter
$Signatures['Setter'] = "param ( [Single]`$arg )`n`$this.Setter('{0}', `$arg)" `
-f $param
Addmember
Addmember -ReadOnly:$readOnly -WriteOnly:$writeOnly
}
}
function AddIntMembers () {
param(
[String[]]$PARAMS
[String[]]$PARAMS, [Switch]$readOnly, [Switch]$writeOnly
)
[hashtable]$Signatures = @{}
foreach ($param in $PARAMS) {
# Define getter
$Signatures['Getter'] = "[Int]`$this.Getter('{0}')" -f $param
# Define setter
$Signatures['Setter'] = "param ( [Int]`$arg )`n`$this.Setter('{0}', `$arg)" `
-f $param
Addmember
Addmember -ReadOnly:$readOnly -WriteOnly:$writeOnly
}
}
function AddStringMembers () {
param(
[String[]]$PARAMS
[String[]]$PARAMS, [Switch]$readOnly, [Switch]$writeOnly
)
[hashtable]$Signatures = @{}
foreach ($param in $PARAMS) {
# Define getter
$Signatures['Getter'] = "[String]`$this.Getter_String('{0}')" -f $param
# Define setter
$Signatures['Setter'] = "param ( [String]`$arg )`n`$this.Setter('{0}', `$arg)" `
-f $param
Addmember
Addmember -ReadOnly:$readOnly -WriteOnly:$writeOnly
}
}
@ -97,6 +89,24 @@ function AddChannelMembers () {
}
function Addmember {
param(
[Switch]$readOnly, [Switch]$writeOnly
)
if ($readOnly -and $writeOnly) {
throw "AddMember: cannot be both readOnly and writeOnly for '$param'"
}
# Override signatures based on mode
if ($readOnly) {
$Signatures['Setter'] = "return Write-Warning (`"ERROR: `$(`$this.identifier()).{0} is read only`")" `
-f $param
}
elseif ($writeOnly) {
$Signatures['Getter'] = "return Write-Warning (`"ERROR: `$(`$this.identifier()).{0} is write only`")" `
-f $param
}
$AddMemberParams = @{
Name = $param
MemberType = 'ScriptProperty'

View File

@ -25,6 +25,7 @@ class Recorder : IRemote {
AddActionMembers -PARAMS @('replay', 'ff', 'rew')
AddFloatMembers -PARAMS @('gain')
AddIntMembers -PARAMS @('prerectime')
AddStringMembers -PARAMS @('prefix') -WriteOnly
AddChannelMembers
}
@ -117,16 +118,6 @@ class Recorder : IRemote {
}
)
hidden $_prefix = $($this | Add-Member ScriptProperty 'prefix' `
{
return Write-Warning ("ERROR: $($this.identifier()).prefix is write only")
} `
{
param([string]$arg)
$this._prefix = $this.Setter('prefix', $arg)
}
)
hidden $_filetype = $($this | Add-Member ScriptProperty 'filetype' `
{
return Write-Warning ("ERROR: $($this.identifier()).filetype is write only")