2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
2023-11-20 02:02:11 +00:00
|
|
|
|
A partial and basic implementation of GVariant formatted strings.
|
|
|
|
|
See [GVariant Format Strings](https://docs.gtk.org/glib/gvariant-format-strings.html) for details.
|
|
|
|
|
|
|
|
|
|
:::{.warning}
|
|
|
|
|
This API is not considered fully stable and it might therefore
|
|
|
|
|
change in backwards incompatible ways without prior notice.
|
|
|
|
|
:::
|
|
|
|
|
*/
|
|
|
|
|
|
2023-06-14 08:14:23 +00:00
|
|
|
|
# This file is based on https://github.com/nix-community/home-manager
|
|
|
|
|
# Copyright (c) 2017-2022 Home Manager contributors
|
|
|
|
|
{ lib }:
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
|
inherit (lib)
|
|
|
|
|
concatMapStringsSep
|
|
|
|
|
concatStrings
|
|
|
|
|
escape
|
|
|
|
|
head
|
|
|
|
|
replaceStrings
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
mkPrimitive = t: v: {
|
|
|
|
|
_type = "gvariant";
|
|
|
|
|
type = t;
|
|
|
|
|
value = v;
|
|
|
|
|
__toString = self: "@${self.type} ${toString self.value}"; # https://docs.gtk.org/glib/gvariant-text.html
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type = {
|
|
|
|
|
arrayOf = t: "a${t}";
|
|
|
|
|
maybeOf = t: "m${t}";
|
|
|
|
|
tupleOf = ts: "(${concatStrings ts})";
|
|
|
|
|
dictionaryEntryOf = nameType: valueType: "{${nameType}${valueType}}";
|
|
|
|
|
string = "s";
|
|
|
|
|
boolean = "b";
|
|
|
|
|
uchar = "y";
|
|
|
|
|
int16 = "n";
|
|
|
|
|
uint16 = "q";
|
|
|
|
|
int32 = "i";
|
|
|
|
|
uint32 = "u";
|
|
|
|
|
int64 = "x";
|
|
|
|
|
uint64 = "t";
|
|
|
|
|
double = "d";
|
|
|
|
|
variant = "v";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
in
|
|
|
|
|
rec {
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
inherit type;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
Check if a value is a GVariant value
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`v`
|
|
|
|
|
|
|
|
|
|
: value to check
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
isGVariant :: Any -> Bool
|
|
|
|
|
```
|
|
|
|
|
*/
|
|
|
|
|
isGVariant = v: v._type or "" == "gvariant";
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-04-30 22:48:27 +00:00
|
|
|
|
intConstructors = [
|
|
|
|
|
{
|
|
|
|
|
name = "mkInt32";
|
|
|
|
|
type = type.int32;
|
|
|
|
|
min = -2147483648;
|
|
|
|
|
max = 2147483647;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "mkUint32";
|
|
|
|
|
type = type.uint32;
|
|
|
|
|
min = 0;
|
|
|
|
|
max = 4294967295;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "mkInt64";
|
|
|
|
|
type = type.int64;
|
|
|
|
|
# Nix does not support such large numbers.
|
|
|
|
|
min = null;
|
|
|
|
|
max = null;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "mkUint64";
|
|
|
|
|
type = type.uint64;
|
|
|
|
|
min = 0;
|
|
|
|
|
# Nix does not support such large numbers.
|
|
|
|
|
max = null;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "mkInt16";
|
|
|
|
|
type = type.int16;
|
|
|
|
|
min = -32768;
|
|
|
|
|
max = 32767;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "mkUint16";
|
|
|
|
|
type = type.uint16;
|
|
|
|
|
min = 0;
|
|
|
|
|
max = 65535;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "mkUchar";
|
|
|
|
|
type = type.uchar;
|
|
|
|
|
min = 0;
|
|
|
|
|
max = 255;
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant value that most closely matches the given Nix value.
|
|
|
|
|
If no GVariant value can be found unambiguously then error is thrown.
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`v`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkValue :: Any -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkValue =
|
|
|
|
|
v:
|
|
|
|
|
if builtins.isBool v then
|
|
|
|
|
mkBoolean v
|
|
|
|
|
else if builtins.isFloat v then
|
|
|
|
|
mkDouble v
|
|
|
|
|
else if builtins.isString v then
|
|
|
|
|
mkString v
|
|
|
|
|
else if builtins.isList v then
|
|
|
|
|
mkArray v
|
|
|
|
|
else if isGVariant v then
|
|
|
|
|
v
|
2024-04-30 22:48:27 +00:00
|
|
|
|
else if builtins.isInt v then
|
|
|
|
|
let
|
|
|
|
|
validConstructors = builtins.filter (
|
|
|
|
|
{ min, max, ... }: (min == null || min <= v) && (max == null || v <= max)
|
|
|
|
|
) intConstructors;
|
|
|
|
|
in
|
|
|
|
|
throw ''
|
|
|
|
|
The GVariant type for number “${builtins.toString v}” is unclear.
|
|
|
|
|
Please wrap the value with one of the following, depending on the value type in GSettings schema:
|
|
|
|
|
|
|
|
|
|
${lib.concatMapStringsSep "\n" (
|
|
|
|
|
{ name, type, ... }: "- `lib.gvariant.${name}` for `${type}`"
|
|
|
|
|
) validConstructors}
|
|
|
|
|
''
|
|
|
|
|
else if builtins.isAttrs v then
|
|
|
|
|
throw "Cannot construct GVariant value from an attribute set. If you want to construct a dictionary, you will need to create an array containing items constructed with `lib.gvariant.mkDictionaryEntry`."
|
2023-06-14 08:14:23 +00:00
|
|
|
|
else
|
2024-04-30 22:02:45 +00:00
|
|
|
|
throw "The GVariant type of “${builtins.typeOf v}” can't be inferred.";
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant array from the given type of the elements and a Nix list.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
`elems`
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkArray :: [Any] -> gvariant
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# Examples
|
|
|
|
|
:::{.example}
|
|
|
|
|
## `lib.gvariant.mkArray` usage example
|
|
|
|
|
|
|
|
|
|
```nix
|
|
|
|
|
# Creating a string array
|
|
|
|
|
lib.gvariant.mkArray [ "a" "b" "c" ]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
:::
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkArray =
|
|
|
|
|
elems:
|
|
|
|
|
let
|
|
|
|
|
vs = map mkValue (lib.throwIf (elems == [ ]) "Please create empty array with mkEmptyArray." elems);
|
|
|
|
|
elemType = lib.throwIfNot (lib.all (t: (head vs).type == t) (
|
|
|
|
|
map (v: v.type) vs
|
|
|
|
|
)) "Elements in a list should have same type." (head vs).type;
|
|
|
|
|
in
|
|
|
|
|
mkPrimitive (type.arrayOf elemType) vs
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: "@${self.type} [${concatMapStringsSep "," toString self.value}]";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant array from the given empty Nix list.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
`elemType`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkEmptyArray :: gvariant.type -> gvariant
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# Examples
|
|
|
|
|
:::{.example}
|
|
|
|
|
## `lib.gvariant.mkEmptyArray` usage example
|
|
|
|
|
|
|
|
|
|
```nix
|
|
|
|
|
# Creating an empty string array
|
|
|
|
|
lib.gvariant.mkEmptyArray (lib.gvariant.type.string)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
:::
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkEmptyArray =
|
|
|
|
|
elemType:
|
|
|
|
|
mkPrimitive (type.arrayOf elemType) [ ]
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: "@${self.type} []";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant variant from the given Nix value. Variants are containers
|
|
|
|
|
of different GVariant type.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`elem`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkVariant :: Any -> gvariant
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# Examples
|
|
|
|
|
:::{.example}
|
|
|
|
|
## `lib.gvariant.mkVariant` usage example
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
```nix
|
|
|
|
|
lib.gvariant.mkArray [
|
|
|
|
|
(lib.gvariant.mkVariant "a string")
|
|
|
|
|
(lib.gvariant.mkVariant (lib.gvariant.mkInt32 1))
|
|
|
|
|
]
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
:::
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkVariant =
|
|
|
|
|
elem:
|
|
|
|
|
let
|
|
|
|
|
gvarElem = mkValue elem;
|
|
|
|
|
in
|
|
|
|
|
mkPrimitive type.variant gvarElem
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: "<${toString self.value}>";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant dictionary entry from the given key and value.
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`name`
|
|
|
|
|
|
|
|
|
|
: The key of the entry
|
|
|
|
|
|
|
|
|
|
`value`
|
|
|
|
|
|
|
|
|
|
: The value of the entry
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkDictionaryEntry :: String -> Any -> gvariant
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# Examples
|
|
|
|
|
:::{.example}
|
|
|
|
|
## `lib.gvariant.mkDictionaryEntry` usage example
|
|
|
|
|
|
|
|
|
|
```nix
|
|
|
|
|
# A dictionary describing an Epiphany’s search provider
|
|
|
|
|
[
|
|
|
|
|
(lib.gvariant.mkDictionaryEntry "url" (lib.gvariant.mkVariant "https://duckduckgo.com/?q=%s&t=epiphany"))
|
|
|
|
|
(lib.gvariant.mkDictionaryEntry "bang" (lib.gvariant.mkVariant "!d"))
|
|
|
|
|
(lib.gvariant.mkDictionaryEntry "name" (lib.gvariant.mkVariant "DuckDuckGo"))
|
|
|
|
|
]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
:::
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkDictionaryEntry =
|
|
|
|
|
name: value:
|
|
|
|
|
let
|
|
|
|
|
name' = mkValue name;
|
|
|
|
|
value' = mkValue value;
|
|
|
|
|
dictionaryType = type.dictionaryEntryOf name'.type value'.type;
|
|
|
|
|
in
|
|
|
|
|
mkPrimitive dictionaryType { inherit name value; }
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: "@${self.type} {${name'},${value'}}";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant maybe from the given element type.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`elemType`
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
`elem`
|
|
|
|
|
|
|
|
|
|
: 2\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkMaybe :: gvariant.type -> Any -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkMaybe =
|
|
|
|
|
elemType: elem:
|
|
|
|
|
mkPrimitive (type.maybeOf elemType) elem
|
|
|
|
|
// {
|
|
|
|
|
__toString =
|
|
|
|
|
self: if self.value == null then "@${self.type} nothing" else "just ${toString self.value}";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant nothing from the given element type.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`elemType`
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkNothing :: gvariant.type -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkNothing = elemType: mkMaybe elemType null;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant just from the given Nix value.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`elem`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkJust :: Any -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkJust =
|
|
|
|
|
elem:
|
|
|
|
|
let
|
|
|
|
|
gvarElem = mkValue elem;
|
|
|
|
|
in
|
|
|
|
|
mkMaybe gvarElem.type gvarElem;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant tuple from the given Nix list.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`elems`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
```
|
|
|
|
|
mkTuple :: [Any] -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkTuple =
|
|
|
|
|
elems:
|
|
|
|
|
let
|
|
|
|
|
gvarElems = map mkValue elems;
|
|
|
|
|
tupleType = type.tupleOf (map (e: e.type) gvarElems);
|
|
|
|
|
in
|
|
|
|
|
mkPrimitive tupleType gvarElems
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: "@${self.type} (${concatMapStringsSep "," toString self.value})";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant boolean from the given Nix bool value.
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`v`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkBoolean :: Bool -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkBoolean =
|
|
|
|
|
v:
|
|
|
|
|
mkPrimitive type.boolean v
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: if self.value then "true" else "false";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant string from the given Nix string value.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`v`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkString :: String -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkString =
|
|
|
|
|
v:
|
|
|
|
|
let
|
|
|
|
|
sanitize = s: replaceStrings [ "\n" ] [ "\\n" ] (escape [ "'" "\\" ] s);
|
|
|
|
|
in
|
|
|
|
|
mkPrimitive type.string v
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: "'${sanitize self.value}'";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant object path from the given Nix string value.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`v`
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkObjectpath :: String -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkObjectpath =
|
|
|
|
|
v:
|
|
|
|
|
mkPrimitive type.string v
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: "objectpath '${escape [ "'" ] self.value}'";
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant uchar from the given Nix int value.
|
|
|
|
|
|
|
|
|
|
# Type
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
```
|
|
|
|
|
mkUchar :: Int -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkUchar = mkPrimitive type.uchar;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant int16 from the given Nix int value.
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkInt16 :: Int -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkInt16 = mkPrimitive type.int16;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant uint16 from the given Nix int value.
|
|
|
|
|
|
|
|
|
|
# Type
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
```
|
|
|
|
|
mkUint16 :: Int -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkUint16 = mkPrimitive type.uint16;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant int32 from the given Nix int value.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`v`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkInt32 :: Int -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkInt32 =
|
|
|
|
|
v:
|
|
|
|
|
mkPrimitive type.int32 v
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: toString self.value;
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant uint32 from the given Nix int value.
|
|
|
|
|
|
|
|
|
|
# Type
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
```
|
|
|
|
|
mkUint32 :: Int -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkUint32 = mkPrimitive type.uint32;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant int64 from the given Nix int value.
|
|
|
|
|
|
|
|
|
|
# Type
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
```
|
|
|
|
|
mkInt64 :: Int -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkInt64 = mkPrimitive type.int64;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant uint64 from the given Nix int value.
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
# Type
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkUint64 :: Int -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkUint64 = mkPrimitive type.uint64;
|
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
/**
|
|
|
|
|
Returns the GVariant double from the given Nix float value.
|
|
|
|
|
|
|
|
|
|
# Inputs
|
|
|
|
|
|
|
|
|
|
`v`
|
|
|
|
|
|
|
|
|
|
: 1\. Function argument
|
|
|
|
|
|
|
|
|
|
# Type
|
2023-06-14 08:14:23 +00:00
|
|
|
|
|
2024-05-17 09:51:33 +00:00
|
|
|
|
```
|
|
|
|
|
mkDouble :: Float -> gvariant
|
|
|
|
|
```
|
2023-06-14 08:14:23 +00:00
|
|
|
|
*/
|
|
|
|
|
mkDouble =
|
|
|
|
|
v:
|
|
|
|
|
mkPrimitive type.double v
|
|
|
|
|
// {
|
|
|
|
|
__toString = self: toString self.value;
|
|
|
|
|
};
|
|
|
|
|
}
|