<<< Alias for std::stack | Lambda Home | Alias for substring and cttl::node >>> |
Common Text Transformation Library http://cttl.sourceforge.net/
Keywords: closure_vect_size_alias.cpp, std::vector, size_type, alias::size
// closure_vect_size_alias.cpp // The program extracts the length of the vector and // stores it in the variable named length. #include "cttl/cttl.h" #include "lambda/lambda.h" using namespace cttl; int main(/*int argc, char* argv[]*/) { std::vector< int > vect( 5 ); std::vector< int >::size_type length; ( scalar( &length ) = alias::size( scalar( &vect ) ) ).evaluate(); assert( length == 5 ); return 0; }
Keywords: alias_push_back_size.cpp, alias::push_back
// alias_push_back_size.cpp // Program demonstrates scalar primitives used with helper // functions alias::push_back and alias::size. #include "cttl/cttl.h" #include "lambda/lambda.h" using namespace cttl; int main(/*int argc, char* argv[]*/) { // create scalar lambda containing an integer: lambda< size_t >::scalar var; // create reference scalar for vector: std::vector< int > vect; lambda< std::vector< int > >::scalar_reference refvect( &vect ); ( alias::push_back( &refvect, 7 ) // vect.push_back( 7 ) , var = alias::size( refvect ) // var = vect.size() ).evaluate(); assert( vect.back() == 7 ); return 0; }
Keywords: stl_container.cpp, edge, std::string
// stl_container.cpp // Program demonstrates access to STL containers: // std::vector< int > and std::stack< std::string >. #define CTTL_TRACE_RULES // automatically turns lambda tracing on #include "cttl/cttl.h" #include "lambda/lambda.h" using namespace cttl; int main(/*int argc, char* argv[]*/) { lambda< std::vector< int >::size_type >::scalar var( 3 ); lambda< std::vector< int > >::scalar vect; ( alias::push_back( &vect, 7 ) , var = alias::size( vect ) ).evaluate(); assert( var.top() == 1 ); assert( vect.top()[ 0 ] == 7 ); std::stack< std::string > str_stack; std::string inp = "hello, stack!"; edge<> substring( inp ); ( scalar( &str_stack ) = scalar( std::string( "one" ) ) , scalar( &str_stack ) = scalar( &substring ) ).evaluate(); assert( str_stack.size() == 2 ); return 0; }
Keywords: vector_iterator.cpp, vector iterator, iterator postfix increment decrement, dereference
// vector_iterator.cpp // Program demonstrates: // - vector iterator, // - navigation via prefix and postfix increment/decrement. #define CTTL_TRACE_RULES // automatically turns lambda tracing on #include "cttl/cttl.h" #include "lambda/lambda.h" using namespace cttl; int main(/*int argc, char* argv[]*/) { std::vector< int > vec( 3, 33 ); // vec: 33,33,33 std::vector< int >::iterator it = vec.begin(); std::vector< int >::iterator it2 = vec.end(); lambda< std::vector< int > >::scalar_reference svec( &vec ); lambda< std::vector< int >::iterator >::scalar_reference sit( &it ); lambda< std::vector< int >::iterator >::scalar_reference sit2( &it2 ); ( CTTL_LAMBDA_ASSERT( sit != sit2 ), sit = sit + 3, CTTL_LAMBDA_ASSERT( sit == sit2 ), sit = alias::begin( &svec ), *sit, CTTL_LAMBDA_ASSERT( *sit == 33 ), *sit++ = 34, CTTL_LAMBDA_ASSERT( *sit == 33 ), CTTL_LAMBDA_ASSERT( *--sit == 34 ) ).evaluate(); assert( it != it2 ); assert( it == vec.begin() ); return 0; }
Keywords: vector_element_access.cpp, subscript operator
// vector_element_access.cpp // Program demonstrates overloaded subscript operators. // Subscript access to the elements of std::vector< std::string > via operator[]. #define CTTL_TRACE_RULES // automatically turns lambda tracing on #include "cttl/cttl.h" #include "lambda/lambda.h" using namespace cttl; int main(/*int argc, char* argv[]*/) { std::vector< std::string > vec( 1 ); // vector with 1 element lambda< std::vector< std::string > >::scalar_reference vec_ref( &vec ); lambda< std::string >::scalar str( std::string( "ABC" ) ); ( vec_ref[ 0 ] = str , CTTL_LAMBDA_ASSERT( scalar( std::string( "ABC" ) ) == vec_ref[ 0 ] ) , CTTL_LAMBDA_ASSERT( scalar( std::string( "ABC" ) ) == alias::at( &vec_ref, size_t( 0 ) ) ) , vec_ref[ 0 ] = scalar( std::string( "DEF" ) ) , CTTL_LAMBDA_ASSERT( scalar( std::string( "DEF" ) ) == vec_ref[ 0 ] ) , CTTL_LAMBDA_ASSERT( scalar( std::string( "DEF" ) ) == alias::at( &vec_ref, size_t( 0 ) ) ) ).evaluate(); return 0; }
Copyright © 1997-2009 Igor Kholodov mailto:cttl@users.sourceforge.net.
Permission to copy and distribute this document is granted provided this copyright notice appears in all copies. This document is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.
<<< Alias for std::stack | Lambda Home | Alias for substring and cttl::node >>> |