parsav  Diff

Differences From Artifact [bff3416286]:

To Artifact [37b9ad8a8d]:


    48     48   		end
    49     49   		terra ty:pdup(p: &lib.mem.pool): strptr
    50     50   			if not @self then return strptr.null() end
    51     51   			if self.ct == 0 then self.ct = m.sz(self.ptr) end
    52     52   			var newstr = p:alloc(int8, self.ct)
    53     53   			lib.mem.cpy(newstr.ptr, self.ptr, self.ct)
    54     54   			return newstr
           55  +		end
           56  +		terra ty:pcdup(p: &lib.mem.pool): rawstring
           57  +			if not @self then return nil end
           58  +			if self.ct == 0 then self.ct = m.sz(self.ptr) end
           59  +			var newstr = p:alloc(int8, self.ct + 1)
           60  +			lib.mem.cpy(newstr.ptr, self.ptr, self.ct)
           61  +			newstr.ptr[self.ct] = 0
           62  +			return newstr.ptr
           63  +		end
           64  +		terra ty:cdup(): rawstring
           65  +			if not @self then return nil end
           66  +			if self.ct == 0 then self.ct = m.sz(self.ptr) end
           67  +			var newstr = lib.mem.heapa(int8, self.ct + 1)
           68  +			lib.mem.cpy(newstr.ptr, self.ptr, self.ct)
           69  +			newstr.ptr[self.ct] = 0
           70  +			return newstr.ptr
    55     71   		end
    56     72   		terra ty:cmp(other: ty)
    57     73   			if self.ptr == nil and other.ptr == nil then return true end
    58     74   			if self.ptr == nil or other.ptr == nil then return false end
    59     75   
    60     76   			var sz = lib.math.biggest(self.ct, other.ct)
    61     77   			for i = 0, sz do