func init // defines type this.type = sys.get_manager_prop('Indexer', 'Type') this.typecode = sys.type_code(this.type) // defines types this.types = sys.get_manager_prop('Indexer', 'Types') end func doGetIndexer(data) dt = 'this[' + this.make_indexes(data) + ']' event("onGetValue", sub(dt, this.typecode)) end func doSetIndexer(data) blk.println('this[', this.make_indexes(data), '] = ', sys.to_type(data, this.typecode), ';') end func doReadIndexer(data) dt = this.get_namespace() + '[' + this.make_indexes(data) + ']' event("onReadValue", sub(dt, this.typecode)) end func doWriteIndexer(data) blk.println(this.get_namespace(), '[', this.make_indexes(data), '] = ', sys.to_type(data, this.typecode), ';') end func make_indexes(data) params = '' if(this.numdatas) params = sys.to_type(d(this.pt_data(0).name), sys.type_code(this.types.get(0))) for(n = 1; n < this.numdatas; n++) params = params + ', ' + sys.to_type(d(this.pt_data(n).name), sys.type_code(this.types.get(n))) end end return(code(params)) end func get_namespace() el = this.parent.get_parent_sdk() if(isdef("Namespace")) tMode = sys.get_manager_prop('Indexer', 'TypeModifier') if(tMode _and_ 8) namespace = code(el.cName) else namespace = code(el.instance) end else namespace = code(el.cName) + '.' + this.props("Namespace").value.instance end return(namespace) end