Skip to content

Commit 4e8fc7c

Browse files
committed
Move make and scons in
1 parent 48c3e8a commit 4e8fc7c

File tree

135 files changed

+2125
-20
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+2125
-20
lines changed

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Build Status](https://travis-ci.org/cirosantilli/cpp-cheat.svg?branch=master)](https://travis-ci.org/cirosantilli/cpp-cheat)
44

5-
C and C++ minimal examples. Asserts used wherever possible. Hello worlds for cool third party libraries. Cheatsheets, tutorials and mini-projects.
5+
C and C++ minimal examples. Asserts used wherever possible. Hello worlds for cool third party libraries and build systems. Cheatsheets, tutorials and mini-projects.
66

77
[Assembly Cheat](https://github.com/cirosantilli/assembly-cheat) contains lower level issues, like assembly, ELF and Binutils.
88

@@ -22,7 +22,9 @@ C and C++ minimal examples. Asserts used wherever possible. Hello worlds for coo
2222
1. [Fortran from C](fortran-from-c/)
2323
1. [SWIG](swig/)
2424
1. [Build systems](build-systems.md)
25+
1. [make](make/)
2526
1. [CMake](cmake/)
27+
1. [SCons](scons/)
2628
1. Analysis tools
2729
1. [GDB](gdb/)
2830
1. [cflow](cflow.md)

cpp/class.cpp

+9-17
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66

77
#include "common.hpp"
8-
#include "no_base_no_member.hpp"
98

109
class Empty {};
1110

@@ -1245,8 +1244,7 @@ int main() {
12451244
MemberConstructorTest o;
12461245
}
12471246

1248-
std::vector<std::string> expectedCallStack =
1249-
{
1247+
std::vector<std::string> expectedCallStack{
12501248
"NoBaseNoMember0::NoBaseNoMember0()",
12511249
"NoBaseNoMember1::NoBaseNoMember1()",
12521250
"MemberConstructorTest::MemberConstructorTest()",
@@ -1285,12 +1283,9 @@ int main() {
12851283
*/
12861284
{
12871285
callStack.clear();
1288-
1289-
NoBaseNoMember c; //1 constructor
1290-
c = NoBaseNoMember(); //1 constructor of the temporary, 1 assign, 1 destructor of the temporary
1291-
1292-
std::vector<std::string> expectedCallStack =
1293-
{
1286+
NoBaseNoMember c; // 1 constructor
1287+
c = NoBaseNoMember(); // 1 constructor of the temporary, 1 assign, 1 destructor of the temporary
1288+
std::vector<std::string> expectedCallStack{
12941289
"NoBaseNoMember::NoBaseNoMember()",
12951290
"NoBaseNoMember::NoBaseNoMember()",
12961291
"NoBaseNoMember::operator=",
@@ -1308,8 +1303,7 @@ int main() {
13081303
{
13091304
callStack.clear();
13101305
NoBaseNoMember().method();
1311-
std::vector<std::string> expectedCallStack =
1312-
{
1306+
std::vector<std::string> expectedCallStack{
13131307
"NoBaseNoMember::NoBaseNoMember()",
13141308
"NoBaseNoMember::method()",
13151309
"NoBaseNoMember::~NoBaseNoMember()",
@@ -1364,7 +1358,7 @@ int main() {
13641358
- <http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three>
13651359
*/
13661360
{
1367-
//every class has a default copy operator and assign constructor
1361+
// Every class has a default copy operator and assign constructor.
13681362
{
13691363
DefaultCopyAssignCtor c0(0);
13701364
DefaultCopyAssignCtor c1(1);
@@ -1391,8 +1385,7 @@ int main() {
13911385
{
13921386
callStack.clear();
13931387
NoBaseNoMember c1(c);
1394-
std::vector<std::string> expectedCallStack =
1395-
{
1388+
std::vector<std::string> expectedCallStack{
13961389
"NoBaseNoMember::NoBaseNoMember(NoBaseNoMember)",
13971390
};
13981391
assert(callStack == expectedCallStack);
@@ -1410,8 +1403,7 @@ int main() {
14101403
{
14111404
callStack.clear();
14121405
NoBaseNoMember c1 = c;
1413-
std::vector<std::string> expectedCallStack =
1414-
{
1406+
std::vector<std::string> expectedCallStack{
14151407
"NoBaseNoMember::NoBaseNoMember(NoBaseNoMember)",
14161408
};
14171409
assert(callStack == expectedCallStack);
@@ -1507,7 +1499,7 @@ int main() {
15071499
- All input and output operations occur in the same order and with the same content
15081500
as if the program was executed as written.
15091501
1510-
The only exception to the ruls is copy elision.
1502+
The only exception to the rule is copy elision.
15111503
*/
15121504

15131505
/*

cpp/common.hpp

+75
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,78 @@ const int NUM_OPS = NUM_THREADS * NUM_ITERS;
9696

9797
// Misc.
9898
bool odd(int i){ return (i % 2) == 1; }
99+
100+
/**
101+
* Simple instrumented class for tests on constructor destructor order.
102+
*
103+
* This class has no members which are objects and no base classes.
104+
*
105+
* TODO break this class up.
106+
* */
107+
class NoBaseNoMember {
108+
public:
109+
110+
int i;
111+
112+
/// Default constructor
113+
NoBaseNoMember() : i(0) {
114+
callStack.push_back("NoBaseNoMember::NoBaseNoMember()");
115+
}
116+
117+
/// Copy constructor
118+
NoBaseNoMember(const NoBaseNoMember& other) : i(other.i) {
119+
callStack.push_back("NoBaseNoMember::NoBaseNoMember(NoBaseNoMember)");
120+
}
121+
122+
NoBaseNoMember(int i) : i(i) {callStack.push_back("NoBaseNoMember::NoBaseNoMember(int)");}
123+
124+
/// Assign
125+
NoBaseNoMember& operator= (const NoBaseNoMember& rhs) {
126+
this->i = rhs.i;
127+
callStack.push_back("NoBaseNoMember::operator=");
128+
return *this;
129+
}
130+
131+
/// Destructor
132+
~NoBaseNoMember() { callStack.push_back("NoBaseNoMember::~NoBaseNoMember()"); }
133+
134+
void method() { callStack.push_back("NoBaseNoMember::method()"); }
135+
136+
static NoBaseNoMember create() {
137+
return NoBaseNoMember();
138+
}
139+
140+
static NoBaseNoMember createNrvo() {
141+
NoBaseNoMember c;
142+
return c;
143+
}
144+
145+
/// It would be hard or impossible to do RVO for this function.
146+
static NoBaseNoMember createNrvoHard(bool b = false) {
147+
//2 int constructors
148+
NoBaseNoMember cf = NoBaseNoMember(0);
149+
NoBaseNoMember ct = NoBaseNoMember(1);
150+
return b ? ct : cf;
151+
//2 int destructors
152+
}
153+
154+
static void temporaryReference(NoBaseNoMember& temp) {
155+
temp.i = 0;
156+
}
157+
158+
static void temporaryReferenceConst(const NoBaseNoMember& temp) {}
159+
};
160+
161+
class NoBaseNoMember0 {
162+
public:
163+
NoBaseNoMember0(){callStack.push_back("NoBaseNoMember0::NoBaseNoMember0()");}
164+
~NoBaseNoMember0(){callStack.push_back("NoBaseNoMember0::~NoBaseNoMember0()");}
165+
void method(){callStack.push_back("NoBaseNoMember0::method()");}
166+
};
167+
168+
class NoBaseNoMember1 {
169+
public:
170+
NoBaseNoMember1(){callStack.push_back("NoBaseNoMember1::NoBaseNoMember1()");}
171+
~NoBaseNoMember1(){callStack.push_back("NoBaseNoMember1::~NoBaseNoMember1()");}
172+
void method(){callStack.push_back("NoBaseNoMember1::method()");}
173+
};

cpp/new.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
*/
3434

3535
#include "common.hpp"
36-
#include "no_base_no_member.hpp"
3736

3837
int main() {
3938
/*

cpp/shared_ptr.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
*/
88

99
#include "common.hpp"
10-
#include "no_base_no_member.hpp"
1110

1211
int main() {
1312
#if __cplusplus >= 201103L

make/.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
tmp.*
2+
*.tmp
3+
*.tmp2

0 commit comments

Comments
 (0)