Git Product home page Git Product logo

dranged's Introduction

                        DRANGED LIBRARY

OVERVIEW
========

The DRANGED library is my version of a Range Library that
will use the Border/Element design, Pipes/Pipelines, CoRoutine Generators and
possibly Threaded Generators.


The concepts I'm experimenting with are:

RANGES using Border/Element design pattern:
===========================================

The range is delimited by Borders (begin/end).

Each Border is an iterator and also has an element_before( )/element_after( ),
however it can't be derefenced.

The begin( ) border does not have an element_before( ), actually just undefined behaviour.
The end( ) border does not have an element_after( ), actually just undefined behaviour.

Each Element is an iterator and can also be deferenced to find the value of the element.  It has a border_before( )/border_after( ). A valid element always has a valid border_before( )/border_after( ).

++Element past end is undefined behaviour.
--Element before beginning is undefined behaviour.

Each Element can be tested as a bool, when returned from algorithms that return
Elements, to see if the alorithm found an element value.

For instance:

if ( auto element = find( myVec, 3 ) )
{
  // Do something if element found.
}

GENERATORS using COROUTINES
===========================

CoRoutines are now a part of the standard library and can be used now
on Linux, MacOS, and Windows.  They are encapsulated in Generators.

PIPES/PIPELINES
===============

A pipe is a single stage of a pipeline that does processing on and/or transforms
its input into an output.

Pipes can be combined together in a pipeline using the >>= operator.

Containers, Ranges and Generators can be used to put values into the start of
the pipeline.

There will be various classes to collect and process the results.

The first collection class is PushBack which just outputs to an STL container.

dranged's People

Contributors

davidsummers avatar dwsummersaegis avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.