summaryrefslogtreecommitdiff
path: root/examples/resources/lib/matrix.lua
diff options
context:
space:
mode:
authorjussi2024-05-22 00:11:40 +0300
committerjussi2024-05-22 00:11:40 +0300
commitcb1bc03681dff958da6ff851cfe32dfdd83f6f8d (patch)
tree59ba256ce41cec8ac7e0d91b68baf222a9ff596a /examples/resources/lib/matrix.lua
parentc95c797da61b4b2829d542f6d7c164a88951cad4 (diff)
downloadreilua-enhanced-cb1bc03681dff958da6ff851cfe32dfdd83f6f8d.tar.gz
reilua-enhanced-cb1bc03681dff958da6ff851cfe32dfdd83f6f8d.tar.bz2
reilua-enhanced-cb1bc03681dff958da6ff851cfe32dfdd83f6f8d.zip
Object lib serialization.
Diffstat (limited to 'examples/resources/lib/matrix.lua')
-rw-r--r--examples/resources/lib/matrix.lua26
1 files changed, 24 insertions, 2 deletions
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