Skip to content

Commit 837078f

Browse files
committed
Add back fill and unique
1 parent 4dd4bb1 commit 837078f

3 files changed

Lines changed: 64 additions & 0 deletions

File tree

‎rules/algorithm/src.cpp‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ template <typename T1> T1 f8(T1 first, T1 last) {
3131

3232
template <typename T1> void f9(T1 &a0, T1 &a1) { return std::swap(a0, a1); }
3333

34+
template <typename T1> T1 f10(T1 first, T1 last) {
35+
return std::unique(first, last);
36+
}
37+
38+
template <typename T1, typename T2>
39+
void f12(T1 first, T1 last, const T2 &value) {
40+
return std::fill(first, last, value);
41+
}
42+
3443
std::ostream_iterator<char> f13(std::string::iterator a0,
3544
std::string::iterator a1,
3645
std::ostream_iterator<char> a2) {

‎rules/algorithm/tgt_refcount.rs‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,34 @@ fn f9<T1: Clone + ByteRepr>(a0: Ptr<T1>, a1: Ptr<T1>) {
9494
a1.write(tmp);
9595
}
9696

97+
fn f10<T1: CppInputIterator<T2>, T2: PartialEq + Clone + ByteRepr>(a0: T1, a1: T1) -> T1 {
98+
if a0 == a1 {
99+
a1
100+
} else {
101+
let mut __write = a0.clone();
102+
let mut __it = a0;
103+
__it.iter_inc();
104+
while __it != a1 {
105+
let __v = __it.iter_deref().read();
106+
if __write.iter_deref().with(|__w| *__w != __v) {
107+
__write.iter_inc();
108+
__write.iter_deref().write(__v);
109+
}
110+
__it.iter_inc();
111+
}
112+
__write.iter_inc();
113+
__write
114+
}
115+
}
116+
117+
fn f12<T1: CppInputIterator<T3>, T2: Clone + Into<T3>, T3: ByteRepr>(a0: T1, a1: T1, a2: T2) {
118+
let mut __it = a0;
119+
while __it != a1 {
120+
__it.iter_deref().write(a2.clone().into());
121+
__it.iter_inc();
122+
}
123+
}
124+
97125
fn f13(a0: Ptr<i8>, a1: Ptr<i8>, a2: &mut ::std::fs::File) -> ::std::fs::File {
98126
a0.with_slice(a1.get_offset() - a0.get_offset(), |__s| {
99127
CChar::with_u8_slice(__s, |__b| a2.write_all(__b))

‎rules/algorithm/tgt_unsafe.rs‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,33 @@ unsafe fn f9<T1>(a0: &mut T1, a1: &mut T1) {
8585
std::mem::swap(&mut *a0, &mut *a1)
8686
}
8787

88+
unsafe fn f10<T1: UnsafeCppInputIterator<T2>, T2: PartialEq + Clone>(a0: T1, a1: T1) -> T1 {
89+
if a0 == a1 {
90+
a1
91+
} else {
92+
let mut __write = a0.clone();
93+
let mut __it = a0;
94+
__it.iter_inc();
95+
while __it != a1 {
96+
if *__write.iter_deref() != *__it.iter_deref() {
97+
__write.iter_inc();
98+
*__write.iter_deref() = (*__it.iter_deref()).clone();
99+
}
100+
__it.iter_inc();
101+
}
102+
__write.iter_inc();
103+
__write
104+
}
105+
}
106+
107+
unsafe fn f12<T1: UnsafeCppInputIterator<T3>, T2: Clone + Into<T3>, T3>(a0: T1, a1: T1, a2: T2) {
108+
let mut __it = a0;
109+
while __it != a1 {
110+
*__it.iter_deref() = a2.clone().into();
111+
__it.iter_inc();
112+
}
113+
}
114+
88115
unsafe fn f13(
89116
a0: *const libc::c_char,
90117
a1: *const libc::c_char,

0 commit comments

Comments
 (0)