multidataLibrary   "multidata" 
A library for multi-dimensional data arrays.
Full documentation:  faiyaz7283.github.io 
This library is designed to enhance data storage capabilities in Pine Script, enabling users to work with two separate data structures:  data2d  (key -> main-value | alternate-value) and  data3d  (primary key -> data key-> main-value | alternate-value). These structures facilitate storing key-value pairs in a flexible and efficient manner, offering various methods for manipulation and retrieval of data. Please check out the full documentation at  faiyaz7283.github.io . 
Storage
store - larger data storage for complex item typesLibrary   "store" 
Object/Property Storage System Semi-Simplified. .
It's a helpful toolset while designing UDT's as it remains flexible,
this helps in not having to remap an entire  script while tinkering.
Set an object up, and add as man properties as yyou wish.
a property can be one of any pine built in types. so a single 
object can contain sa, ohlc each with a color, a float, an assigned int
and those 4 props each have 3 sub-assigned values.
as in demo, the alternating table object has 2 different tables
it's a pseudo more complex wa to create our own flexible
version of a UDT, but that will not ~break~ on library updates
so you can update awa without fear, as this libb will no change
saving ou the hassle of creating UDT's that continually change.
 set(dict, _object, _prop, _item) 
  Add/Updates item to storage. Autoselects subclass dictionary on set
  Parameters:
     dict : (dictionary) dict.type subdictionary (req for overload)
     _object : (string)     object name
     _prop 
     _item : ()       item to set
  Returns: item item wwith column/row
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _object, _prop, _item) 
  Parameters:
     dict 
     _object 
     _prop 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 set(dict, _index, _item) 
  Parameters:
     dict 
     _index 
     _item 
 get(typedict, _object, _prop) 
  Get item by object name and property (string)
  Parameters:
     typedict : (dict) dict.type subdictionary (req for overload)
     _object : (string)    object name
     _prop 
  Returns:  item from storage
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 get(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _object, _prop) 
  Remove a specific property from an object
  Parameters:
     typedict : (dict) dict.type subdictionary (req for overload)
     _object : (string)    object name
     _prop 
  Returns:  item from storage
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _object, _prop) 
  Parameters:
     typedict 
     _object 
     _prop 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 remove(typedict, _index) 
  Parameters:
     typedict 
     _index 
 delete(_dict, _object) 
  Remove a complete Object and all props
  Parameters:
     _dict 
     _object : (string)    object name
  Returns:  item from storage
 delete(_dict, _index) 
  Parameters:
     _dict 
     _index 
 wipe(_dict, _object, _prop) 
  Remove Property slot for all 10 item types
  Parameters:
     _dict : (dictionary) The full dictionary item
     _object : (string)    object name
     _prop 
  Returns:  item from storage
 wipe(_dict, _index) 
  Parameters:
     _dict 
     _index 
 init(_Objlim, _Proplim) 
  Create New Dictionary ready to use (9999 size limit - (_objlim +_Proplim) for row/column 0)
# Full dictionary with all types
> start with this
  Parameters:
     _Objlim : (int) maximum objects (think horizontal)
     _Proplim : (int) maximum properties per obj (vertical)
  Returns: dictionary typoe object
 boxdict 
  Fields:
     keys 
     items 
 booldict 
  Fields:
     keys 
     items 
 colordict 
  Fields:
     keys 
     items 
 floatdict 
  Fields:
     keys 
     items 
 intdict 
  Fields:
     keys 
     items 
 labeldict 
  Fields:
     keys 
     items 
 linedict 
  Fields:
     keys 
     items 
 linefilldict 
  Fields:
     keys 
     items 
 stringdict 
  Fields:
     keys 
     items 
 tabledict 
  Fields:
     keys 
     items 
 dictionary 
  Fields:
     boxs 
     bools 
     colors 
     floats 
     ints 
     labels 
     lines 
     linefills 
     strings 
     tables 
     keys 
 item 
  Fields:
     objCol 
     propRow 
     object 
     property 
     actionItem 
 dictionaries 
  Dictionar OF dictionaries
  Fields:
     dicts
MiteTricksLibrary "MiteTricks"
Matrix Global Registry.
Get, Set, automatic growing, universal get/set,
multi-matrix dictionaries, multi-dictionary matrixes..
add slice matrixes of any type, share one common global key registry
pull up an item from a category, and item name ie a table of info.
same cell needs a color, a size, a string, a value, etc..
all of which can be pulled up with the same group id, and key id.
just swap which matrix you pull the value from.
this has a side benefit of non-repainting and recalculating
when pulling values, changing inputs..
makes for very fast/clean usage..
benefit :
floats = value
strings = names
lines = drawn items
table =table of data items for this key
colors = color for line/table/fill,label..
all of those can be pulled with "get(_VALUES,_groupIDX,_keyIDX)" where only the values matrix needs be swapped, and the same item/coordinates remains for all the possible matrixes that item appears in.
also useful as a dictionary/registry for any given type of item,,
and goes very handy with floats/strings/colors/bools with my matrixautotable
very helpful when prototyping or doing development work as a shortcut.
initRegistry()
  Registry inititalizer
  Returns: registry of string matrix type
newbool(optional, optional, optional)
  create bool type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is bool (na)
  Returns: bool matrix of specified size and fill, or blank 2x2 for registry use
newbox(optional, optional, optional)
  create box type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is box (na)
  Returns: box matrix of specified size and fill, or blank 2x2 for registry use
newcolor(optional, optional, optional)
  create color type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is color (na)
  Returns: color matrix of specified size and fill, or blank 2x2 for registry use
newfloat(optional, optional, optional)
  create float type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is float (na)
  Returns: float matrix of specified size and fill, or blank 2x2 for registry use
newint(optional, optional, optional)
  create int type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is int (na)
  Returns: int matrix of specified size and fill, or blank 2x2 for registry use
newlabel(optional, optional, optional)
  create label type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is label (na)
  Returns: label matrix of specified size and fill, or blank 2x2 for registry use
newline(optional, optional, optional)
  create line type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is line (na)
  Returns: line matrix of specified size and fill, or blank 2x2 for registry use
newlinefill(optional, optional, optional)
  create linefill type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is linefill(na)
  Returns: linefill matrix of specified size and fill, or blank 2x2 for registry use
newstring(optional, optional, optional)
  create string type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is string (na)
  Returns: string matrix of specified size and fill, or blank 2x2 for registry use
newtable(optional, optional, optional)
  create table type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is table (na)
  Returns: table matrix of specified size and fill, or blank 2x2 for registry use
newfrom(INIT_FILL)
  newfrom Matrix full of item input
  Parameters:
    INIT_FILL: item to fill (2x2) the matri and set type. a type(na) works
addrow(m, v)
  addrow Add new row to matrix
  Parameters:
    m: matrix of type being added to
    v: value of type being added to ( best leave NA on string for registry purposes)
addcolumn(matrix, value)
  addcolumn
  Parameters:
    matrix: of type being added to
    value: of type being added to ( best leave NA on string for registry purposes)
get(_VALS, _KEYREG, _GROUP, _KEY)
  get Grabs value and returns single item
  Parameters:
    _VALS: Matrix Values slice
    _KEYREG: Registry values matrix (strings)
    _GROUP: name of group/category or int group key
    _KEY: name of item to fetch from value registry or int key id
  Returns: item 
get(_VALS, _GROUP, _KEY)
  get Grabs value and returns single item
  Parameters:
    _VALS: Matrix Values slice
    _GROUP: name of group/category
    _KEY: name of item to fetch from value registry
getgid(_KEYREG, _GROUP)
  getgid
  Parameters:
    _KEYREG: Reg to pull group id from
    _GROUP: group index int, or string name to get the other missing type
getkid(_KEYREG, _GROUP, _KEY)
  getkid
  Parameters:
    _KEYREG: Reg to pull Key id from
    _GROUP: group index int, or string name
    _KEY: index of string key id to get it's ID int
getkey(_KEYREG, _GROUP, _KEY)
  getkey
  Parameters:
    _KEYREG: Reg to pull Key id from
    _GROUP: group index int, or string name for getting key string
    _KEY: index of string key id to get it's match of other type
set(_VALS, _KEYREG, _GROUP, _KEY, _value)
  set items to reg and matrix container
  Parameters:
    _VALS: Values matrix container
    _KEYREG: Key registry
    _GROUP: (string) Group/Category name
    _KEY: (string) Key for item
    _value: item
  Returns: void
del(_VALS, _KEYREG, _GROUP, _KEY)
  del grroup id
  Parameters:
    _VALS: Matrix Values slice
    _KEYREG: Registry values matrix (strings)
    _GROUP: name of group/category
    _KEY: name of item to Delete from values and key
detached(_GROUP, _KEY, _VALUE)
  detached make detached registry/val matrix
  Parameters:
    _GROUP: Name of first group
    _KEY: Name of first item
    _VALUE: Item of any type, sets the output type too.
 


