all: change optional to result of io (#16075)

This commit is contained in:
yuyi 2022-10-16 14:28:57 +08:00 committed by GitHub
parent 6e46933c55
commit f6844e9766
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
187 changed files with 1885 additions and 1874 deletions

View file

@ -6,7 +6,7 @@ import sim.anim
import sim.args as simargs
fn main() {
args := simargs.parse_args(extra_workers: 1)? as simargs.ParallelArgs
args := simargs.parse_args(extra_workers: 1)! as simargs.ParallelArgs
mut app := anim.new_app(args)
mut workers := []thread{cap: args.workers}
@ -27,7 +27,7 @@ fn main() {
workers << go sim.sim_worker(id, app.request_chan, [app.result_chan])
}
handle_request := fn [app] (request &sim.SimRequest) ? {
handle_request := fn [app] (request &sim.SimRequest) ! {
app.request_chan <- request
}

View file

@ -7,11 +7,11 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args(extra_workers: 2)? as simargs.ParallelArgs
args := simargs.parse_args(extra_workers: 2)! as simargs.ParallelArgs
img_settings := img.image_settings_from_grid(args.grid)
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)?
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)!
mut app := anim.new_app(args)
mut workers := []thread{cap: args.workers + 1}
@ -41,7 +41,7 @@ fn main() {
workers << go sim.sim_worker(id, app.request_chan, [app.result_chan, img_result_chan])
}
handle_request := fn [app] (request &sim.SimRequest) ? {
handle_request := fn [app] (request &sim.SimRequest) ! {
app.request_chan <- request
}

View file

@ -31,21 +31,21 @@ pub:
pub type SimArgs = ParallelArgs | SequentialArgs
pub fn parse_args(config ParserSettings) ?SimArgs {
pub fn parse_args(config ParserSettings) !SimArgs {
if config.sequential {
args := parse_sequential_args()?
args := parse_sequential_args()!
return SimArgs(args)
} else {
args := parse_parallel_args(config.extra_workers)?
args := parse_parallel_args(config.extra_workers)!
return SimArgs(args)
}
}
fn parse_sequential_args() ?SequentialArgs {
fn parse_sequential_args() !SequentialArgs {
mut fp := flag.new_flag_parser(os.args)
fp.application('vps')
fp.version('v0.1.0')
fp.limit_free_args(0, 0)?
fp.limit_free_args(0, 0)!
fp.description('This is a pendulum simulation written in pure V')
fp.skip_executable()
@ -64,7 +64,7 @@ fn parse_sequential_args() ?SequentialArgs {
fp.finalize() or {
println(fp.usage())
return none
return error('none')
}
params := sim.sim_params(
@ -92,11 +92,11 @@ fn parse_sequential_args() ?SequentialArgs {
return args
}
fn parse_parallel_args(extra_workers int) ?ParallelArgs {
fn parse_parallel_args(extra_workers int) !ParallelArgs {
mut fp := flag.new_flag_parser(os.args)
fp.application('vps')
fp.version('v0.1.0')
fp.limit_free_args(0, 0)?
fp.limit_free_args(0, 0)!
fp.description('This is a pendulum simulation written in pure V')
fp.skip_executable()
@ -117,7 +117,7 @@ fn parse_parallel_args(extra_workers int) ?ParallelArgs {
fp.finalize() or {
println(fp.usage())
return none
return error('none')
}
params := sim.sim_params(

View file

@ -39,34 +39,34 @@ mut:
cache_size int
}
pub fn ppm_writer_for_fname(fname string, settings ImageSettings) ?&PPMWriter {
pub fn ppm_writer_for_fname(fname string, settings ImageSettings) !&PPMWriter {
mut writer := &PPMWriter{
cache_size: settings.cache_size
cache: []u8{cap: settings.cache_size}
}
writer.start_for_file(fname, settings)?
writer.start_for_file(fname, settings)!
return writer
}
pub fn (mut writer PPMWriter) start_for_file(fname string, settings ImageSettings) ? {
writer.file = os.create(fname)?
writer.file.writeln('P6 $settings.width $settings.height 255')?
pub fn (mut writer PPMWriter) start_for_file(fname string, settings ImageSettings) ! {
writer.file = os.create(fname)!
writer.file.writeln('P6 $settings.width $settings.height 255')!
}
pub fn (mut writer PPMWriter) handle_pixel(p gx.Color) ? {
pub fn (mut writer PPMWriter) handle_pixel(p gx.Color) ! {
if writer.cache.len >= writer.cache_size {
writer.write()?
writer.flush()?
writer.write()!
writer.flush()!
}
writer.cache << [p.r, p.g, p.b]
}
pub fn (mut writer PPMWriter) flush() ? {
pub fn (mut writer PPMWriter) flush() ! {
writer.cache.clear()
}
pub fn (mut writer PPMWriter) write() ? {
writer.file.write(writer.cache)?
pub fn (mut writer PPMWriter) write() ! {
writer.file.write(writer.cache)!
}
pub fn (mut writer PPMWriter) close() {

View file

@ -29,7 +29,7 @@ pub fn new_image_writer(mut writer PPMWriter, settings ImageSettings) &ImageWrit
}
}
pub fn (mut iw ImageWritter) handle(result sim.SimResult) ?int {
pub fn (mut iw ImageWritter) handle(result sim.SimResult) !int {
total_pixels := iw.settings.width * iw.settings.height
// find the closest magnet
@ -46,7 +46,7 @@ pub fn (mut iw ImageWritter) handle(result sim.SimResult) ?int {
if iw.current_index == total_pixels {
iw.writer.write() or { panic('Could not write image') }
return none
return error('none')
}
return iw.current_index

View file

@ -3,11 +3,11 @@ module sim
import benchmark
import term
pub type SimRequestHandler = fn (request &SimRequest) ?
pub type SimRequestHandler = fn (request &SimRequest) !
pub type SimStartHandler = fn () ?
pub type SimStartHandler = fn () !
pub type SimFinishHandler = fn () ?
pub type SimFinishHandler = fn () !
pub const (
default_width = 600

View file

@ -6,7 +6,7 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args()? as simargs.ParallelArgs
args := simargs.parse_args()! as simargs.ParallelArgs
img_settings := img.image_settings_from_grid(args.grid)
@ -17,7 +17,7 @@ fn main() {
request_chan := chan &sim.SimRequest{cap: args.workers}
result_chan := chan &sim.SimResult{cap: args.workers}
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)?
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)!
mut image_writer := img.new_image_writer(mut writer, img_settings)
mut workers := []thread{cap: args.workers}

View file

@ -6,14 +6,14 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args(extra_workers: 1)? as simargs.ParallelArgs
args := simargs.parse_args(extra_workers: 1)! as simargs.ParallelArgs
img_settings := img.image_settings_from_grid(args.grid)
request_chan := chan &sim.SimRequest{cap: args.workers}
result_chan := chan &sim.SimResult{cap: args.workers}
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)?
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)!
mut workers := []thread{cap: args.workers + 1}
mut bmark := benchmark.start()
@ -39,7 +39,7 @@ fn main() {
workers << go img.image_worker(mut writer, result_chan, img_settings)
handle_request := fn [request_chan] (request &sim.SimRequest) ? {
handle_request := fn [request_chan] (request &sim.SimRequest) ! {
request_chan <- request
}

View file

@ -6,19 +6,19 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args(sequential: true)? as simargs.SequentialArgs
args := simargs.parse_args(sequential: true)! as simargs.SequentialArgs
mut bmark := benchmark.start()
defer {
bmark.measure(@FN)
}
mut writer := img.ppm_writer_for_fname(args.filename, img.image_settings_from_grid(args.grid))?
mut writer := img.ppm_writer_for_fname(args.filename, img.image_settings_from_grid(args.grid))!
defer {
writer.close()
}
handle_request := fn [mut writer] (request &sim.SimRequest) ? {
handle_request := fn [mut writer] (request &sim.SimRequest) ! {
result := sim.compute_result(request)
pixel := img.compute_pixel(result)
return writer.handle_pixel(pixel)
@ -26,5 +26,5 @@ fn main() {
sim.run(args.params, grid: args.grid, on_request: sim.SimRequestHandler(handle_request))
writer.write()?
writer.write()!
}