func init // adds using namespace sys.add_use('System') // initialize instance if(linked("Result")) sys.add_var(this.name, 'dynamic') end // initialize properties this.cult = sys.get_undef_manager("Provider") // initialize methods this.setfield('fname', fname) sys._do_init('GetTypeCode') sys._do_init('IsDBNull') sys._do_init('ToBoolean') sys._do_init('ToByte') sys._do_init('ToByteBase') sys._do_init('ToChar') sys._do_init('ToDateTime') sys._do_init('ToDecimal') sys._do_init('ToDouble') sys._do_init('ToShort') sys._do_init('ToShortBase') sys._do_init('ToInt') sys._do_init('ToIntBase') sys._do_init('ToLong') sys._do_init('ToLongBase') sys._do_init('ToSByte') sys._do_init('ToSByteBase') sys._do_init('ToSingle') sys._do_init('ToString') sys._do_init('ToStringBase') sys._do_init('ToUShort') sys._do_init('ToUShortBase') sys._do_init('ToUInt') sys._do_init('ToUIntBase') sys._do_init('ToULong') sys._do_init('ToULongBase') end func implement(data, f) dt = d("Value") this.typecode = this.get_typecode(f) if(linked("Result")) blk.println(this.codename, ' = ', this.make_result(dt, f), ';') event("onResult", sub(this.codename, this.typecode)) else event("onResult", sub(this.make_result(dt, f), this.typecode)) end end func make_result(dt, f) if(f == "doGetTypeCode") return('Convert.GetTypeCode(' + dt + ')') elseif(f == "doIsDBNull") return('Convert.IsDBNull(' + dt + ')') elseif(f == "doToBoolean") return('Convert.ToBoolean(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToByte") return('Convert.ToByte(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToByteBase") return('Convert.ToByte(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToChar") return('Convert.ToChar(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToDateTime") return('Convert.ToDateTime(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToDecimal") return('Convert.ToDecimal(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToDouble") return('Convert.ToDouble(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToShort") return('Convert.ToInt16(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToShortBase") return('Convert.ToInt16(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToInt") return('Convert.ToInt32(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToIntBase") return('Convert.ToInt32(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToLong") return('Convert.ToInt64(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToLongBase") return('Convert.ToInt64(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToSByte") return('Convert.ToSByte(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToSByteBase") return('Convert.ToSByte(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToSingle") return('Convert.ToSingle(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToString") return('Convert.ToString(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToStringBase") return('Convert.ToString(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToUShort") return('Convert.ToUInt16(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToUShortBase") return('Convert.ToUInt16(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToUInt") return('Convert.ToUInt32(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToUIntBase") return('Convert.ToUInt32(' + dt + ', ' + this.props("Base").value + ')') elseif(f == "doToULong") return('Convert.ToUInt64(' + dt + (isdef("Provider") ? '' : (', ' + this.cult)) + ')') elseif(f == "doToULongBase") return('Convert.ToUInt64(' + dt + ', ' + this.props("Base").value + ')') end end func DBNull return('Convert.DBNull') end func Result return(this.codename) end func get_typecode(f) arr = regex_search(f, 'doTo(\\w+?)(Base|$)') if(arr.size()) return(sys.type_code(arr.get(1))) end return(0) end