UCommon
linked.cpp

An example of the linked object classes and their use.

An example of the linked object classes and their use.

// Copyright (C) 2006-2014 David Sugar, Tycho Softworks.
// Copyright (C) 2015 Cherokees of Idaho.
//
// This file is part of GNU uCommon C++.
//
// GNU uCommon C++ is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// GNU uCommon C++ 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with GNU uCommon C++. If not, see <http://www.gnu.org/licenses/>.
#ifndef DEBUG
#define DEBUG
#endif
#include <stdio.h>
using namespace ucommon;
static OrderedIndex list;
class member : public DLinkedObject
{
public:
inline member(unsigned v) : DLinkedObject() {value = v;}
unsigned value;
};
extern "C" int main()
{
unsigned count = 0;
// Since value templates pass by reference, we must have referencable
// objects or variables. This avoids passing values by duplicating
// objects onto the stack frame, though it causes problems for built-in
// types...
int xv = 3, xn = 5;
ints v1(&list, xv);
ints v2(&list);
v2 = xn;
ptr = &list;
while(ptr) {
switch(++count)
{
case 1:
assert(ptr->value == 3);
break;
case 2:
assert(ptr->value == 5);
}
++ptr;
}
assert(count == 2);
member ov1 = 1, ov2 = 2, ov3 = 3;
assert(ov2.value == 2);
return 0;
}
Top level include file for the GNU uCommon C++ core library.
Common namespace for all ucommon objects.
Definition access.h:47
An index container for maintaining an ordered list of objects.
Definition linked.h:177
A double linked list object.
Definition linked.h:769
Template value class to embed data structure into a linked list.
Definition linked.h:910
A smart pointer template for iterating linked lists.
Definition linked.h:992