binutils-gdb/gdb/testsuite/gdb.cp/userdef.cc

412 lines
6.2 KiB
C++
Raw Normal View History

/* This test script is part of GDB, the GNU debugger.
Copyright 1999-2018 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
Fix formating in copyright headers. File list found with: $ grep "along with this program" * -A 1 -rn \ | grep "*/" \ | grep -v "along with this program" \ | sed 's,-[0-9]\+-.*,,g' Tested on x86_64 Fedora 17. gdb/ 2013-06-07 Pedro Alves <palves@redhat.com> * darwin-nat.c: Fix formating in copyright header. * darwin-nat.h: Likewise. * gnu-nat.c: Likewise. * machoread.c: Likewise. gdb/testsuite/ 2013-06-07 Pedro Alves <palves@redhat.com> * gdb.ada/info_types.c: Fix formating in copyright header. * gdb.base/break-on-linker-gcd-function.cc: Likewise. * gdb.base/float.c: Likewise. * gdb.base/inferior-died.c: Likewise. * gdb.base/interp.c: Likewise. * gdb.base/jit-main.c: Likewise. * gdb.base/jit-solib.c: Likewise. * gdb.base/long_long.c: Likewise. * gdb.base/longjmp.c: Likewise. * gdb.base/nextoverexit.c: Likewise. * gdb.base/pr11022.c: Likewise. * gdb.base/prelink-lib.c: Likewise. * gdb.base/prelink.c: Likewise. * gdb.base/prologue.c: Likewise. * gdb.base/restore.c: Likewise. * gdb.base/sigchld.c: Likewise. * gdb.base/solib-search-lib1.c: Likewise. * gdb.base/solib-search-lib2.c: Likewise. * gdb.base/solib-search.c: Likewise. * gdb.base/solib-search.h: Likewise. * gdb.base/whatis.c: Likewise. * gdb.cp/abstract-origin.cc: Likewise. * gdb.cp/anon-struct.cc: Likewise. * gdb.cp/baseenum.cc: Likewise. * gdb.cp/bs15503.cc: Likewise. * gdb.cp/call-c-1.c: Likewise. * gdb.cp/call-c.cc: Likewise. * gdb.cp/class2.cc: Likewise. * gdb.cp/classes.cc: Likewise. * gdb.cp/cttiadd.cc: Likewise. * gdb.cp/cttiadd1.cc: Likewise. * gdb.cp/cttiadd2.cc: Likewise. * gdb.cp/cttiadd3.cc: Likewise. * gdb.cp/derivation.cc: Likewise. * gdb.cp/derivation2.cc: Likewise. * gdb.cp/dispcxx.cc: Likewise. * gdb.cp/exception.cc: Likewise. * gdb.cp/gdb2384-base.cc: Likewise. * gdb.cp/gdb2384-base.h: Likewise. * gdb.cp/gdb2384.cc: Likewise. * gdb.cp/gdb2495.cc: Likewise. * gdb.cp/mb-inline.h: Likewise. * gdb.cp/mb-inline1.cc: Likewise. * gdb.cp/mb-inline2.cc: Likewise. * gdb.cp/member-name.cc: Likewise. * gdb.cp/member-ptr.cc: Likewise. * gdb.cp/misc.cc: Likewise. * gdb.cp/namespace1.cc: Likewise. * gdb.cp/nextoverthrow.cc: Likewise. * gdb.cp/pr-574.cc: Likewise. * gdb.cp/pr9631.cc: Likewise. * gdb.cp/printmethod.cc: Likewise. * gdb.cp/psmang1.cc: Likewise. * gdb.cp/psmang2.cc: Likewise. * gdb.cp/psymtab-parameter.cc: Likewise. * gdb.cp/ptype-flags.cc: Likewise. * gdb.cp/ref-params.cc: Likewise. * gdb.cp/ref-types.cc: Likewise. * gdb.cp/smartp.cc: Likewise. * gdb.cp/try_catch.cc: Likewise. * gdb.cp/userdef.cc: Likewise. * gdb.cp/using-crash.cc: Likewise. * gdb.cp/virtfunc.cc: Likewise. * gdb.cp/virtfunc2.cc: Likewise. * gdb.dwarf2/callframecfa.S: Likewise. * gdb.dwarf2/dw2-ranges.c: Likewise. * gdb.dwarf2/dw2-ranges2.c: Likewise. * gdb.dwarf2/dw2-ranges3.c: Likewise. * gdb.dwarf2/dw2-restore.S: Likewise. * gdb.dwarf2/pieces.S: Likewise. * gdb.dwarf2/valop.S: Likewise. * gdb.java/jnpe.java: Likewise. * gdb.mi/mi-stepn.c: Likewise. * gdb.mi/mi-var-cp.cc: Likewise. * gdb.mi/mi-var-rtti.cc: Likewise. * gdb.mi/ns-stale-regcache.c: Likewise. * gdb.mi/pr11022.c: Likewise. * gdb.mi/solib-lib.c: Likewise. * gdb.mi/solib-main.c: Likewise. * gdb.python/py-arch.c: Likewise. * gdb.python/py-block.c: Likewise. * gdb.python/py-breakpoint.c: Likewise. * gdb.python/py-events.c: Likewise. * gdb.python/py-evthreads.c: Likewise. * gdb.python/py-explore.c: Likewise. * gdb.python/py-explore.cc: Likewise. * gdb.python/py-finish-breakpoint.c: Likewise. * gdb.python/py-finish-breakpoint2.cc: Likewise. * gdb.python/py-symbol.c: Likewise. * gdb.threads/execl.c: Likewise. * gdb.threads/execl1.c: Likewise.
2013-06-07 16:39:33 +02:00
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <iostream>
using namespace std;
void marker1()
{
return;
}
class A1 {
int x;
int y;
friend ostream& operator<<(ostream& outs, A1 one);
public:
A1(int a, int b)
{
x=a;
y=b;
}
A1 operator+=(int value);
A1 operator+(const A1&);
A1 operator-(const A1&);
A1 operator%(const A1&);
int operator==(const A1&);
int operator!=(const A1&);
int operator&&(const A1&);
int operator||(const A1&);
A1 operator<<(int);
A1 operator>>(int);
A1 operator|(const A1&);
A1 operator^(const A1&);
A1 operator&(const A1&);
int operator<(const A1&);
int operator<=(const A1&);
int operator>=(const A1&);
int operator>(const A1&);
A1 operator*(const A1&);
A1 operator/(const A1&);
A1 operator=(const A1&);
A1 operator~();
A1 operator+();
A1 operator-();
int operator!();
A1 operator++();
A1 operator++(int);
A1 operator--();
A1 operator--(int);
};
A1 A1::operator+(const A1& second)
{
A1 sum(0,0);
sum.x = x + second.x;
sum.y = y + second.y;
return (sum);
}
A1 A1::operator*(const A1& second)
{
A1 product(0,0);
product.x = this->x * second.x;
product.y = this->y * second.y;
return product;
}
A1 A1::operator-(const A1& second)
{
A1 diff(0,0);
diff.x = x - second.x;
diff.y = y - second.y;
return diff;
}
A1 A1::operator/(const A1& second)
{
A1 div(0,0);
div.x = x / second.x;
div.y = y / second.y;
return div;
}
A1 A1::operator%(const A1& second)
{
A1 rem(0,0);
rem.x = x % second.x;
rem.y = y % second.y;
return rem;
}
int A1::operator==(const A1& second)
{
int a = (x == second.x);
int b = (y == second.y);
return (a && b);
}
int A1::operator!=(const A1& second)
{
int a = (x != second.x);
int b = (y != second.y);
return (a || b);
}
int A1::operator&&(const A1& second)
{
return ( x && second.x);
}
int A1::operator||(const A1& second)
{
return ( x || second.x);
}
A1 A1::operator<<(int value)
{
A1 lshft(0,0);
lshft.x = x << value;
lshft.y = y << value;
return lshft;
}
A1 A1::operator>>(int value)
{
A1 rshft(0,0);
rshft.x = x >> value;
rshft.y = y >> value;
return rshft;
}
A1 A1::operator|(const A1& second)
{
A1 abitor(0,0);
abitor.x = x | second.x;
abitor.y = y | second.y;
return abitor;
}
A1 A1::operator^(const A1& second)
{
A1 axor(0,0);
axor.x = x ^ second.x;
axor.y = y ^ second.y;
return axor;
}
A1 A1::operator&(const A1& second)
{
A1 abitand(0,0);
abitand.x = x & second.x;
abitand.y = y & second.y;
return abitand;
}
int A1::operator<(const A1& second)
{
A1 b(0,0);
b.x = 3;
return (x < second.x);
}
int A1::operator<=(const A1& second)
{
return (x <= second.x);
}
int A1::operator>=(const A1& second)
{
return (x >= second.x);
}
int A1::operator>(const A1& second)
{
return (x > second.x);
}
int A1::operator!(void)
{
return (!x);
}
A1 A1::operator-(void)
{
A1 neg(0,0);
neg.x = -x;
neg.y = -y;
return (neg);
}
A1 A1::operator+(void)
{
A1 pos(0,0);
pos.x = +x;
pos.y = +y;
return (pos);
}
A1 A1::operator~(void)
{
A1 acompl(0,0);
acompl.x = ~x;
acompl.y = ~y;
return (acompl);
}
A1 A1::operator++() // pre increment
{
x = x +1;
return (*this);
}
A1 A1::operator++(int) // post increment
{
y = y +1;
return (*this);
}
A1 A1::operator--() // pre decrement
{
x = x -1;
return (*this);
}
A1 A1::operator--(int) // post decrement
{
y = y -1;
return (*this);
}
A1 A1::operator=(const A1& second)
{
x = second.x;
y = second.y;
return (*this);
}
A1 A1::operator+=(int value)
{
x += value;
y += value;
return (*this);
}
ostream& operator<<(ostream& outs, A1 one)
{
return (outs << endl << "x = " << one.x << endl << "y = " << one.y << endl << "-------" << endl);
}
class A2 {
public:
A2 operator+();
};
A2 A2::operator+()
{
return A2 ();
}
class Member
{
public:
int z;
};
bool operator== (const Member &m1, const Member &m2)
{
return m1.z == m2.z;
}
class Container
{
public:
Member m;
Member& operator* ();
};
Member& Container::operator* ()
{
return this->m;
}
int main (void)
{
A1 one(2,3);
A1 two(4,5);
A1 three(0,0);
Container c;
Member mem1, mem2;
int val;
mem1.z = 5;
mem2.z = 7;
marker1(); // marker1-returns-here
cout << one; // marker1-returns-here
cout << two;
three = one + two;
cout << "+ " << three;
three = one - two;
cout << "- " << three;
three = one * two;
cout <<"* " << three;
three = one / two;
cout << "/ " << three;
three = one % two;
cout << "% " << three;
three = one | two;
cout << "| " <<three;
three = one ^ two;
cout << "^ " <<three;
three = one & two;
cout << "& "<< three;
val = one && two;
cout << "&& " << val << endl << "-----"<<endl;
val = one || two;
cout << "|| " << val << endl << "-----"<<endl;
val = one == two;
cout << " == " << val << endl << "-----"<<endl;
val = one != two;
cout << "!= " << val << endl << "-----"<<endl;
val = one >= two;
cout << ">= " << val << endl << "-----"<<endl;
val = one <= two;
cout << "<= " << val << endl << "-----"<<endl;
val = one < two;
cout << "< " << val << endl << "-----"<<endl;
val = one > two;
cout << "> " << val << endl << "-----"<<endl;
three = one << 2;
cout << "lsh " << three;
three = one >> 2;
cout << "rsh " << three;
three = one;
cout << " = "<< three;
three += 5;
cout << " += "<< three;
val = (!one);
cout << "! " << val << endl << "-----"<<endl;
three = (+one);
cout << "+ " << three;
three = (-one);
cout << "- " << three;
three = (~one);
cout << " ~" << three;
three++;
cout << "postinc " << three;
three--;
cout << "postdec " << three;
--three;
cout << "predec " << three;
++three;
cout << "preinc " << three;
(*c).z = 1;
return 0;
}