From cb1bc03681dff958da6ff851cfe32dfdd83f6f8d Mon Sep 17 00:00:00 2001 From: jussi Date: Wed, 22 May 2024 00:11:40 +0300 Subject: Object lib serialization. --- examples/resources/lib/matrix.lua | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'examples/resources/lib/matrix.lua') diff --git a/examples/resources/lib/matrix.lua b/examples/resources/lib/matrix.lua index 1dc128f..e94cb10 100644 --- a/examples/resources/lib/matrix.lua +++ b/examples/resources/lib/matrix.lua @@ -20,7 +20,7 @@ local function copyMatrix( orig ) end local Matrix = {} -Matrix.meta = { +local metatable = { __index = Matrix, __tostring = function( m ) return "{\n" @@ -45,7 +45,7 @@ Matrix.meta = { } function Matrix:new( m ) - local object = setmetatable( {}, Matrix.meta ) + local object = setmetatable( {}, metatable ) object.m = copyMatrix( m ) @@ -56,6 +56,28 @@ function Matrix:set( m ) self.m = copyMatrix( m ) end +function Matrix:serialize() + local str = { "Matrix:new({" } + + for i, row in ipairs( self.m ) do + table.insert( str, "{" ) + + for c, v in ipairs( row ) do + table.insert( str, v ) + if c < 4 then + table.insert( str, "," ) + end + end + table.insert( str, "}" ) + if i < 4 then + table.insert( str, "," ) + end + end + table.insert( str, "})" ) + + return table.concat( str ) +end + function Matrix:clone() return Matrix:new( self.m ) end -- cgit v1.2.3