Thread Tools Display Modes
04/16/14, 03:04 PM   #1
BadVolt
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 74
Saving cyclic table

Hi guys. Well, I met huge problem, which I can't resolve on my own.

We have a cyclic table, one of key is linking to self.
I'm trying to copy it to another table, clean it from cyclic links and save as variables. After loading i'm restoring cyclic table links.

Here's my code for copying several layers of tables.
Lua Code:
  1. -- dump data (уровень 1)
  2.         for k1,v1 in pairs(ZO_GuildBankBackpack.data) do
  3.             sv.data[k1]={}
  4.             sv.data[k1]=v1
  5.  
  6.             -- dump data.k1.data (уровень 2)
  7.             for k2,v2 in pairs(ZO_GuildBankBackpack.data[k1].data) do
  8.                 sv.data[k1].data[k2]=v2
  9.  
  10.                 -- dump data.k1.data.k2.dataEntry (уровень 3)
  11.                 for k3,v3 in pairs(ZO_GuildBankBackpack.data[k1].data.dataEntry) do
  12.                     sv.data[k1].data.dataEntry[k3]=v3
  13.                 end
  14.  
  15.                 -- dump data.k1.data.k2.filterData (уровень 3)
  16.                 for k3,v3 in pairs(ZO_GuildBankBackpack.data[k1].data.filterData) do
  17.                     sv.data[k1].data.filterData[k3]=v3
  18.                 end
  19.  
  20.                 -- dump data.k1.data.k2.inventory (уровень 3)
  21.                 for k3,v3 in pairs(ZO_GuildBankBackpack.data[k1].data.inventory) do
  22.                     sv.data[k1].data.inventory[k3]=v3
  23.  
  24.                     -- dump data.k1.data.k2.inventory.filterBarData (уровень 4)
  25.                     for k4,v4 in pairs(ZO_GuildBankBackpack.data[k1].data.inventory.filterBarData) do
  26.                         sv.data[k1].data.inventory.filterBarData[k4]=v4
  27.                     end
  28.  
  29.                     -- dump data.k1.data.k2.inventory.hiddenColumns (уровень 4)
  30.                     for k4,v4 in pairs(ZO_GuildBankBackpack.data[k1].data.inventory.hiddenColumns) do
  31.                         sv.data[k1].data.inventory.hiddenColumns[k4]=v4
  32.                     end
  33.  
  34.                     -- dump data.k1.data.k2.inventory.slots (уровень 4)
  35.                     for k4,v4 in pairs(ZO_GuildBankBackpack.data[k1].data.inventory.slots) do
  36.                         sv.data[k1].data.inventory.slots[k4]=v4
  37.                     end
  38.  
  39.                     -- dump data.k1.data.k2.inventory.sortHeaders (уровень 4)
  40.                     for k4,v4 in pairs(ZO_GuildBankBackpack.data[k1].data.inventory.sortHeaders) do
  41.                         sv.data[k1].data.inventory.sortHeaders[k4]=v4
  42.                     end    
  43.                                
  44.                     -- dump data.k1.data.k2.inventory.stringSearch (уровень 4)
  45.                     for k4,v4 in pairs(ZO_GuildBankBackpack.data[k1].data.inventory.stringSearch) do
  46.                         sv.data[k1].data.inventory.stringSearch[k4]=v4
  47.                     end
  48.  
  49.                     -- dump data.k1.data.k2.inventory.tabFilters (уровень 4)
  50.                     for k4,v4 in pairs(ZO_GuildBankBackpack.data[k1].data.inventory.tabFilters) do
  51.                         sv.data[k1].data.inventory.tabFilters[k4]=v4
  52.                     end                
  53.                 end
  54.  
  55.                 -- dump data.k1.data.k2.searchData (уровень 3)
  56.                 for k3,v3 in pairs(ZO_GuildBankBackpack.data[k1].data.searchData) do
  57.                     sv.data[k1].data.searchData[k3]=v3
  58.                 end
  59.  
  60.             end
  61.  
  62.             -- Убираем циклическую ссылку на data
  63.                         -- Remove cyclic data link
  64.             sv.data[k1].data.dataEntry.data={"cyclic"}
  65.  
  66.             -- Убираем циклическую ссылку на slots
  67.                         -- Remove cyclic slots link
  68.             sv.data[k1].data.inventory.slots={"cyclic"}
  69.  
  70.         end

Code works fine, but when I call "sv.data[k1].data.dataEntry.data={"cyclic"}", all my original table goes to hell, but not removing link to it. Any ideas how can it be done?
  Reply With Quote

ESOUI » Developer Discussions » Lua/XML Help » Saving cyclic table


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off