Advertisement
Guest User

Untitled

a guest
Sep 21st, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. fn range(comptime N: type) type {
  2.     return struct {
  3.         start: N,
  4.         stepsz: N,
  5.         end: N,
  6.  
  7.         fn init(start_: N, stepsz_: N, end_: N) @This() {
  8.             return @This() {
  9.                 .start = start_,
  10.                 .stepsz = stepsz_,
  11.                 .end = end_
  12.             };
  13.         }
  14.  
  15.         fn next(self: *@This()) ?N {
  16.             if (self.start + self.stepsz <= self.end) {
  17.                 var ret = self.start;
  18.                 self.start += self.stepsz;
  19.                 return ret;
  20.             }
  21.             return null;
  22.         }
  23.  
  24.         fn size(self: *@This()) N {
  25.             return (self.end - self.start) / self.stepsz;
  26.         }
  27.     };
  28. }
  29.  
  30. pub fn main() void {
  31.     var sum: usize = 0;
  32.     comptime var r = comptime range(usize).init(0, 10, 100);
  33.    
  34.     comptime var buff: [comptime r.size()] usize = undefined;
  35.    
  36.     comptime {
  37.         for (buff) |*elem| {
  38.             elem.* = r.next() orelse unreachable;
  39.         }
  40.     }
  41.    
  42.     for(buff) |elem| {
  43.         @import("std").debug.warn("elem: {}\n", elem);
  44.     }
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement