From 3c726808082987da44558c5fbedff2f149ae89b7 Mon Sep 17 00:00:00 2001 From: Qrakhen Date: Fri, 5 Dec 2025 08:19:09 +0100 Subject: [PATCH] adadr operator --- Qrakhen.Qamp.Core/Tokenization/Reader.cs | 4 +++- Qrakhen.Qamp.Core/Tokenization/TokenType.cs | 1 + Qrakhen.Qamp.Core/Values/Value.cs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Qrakhen.Qamp.Core/Tokenization/Reader.cs b/Qrakhen.Qamp.Core/Tokenization/Reader.cs index ba96578..9305574 100644 --- a/Qrakhen.Qamp.Core/Tokenization/Reader.cs +++ b/Qrakhen.Qamp.Core/Tokenization/Reader.cs @@ -284,7 +284,9 @@ public class Reader : IReader, IDisposable MakeToken(Colon, buffer), '&' => Check('&') ? MakeToken(And, buffer + Next()) : - MakeToken(BitwiseAnd, buffer), + Check(':') ? + MakeToken(Address, buffer + Next()) : + MakeToken(BitwiseAnd, buffer), '^' => Check('~') ? MakeToken(Base, buffer + Next()) : MakeToken(BitwiseXor, buffer), diff --git a/Qrakhen.Qamp.Core/Tokenization/TokenType.cs b/Qrakhen.Qamp.Core/Tokenization/TokenType.cs index 738824c..7554e21 100644 --- a/Qrakhen.Qamp.Core/Tokenization/TokenType.cs +++ b/Qrakhen.Qamp.Core/Tokenization/TokenType.cs @@ -47,6 +47,7 @@ public enum TokenType BitwiseNot = Operator | 9, BitwiseLeft = Operator | 10, BitwiseRight = Operator | 11, + Address = Operator | 12, // returns the address of a ptr/object as a value Assignment = 1 << 9, Equal = Assignment | 1, diff --git a/Qrakhen.Qamp.Core/Values/Value.cs b/Qrakhen.Qamp.Core/Values/Value.cs index a2a5ced..c4dc70a 100644 --- a/Qrakhen.Qamp.Core/Values/Value.cs +++ b/Qrakhen.Qamp.Core/Values/Value.cs @@ -126,7 +126,7 @@ public readonly struct Value : IValue, ISerialize, IDebug string type = Type.ToString(); if (Type.HasFlag(T.Pointer)) - type = Ptr.Value?.Type.ToString() ?? "ptr:null"; + type = $"{Ptr.Value?.Type.ToString()}@{Ptr.Address}" ?? "ptr:null"; return $"<{type}, {AsDynamic(false) ?? "null"}>"; }