Full Code of dato-code/PowerGraph for AI

master a038f975cf2a cached
757 files
6.0 MB
1.6M tokens
8634 symbols
1 requests
Download .txt
Showing preview only (6,463K chars total). Download the full file or copy to clipboard to get everything.
Repository: dato-code/PowerGraph
Branch: master
Commit: a038f975cf2a
Files: 757
Total size: 6.0 MB

Directory structure:
gitextract_mlg8j482/

├── .gitignore
├── BINARY_README
├── CMakeLists.txt
├── Doxyfile
├── Doxyfile_internal
├── README.md
├── TUTORIALS.md
├── apps/
│   ├── CMakeLists.txt
│   ├── cascades/
│   │   ├── CMakeLists.txt
│   │   └── cascades.cpp
│   ├── concomp/
│   │   ├── CMakeLists.txt
│   │   └── concomp.cpp
│   ├── example/
│   │   ├── CMakeLists.txt
│   │   └── hello_world.cpp
│   └── label_propagation/
│       ├── CMakeLists.txt
│       └── label_propagation.cpp
├── cmake/
│   ├── FindAnt.cmake
│   ├── FindBoost.cmake
│   ├── FindCUDA/
│   │   ├── make2cmake.cmake
│   │   ├── parse_cubin.cmake
│   │   └── run_nvcc.cmake
│   ├── FindCUDA.cmake
│   ├── FindLibJpeg.cmake
│   ├── FindMPICH2.cmake
│   ├── FindMatlab.cmake
│   ├── FindPerftools.cmake
│   ├── Mex_stub.cpp
│   └── mex_link.sh
├── configure
├── cxxtest/
│   ├── cxxtest/
│   │   ├── Descriptions.cpp
│   │   ├── Descriptions.h
│   │   ├── DummyDescriptions.cpp
│   │   ├── DummyDescriptions.h
│   │   ├── ErrorFormatter.h
│   │   ├── ErrorPrinter.h
│   │   ├── Flags.h
│   │   ├── GlobalFixture.cpp
│   │   ├── GlobalFixture.h
│   │   ├── Gui.h
│   │   ├── LinkedList.cpp
│   │   ├── LinkedList.h
│   │   ├── Mock.h
│   │   ├── ParenPrinter.h
│   │   ├── QtGui.h
│   │   ├── RealDescriptions.cpp
│   │   ├── RealDescriptions.h
│   │   ├── Root.cpp
│   │   ├── SelfTest.h
│   │   ├── StdHeaders.h
│   │   ├── StdTestSuite.h
│   │   ├── StdValueTraits.h
│   │   ├── StdioFilePrinter.h
│   │   ├── StdioPrinter.h
│   │   ├── TeeListener.h
│   │   ├── TestListener.h
│   │   ├── TestMain.h
│   │   ├── TestRunner.h
│   │   ├── TestSuite.cpp
│   │   ├── TestSuite.h
│   │   ├── TestTracker.cpp
│   │   ├── TestTracker.h
│   │   ├── ValueTraits.cpp
│   │   ├── ValueTraits.h
│   │   ├── Win32Gui.h
│   │   ├── X11Gui.h
│   │   ├── XUnitPrinter.h
│   │   ├── XmlFormatter.h
│   │   ├── XmlPrinter.h
│   │   ├── YesNoRunner.h
│   │   ├── __init__.py
│   │   ├── __release__.py
│   │   ├── cxx_parser.py
│   │   ├── cxxtest_fog.py
│   │   ├── cxxtest_misc.py
│   │   ├── cxxtest_parser.py
│   │   └── cxxtestgen.py
│   ├── cxxtestgen
│   └── python/
│       ├── README.txt
│       ├── convert.py
│       ├── cxxtest/
│       │   ├── __init__.py
│       │   ├── __release__.py
│       │   ├── cxx_parser.py
│       │   ├── cxxtest_fog.py
│       │   ├── cxxtest_misc.py
│       │   ├── cxxtest_parser.py
│       │   └── cxxtestgen.py
│       ├── python3/
│       │   ├── cxxtest/
│       │   │   ├── __init__.py
│       │   │   ├── __release__.py
│       │   │   ├── cxx_parser.py
│       │   │   ├── cxxtest_fog.py
│       │   │   ├── cxxtest_misc.py
│       │   │   ├── cxxtest_parser.py
│       │   │   └── cxxtestgen.py
│       │   └── scripts/
│       │       └── cxxtestgen
│       ├── scripts/
│       │   └── cxxtestgen
│       └── setup.py
├── demoapps/
│   ├── CMakeLists.txt
│   ├── dsl/
│   │   ├── CMakeLists.txt
│   │   ├── gen_impl.cpp
│   │   ├── gl_server.cpp
│   │   ├── graph_typedefs.gen
│   │   ├── impl.graphlab
│   │   └── scala_impl/
│   │       └── dsl.scala
│   ├── pagerank/
│   │   ├── CMakeLists.txt
│   │   ├── simple_pagerank.cpp
│   │   ├── warp_engine_pagerank.cpp
│   │   └── warp_parfor_pagerank.cpp
│   └── rpc/
│       ├── CMakeLists.txt
│       ├── dht_performance_test.cpp
│       ├── fiber_future_test.cpp
│       ├── obj_fiber_future_test.cpp
│       ├── rpc_call_perf_test.cpp
│       ├── rpc_example1.cpp
│       ├── rpc_example2.cpp
│       ├── rpc_example3.cpp
│       ├── rpc_example4.cpp
│       ├── rpc_example5.cpp
│       ├── rpc_example6.cpp
│       ├── rpc_example7.cpp
│       ├── rpc_example8.cpp
│       └── rpc_example9.cpp
├── dist/
│   └── README
├── doc/
│   ├── README
│   └── images/
│       ├── cycle_triangle.dot
│       ├── example_webgraph.dot
│       ├── graph_format_example.dot
│       ├── images.pptx
│       ├── in_triangle.dot
│       ├── out_triangle.dot
│       └── through_triangle.dot
├── license/
│   ├── LICENSE.txt
│   ├── LICENSE_prepend.txt
│   ├── corporate_CLA.txt
│   └── individual_CLA.txt
├── matlab/
│   └── eventlog_parser.m
├── patches/
│   ├── boost.patch
│   ├── libbz2_fpic.patch
│   ├── libevent_clean_and_remap.sh
│   ├── libevent_remap_file.txt
│   ├── libhdfs.patch
│   ├── libjson.patch
│   ├── opencv_apple_rpath.patch
│   ├── tcmalloc.patch
│   └── zookeeper/
│       ├── Makefile
│       └── configure
├── scripts/
│   ├── add_line_to_eof.sh
│   ├── binary_list.txt
│   ├── build_linux_static.sh
│   ├── build_linux_static_no_jvm.sh
│   ├── build_linux_static_no_jvm_no_mpi.sh
│   ├── build_osx_static.sh
│   ├── compile_static_release.sh
│   ├── ec2/
│   │   ├── benchmark_ec2.sh
│   │   ├── gl-ec2
│   │   ├── gl_ec2.py
│   │   └── readme
│   ├── ec2_tools/
│   │   ├── scatter
│   │   ├── setup-hadoop
│   │   └── setup-torque
│   ├── install_graphlab.sh
│   ├── license_prepend.sh
│   ├── linux_run_script_no_jvm_template.sh
│   ├── linux_run_script_template.sh
│   ├── make_all_docs.sh
│   ├── make_dist.sh
│   ├── mpi_redirect_stdout.sh
│   ├── mpirsync
│   ├── rpcexec.py
│   └── test_dist.sh
├── src/
│   ├── CMakeLists.txt
│   ├── graphlab/
│   │   ├── CMakeLists.txt
│   │   ├── aggregation/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── aggregation_includes.hpp
│   │   │   └── distributed_aggregator.hpp
│   │   ├── docs/
│   │   │   ├── faq.dox
│   │   │   ├── overview.dox
│   │   │   ├── using.dox
│   │   │   └── using_warp.dox
│   │   ├── engine/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── async_consistent_engine.hpp
│   │   │   ├── distributed_chandy_misra.hpp
│   │   │   ├── engine_includes.hpp
│   │   │   ├── execution_status.hpp
│   │   │   ├── iengine.hpp
│   │   │   ├── message_array.hpp
│   │   │   ├── omni_engine.hpp
│   │   │   ├── synchronous_engine.hpp
│   │   │   ├── warp_engine.hpp
│   │   │   ├── warp_graph_broadcast.hpp
│   │   │   ├── warp_graph_mapreduce.hpp
│   │   │   ├── warp_graph_transform.hpp
│   │   │   └── warp_parfor_all_vertices.hpp
│   │   ├── graph/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── builtin_parsers.hpp
│   │   │   ├── distributed_graph.hpp
│   │   │   ├── dynamic_local_graph.hpp
│   │   │   ├── graph_basic_types.hpp
│   │   │   ├── graph_formats.dox
│   │   │   ├── graph_gather_apply.hpp
│   │   │   ├── graph_hash.hpp
│   │   │   ├── graph_includes.hpp
│   │   │   ├── graph_ops.hpp
│   │   │   ├── graph_storage_deprecated.hpp
│   │   │   ├── graph_vertex_join.hpp
│   │   │   ├── ingress/
│   │   │   │   ├── distributed_batch_ingress.hpp
│   │   │   │   ├── distributed_constrained_batch_ingress.hpp
│   │   │   │   ├── distributed_constrained_oblivious_ingress.hpp
│   │   │   │   ├── distributed_constrained_random_ingress.hpp
│   │   │   │   ├── distributed_hdrf_ingress.hpp
│   │   │   │   ├── distributed_identity_ingress.hpp
│   │   │   │   ├── distributed_ingress_base.hpp
│   │   │   │   ├── distributed_oblivious_ingress.hpp
│   │   │   │   ├── distributed_random_ingress.hpp
│   │   │   │   ├── ingress_edge_decision.hpp
│   │   │   │   └── sharding_constraint.hpp
│   │   │   ├── local_edge_buffer.hpp
│   │   │   ├── local_graph.hpp
│   │   │   ├── local_graph_ops.hpp
│   │   │   └── vertex_set.hpp
│   │   ├── jni/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── java_any.cpp
│   │   │   ├── java_any.hpp
│   │   │   ├── org_graphlab_Aggregator.cpp
│   │   │   ├── org_graphlab_Aggregator.h
│   │   │   ├── org_graphlab_Aggregator.hpp
│   │   │   ├── org_graphlab_Context.cpp
│   │   │   ├── org_graphlab_Context.h
│   │   │   ├── org_graphlab_Context.hpp
│   │   │   ├── org_graphlab_Core.cpp
│   │   │   ├── org_graphlab_Core.h
│   │   │   ├── org_graphlab_Core.hpp
│   │   │   ├── org_graphlab_Updater.cpp
│   │   │   ├── org_graphlab_Updater.h
│   │   │   └── org_graphlab_Updater.hpp
│   │   ├── logger/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── assertions.hpp
│   │   │   ├── assertions.hpp.orig
│   │   │   ├── backtrace.cpp
│   │   │   ├── backtrace.hpp
│   │   │   ├── fail_method.hpp
│   │   │   ├── logger.cpp
│   │   │   ├── logger.hpp
│   │   │   └── logger_includes.hpp
│   │   ├── macros_def.hpp
│   │   ├── macros_undef.hpp
│   │   ├── options/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── command_line_options.cpp
│   │   │   ├── command_line_options.hpp
│   │   │   ├── engine_help.txt
│   │   │   ├── graph_help.txt
│   │   │   ├── graphlab_options.hpp
│   │   │   ├── options_includes.hpp
│   │   │   ├── options_map.cpp
│   │   │   └── options_map.hpp
│   │   ├── parallel/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── atomic.hpp
│   │   │   ├── atomic_add_vector2_empty_specialization.hpp
│   │   │   ├── atomic_ops.hpp
│   │   │   ├── cache_line_pad.hpp
│   │   │   ├── deferred_rwlock.hpp
│   │   │   ├── fiber_barrier.hpp
│   │   │   ├── fiber_conditional.hpp
│   │   │   ├── fiber_control.cpp
│   │   │   ├── fiber_control.hpp
│   │   │   ├── fiber_group.cpp
│   │   │   ├── fiber_group.hpp
│   │   │   ├── fiber_remote_request.hpp
│   │   │   ├── lockfree_push_back.hpp
│   │   │   ├── mutex.hpp
│   │   │   ├── parallel_includes.hpp
│   │   │   ├── pthread_tools.cpp
│   │   │   ├── pthread_tools.hpp
│   │   │   ├── queued_rwlock.hpp
│   │   │   ├── thread_pool.cpp
│   │   │   └── thread_pool.hpp
│   │   ├── rpc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── async_consensus.cpp
│   │   │   ├── async_consensus.hpp
│   │   │   ├── buffered_exchange.hpp
│   │   │   ├── caching_dht.hpp
│   │   │   ├── circular_char_buffer.cpp
│   │   │   ├── circular_char_buffer.hpp
│   │   │   ├── circular_iovec_buffer.hpp
│   │   │   ├── dc.cpp
│   │   │   ├── dc.hpp
│   │   │   ├── dc_buffered_stream_send2.cpp
│   │   │   ├── dc_buffered_stream_send2.hpp
│   │   │   ├── dc_comm_base.hpp
│   │   │   ├── dc_compile_parameters.hpp
│   │   │   ├── dc_dist_object.hpp
│   │   │   ├── dc_dist_object_base.hpp
│   │   │   ├── dc_init_from_env.cpp
│   │   │   ├── dc_init_from_env.hpp
│   │   │   ├── dc_init_from_mpi.cpp
│   │   │   ├── dc_init_from_mpi.hpp
│   │   │   ├── dc_init_from_zookeeper.cpp
│   │   │   ├── dc_init_from_zookeeper.hpp
│   │   │   ├── dc_internal_types.hpp
│   │   │   ├── dc_packet_mask.hpp
│   │   │   ├── dc_receive.hpp
│   │   │   ├── dc_send.hpp
│   │   │   ├── dc_services.hpp
│   │   │   ├── dc_stream_receive.cpp
│   │   │   ├── dc_stream_receive.hpp
│   │   │   ├── dc_tcp_comm.cpp
│   │   │   ├── dc_tcp_comm.hpp
│   │   │   ├── dc_thread_get_send_buffer.hpp
│   │   │   ├── dc_types.hpp
│   │   │   ├── delta_dht.cpp
│   │   │   ├── delta_dht.hpp
│   │   │   ├── dht.hpp
│   │   │   ├── distributed_event_log.cpp
│   │   │   ├── distributed_event_log.hpp
│   │   │   ├── evwrapdef.h
│   │   │   ├── evwrapundef.h
│   │   │   ├── fiber_async_consensus.cpp
│   │   │   ├── fiber_async_consensus.hpp
│   │   │   ├── fiber_buffered_exchange.hpp
│   │   │   ├── function_arg_types_def.hpp
│   │   │   ├── function_arg_types_undef.hpp
│   │   │   ├── function_broadcast_issue.hpp
│   │   │   ├── function_call_dispatch.hpp
│   │   │   ├── function_call_issue.hpp
│   │   │   ├── function_ret_type.hpp
│   │   │   ├── get_current_process_hash.cpp
│   │   │   ├── get_current_process_hash.hpp
│   │   │   ├── is_rpc_call.hpp
│   │   │   ├── lazy_dht.hpp
│   │   │   ├── mem_function_arg_types_def.hpp
│   │   │   ├── mem_function_arg_types_undef.hpp
│   │   │   ├── object_broadcast_issue.hpp
│   │   │   ├── object_call_dispatch.hpp
│   │   │   ├── object_call_issue.hpp
│   │   │   ├── object_request_dispatch.hpp
│   │   │   ├── object_request_issue.hpp
│   │   │   ├── pod_template_structs.hpp
│   │   │   ├── request_dispatch.hpp
│   │   │   ├── request_future.hpp
│   │   │   ├── request_issue.hpp
│   │   │   ├── request_reply_handler.cpp
│   │   │   ├── request_reply_handler.hpp
│   │   │   ├── rpc.dox
│   │   │   ├── rpc_includes.hpp
│   │   │   ├── sample_sort.hpp
│   │   │   ├── thread_local_send_buffer.cpp
│   │   │   └── thread_local_send_buffer.hpp
│   │   ├── scheduler/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── fifo_scheduler.cpp
│   │   │   ├── fifo_scheduler.hpp
│   │   │   ├── get_message_priority.hpp
│   │   │   ├── ischeduler.hpp
│   │   │   ├── priority_scheduler.cpp
│   │   │   ├── priority_scheduler.hpp
│   │   │   ├── queued_fifo_scheduler.cpp
│   │   │   ├── queued_fifo_scheduler.hpp
│   │   │   ├── scheduler_factory.hpp
│   │   │   ├── scheduler_includes.hpp
│   │   │   ├── scheduler_list.cpp
│   │   │   ├── scheduler_list.hpp
│   │   │   ├── sweep_scheduler.cpp
│   │   │   └── sweep_scheduler.hpp
│   │   ├── serialization/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── basic_types.hpp
│   │   │   ├── conditional_serialize.hpp
│   │   │   ├── has_load.hpp
│   │   │   ├── has_save.hpp
│   │   │   ├── iarchive.hpp
│   │   │   ├── is_pod.hpp
│   │   │   ├── iterator.hpp
│   │   │   ├── list.hpp
│   │   │   ├── map.hpp
│   │   │   ├── oarchive.hpp
│   │   │   ├── serializable_concept.hpp
│   │   │   ├── serializable_pod.hpp
│   │   │   ├── serialization.dox
│   │   │   ├── serialization_includes.hpp
│   │   │   ├── serialize.hpp
│   │   │   ├── serialize_to_from_string.hpp
│   │   │   ├── set.hpp
│   │   │   ├── unordered_map.hpp
│   │   │   ├── unordered_set.hpp
│   │   │   ├── unsupported_serialize.hpp
│   │   │   └── vector.hpp
│   │   ├── ui/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── graphlab_visualization.js
│   │   │   ├── index.html
│   │   │   ├── intel_demo/
│   │   │   │   ├── graph_builder.json
│   │   │   │   ├── graphlab_visualization.js
│   │   │   │   ├── index.html
│   │   │   │   └── style.css
│   │   │   ├── metrics_server.cpp
│   │   │   ├── metrics_server.hpp
│   │   │   ├── mongoose/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── LICENSE
│   │   │   │   ├── mongoose.cpp
│   │   │   │   └── mongoose.h
│   │   │   └── style.css
│   │   ├── util/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── binary_parser.hpp
│   │   │   ├── blocking_queue.hpp
│   │   │   ├── bloom_filter.hpp
│   │   │   ├── branch_hints.hpp
│   │   │   ├── cache.hpp
│   │   │   ├── chandy_misra.hpp
│   │   │   ├── chandy_misra2.hpp
│   │   │   ├── chandy_misra_lockfree.hpp
│   │   │   ├── char_counting_sink.hpp
│   │   │   ├── charstream.hpp
│   │   │   ├── cuckoo_map.hpp
│   │   │   ├── cuckoo_map_pow2.hpp
│   │   │   ├── cuckoo_set_pow2.hpp
│   │   │   ├── dense_bitset.hpp
│   │   │   ├── empty.hpp
│   │   │   ├── event_log.cpp
│   │   │   ├── event_log.hpp
│   │   │   ├── fast_multinomial.hpp
│   │   │   ├── fiber_blocking_queue.hpp
│   │   │   ├── fs_util.cpp
│   │   │   ├── fs_util.hpp
│   │   │   ├── generate_pds.hpp
│   │   │   ├── generics/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── any.cpp
│   │   │   │   ├── any.hpp
│   │   │   │   ├── blob.hpp
│   │   │   │   ├── block_linked_list.hpp
│   │   │   │   ├── conditional_addition_wrapper.hpp
│   │   │   │   ├── conditional_combiner_wrapper.hpp
│   │   │   │   ├── counting_sort.hpp
│   │   │   │   ├── csr_storage.hpp
│   │   │   │   ├── dynamic_block.hpp
│   │   │   │   ├── dynamic_csr_storage.hpp
│   │   │   │   ├── float_selector.hpp
│   │   │   │   ├── integer_selector.hpp
│   │   │   │   ├── remove_member_pointer.hpp
│   │   │   │   ├── robust_cast.hpp
│   │   │   │   ├── shuffle.hpp
│   │   │   │   ├── test_function_or_functor_type.hpp
│   │   │   │   └── vector_zip.hpp
│   │   │   ├── hash_functions.hpp
│   │   │   ├── hashstream.hpp
│   │   │   ├── hdfs.cpp
│   │   │   ├── hdfs.hpp
│   │   │   ├── hopscotch_map.hpp
│   │   │   ├── hopscotch_set.hpp
│   │   │   ├── hopscotch_table.hpp
│   │   │   ├── inplace_lf_queue.cpp
│   │   │   ├── inplace_lf_queue.hpp
│   │   │   ├── inplace_lf_queue2.hpp
│   │   │   ├── integer_mix.hpp
│   │   │   ├── integer_selector.hpp
│   │   │   ├── lock_free_internal.hpp
│   │   │   ├── lock_free_pool.hpp
│   │   │   ├── memory_info.cpp
│   │   │   ├── memory_info.hpp
│   │   │   ├── mpi_tools.cpp
│   │   │   ├── mpi_tools.hpp
│   │   │   ├── mutable_queue.hpp
│   │   │   ├── net_util.cpp
│   │   │   ├── net_util.hpp
│   │   │   ├── random.cpp
│   │   │   ├── random.hpp
│   │   │   ├── resizing_array_sink.hpp
│   │   │   ├── safe_circular_char_buffer.cpp
│   │   │   ├── safe_circular_char_buffer.hpp
│   │   │   ├── small_map.hpp
│   │   │   ├── small_set.hpp
│   │   │   ├── stl_util.hpp
│   │   │   ├── synchronized_unordered_map.hpp
│   │   │   ├── synchronized_unordered_map2.hpp
│   │   │   ├── system_usage.hpp
│   │   │   ├── timer.cpp
│   │   │   ├── timer.hpp
│   │   │   ├── tracepoint.cpp
│   │   │   ├── tracepoint.hpp
│   │   │   ├── uint128.hpp
│   │   │   ├── union_find.hpp
│   │   │   ├── util_includes.hpp
│   │   │   ├── web_util.cpp
│   │   │   └── web_util.hpp
│   │   ├── version.hpp
│   │   ├── vertex_program/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── context.hpp
│   │   │   ├── icontext.hpp
│   │   │   ├── ivertex_program.hpp
│   │   │   ├── messages.hpp
│   │   │   ├── op_plus_eq_concept.hpp
│   │   │   └── vertex_program_includes.hpp
│   │   ├── warp.hpp
│   │   └── zookeeper/
│   │       ├── key_value.cpp
│   │       ├── key_value.hpp
│   │       ├── server_list.cpp
│   │       ├── server_list.hpp
│   │       ├── zookeeper_common.cpp
│   │       └── zookeeper_common.hpp
│   └── graphlab.hpp
├── tests/
│   ├── CMakeLists.txt
│   ├── arbitrary_signal_test.cpp
│   ├── async_consistent_test.cpp
│   ├── chandy_misra.cxx
│   ├── csr_storage_test.cxx
│   ├── cuckootest.cpp
│   ├── data/
│   │   ├── CMakeLists.txt
│   │   ├── test_adj/
│   │   │   └── test.adj
│   │   ├── test_snap/
│   │   │   └── test.snap
│   │   └── test_tsv/
│   │       └── test.tsv
│   ├── dc_consensus_test.cpp
│   ├── dc_fiber_consensus_test.cpp
│   ├── dc_test_sequentialization.cpp
│   ├── dcsc_test.cpp
│   ├── dense_bitset_test.cxx
│   ├── dht_performance_test.cpp
│   ├── distributed_chandy_misra_test.cpp
│   ├── distributed_graph_test.cpp
│   ├── distributed_ingress_test.cpp
│   ├── empty_test.cxx
│   ├── engine_terminator_bench.cxx
│   ├── fiber_test.cpp
│   ├── fibo_fiber_test.cpp
│   ├── hdfs_test.cpp
│   ├── hopscotch_test.cpp
│   ├── local_graph_test.cxx
│   ├── lock_free_pushback.cxx
│   ├── mini_web_server.cpp
│   ├── random_test.cxx
│   ├── runtests.sh
│   ├── scheduler_test.cxx
│   ├── serializetests.cxx
│   ├── sfinae_function_test.cpp
│   ├── small_map_test.cxx
│   ├── small_set_test.cxx
│   ├── sort_test.cpp
│   ├── synchronous_engine_test.cpp
│   ├── test_lock_free_pool.cxx
│   ├── test_parsers.cpp
│   ├── test_vertex_set.cpp
│   ├── thread_tools.cxx
│   └── union_find_test.cxx
└── toolkits/
    ├── CMakeLists.txt
    ├── README.md
    ├── clustering/
    │   ├── CMakeLists.txt
    │   ├── clustering.dox
    │   ├── generate_synthetic.cpp
    │   ├── graph_laplacian_for_sc.cpp
    │   ├── kmeans.cpp
    │   └── spectral_clustering.cpp
    ├── collaborative_filtering/
    │   ├── CMakeLists.txt
    │   ├── adpredictor.cpp
    │   ├── als.cpp
    │   ├── biassgd.cpp
    │   ├── cdf.hpp
    │   ├── collaborative_filtering.dox
    │   ├── cosamp.hpp
    │   ├── doc.cpp
    │   ├── eigen_serialization.hpp
    │   ├── eigen_wrapper.hpp
    │   ├── implicit.hpp
    │   ├── make_synthetic_als_data.cpp
    │   ├── math.hpp
    │   ├── nmf.cpp
    │   ├── printouts.hpp
    │   ├── sgd.cpp
    │   ├── sparse_als.cpp
    │   ├── stats.hpp
    │   ├── svd.cpp
    │   ├── svdpp.cpp
    │   ├── types.hpp
    │   ├── wals.cpp
    │   ├── warp_als_coord.cpp
    │   └── warp_nmf.cpp
    ├── computer_vision/
    │   ├── CMakeLists.txt
    │   ├── computer_vision.dox
    │   ├── eigen_serialization.cpp
    │   ├── eigen_serialization.hpp
    │   ├── gcgraph.hpp
    │   ├── grabcut.cpp
    │   ├── opencv_serialization.cpp
    │   ├── opencv_serialization.hpp
    │   ├── precomp.hpp
    │   ├── seam_finders_gr.hpp
    │   ├── stitch_full_main.cpp
    │   ├── stitch_grlab.hpp
    │   ├── stitch_main.cpp
    │   ├── stitch_main.hpp
    │   ├── stitch_opts.hpp
    │   ├── stitching.cpp
    │   ├── stitching_detailed.cpp
    │   └── utils.hpp
    ├── extensions/
    │   ├── CMakeLists.txt
    │   ├── MurmurHash3.cpp
    │   ├── MurmurHash3.h
    │   ├── example.txt
    │   ├── extension.cpp
    │   ├── extension_data.hpp
    │   ├── extension_gas.hpp
    │   ├── extension_gas_base_types.hpp
    │   ├── extension_gas_lambda_wrapper.hpp
    │   ├── extension_graph.cpp
    │   ├── extension_graph.hpp
    │   ├── extension_main.cpp
    │   ├── extension_main.hpp
    │   ├── extension_pagerank.cpp
    │   ├── extensions.hpp
    │   └── pagerank_extension_driver.cpp
    ├── graph_algorithms/
    │   ├── CMakeLists.txt
    │   ├── betweeness.cpp
    │   ├── closeness.cpp
    │   ├── djikstra.cpp
    │   ├── graph_analytics.dox
    │   └── prestige.cpp
    ├── graph_analytics/
    │   ├── CMakeLists.txt
    │   ├── TSC.cpp
    │   ├── approximate_diameter.cpp
    │   ├── connected_component.cpp
    │   ├── connected_component_stats.cpp
    │   ├── degree_ordered_coloring.cpp
    │   ├── directed_triangle_count.cpp
    │   ├── eigen_vector_normalization.cpp
    │   ├── format_convert.cpp
    │   ├── graph_analytics.dox
    │   ├── graph_laplacian.cpp
    │   ├── http/
    │   │   ├── index.html
    │   │   ├── make_jsons.m
    │   │   ├── style.css
    │   │   ├── top_users.json
    │   │   └── twitter_triangles.js
    │   ├── kcore.cpp
    │   ├── pagerank.cpp
    │   ├── partitioning.cpp
    │   ├── saturation_ordered_coloring.cpp
    │   ├── simple_coloring.cpp
    │   ├── simple_undirected_triangle_count.cpp
    │   ├── sssp.cpp
    │   ├── undirected_triangle_count.cpp
    │   ├── warp_bond_percolation.cpp
    │   ├── warp_coloring.cpp
    │   ├── warp_pagerank.cpp
    │   └── warp_pagerank2.cpp
    ├── graphical_models/
    │   ├── CMakeLists.txt
    │   ├── ad3_qp.hpp
    │   ├── dd_grlab.hpp
    │   ├── dd_main.cpp
    │   ├── dd_main.hpp
    │   ├── dd_opts.hpp
    │   ├── deprecated/
    │   │   ├── factors/
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── binary_factor.cpp
    │   │   │   ├── binary_factor.hpp
    │   │   │   ├── discrete_variable.cpp
    │   │   │   ├── factor_includes.hpp
    │   │   │   ├── factor_test.cxx
    │   │   │   ├── unary_factor.cpp
    │   │   │   └── unary_factor.hpp
    │   │   ├── gibbs_sampling/
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── README
    │   │   │   ├── chromatic_sampler.cpp
    │   │   │   ├── chromatic_sampler.hpp
    │   │   │   ├── factorized_model.cpp
    │   │   │   ├── factorized_model.hpp
    │   │   │   ├── global_variables.cpp
    │   │   │   ├── global_variables.hpp
    │   │   │   ├── image.cpp
    │   │   │   ├── image.hpp
    │   │   │   ├── jt_splash_sampler.cpp
    │   │   │   ├── jt_splash_sampler.hpp
    │   │   │   ├── junction_tree.cpp
    │   │   │   ├── junction_tree.hpp
    │   │   │   ├── make_denoise_alchemy.cpp
    │   │   │   ├── matlab/
    │   │   │   │   ├── Makefile
    │   │   │   │   ├── asg2ind.m
    │   │   │   │   ├── compile_gibbs_sampler.m
    │   │   │   │   ├── gibbs_sampler.m
    │   │   │   │   ├── gibbs_sampler_impl.cpp
    │   │   │   │   ├── ind2asg.m
    │   │   │   │   ├── matwrap.hpp
    │   │   │   │   ├── table_factor.m
    │   │   │   │   └── tests/
    │   │   │   │       ├── denoise_test.m
    │   │   │   │       ├── make_grid_model.m
    │   │   │   │       ├── small_test.m
    │   │   │   │       └── small_test2.m
    │   │   │   ├── mrf.cpp
    │   │   │   ├── mrf.hpp
    │   │   │   ├── pgibbs_tls.cpp
    │   │   │   ├── pgibbs_tls.hpp
    │   │   │   ├── run_statistics.hpp
    │   │   │   ├── sampler.cpp
    │   │   │   ├── util.cpp
    │   │   │   └── util.hpp
    │   │   ├── kernelbp/
    │   │   │   ├── CMakeLists.txt
    │   │   │   └── old/
    │   │   │       ├── BallTreeDensity.cpp
    │   │   │       ├── CMakeLists.txt
    │   │   │       ├── cpp/
    │   │   │       │   ├── BallTree.h
    │   │   │       │   ├── BallTreeClass.cc
    │   │   │       │   ├── BallTreeDensity.h
    │   │   │       │   ├── BallTreeDensityClass.cc
    │   │   │       │   ├── NOTICE
    │   │   │       │   └── kernels.h
    │   │   │       ├── denoise.cpp
    │   │   │       ├── fakemex.h
    │   │   │       ├── image.hpp
    │   │   │       ├── kde.h
    │   │   │       ├── prob.hpp
    │   │   │       └── prodSampleEpsilon.hpp
    │   │   └── loopybp_denoise.cpp
    │   ├── eigen_serialization.cpp
    │   ├── eigen_serialization.hpp
    │   ├── factors/
    │   │   ├── CMakeLists.txt
    │   │   ├── bp_graph_data.h
    │   │   ├── bp_vertex_program.hpp
    │   │   ├── dense_table.hpp
    │   │   ├── discrete_assignment.hpp
    │   │   ├── discrete_bounds.hpp
    │   │   ├── discrete_domain.hpp
    │   │   ├── discrete_variable.hpp
    │   │   ├── factor_graph.hpp
    │   │   ├── factor_graphs.dox
    │   │   ├── fast_discrete_assignment.hpp
    │   │   ├── sparse_index.hpp
    │   │   ├── sparse_table.hpp
    │   │   ├── table_base.hpp
    │   │   ├── table_factor.hpp
    │   │   └── tests/
    │   │       ├── CMakeLists.txt
    │   │       ├── denoise/
    │   │       │   ├── CMakeLists.txt
    │   │       │   └── denoise.cpp
    │   │       ├── test_MAD_relation/
    │   │       │   ├── CMakeLists.txt
    │   │       │   └── test_MAD_relation.cpp
    │   │       ├── test_bool_var/
    │   │       │   ├── CMakeLists.txt
    │   │       │   ├── test_bool_var.cpp
    │   │       │   └── test_cat_bool_joint.cpp
    │   │       ├── test_dense_table/
    │   │       │   ├── CMakeLists.txt
    │   │       │   └── test_dense_table.cpp
    │   │       └── test_sparse_table/
    │   │           ├── CMakeLists.txt
    │   │           ├── test_neg_relation.cpp
    │   │           └── test_sparse_table.cpp
    │   ├── graphical_models.dox
    │   ├── lbp_structured_prediction.cpp
    │   ├── mplp_denoise.cpp
    │   ├── mplp_structured_prediction.cpp
    │   ├── profile_lbp_synthetic.cpp
    │   ├── profile_lbp_synthetic2.cpp
    │   ├── synthetic_image_data.cpp
    │   └── utils.hpp
    ├── linear_solvers/
    │   ├── CMakeLists.txt
    │   ├── jacobi.cpp
    │   └── linear_solvers.dox
    ├── toolkits.dox
    └── topic_modeling/
        ├── CMakeLists.txt
        ├── cgs_lda.cpp
        ├── cgs_lda_mimno_experimental.cpp
        ├── deprecated/
        │   ├── cgs_lda.cpp
        │   ├── cvb0_lda_common.cpp
        │   ├── cvb0_lda_common.hpp
        │   └── fast_cvb0_lda.cpp
        ├── http/
        │   ├── index.html
        │   ├── lda_visualizer.js
        │   ├── style.css
        │   └── wordclouds
        ├── lda_sequential_cgs.cpp
        └── topic_modeling.dox

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# use glob syntax
syntax: glob

*~
debug/*
release/*
profile/*
dist/graphlabapi*
doc/doxygen/*
doc/doxygen_internal/*
deps/*
configure.deps
config.log
new_news.txt
cxxtest/cxxtest/*.pyc

extapis/java_jni/dist
extapis/java_jni/bin

demoapps/coloring/matlab_tools/*.tsv
demoapps/shortest_path/matlab_tools/*.tsv
demoapps/pagerank/matlab_tools/*.tsv

tags
*swp
\.mchg\.mchg
.ycm_extra_conf*


================================================
FILE: BINARY_README
================================================

                         Graphlab Binary Release
                         -----------------------

=======
License
=======

GraphLab is free software licensed under the Apache 2.0 License. See
license/LICENSE.txt for details.

============
Introduction
============

GraphLab PowerGraph is a graph-based, high performance, distributed computation framework
written in C++.  

GraphLab Features:

Unified multicore/
distributed API:       write once run anywhere 

Tuned for performance: optimized C++ execution engine leverages extensive 
                       multi-threading and asynchronous IO 

Scalable:              Run on large cluster deployments by
                       intelligently placing data and computation 

HDFS Integration:      Access your data directly from HDFS 

Powerful Machine 
Learning Toolkits:     Tackle challenging machine 
                       learning problems with ease


========
Mac OS X
========
The Mac OS X build is restricted and is compiled without HDFS support, nor
distributed capabilities. All toolkits therefore run entirely on one machine
in shared memory.

These binaries have been tested to run on OS X 10.6 or greater. Though they
may work on 10.5 as well.

=====
Linux
=====
The Linux builds are more complex due to varying glibc versions as well as the
need to support both OpenMPI and MPICH2. FOUR binary releases are provided
Please obtain the package closest matching your needs. In particular, it is
important to match the MPI library you have on your cluster: 
they are not compatible.

The binary packages are:
 - graphlab_openmpi : Supports OpenMPI 1.3 and 1.4. Supports HDFS and thus
                      requires a working JVM (whether or not you use 
                      HDFS).
 - graphlab_mpich2 : Supports MPICH2. Supports HDFS and thus
                     requires a working JVM (whether or not you use 
                     HDFS).
 - graphlab_openmpi_no_jvm : Supports OpenMPI 1.3 and 1.4. Does not support
                             HDFS. Does not require a working JVM. Loading
                             files distributed will therefore require either
                             a distributed file system or a common NFS
                             share.
 - graphlab_mpich2_no_jvm : Supports MPICH2. Does not support HDFS. Does not 
                            require a working JVM. Loading files distributed 
                            will therefore require either a distributed file 
                            system or a common NFS share. If you want to run
                            to run only in shared memory, this is also the
                            package to use.

Each binary is paired with a matching shell script which sets up the
execution environment (by forcing the load of provided versions of system
binaries). Several environment variables are used to control the process. 

  JAVA_HOME
     Either JAVA_HOME or JVM_SO_PATH must be set. 
     This must point to the Java home directory.
     For instance: /usr/lib/jvm/java-6-openjdk
     This was tested with Oracle's implementation of Java (sun-jdk or open-jdk).

  JVM_SO_PATH
     Either JAVA_HOME or JVM_SO_PATH must be set. 
     Optional. The script will expect to find libjvm.so in 
     $JAVA_HOME/jre/lib/amd64/client/libjvm.so or
     $JAVA_HOME/jre/lib/amd64/server/libjvm.so
     If libjvm.so is not in either locations, the script will fail. In which 
     case, you should set this variable to the directory containing libjvm.so.

  USE_SYSTEM_LIBS
     Optional. If set, the system's glibc (and other system dependencies) 
     will be used instead of the provided versions. 


HDFS Capability is compiled in. If HDFS is to be used, the 
"hadoop" command must be available.


Additional Notes for OpenMPI
----------------------------
Unlike the MPICH2 build, the OpenMPI build is unable to static link
everything.  For now, we provide only binary releases built against 
OpenMPI 1.3.2 which should be binary compatible with 1.4. 

=============
Build Details
=============

Mac Build:
Compiled on OS X 10.8
Apple clang version 4.0 (tags/Apple/clang-421.0.57) (based on LLVM 3.1svn)
-O3 -march=x86-64 -mtune=generic  -mmacosx-version-min=10.5 

Linux Build:
To support maximal compatibility, this was compiled on an 
old Linux distribution.

Compiled on Ubuntu 9.04, GCC 4.3.3
-O3 -march=x86-64 -mtune=generic 

OpenMPI: 1.3.2 (ABI Compatible with 1.4)
MPICH2: 1.5



================================================
FILE: CMakeLists.txt
================================================
project(GraphLab)

# We require the most recent version of cmake and automatically
# install the correct version when using the cmake lists
cmake_minimum_required(VERSION 2.8)

# Libraries linked via full path no longer produce linker search paths.
cmake_policy(SET CMP0003 NEW)
# Preprocessor definition values are now escaped automatically.
cmake_policy(SET CMP0005 NEW)

# Determine where additional GraphLab specific cmake modules are
# defined
set(CMAKE_MODULE_PATH ${GraphLab_SOURCE_DIR}/cmake)

# TODO: what is this used by
set(BUILD_SHARED_LIBS ON)

include(CheckLibraryExists)
include(CheckFunctionExists)
include(ExternalProject)
include(CheckCXXSourceCompiles)

# check we are on a 64 bit machine (else fail)
if( CMAKE_SIZEOF_VOID_P EQUAL 4 )
   message( SEND_ERROR "GraphLab does not support 32 bit systems. Please switch to 64 bit system and try again" )
endif ( CMAKE_SIZEOF_VOID_P EQUAL 4 )

# # Display information about cmake variables
# include(CMakePrintSystemInformation)

# set include path
include_directories(
  ${GraphLab_SOURCE_DIR}/src
  ${GraphLab_SOURCE_DIR}/cxxtest
  ${GraphLab_SOURCE_DIR}/deps/local/include)

# set link path
link_directories(${GraphLab_SOURCE_DIR}/deps/local/lib)

add_definitions(-DUSE_DYNAMIC_LOCAL_GRAPH)

if(NO_OPENMP)
  set(OPENMP_C_FLAGS "")
  set(OPENMP_LIBRARIES "")
  add_definitions(-D__NO_OPENMP__)
else()
  set(OPENMP_C_FLAGS "-fopenmp")
  set(OPENMP_LIBRARIES "gomp")
endif()

if (APPLE)
link_libraries(pthread ${OPENMP_LIBRARIES})
else()
link_libraries(pthread rt ${OPENMP_LIBRARIES})
endif()

set(CPP11_FLAGS "")
if(CPP11)
  message(STATUS "C++11 Enabled")
  set(CPP11_FLAGS "-std=c++11 -Wno-enum-compare -Wno-conversion-null")
endif()

if(VID32)
  message(STATUS "Using 32bit vertex id types")
  add_definitions(-DUSE_VID32)
endif()


# Shared compiler flags used by all builds (debug, profile, release)
set(COMPILER_FLAGS "-Wall -g ${CPP11_FLAGS} ${OPENMP_C_FLAGS}" CACHE STRING "common compiler options")

# Disable address space randomization for OSX lion and above
if (APPLE)
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Xlinker -no_pie")
endif()

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,${GraphLab_SOURCE_DIR}/deps/local/lib")

# Set subdirectories
subdirs(src tests demoapps toolkits)
if(EXPERIMENTAL)
  if (IS_DIRECTORY ${GraphLab_SOURCE_DIR}/experimental)
    subdirs(experimental)
  endif()
endif()

if (IS_DIRECTORY ${GraphLab_SOURCE_DIR}/apps)
  subdirs(apps)
endif()

# Set installation rules
install(DIRECTORY src/
  DESTINATION include
  FILES_MATCHING PATTERN "*.hpp"  PATTERN "*.h"
  PATTERN ".svn" EXCLUDE
  )
install(CODE "execute_process(COMMAND ./scripts/install_deps.sh
  ${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY
  ${CMAKE_CURRENT_SOURCE_DIR})")

# set(EXTERNAL_PROJECT_FLAGS
#   "-I${GraphLab_SOURCE_DIR}/deps/local/include -L${GraphLab_SOURCE_DIR}/deps/local/lib")



### ===================================================================
# ## Download News update
# if(NOT DISABLE_NEWS)
#   message(STATUS
#     "\n"
#     "===============================================================\n"
#     "Downloading the news from graphlab.org: ")
#   file(DOWNLOAD "http://graphlab.org/news.txt"
#     ${GraphLab_SOURCE_DIR}/new_news.txt
#     TIMEOUT 3
#     STATUS download_status)
#   # Track usage v2 news url
#   file(DOWNLOAD "http://c.statcounter.com/7396904/0/a1b29b21/1/"
#     ${GraphLab_SOURCE_DIR}/temporary_download_counter.tmp
#     TIMEOUT 3
#     STATUS dlstatus)
#   file(REMOVE ${GraphLab_SOURCE_DIR}/temporary_download_counter.tmp)
#   file(READ ${GraphLab_SOURCE_DIR}/new_news.txt news_update)
#   message(STATUS
#     "Finished.\n"
#     ${news_update}
#     "\n"
#     "===============================================================")
# endif()






## ============================================================================
## ============================================================================
## ============================================================================
# Build external dependencies

# Build eigen =================================================================
# TODO: Move to toolkits.
# While eigen is not used in the core GraphLab library we found it
# useful to have a matrix library. For now we download eigen from
# our servers since the eigen servers use SSL which is not supported
# by cmake DOWNLOAD_COMMAND hg clone
# https://bitbucket.org/eigen/eigen/
ExternalProject_Add(eigen
  PREFIX ${GraphLab_SOURCE_DIR}/deps/eigen
  URL http://bitbucket.org/eigen/eigen/get/3.1.2.tar.bz2
  URL_MD5 e9c081360dde5e7dcb8eba3c8430fde2
  CONFIGURE_COMMAND ""
  BUILD_COMMAND ""
  BUILD_IN_SOURCE 1
  INSTALL_COMMAND cp -r Eigen unsupported <INSTALL_DIR>/
  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local/include)
add_definitions(-DHAS_EIGEN)

macro(requires_eigen NAME)
  add_dependencies(${NAME} eigen)
endmacro(requires_eigen)


# libbz  =================================================================
ExternalProject_Add(libbz2
  PREFIX ${GraphLab_SOURCE_DIR}/deps/libbz2
  URL http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
  URL_MD5 00b516f4704d4a7cb50a1d97e6e8e15b
  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local
  CONFIGURE_COMMAND ""
  PATCH_COMMAND patch -N -p0 -i ${GraphLab_SOURCE_DIR}/patches/libbz2_fpic.patch || true
  BUILD_IN_SOURCE 1
  BUILD_COMMAND make install PREFIX=<INSTALL_DIR>
  INSTALL_COMMAND "" )




# Build Boost =================================================================
# GraphLab relies heavily on the boost library for parsing program
# options, filesystem support, random number generation, and
# unordered containers.
ExternalProject_Add(boost
  PREFIX ${GraphLab_SOURCE_DIR}/deps/boost
  URL "http://tcpdiag.dl.sourceforge.net/project/boost/boost/1.53.0/boost_1_53_0.tar.gz" 
  URL_MD5 57a9e2047c0f511c4dfcf00eb5eb2fbb
  BUILD_IN_SOURCE 1
  CONFIGURE_COMMAND
  ./bootstrap.sh
  --with-libraries=filesystem
  --with-libraries=program_options
  --with-libraries=system
  --with-libraries=iostreams
  --with-libraries=date_time
  --with-libraries=random
  --with-libraries=context
  --prefix=<INSTALL_DIR>
  BUILD_COMMAND
  C_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
  CPLUS_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
  LIBRARY_PATH=${GraphLab_SOURCE_DIR}/deps/local/lib
  ./b2 install link=static variant=release threading=multi runtime-link=static
  INSTALL_COMMAND ""
  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local )
set(BOOST_ROOT ${GraphLab_SOURCE_DIR}/deps/local )
set(BOOST_LIBS_DIR ${GraphLab_SOURCE_DIR}/deps/local/lib)
set(Boost_LIBRARIES
  ${BOOST_LIBS_DIR}/libboost_filesystem.a
  ${BOOST_LIBS_DIR}/libboost_program_options.a
  ${BOOST_LIBS_DIR}/libboost_system.a
  ${BOOST_LIBS_DIR}/libboost_iostreams.a
  ${BOOST_LIBS_DIR}/libboost_context.a
  ${BOOST_LIBS_DIR}/libboost_date_time.a)
add_dependencies(boost libbz2)
message(STATUS "Boost libs: " ${Boost_LIBRARIES})
# add_definitions(-DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG)
# add_definitions(-DBOOST_ALL_DYN_LINK)
# set(Boost_SHARED_LIBRARIES "")
foreach(blib ${Boost_LIBRARIES})
  message(STATUS "Boost libs: " ${blib})
  string(REGEX REPLACE "\\.a$" ${CMAKE_SHARED_LIBRARY_SUFFIX} bout ${blib})
  message(STATUS "Boost dyn libs: " ${bout})
  set(Boost_SHARED_LIBRARIES ${Boost_SHARED_LIBRARIES} ${bout})
endforeach()
message(STATUS "Boost Shared libs: " ${Boost_SHARED_LIBRARIES})

if(NOT NO_TCMALLOC)
    if(APPLE)
    set (tcmalloc_shared "--enable-shared=yes")
    else()
    set (tcmalloc_shared "--enable-shared=no")
    endif()

    # TCMalloc  ===================================================================
    # We use tcmalloc for improved memory allocation performance
    ExternalProject_Add(libtcmalloc
    PREFIX ${GraphLab_SOURCE_DIR}/deps/tcmalloc
    # Some users can't access domain googlecode.com ,This is a spare URL
    # URL http://sourceforge.jp/projects/sfnet_gperftools.mirror/downloads/gperftools-2.0.tar.gz
    URL http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz
    URL_MD5 13f6e8961bc6a26749783137995786b6
    PATCH_COMMAND patch -N -p0 -i ${GraphLab_SOURCE_DIR}/patches/tcmalloc.patch || true
    CONFIGURE_COMMAND <SOURCE_DIR>/configure --enable-frame-pointers --prefix=<INSTALL_DIR> ${tcmalloc_shared}
    INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local)
    #link_libraries(tcmalloc)
    set(TCMALLOC-FOUND 1)
    add_definitions(-DHAS_TCMALLOC)
endif()



# Lib Jpeg =================================================================
#ExternalProject_Add(libjpeg
#  PREFIX ${GraphLab_SOURCE_DIR}/deps/libjpeg
#  URL http://www.ijg.org/files/jpegsrc.v8d.tar.gz
#  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local
#  CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
#  BUILD_IN_SOURCE 1)
#


# v8 ======================================================================

# ImageMagick =================================================================
# # set(imagemagick_configure_cmd
# #   bash -c "C_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include CPLUS_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include LIBRARY_PATH=${GraphLab_SOURCE_DIR}/deps/local/lib LDFLAGS='-L${GraphLab_SOURCE_DIR}/deps/local/lib' ./configure  --prefix=${GraphLab_SOURCE_DIR}/deps/local --without-threads --disable-openmp --disable-opencl")
# # ExternalProject_Add(imagemagick
# #   PREFIX ${GraphLab_SOURCE_DIR}/deps/imagemagick
# #   URL http://www.imagemagick.org/download/ImageMagick.tar.gz
# #   # URL_MD5 010b63a2542c4ec4918c8cb431c00356
# #   BUILD_IN_SOURCE 1
# #   CONFIGURE_COMMAND ${imagemagick_configure_cmd}
# #   BUILD_COMMAND
# #   C_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
# #   CPLUS_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
# #   LIBRARY_PATH=${GraphLab_SOURCE_DIR}/deps/local/lib
# # #  LDFLAGS=-L${GraphLab_SOURCE_DIR}/deps/local/lib
# #   make
# #   INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local)
#ExternalProject_Add(imagemagick
#  PREFIX ${GraphLab_SOURCE_DIR}/deps/imagemagick
#  URL http://www.imagemagick.org/download/ImageMagick.tar.gz
#  # URL_MD5 010b63a2542c4ec4918c8cb431c00356
#  CONFIGURE_COMMAND
#  C_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
#  CPLUS_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
#  LIBRARY_PATH=${GraphLab_SOURCE_DIR}/deps/local/lib
#  LDFLAGS=-L${GraphLab_SOURCE_DIR}/deps/local/lib
#  <SOURCE_DIR>/configure
#  --prefix=<INSTALL_DIR>
#  --without-threads
#  --disable-openmp
#  --disable-opencl
#  BUILD_COMMAND
#  C_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
#  CPLUS_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include
#  LIBRARY_PATH=${GraphLab_SOURCE_DIR}/deps/local/lib
#  LDFLAGS=-L${GraphLab_SOURCE_DIR}/deps/local/lib
#  make
#  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local)
#include_directories(${GraphLab_SOURCE_DIR}/deps/local/include/ImageMagick)
#add_dependencies(imagemagick libjpeg)

# macro(requires_imagemagick NAME)
#  target_link_libraries(${NAME} Magick++ jpeg)
#  add_dependencies(${NAME} imagemagick libjpeg)
# endmacro(requires_imagemagick)

# OpenCV =================================================================
ExternalProject_Add(opencv
  PREFIX ${GraphLab_SOURCE_DIR}/deps/opencv
  URL http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download
  # URL_MD5 010b63a2542c4ec4918c8cb431c00356
  PATCH_COMMAND patch -N -p0 cmake/OpenCVModule.cmake -i ${GraphLab_SOURCE_DIR}/patches/opencv_apple_rpath.patch || true
  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
  -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_PACKAGE=OFF -DBUILD_EXAMPLES=OFF -DOPENCV_BUILD_3RDPARTY_LIBS=ON -DBUILD_SHARED_LIBS=ON -DBUILD_DOCS=OFF -DBUILD_JPEG=ON -DCMAKE_INCLUDE_PATH=${GraphLab_SOURCE_DIR}/deps/local/include -DWITH_CUBLAS=OFF -DWITH_1394=OFF -DWITH_AVFOUNDATION=OFF -DWITH_CUDA=OFF -DWITH_CUFFT=OFF -DWITH_FFMPEG=OFF -DWITH_GSTREAMER=OFF -DWITH_GTK=OFF -DWITH_QUICKTIME=OFF -DWITH_VIDEOINPUT=OFF -DWITH_XIMEA=OFF -DWITH_XINE=OFF -DWITH_V4L=OFF -DWITH_UNICAP=OFF -DWITH_QT=OFF -DWITH_JASPER=NO -DWITH_TIFF=NO -DWITH_OPENCL=OFF -DCMAKE_LIBRARY_PATH=${GraphLab_SOURCE_DIR}/deps/local/lib
  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local)

# add_dependencies(opencv eigen)

macro(requires_opencv NAME)
  get_target_property(tmp ${NAME} COMPILE_FLAGS)
  if (NOT tmp)
    set(tmp "-I${CMAKE_SOURCE_DIR}/deps/local/include/opencv")
  else()
    set(tmp "${tmp} -I${CMAKE_SOURCE_DIR}/deps/local/include/opencv")
  endif()
  set_target_properties(${NAME} PROPERTIES COMPILE_FLAGS "${tmp}")
  target_link_libraries(${NAME} opencv_core opencv_imgproc opencv_calib3d opencv_video opencv_features2d opencv_ml opencv_highgui opencv_objdetect opencv_contrib opencv_legacy opencv_contrib opencv_stitching)
  add_dependencies(${NAME} opencv)
endmacro(requires_opencv)

# zlib  =======================================================================
# We rely on the zlib library to read gzip compressed files
# (using boost iostreams).
# check_library_exists(z zlibVersion "" ZLIB_FOUND)
# if (ZLIB_FOUND)
#   add_definitions(-DHAS_ZLIB)
#   link_libraries(z)
# endif()

# libevent ====================================================================
# LibEvent is used in the RPC layer to manage the interaction between the
# TCP stack and the event handler threads

if (APPLE)
  ExternalProject_Add(libevent
    PREFIX ${GraphLab_SOURCE_DIR}/deps/event
    URL http://iweb.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.18-stable.tar.gz
    URL_MD5 aa1ce9bc0dee7b8084f6855765f2c86a
    CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-openssl --enable-shared=no
    INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local
  )
else()
  ExternalProject_Add(libevent
    PREFIX ${GraphLab_SOURCE_DIR}/deps/event
    URL http://iweb.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.18-stable.tar.gz
    URL_MD5 aa1ce9bc0dee7b8084f6855765f2c86a
    CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-openssl --enable-shared=no
    INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local
    INSTALL_COMMAND prefix=<INSTALL_DIR>/ make install && ${GraphLab_SOURCE_DIR}/patches/libevent_clean_and_remap.sh <INSTALL_DIR>/lib
  )
endif()
#link_libraries(event)
#link_libraries(event_pthreads)


# libjson ====================================================================
# Lib Json is used to support json serialization for long term storage of
# graph data.
#ExternalProject_Add(libjson
#  PREFIX ${GraphLab_SOURCE_DIR}/deps/json
#  URL http://graphlab.org/deps/libjson_7.6.0.zip
#  URL_MD5 dcb326038bd9b710b8f717580c647833
#  BUILD_IN_SOURCE 1
#  CONFIGURE_COMMAND ""
#  PATCH_COMMAND patch -N -p1 -i ${GraphLab_SOURCE_DIR}/patches/libjson.patch || true
#  BUILD_COMMAND make
#  INSTALL_COMMAND prefix=<INSTALL_DIR>/ make install
#  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local
#  )


# zookeeper ================================================================

ExternalProject_Add(zookeeper
  PREFIX ${GraphLab_SOURCE_DIR}/deps/zookeeper
  URL http://mirror.metrocast.net/apache/zookeeper/zookeeper-3.5.1-alpha/zookeeper-3.5.1-alpha.tar.gz
  URL_MD5 d85f9751724d3f20f792803b61c4db24
  PATCH_COMMAND ${CMAKE_COMMAND} -E copy_directory ${GraphLab_SOURCE_DIR}/patches/zookeeper/ <SOURCE_DIR>
  BUILD_IN_SOURCE 1
  CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> --disable-shared
  INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local)

## =============================================================
# JNI =========================================================================
# We use JNI for jvm interfacing and for hdfs support.  We currently only
# detect the presence of java and do not install our own version.

if(NOT NO_JAVAC)
  find_package(Java)
  find_package(JNI)


  if((EXISTS ${JAVA_INCLUDE_PATH}/jni.h))
    set(JNI_REALLY_FOUND 1 CACHE BOOL "Tests whether the header actually exists")
    message(STATUS "jni.h was found at " ${JAVA_INCLUDE_PATH}/jni.h)
    include_directories(${JNI_INCLUDE_DIRS})
    ## Guess java home location
    if(EXISTS $ENV{JAVA_HOME} )
      set(JAVA_HOME $ENV{JAVA_HOME} CACHE STRING "Location of Java Home")
      message(STATUS "Java home set by user: " ${JAVA_HOME})
    else()
      string(REGEX REPLACE "\\/include" "" JAVA_HOME_GUESS  ${JAVA_AWT_INCLUDE_PATH})
      set(JAVA_HOME ${JAVA_HOME_GUESS} CACHE STRING "Location of Java Home")
      message(STATUS "Java Home guessed: " ${JAVA_HOME})
    endif()
  else( )
    set(JNI_REALLY_FOUND 0 CACHE BOOL "Tests whether the header actually exists")
    message(STATUS "jni.h was not found at " ${JAVA_INCLUDE_PATH}/jni.h)
  endif( )

  # Ant =========================================================================
  # Ant is used to build the graphlab JVM interface
  find_package(Ant)

  # LibHDFS =====================================================================
  # If JNI is found we install libhdfs which allows programs to read and write
  # to hdfs filesystems
  if( JNI_REALLY_FOUND )
    message(STATUS "Building libhdfs")
    ExternalProject_Add(hadoop
      PREFIX ${GraphLab_SOURCE_DIR}/deps/hadoop
      URL https://archive.apache.org/dist/hadoop/core/hadoop-1.0.1/hadoop-1.0.1.tar.gz
#      URL http://www.gtlib.gatech.edu/pub/apache/hadoop/common/hadoop-1.0.1/hadoop-1.0.1.tar.gz
      URL_MD5 e627d9b688c4de03cba8313bd0bba148
      UPDATE_COMMAND chmod +x <SOURCE_DIR>/src/c++/libhdfs/install-sh <SOURCE_DIR>/src/c++/libhdfs/configure
      PATCH_COMMAND patch -N -p1 -i ${GraphLab_SOURCE_DIR}/patches/libhdfs.patch || true
      BUILD_IN_SOURCE 1
      CONFIGURE_COMMAND <SOURCE_DIR>/src/c++/libhdfs/configure JVM_ARCH=tune=generic --prefix=<INSTALL_DIR> --with-java=${JAVA_HOME} --enable-shared=no --enable-static=yes
      INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local
      TEST_COMMAND bash -c "mkdir -p <INSTALL_DIR>/include && cp <SOURCE_DIR>/src/c++/libhdfs/hdfs.h <INSTALL_DIR>/include")
    set(HADOOP_FOUND 1 CACHE BOOL "Hadoop was found")
    add_definitions(-DHAS_HADOOP)
    # link_libraries(hdfs ${JAVA_JVM_LIBRARY})
  endif( JNI_REALLY_FOUND )



endif()



# MPI =========================================================================
# MPI is currently used to establish communication between rpc nodes
#sgr this name is confusing. i like WITH_MPI better. likewise for NO_OPENMP
if(NO_MPI)
  message(STATUS "MPI disabled as a configure option.")
else()
  #find_package(MPICH2)
  find_package(MPI) 
  if(MPI_FOUND)
    message(STATUS "MPI Found: " ${MPI_LIBRARY} ${MPI_EXTRA_LIBRARY})
    add_definitions(-DHAS_MPI)
    include_directories(${MPI_INCLUDE_PATH})
  else(MPI_FOUND)
    message(STATUS "MPI Not Found! Distributed Executables will not be compiled")
    set(MPI_LIBRARY "")
    set(MPI_EXTRA_LIBRARY "")
    # ExternalProject_Add(openmpi
    #   PREFIX ${GraphLab_SOURCE_DIR}/deps/openmpi
    #   URL http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.5.tar.gz
    #   CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
    #   INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local)
  endif(MPI_FOUND)
endif()



#ExternalProject_Add(qthreads
#                    PREFIX ${GraphLab_SOURCE_DIR}/deps/qthreads
#                    URL http://graphlab.org/deps/qthreads.tar.bz2
#                    URL_MD5 fd94ae41a06f3756c1042d47cfa671d3
#                    INSTALL_DIR ${GraphLab_SOURCE_DIR}/deps/local
#                    BUILD_IN_SOURCE 1
#                    CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> --enable-oversubscription --with-scheduler=sherwood --enable-lf-febs -enable-condwait-queue
#                    )



## =============================================================
# Core graphlab requirements
macro(requires_core_deps NAME)
  target_link_libraries(${NAME}
    ${Boost_LIBRARIES}
    z
    event event_pthreads
    zookeeper_mt)
  add_dependencies(${NAME} boost libevent zookeeper)
  if(MPI_FOUND)
    target_link_libraries(${NAME} ${MPI_LIBRARY} ${MPI_EXTRA_LIBRARY})
  endif(MPI_FOUND)
  if(HADOOP_FOUND)
    target_link_libraries(${NAME} hdfs ${JAVA_JVM_LIBRARY})
    add_dependencies(${NAME} hadoop)
  endif(HADOOP_FOUND)
  if(NOT NO_TCMALLOC)
    target_link_libraries(${NAME} tcmalloc)
    add_dependencies(${NAME} libtcmalloc)
  endif()
endmacro(requires_core_deps)





## ============================================================================
# System Checks

## ============================================================================
# Test for cpu affinity support
set(CMAKE_REQUIRED_LIBRARIES "pthread")
check_function_exists(pthread_setaffinity_np HAS_SET_AFFINITY)
set(CMAKE_REQUIRED_LIBRARIES ${crlbackup})

include(CheckCXXCompilerFlag)
## ============================================================================
# check if MARCH is set
if (NOT MARCH)
  #set to native if supported
  check_cxx_compiler_flag(-march=native HAS_MARCH_NATIVE)
  if(HAS_MARCH_NATIVE)
    set(MARCH "native")
  else()
    set(MARCH "x86-64")
  endif()
endif()

# check if MTUNE is set
if (NOT MTUNE)
  #set to native if supported
  check_cxx_compiler_flag(-mtune=native HAS_MTUNE_NATIVE)
  if(HAS_MTUNE_NATIVE)
    set(MTUNE "native")
  else()
    set(MTUNE "x86-64")
  endif()
endif()

## ============================================================================
# Setup compiler

# If profiling mode is enabled then additional profiling flags are set for
# the compiler
if (COMPILE_PROFILING MATCHES 1)
  set(PROFILING_FLAGS "-DUSE_EVENT_LOG -DUSE_TRACEPOINT")
else()
  set(PROFILING_FLAGS "")
endif()

# check for SSE instruction set (needed for CRC32)
#check_cxx_compiler_flag(-msse4.2 HAS_SSE42)
#set(SSE42_FLAG "")
#if (HAS_SSE42)
# set(SSE42_FLAG "-msse4.2")
#endif()


#disable Wno-unused-local-typedefs if available
check_cxx_compiler_flag(-Wno-unused-local-typedefs HAS_WNO_LOCAL_TYPEDEFS)
if(HAS_WNO_LOCAL_TYPEDEFS)
  set(WNO_LOCAL_TYPEDEFS "-Wno-unused-local-typedefs")
else()
  set(WNO_LOCAL_TYPEDEFS "")
endif()


# Set the debug flags
set(CMAKE_C_FLAGS_DEBUG
  "-O0 -Wno-attributes -march=${MARCH} -Winit-self ${PROFILING_FLAGS} ${COMPILER_FLAGS}"
  CACHE STRING "compiler options" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG
  "-O0 ${WNO_LOCAL_TYPEDEFS} -Wno-attributes -march=${MARCH} -Winit-self ${PROFILING_FLAGS} ${COMPILER_FLAGS}"
  CACHE STRING "compiler options" FORCE)

set(CMAKE_C_FLAGS_RELEASE
  "-O3 -Wno-attributes -march=${MARCH} -mtune=${MTUNE} ${PROFILING_FLAGS} ${COMPILER_FLAGS}"
  CACHE STRING "compiler options" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE
  "-O3 ${WNO_LOCAL_TYPEDEFS} -Wno-attributes -march=${MARCH} -mtune=${MTUNE} ${PROFILING_FLAGS} ${COMPILER_FLAGS}"
  CACHE STRING "compiler options" FORCE)

set(CMAKE_REQUIRED_FLAGS ${CMAKE_CXX_FLAGS_RELEASE})
check_cxx_source_compiles("int main(int argc, char** argv) { return __builtin_ia32_crc32di(0,0);}" HAS_CRC32)
set(CMAKE_REQUIRED_FLAGS "")
if(HAS_CRC32)
  set(CMAKE_CXX_FLAGS_RELEASE
      "${CMAKE_CXX_FLAGS_RELEASE} -DHAS_BUILTIN_CRC32"
      CACHE STRING "compiler options" FORCE)
endif()

# check for gcc 4.8


# # Mex setup
# set(CMAKE_CXX_FLAGS_MEX
#   "${CMAKE_CXX_FLAGS_RELEASE} -D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -pthread ")
# set(CMAKE_C_FLAGS_MEX
#   "${CMAKE_C_FLAGS_RELEASE}   -D_GNU_SOURCE  -fexceptions -fPIC -fno-omit-frame-pointer -pthread ")


if (CMAKE_BUILD_TYPE MATCHES "Release")
  message(STATUS "Release build with C++ flags: " ${CMAKE_CXX_FLAGS_RELEASE})
  message(STATUS "Release build with C flags: " ${CMAKE_C_FLAGS_RELEASE})
elseif(CMAKE_BUILD_TYPE MATCHES "Debug")
  message(STATUS "Debug build with C++ flags: " ${CMAKE_CXX_FLAGS_DEBUG})
  message(STATUS "Debug build with C flags: " ${CMAKE_C_FLAGS_DEBUG})
elseif(CMAKE_BUILD_TYPE MATCHES "Mex")
  message(STATUS "Mex CXX" ${CMAKE_CXX_FLAGS_MEX})
  message(STATUS "Mex C" ${CMAKE_C_FLAGS_MEX})
else()
  message(WARNING "Unknown build type: " ${CMAKE_BUILD_TYPE} "!")
endif()







## ============================================================================
## ============================================================================
## ============================================================================
# Setup testing tools
# Make sure testing is enabled
enable_testing()
# Use Python interpreter
find_package(PythonInterp)
set(CXXTESTGEN ${CMAKE_SOURCE_DIR}/cxxtest/cxxtestgen)
# create a macro to define a test
macro(ADD_CXXTEST NAME)
  if(PYTHONINTERP_FOUND)
    add_custom_command(
      OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.cpp
      COMMAND
      ${PYTHON_EXECUTABLE} ${CXXTESTGEN}
      --runner=ErrorPrinter
      -o ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.cpp ${ARGV}
      DEPENDS ${ARGV}
      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
      )
  endif(PYTHONINTERP_FOUND)
  add_graphlab_executable(${NAME}test ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.cpp)
  set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.cpp
    PROPERTIES COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}" )

  add_test(${NAME} ${NAME}test)
endmacro(ADD_CXXTEST)


# macro(ADD_CPPTEST NAME)
#   add_graphlab_executable(${NAME}test ${NAME})
#   set_source_files_properties(${NAME}
#     PROPERTIES COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}" )
#   add_test(${NAME} ${NAME}test)
# endmacro(ADD_CPPTEST)






## ============================================================================
## ============================================================================
## ============================================================================
# Build Macros

# copy_file ===================================================================
# copy a single file into build environment
macro(copy_file NAME)
  message(STATUS "Copying File: " ${NAME})
  file(INSTALL ${CMAKE_CURRENT_SOURCE_DIR}/${NAME}
    DESTINATION   ${CMAKE_CURRENT_BINARY_DIR} )
endmacro(copy_file NAME)

# copy_files ==================================================================
# copy all files matching a pattern into the build environment
macro(copy_files NAME)
  message(STATUS "Copying Files: " ${NAME})
  file(INSTALL ${CMAKE_CURRENT_SOURCE_DIR}/
    DESTINATION  ${CMAKE_CURRENT_BINARY_DIR}
    FILES_MATCHING PATTERN ${NAME} )
endmacro(copy_files NAME)


# macro(EXEC file prog)
#   add_custom_command(
#     OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${file}
#     COMMAND
#     ${prog}
#     DEPENDS ${prog}
#     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
#     )
# endmacro(EXEC)

# add_graphlab_executable =====================================================
# copy all files matching a pattern into the build environment
macro(add_graphlab_executable NAME)
  add_executable(${NAME} ${ARGN})
  target_link_libraries(${NAME} graphlab)
  add_dependencies(${NAME} graphlab)
  requires_core_deps(${NAME})
endmacro(add_graphlab_executable)


macro(add_extension_executable NAME)
  add_executable(${NAME} extension_main.cpp ${ARGN})
#  if(!APPLE)
#set_target_properties(${NAME} PROPERTIES LINK_FLAGS -Wl,-wrap,main)
#  endif()
  target_link_libraries(${NAME} graphlab graphlab_extension)
  add_dependencies(${NAME} graphlab graphlab_extension)
  requires_core_deps(${NAME})
endmacro(add_extension_executable)



add_custom_target(external_dependencies)
requires_core_deps(external_dependencies)

# add_jni_library =============================================================
# If jni was found then create a jni library.  Otherwise generate a warning
macro(add_jni_library NAME)
  # Only build if JNI was found
  if (JNI_REALLY_FOUND)
    include_directories(
      ${JAVA_INCLUDE_PATH}
      ${JAVA_INCLUDE_PATH}/linux
      )
    message(STATUS "Detected JNI library " ${NAME})
    add_library(${NAME} SHARED ${ARGN})
    target_link_libraries(${NAME}  graphlab_pic)
    target_link_libraries(${NAME} ${Boost_SHARED_LIBRARIES})
    # IF (APPLE)
    #         SET(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS "-dynamiclib -m64 ")
    #         SET_TARGET_PROPERTIES(${NAME} PROPERTIES SUFFIX .jnilib)
    # ENDIF (APPLE)
  elseif ()
    message(STATUS "Not building " ${NAME} " because JNI was not found")
  endif ()
endmacro(add_jni_library)


================================================
FILE: Doxyfile
================================================
# Doxyfile 1.5.8

# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
#
# All text after a hash (#) is considered a comment and will be ignored
# The format is:
#       TAG = value [value, ...]
# For lists items can also be appended using:
#       TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------

# This tag specifies the encoding used for all characters in the config file 
# that follow. The default is UTF-8 which is also the encoding used for all 
# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
# iconv built into libc) for the transcoding. See 
# http://www.gnu.org/software/libiconv for the list of possible encodings.

DOXYFILE_ENCODING      = UTF-8

# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
# by quotes) that should identify the project.

PROJECT_NAME           = "GraphLab: Distributed Graph-Parallel API"

# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
# This could be handy for archiving the generated documentation or 
# if some version control system is used.

PROJECT_NUMBER         = 2.2

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
# base path where the generated documentation will be put. 
# If a relative path is entered, it will be relative to the location 
# where doxygen was started. If left blank the current directory will be used.

OUTPUT_DIRECTORY       = doc/doxygen

# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
# 4096 sub-directories (in 2 levels) under the output directory of each output 
# format and will distribute the generated files over these directories. 
# Enabling this option can be useful when feeding doxygen a huge amount of 
# source files, where putting all generated files in the same directory would 
# otherwise cause performance problems for the file system.

CREATE_SUBDIRS         = NO

# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
# documentation generated by doxygen is written. Doxygen will use this 
# information to generate all constant output in the proper language. 
# The default language is English, other supported languages are: 
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, 
# Spanish, Swedish, and Ukrainian.

OUTPUT_LANGUAGE        = English

# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
# include brief member descriptions after the members that are listed in 
# the file and class documentation (similar to JavaDoc). 
# Set to NO to disable this.

BRIEF_MEMBER_DESC      = YES

# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
# the brief description of a member or function before the detailed description. 
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
# brief descriptions will be completely suppressed.

REPEAT_BRIEF           = YES

# This tag implements a quasi-intelligent brief description abbreviator 
# that is used to form the text in various listings. Each string 
# in this list, if found as the leading text of the brief description, will be 
# stripped from the text and the result after processing the whole list, is 
# used as the annotated text. Otherwise, the brief description is used as-is. 
# If left blank, the following values are used ("$name" is automatically 
# replaced with the name of the entity): "The $name class" "The $name widget" 
# "The $name file" "is" "provides" "specifies" "contains" 
# "represents" "a" "an" "the"

ABBREVIATE_BRIEF       = 

# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
# Doxygen will generate a detailed section even if there is only a brief 
# description.

ALWAYS_DETAILED_SEC    = NO

# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
# inherited members of a class in the documentation of that class as if those 
# members were ordinary class members. Constructors, destructors and assignment 
# operators of the base classes will not be shown.

INLINE_INHERITED_MEMB  = YES

# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
# path before files name in the file list and in the header files. If set 
# to NO the shortest path that makes the file name unique will be used.

FULL_PATH_NAMES        = YES

# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
# can be used to strip a user-defined part of the path. Stripping is 
# only done if one of the specified strings matches the left-hand part of 
# the path. The tag can be used to show relative paths in the file list. 
# If left blank the directory from which doxygen is run is used as the 
# path to strip.

STRIP_FROM_PATH        = src/ 

# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
# the path mentioned in the documentation of a class, which tells 
# the reader which header file to include in order to use a class. 
# If left blank only the name of the header file containing the class 
# definition is used. Otherwise one should specify the include paths that 
# are normally passed to the compiler using the -I flag.

STRIP_FROM_INC_PATH    = src/ 

# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
# (but less readable) file names. This can be useful is your file systems 
# doesn't support long names like on DOS, Mac, or CD-ROM.

SHORT_NAMES            = NO

# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
# will interpret the first line (until the first dot) of a JavaDoc-style 
# comment as the brief description. If set to NO, the JavaDoc 
# comments will behave just like regular Qt-style comments 
# (thus requiring an explicit @brief command for a brief description.)

JAVADOC_AUTOBRIEF      = NO

# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
# interpret the first line (until the first dot) of a Qt-style 
# comment as the brief description. If set to NO, the comments 
# will behave just like regular Qt-style comments (thus requiring 
# an explicit \brief command for a brief description.)

QT_AUTOBRIEF           = NO

# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
# comments) as a brief description. This used to be the default behaviour. 
# The new default is to treat a multi-line C++ comment block as a detailed 
# description. Set this tag to YES if you prefer the old behaviour instead.

MULTILINE_CPP_IS_BRIEF = NO

# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
# member inherits the documentation from any documented member that it 
# re-implements.

INHERIT_DOCS           = YES

# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
# a new page for each member. If set to NO, the documentation of a member will 
# be part of the file/class/namespace that contains it.

SEPARATE_MEMBER_PAGES  = NO

# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
# Doxygen uses this value to replace tabs by spaces in code fragments.

TAB_SIZE               = 2

# This tag can be used to specify a number of aliases that acts 
# as commands in the documentation. An alias has the form "name=value". 
# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
# put the command \sideeffect (or @sideeffect) in the documentation, which 
# will result in a user-defined paragraph with heading "Side Effects:". 
# You can put \n's in the value part of an alias to insert newlines.

ALIASES                = 

# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
# sources only. Doxygen will then generate output that is more tailored for C. 
# For instance, some of the names that are used will be different. The list 
# of all members will be omitted, etc.

OPTIMIZE_OUTPUT_FOR_C  = NO

# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
# sources only. Doxygen will then generate output that is more tailored for 
# Java. For instance, namespaces will be presented as packages, qualified 
# scopes will look different, etc.

OPTIMIZE_OUTPUT_JAVA   = NO

# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
# sources only. Doxygen will then generate output that is more tailored for 
# Fortran.

OPTIMIZE_FOR_FORTRAN   = NO

# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
# sources. Doxygen will then generate output that is tailored for 
# VHDL.

OPTIMIZE_OUTPUT_VHDL   = NO

# Doxygen selects the parser to use depending on the extension of the files it parses. 
# With this tag you can assign which parser to use for a given extension. 
# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
# The format is ext=language, where ext is a file extension, and language is one of 
# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
# use: inc=Fortran f=C

EXTENSION_MAPPING      = 

# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
# to include (a tag file for) the STL sources as input, then you should 
# set this tag to YES in order to let doxygen match functions declarations and 
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
# func(std::string) {}). This also make the inheritance and collaboration 
# diagrams that involve STL classes more complete and accurate.

BUILTIN_STL_SUPPORT    = YES

# If you use Microsoft's C++/CLI language, you should set this option to YES to 
# enable parsing support.

CPP_CLI_SUPPORT        = NO

# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
# Doxygen will parse them like normal C++ but will assume all classes use public 
# instead of private inheritance when no explicit protection keyword is present.

SIP_SUPPORT            = NO

# For Microsoft's IDL there are propget and propput attributes to indicate getter 
# and setter methods for a property. Setting this option to YES (the default) 
# will make doxygen to replace the get and set methods by a property in the 
# documentation. This will only work if the methods are indeed getting or 
# setting a simple type. If this is not the case, or you want to show the 
# methods anyway, you should set this option to NO.

IDL_PROPERTY_SUPPORT   = NO

# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
# tag is set to YES, then doxygen will reuse the documentation of the first 
# member in the group (if any) for the other members of the group. By default 
# all members of a group must be documented explicitly.

DISTRIBUTE_GROUP_DOC   = NO

# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
# the same type (for instance a group of public functions) to be put as a 
# subgroup of that type (e.g. under the Public Functions section). Set it to 
# NO to prevent subgrouping. Alternatively, this can be done per class using 
# the \nosubgrouping command.

SUBGROUPING            = YES

# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
# is documented as struct, union, or enum with the name of the typedef. So 
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
# with name TypeT. When disabled the typedef will appear as a member of a file, 
# namespace, or class. And the struct will be named TypeS. This can typically 
# be useful for C code in case the coding convention dictates that all compound 
# types are typedef'ed and only the typedef is referenced, never the tag name.

TYPEDEF_HIDES_STRUCT   = NO

# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
# determine which symbols to keep in memory and which to flush to disk. 
# When the cache is full, less often used symbols will be written to disk. 
# For small to medium size projects (<1000 input files) the default value is 
# probably good enough. For larger projects a too small cache size can cause 
# doxygen to be busy swapping symbols to and from disk most of the time 
# causing a significant performance penality. 
# If the system has enough physical memory increasing the cache will improve the 
# performance by keeping more symbols in memory. Note that the value works on 
# a logarithmic scale so increasing the size by one will rougly double the 
# memory usage. The cache size is given by this formula: 
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
# corresponding to a cache size of 2^16 = 65536 symbols

SYMBOL_CACHE_SIZE      = 0

#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------

# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
# documentation are documented, even if no documentation was available. 
# Private class members and static file members will be hidden unless 
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES

EXTRACT_ALL            = NO

# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
# will be included in the documentation.

EXTRACT_PRIVATE        = NO

# If the EXTRACT_STATIC tag is set to YES all static members of a file 
# will be included in the documentation.

EXTRACT_STATIC         = NO

# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
# defined locally in source files will be included in the documentation. 
# If set to NO only classes defined in header files are included.

EXTRACT_LOCAL_CLASSES  = NO

# This flag is only useful for Objective-C code. When set to YES local 
# methods, which are defined in the implementation section but not in 
# the interface are included in the documentation. 
# If set to NO (the default) only methods in the interface are included.

EXTRACT_LOCAL_METHODS  = NO

# If this flag is set to YES, the members of anonymous namespaces will be 
# extracted and appear in the documentation as a namespace called 
# 'anonymous_namespace{file}', where file will be replaced with the base 
# name of the file that contains the anonymous namespace. By default 
# anonymous namespace are hidden.

EXTRACT_ANON_NSPACES   = NO

# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
# undocumented members of documented classes, files or namespaces. 
# If set to NO (the default) these members will be included in the 
# various overviews, but no documentation section is generated. 
# This option has no effect if EXTRACT_ALL is enabled.

HIDE_UNDOC_MEMBERS     = NO

# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
# undocumented classes that are normally visible in the class hierarchy. 
# If set to NO (the default) these classes will be included in the various 
# overviews. This option has no effect if EXTRACT_ALL is enabled.

HIDE_UNDOC_CLASSES     = YES

# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
# friend (class|struct|union) declarations. 
# If set to NO (the default) these declarations will be included in the 
# documentation.

HIDE_FRIEND_COMPOUNDS  = YES

# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
# documentation blocks found inside the body of a function. 
# If set to NO (the default) these blocks will be appended to the 
# function's detailed documentation block.

HIDE_IN_BODY_DOCS      = YES

# The INTERNAL_DOCS tag determines if documentation 
# that is typed after a \internal command is included. If the tag is set 
# to NO (the default) then the documentation will be excluded. 
# Set it to YES to include the internal documentation.

INTERNAL_DOCS          = NO

# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
# file names in lower-case letters. If set to YES upper-case letters are also 
# allowed. This is useful if you have classes or files whose names only differ 
# in case and if your file system supports case sensitive file names. Windows 
# and Mac users are advised to set this option to NO.

CASE_SENSE_NAMES       = YES

# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
# will show members with their full class and namespace scopes in the 
# documentation. If set to YES the scope will be hidden.

HIDE_SCOPE_NAMES       = NO

# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
# will put a list of the files that are included by a file in the documentation 
# of that file.

SHOW_INCLUDE_FILES     = YES

# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
# is inserted in the documentation for inline members.

INLINE_INFO            = YES

# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
# will sort the (detailed) documentation of file and class members 
# alphabetically by member name. If set to NO the members will appear in 
# declaration order.

SORT_MEMBER_DOCS       = YES

# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
# brief documentation of file, namespace and class members alphabetically 
# by member name. If set to NO (the default) the members will appear in 
# declaration order.

SORT_BRIEF_DOCS        = NO

# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
# hierarchy of group names into alphabetical order. If set to NO (the default) 
# the group names will appear in their defined order.

SORT_GROUP_NAMES       = NO

# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
# sorted by fully-qualified names, including namespaces. If set to 
# NO (the default), the class list will be sorted only by class name, 
# not including the namespace part. 
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
# Note: This option applies only to the class list, not to the 
# alphabetical list.

SORT_BY_SCOPE_NAME     = NO

# The GENERATE_TODOLIST tag can be used to enable (YES) or 
# disable (NO) the todo list. This list is created by putting \todo 
# commands in the documentation.

GENERATE_TODOLIST      = NO

# The GENERATE_TESTLIST tag can be used to enable (YES) or 
# disable (NO) the test list. This list is created by putting \test 
# commands in the documentation.

GENERATE_TESTLIST      = NO

# The GENERATE_BUGLIST tag can be used to enable (YES) or 
# disable (NO) the bug list. This list is created by putting \bug 
# commands in the documentation.

GENERATE_BUGLIST       = NO

# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
# disable (NO) the deprecated list. This list is created by putting 
# \deprecated commands in the documentation.

GENERATE_DEPRECATEDLIST= NO

# The ENABLED_SECTIONS tag can be used to enable conditional 
# documentation sections, marked by \if sectionname ... \endif.

ENABLED_SECTIONS       = 

# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
# the initial value of a variable or define consists of for it to appear in 
# the documentation. If the initializer consists of more lines than specified 
# here it will be hidden. Use a value of 0 to hide initializers completely. 
# The appearance of the initializer of individual variables and defines in the 
# documentation can be controlled using \showinitializer or \hideinitializer 
# command in the documentation regardless of this setting.

MAX_INITIALIZER_LINES  = 30

# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
# at the bottom of the documentation of classes and structs. If set to YES the 
# list will mention the files that were used to generate the documentation.

SHOW_USED_FILES        = YES

# If the sources in your project are distributed over multiple directories 
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
# in the documentation. The default is NO.

SHOW_DIRECTORIES       = YES

# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
# This will remove the Files entry from the Quick Index and from the 
# Folder Tree View (if specified). The default is YES.

SHOW_FILES             = YES

# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
# Namespaces page. 
# This will remove the Namespaces entry from the Quick Index 
# and from the Folder Tree View (if specified). The default is YES.

SHOW_NAMESPACES        = YES

# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
# doxygen should invoke to get the current version for each file (typically from 
# the version control system). Doxygen will invoke the program by executing (via 
# popen()) the command <command> <input-file>, where <command> is the value of 
# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
# provided by doxygen. Whatever the program writes to standard output 
# is used as the file version. See the manual for examples.

FILE_VERSION_FILTER    = 

# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
# doxygen. The layout file controls the global structure of the generated output files 
# in an output format independent way. The create the layout file that represents 
# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
# of the layout file.

LAYOUT_FILE            = 

#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------

# The QUIET tag can be used to turn on/off the messages that are generated 
# by doxygen. Possible values are YES and NO. If left blank NO is used.

QUIET                  = NO

# The WARNINGS tag can be used to turn on/off the warning messages that are 
# generated by doxygen. Possible values are YES and NO. If left blank 
# NO is used.

WARNINGS               = YES

# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
# automatically be disabled.

WARN_IF_UNDOCUMENTED   = YES

# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
# potential errors in the documentation, such as not documenting some 
# parameters in a documented function, or documenting parameters that 
# don't exist or using markup commands wrongly.

WARN_IF_DOC_ERROR      = YES

# This WARN_NO_PARAMDOC option can be abled to get warnings for 
# functions that are documented, but have no documentation for their parameters 
# or return value. If set to NO (the default) doxygen will only warn about 
# wrong or incomplete parameter documentation, but not about the absence of 
# documentation.

WARN_NO_PARAMDOC       = NO

# The WARN_FORMAT tag determines the format of the warning messages that 
# doxygen can produce. The string should contain the $file, $line, and $text 
# tags, which will be replaced by the file and line number from which the 
# warning originated and the warning text. Optionally the format may contain 
# $version, which will be replaced by the version of the file (if it could 
# be obtained via FILE_VERSION_FILTER)

WARN_FORMAT            = "$file:$line: $text"

# The WARN_LOGFILE tag can be used to specify a file to which warning 
# and error messages should be written. If left blank the output is written 
# to stderr.

WARN_LOGFILE           = doxygen.log 

#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------

# The INPUT tag can be used to specify the files and/or directories that contain 
# documented source files. You may enter file names like "myfile.cpp" or 
# directories like "/usr/src/myproject". Separate the files or directories 
# with spaces.

INPUT                  = src \
                         demoapps \
                         toolkits

# This tag can be used to specify the character encoding of the source files 
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
# also the default input encoding. Doxygen uses libiconv (or the iconv built 
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
# the list of possible encodings.

INPUT_ENCODING         = UTF-8

# If the value of the INPUT tag contains directories, you can use the 
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
# and *.h) to filter out the source-files in the directories. If left 
# blank the following patterns are tested: 
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90

FILE_PATTERNS          = *.hpp *.cpp *.dox 

# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
# should be searched for input files as well. Possible values are YES and NO. 
# If left blank NO is used.

RECURSIVE              = YES

# The EXCLUDE tag can be used to specify files and/or directories that should 
# excluded from the INPUT source files. This way you can easily exclude a 
# subdirectory from a directory tree whose root is specified with the INPUT tag.

EXCLUDE                = src/graphlab/matlab src/graphlab/gpu 

# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
# directories that are symbolic links (a Unix filesystem feature) are excluded 
# from the input.

EXCLUDE_SYMLINKS       = NO

# If the value of the INPUT tag contains directories, you can use the 
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
# certain files from those directories. Note that the wildcards are matched 
# against the file with absolute path, so to exclude all test directories 
# for example use the pattern */test/*

EXCLUDE_PATTERNS       =  */src/graphlab/rpc/*issue.hpp */src/graphlab/rpc/*dispatch.hpp */toolkits/*cpp */toolkits/*hpp

# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
# (namespaces, classes, functions, etc.) that should be excluded from the 
# output. The symbol name can be a fully qualified name, a word, or if the 
# wildcard * is used, a substring. Examples: ANamespace, AClass, 
# AClass::ANamespace, ANamespace::*Test

EXCLUDE_SYMBOLS        = graphlab::archive_detail::* graphlab::dc_impl::*

# The EXAMPLE_PATH tag can be used to specify one or more files or 
# directories that contain example code fragments that are included (see 
# the \include command).

EXAMPLE_PATH           = 

# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
# and *.h) to filter out the source-files in the directories. If left 
# blank all files are included.

EXAMPLE_PATTERNS       = 

# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
# searched for input files to be used with the \include or \dontinclude 
# commands irrespective of the value of the RECURSIVE tag. 
# Possible values are YES and NO. If left blank NO is used.

EXAMPLE_RECURSIVE      = NO

# The IMAGE_PATH tag can be used to specify one or more files or 
# directories that contain image that are included in the documentation (see 
# the \image command).

IMAGE_PATH             = doc/images

# The INPUT_FILTER tag can be used to specify a program that doxygen should 
# invoke to filter for each input file. Doxygen will invoke the filter program 
# by executing (via popen()) the command <filter> <input-file>, where <filter> 
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
# input file. Doxygen will then use the output that the filter program writes 
# to standard output. 
# If FILTER_PATTERNS is specified, this tag will be 
# ignored.

INPUT_FILTER           = 

# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
# basis. 
# Doxygen will compare the file name with each pattern and apply the 
# filter if there is a match. 
# The filters are a list of the form: 
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
# is applied to all files.

FILTER_PATTERNS        = 

# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
# INPUT_FILTER) will be used to filter the input files when producing source 
# files to browse (i.e. when SOURCE_BROWSER is set to YES).

FILTER_SOURCE_FILES    = NO

#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------

# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
# be generated. Documented entities will be cross-referenced with these sources. 
# Note: To get rid of all source code in the generated output, make sure also 
# VERBATIM_HEADERS is set to NO.

SOURCE_BROWSER         = YES

# Setting the INLINE_SOURCES tag to YES will include the body 
# of functions and classes directly in the documentation.

INLINE_SOURCES         = NO

# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
# doxygen to hide any special comment blocks from generated source code 
# fragments. Normal C and C++ comments will always remain visible.

STRIP_CODE_COMMENTS    = NO

# If the REFERENCED_BY_RELATION tag is set to YES 
# then for each documented function all documented 
# functions referencing it will be listed.

REFERENCED_BY_RELATION = NO

# If the REFERENCES_RELATION tag is set to YES 
# then for each documented function all documented entities 
# called/used by that function will be listed.

REFERENCES_RELATION    = NO

# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
# link to the source code. 
# Otherwise they will link to the documentation.

REFERENCES_LINK_SOURCE = YES

# If the USE_HTAGS tag is set to YES then the references to source code 
# will point to the HTML generated by the htags(1) tool instead of doxygen 
# built-in source browser. The htags tool is part of GNU's global source 
# tagging system (see http://www.gnu.org/software/global/global.html). You 
# will need version 4.8.6 or higher.

USE_HTAGS              = NO

# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
# will generate a verbatim copy of the header file for each class for 
# which an include is specified. Set to NO to disable this.

VERBATIM_HEADERS       = NO

#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------

# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
# of all compounds will be generated. Enable this if the project 
# contains a lot of classes, structs, unions or interfaces.

ALPHABETICAL_INDEX     = YES

# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
# in which this list will be split (can be a number in the range [1..20])

COLS_IN_ALPHA_INDEX    = 5

# In case all classes in a project start with a common prefix, all 
# classes will be put under the same header in the alphabetical index. 
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
# should be ignored while generating the index headers.

IGNORE_PREFIX          = 

#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------

# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
# generate HTML output.

GENERATE_HTML          = YES

# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `html' will be used as the default path.

HTML_OUTPUT            = html

# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
# doxygen will generate files with .html extension.

HTML_FILE_EXTENSION    = .html

# The HTML_HEADER tag can be used to specify a personal HTML header for 
# each generated HTML page. If it is left blank doxygen will generate a 
# standard header.

HTML_HEADER            = 

# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
# each generated HTML page. If it is left blank doxygen will generate a 
# standard footer.

HTML_FOOTER            = 

# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
# style sheet that is used by each HTML page. It can be used to 
# fine-tune the look of the HTML output. If the tag is left blank doxygen 
# will generate a default style sheet. Note that doxygen will try to copy 
# the style sheet file to the HTML output directory, so don't put your own 
# stylesheet in the HTML output directory as well, or it will be erased!

HTML_STYLESHEET        = 

# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
# files or namespaces will be aligned in HTML using tables. If set to 
# NO a bullet list will be used.

HTML_ALIGN_MEMBERS     = YES

# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
# documentation will contain sections that can be hidden and shown after the 
# page has loaded. For this to work a browser that supports 
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).

HTML_DYNAMIC_SECTIONS  = YES

# If the GENERATE_DOCSET tag is set to YES, additional index files 
# will be generated that can be used as input for Apple's Xcode 3 
# integrated development environment, introduced with OSX 10.5 (Leopard). 
# To create a documentation set, doxygen will generate a Makefile in the 
# HTML output directory. Running make will produce the docset in that 
# directory and running "make install" will install the docset in 
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
# it at startup. 
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.

GENERATE_DOCSET        = NO

# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
# feed. A documentation feed provides an umbrella under which multiple 
# documentation sets from a single provider (such as a company or product suite) 
# can be grouped.

DOCSET_FEEDNAME        = "Doxygen generated docs"

# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
# should uniquely identify the documentation set bundle. This should be a 
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
# will append .docset to the name.

DOCSET_BUNDLE_ID       = org.doxygen.Project

# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
# will be generated that can be used as input for tools like the 
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
# of the generated HTML documentation.

GENERATE_HTMLHELP      = NO

# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
# be used to specify the file name of the resulting .chm file. You 
# can add a path in front of the file if the result should not be 
# written to the html output directory.

CHM_FILE               = 

# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
# be used to specify the location (absolute path including file name) of 
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
# the HTML help compiler on the generated index.hhp.

HHC_LOCATION           = 

# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
# controls if a separate .chi index file is generated (YES) or that 
# it should be included in the master .chm file (NO).

GENERATE_CHI           = NO

# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
# content.

CHM_INDEX_ENCODING     = 

# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
# controls whether a binary table of contents is generated (YES) or a 
# normal table of contents (NO) in the .chm file.

BINARY_TOC             = NO

# The TOC_EXPAND flag can be set to YES to add extra items for group members 
# to the contents of the HTML help documentation and to the tree view.

TOC_EXPAND             = NO

# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
# are set, an additional index file will be generated that can be used as input for 
# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
# HTML documentation.

GENERATE_QHP           = NO

# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
# be used to specify the file name of the resulting .qch file. 
# The path specified is relative to the HTML output folder.

QCH_FILE               = 

# The QHP_NAMESPACE tag specifies the namespace to use when generating 
# Qt Help Project output. For more information please see 
# http://doc.trolltech.com/qthelpproject.html#namespace

QHP_NAMESPACE          = 

# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
# Qt Help Project output. For more information please see 
# http://doc.trolltech.com/qthelpproject.html#virtual-folders

QHP_VIRTUAL_FOLDER     = doc

# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
# For more information please see 
# http://doc.trolltech.com/qthelpproject.html#custom-filters

QHP_CUST_FILTER_NAME   = 

# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.

QHP_CUST_FILTER_ATTRS  = 

# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
# filter section matches. 
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.

QHP_SECT_FILTER_ATTRS  = 

# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
# be used to specify the location of Qt's qhelpgenerator. 
# If non-empty doxygen will try to run qhelpgenerator on the generated 
# .qhp file.

QHG_LOCATION           = 

# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
# top of each HTML page. The value NO (the default) enables the index and 
# the value YES disables it.

DISABLE_INDEX          = NO

# This tag can be used to set the number of enum values (range [1..20]) 
# that doxygen will group on one line in the generated HTML documentation.

ENUM_VALUES_PER_LINE   = 4

# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
# structure should be generated to display hierarchical information. 
# If the tag value is set to FRAME, a side panel will be generated 
# containing a tree-like index structure (just like the one that 
# is generated for HTML Help). For this to work a browser that supports 
# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
# probably better off using the HTML help feature. Other possible values 
# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
# and Class Hierarchy pages using a tree view instead of an ordered list; 
# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
# disables this behavior completely. For backwards compatibility with previous 
# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
# respectively.

GENERATE_TREEVIEW      = YES

# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
# used to set the initial width (in pixels) of the frame in which the tree 
# is shown.

TREEVIEW_WIDTH         = 250

# Use this tag to change the font size of Latex formulas included 
# as images in the HTML documentation. The default is 10. Note that 
# when you change the font size after a successful doxygen run you need 
# to manually remove any form_*.png images from the HTML output directory 
# to force them to be regenerated.

FORMULA_FONTSIZE       = 10

#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------

# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
# generate Latex output.

GENERATE_LATEX         = NO

# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `latex' will be used as the default path.

LATEX_OUTPUT           = latex

# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
# invoked. If left blank `latex' will be used as the default command name.

LATEX_CMD_NAME         = latex

# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
# generate index for LaTeX. If left blank `makeindex' will be used as the 
# default command name.

MAKEINDEX_CMD_NAME     = makeindex

# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
# LaTeX documents. This may be useful for small projects and may help to 
# save some trees in general.

COMPACT_LATEX          = NO

# The PAPER_TYPE tag can be used to set the paper type that is used 
# by the printer. Possible values are: a4, a4wide, letter, legal and 
# executive. If left blank a4wide will be used.

PAPER_TYPE             = a4wide

# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
# packages that should be included in the LaTeX output.

EXTRA_PACKAGES         = 

# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
# the generated latex document. The header should contain everything until 
# the first chapter. If it is left blank doxygen will generate a 
# standard header. Notice: only use this tag if you know what you are doing!

LATEX_HEADER           = 

# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
# contain links (just like the HTML output) instead of page references 
# This makes the output suitable for online browsing using a pdf viewer.

PDF_HYPERLINKS         = YES

# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
# plain latex in the generated Makefile. Set this option to YES to get a 
# higher quality PDF documentation.

USE_PDFLATEX           = YES

# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
# command to the generated LaTeX files. This will instruct LaTeX to keep 
# running if errors occur, instead of asking the user for help. 
# This option is also used when generating formulas in HTML.

LATEX_BATCHMODE        = NO

# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
# include the index chapters (such as File Index, Compound Index, etc.) 
# in the output.

LATEX_HIDE_INDICES     = NO

#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------

# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
# The RTF output is optimized for Word 97 and may not look very pretty with 
# other RTF readers or editors.

GENERATE_RTF           = NO

# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `rtf' will be used as the default path.

RTF_OUTPUT             = rtf

# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
# RTF documents. This may be useful for small projects and may help to 
# save some trees in general.

COMPACT_RTF            = NO

# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
# will contain hyperlink fields. The RTF file will 
# contain links (just like the HTML output) instead of page references. 
# This makes the output suitable for online browsing using WORD or other 
# programs which support those fields. 
# Note: wordpad (write) and others do not support links.

RTF_HYPERLINKS         = NO

# Load stylesheet definitions from file. Syntax is similar to doxygen's 
# config file, i.e. a series of assignments. You only have to provide 
# replacements, missing definitions are set to their default value.

RTF_STYLESHEET_FILE    = 

# Set optional variables used in the generation of an rtf document. 
# Syntax is similar to doxygen's config file.

RTF_EXTENSIONS_FILE    = 

#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------

# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
# generate man pages

GENERATE_MAN           = NO

# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `man' will be used as the default path.

MAN_OUTPUT             = man

# The MAN_EXTENSION tag determines the extension that is added to 
# the generated man pages (default is the subroutine's section .3)

MAN_EXTENSION          = .3

# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
# then it will generate one additional man file for each entity 
# documented in the real man page(s). These additional files 
# only source the real man page, but without them the man command 
# would be unable to find the correct page. The default is NO.

MAN_LINKS              = NO

#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------

# If the GENERATE_XML tag is set to YES Doxygen will 
# generate an XML file that captures the structure of 
# the code including all documentation.

GENERATE_XML           = NO

# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `xml' will be used as the default path.

XML_OUTPUT             = xml

# The XML_SCHEMA tag can be used to specify an XML schema, 
# which can be used by a validating XML parser to check the 
# syntax of the XML files.

XML_SCHEMA             = 

# The XML_DTD tag can be used to specify an XML DTD, 
# which can be used by a validating XML parser to check the 
# syntax of the XML files.

XML_DTD                = 

# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
# dump the program listings (including syntax highlighting 
# and cross-referencing information) to the XML output. Note that 
# enabling this will significantly increase the size of the XML output.

XML_PROGRAMLISTING     = YES

#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------

# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
# generate an AutoGen Definitions (see autogen.sf.net) file 
# that captures the structure of the code including all 
# documentation. Note that this feature is still experimental 
# and incomplete at the moment.

GENERATE_AUTOGEN_DEF   = NO

#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------

# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
# generate a Perl module file that captures the structure of 
# the code including all documentation. Note that this 
# feature is still experimental and incomplete at the 
# moment.

GENERATE_PERLMOD       = NO

# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
# to generate PDF and DVI output from the Perl module output.

PERLMOD_LATEX          = NO

# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
# nicely formatted so it can be parsed by a human reader. 
# This is useful 
# if you want to understand what is going on. 
# On the other hand, if this 
# tag is set to NO the size of the Perl module output will be much smaller 
# and Perl will parse it just the same.

PERLMOD_PRETTY         = YES

# The names of the make variables in the generated doxyrules.make file 
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
# This is useful so different doxyrules.make files included by the same 
# Makefile don't overwrite each other's variables.

PERLMOD_MAKEVAR_PREFIX = 

#---------------------------------------------------------------------------
# Configuration options related to the preprocessor   
#---------------------------------------------------------------------------

# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
# evaluate all C-preprocessor directives found in the sources and include 
# files.

ENABLE_PREPROCESSING   = YES 

# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
# names in the source code. If set to NO (the default) only conditional 
# compilation will be performed. Macro expansion can be done in a controlled 
# way by setting EXPAND_ONLY_PREDEF to YES.

MACRO_EXPANSION        = NO

# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
# then the macro expansion is limited to the macros specified with the 
# PREDEFINED and EXPAND_AS_DEFINED tags.

EXPAND_ONLY_PREDEF     = YES

# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
# in the INCLUDE_PATH (see below) will be search if a #include is found.

SEARCH_INCLUDES        = YES

# The INCLUDE_PATH tag can be used to specify one or more directories that 
# contain include files that are not input files but should be processed by 
# the preprocessor.

INCLUDE_PATH           = 

# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
# patterns (like *.h and *.hpp) to filter out the header-files in the 
# directories. If left blank, the patterns specified with FILE_PATTERNS will 
# be used.

INCLUDE_FILE_PATTERNS  = 

# The PREDEFINED tag can be used to specify one or more macro names that 
# are defined before the preprocessor is started (similar to the -D option of 
# gcc). The argument of the tag is a list of macros of the form: name 
# or name=definition (no spaces). If the definition and the = are 
# omitted =1 is assumed. To prevent a macro definition from being 
# undefined via #undef or recursively expanded use the := operator 
# instead of the = operator.

PREDEFINED             = DOXYGEN_DOCUMENTATION GRAPHLAB_SERIALIZE_HPP 

# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
# this tag can be used to specify a list of macro names that should be expanded. 
# The macro definition that is found in the sources will be used. 
# Use the PREDEFINED tag if you want to use a different macro definition.

EXPAND_AS_DEFINED      = RPC_DEFAULT_NUMHANDLERTHREADS RPC_DEFAULT_COMMTYPE 

# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
# doxygen's preprocessor will remove all function-like macros that are alone 
# on a line, have an all uppercase name, and do not end with a semicolon. Such 
# function macros are typically used for boiler-plate code, and will confuse 
# the parser if not removed.

SKIP_FUNCTION_MACROS   = YES

#---------------------------------------------------------------------------
# Configuration::additions related to external references   
#---------------------------------------------------------------------------

# The TAGFILES option can be used to specify one or more tagfiles. 
# Optionally an initial location of the external documentation 
# can be added for each tagfile. The format of a tag file without 
# this location is as follows: 
#  
# TAGFILES = file1 file2 ... 
# Adding location for the tag files is done as follows: 
#  
# TAGFILES = file1=loc1 "file2 = loc2" ... 
# where "loc1" and "loc2" can be relative or absolute paths or 
# URLs. If a location is present for each tag, the installdox tool 
# does not have to be run to correct the links. 
# Note that each tag file must have a unique name 
# (where the name does NOT include the path) 
# If a tag file is not located in the directory in which doxygen 
# is run, you must also specify the path to the tagfile here.

TAGFILES               = 

# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
# a tag file that is based on the input files it reads.

GENERATE_TAGFILE       = 

# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
# in the class index. If set to NO only the inherited external classes 
# will be listed.

ALLEXTERNALS           = NO

# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
# in the modules index. If set to NO, only the current project's groups will 
# be listed.

EXTERNAL_GROUPS        = YES

# The PERL_PATH should be the absolute path and name of the perl script 
# interpreter (i.e. the result of `which perl').

PERL_PATH              = /usr/bin/perl

#---------------------------------------------------------------------------
# Configuration options related to the dot tool   
#---------------------------------------------------------------------------

# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
# or super classes. Setting the tag to NO turns the diagrams off. Note that 
# this option is superseded by the HAVE_DOT option below. This is only a 
# fallback. It is recommended to install and use dot, since it yields more 
# powerful graphs.

CLASS_DIAGRAMS         = NO

# You can define message sequence charts within doxygen comments using the \msc 
# command. Doxygen will then run the mscgen tool (see 
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
# the mscgen tool resides. If left empty the tool is assumed to be found in the 
# default search path.

MSCGEN_PATH            = 

# If set to YES, the inheritance and collaboration graphs will hide 
# inheritance and usage relations if the target is undocumented 
# or is not a class.

HIDE_UNDOC_RELATIONS   = YES

# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
# available from the path. This tool is part of Graphviz, a graph visualization 
# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
# have no effect if this option is set to NO (the default)

HAVE_DOT               = NO

# By default doxygen will write a font called FreeSans.ttf to the output 
# directory and reference it in all dot files that doxygen generates. This 
# font does not include all possible unicode characters however, so when you need 
# these (or just want a differently looking font) you can specify the font name 
# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
# which can be done by putting it in a standard location or by setting the 
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
# containing the font.

DOT_FONTNAME           = FreeSans

# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
# The default size is 10pt.

DOT_FONTSIZE           = 10

# By default doxygen will tell dot to use the output directory to look for the 
# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
# different font using DOT_FONTNAME you can set the path where dot 
# can find it using this tag.

DOT_FONTPATH           = 

# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
# will generate a graph for each documented class showing the direct and 
# indirect inheritance relations. Setting this tag to YES will force the 
# the CLASS_DIAGRAMS tag to NO.

CLASS_GRAPH            = NO

# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
# will generate a graph for each documented class showing the direct and 
# indirect implementation dependencies (inheritance, containment, and 
# class references variables) of the class with other documented classes.

COLLABORATION_GRAPH    = NO

# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
# will generate a graph for groups, showing the direct groups dependencies

GROUP_GRAPHS           = NO

# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
# collaboration diagrams in a style similar to the OMG's Unified Modeling 
# Language.

UML_LOOK               = NO

# If set to YES, the inheritance and collaboration graphs will show the 
# relations between templates and their instances.

TEMPLATE_RELATIONS     = NO

# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
# tags are set to YES then doxygen will generate a graph for each documented 
# file showing the direct and indirect include dependencies of the file with 
# other documented files.

INCLUDE_GRAPH          = NO

# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
# documented header file showing the documented files that directly or 
# indirectly include this file.

INCLUDED_BY_GRAPH      = NO

# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
# doxygen will generate a call dependency graph for every global function 
# or class method. Note that enabling this option will significantly increase 
# the time of a run. So in most cases it will be better to enable call graphs 
# for selected functions only using the \callgraph command.

CALL_GRAPH             = NO

# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
# doxygen will generate a caller dependency graph for every global function 
# or class method. Note that enabling this option will significantly increase 
# the time of a run. So in most cases it will be better to enable caller 
# graphs for selected functions only using the \callergraph command.

CALLER_GRAPH           = NO

# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
# will graphical hierarchy of all classes instead of a textual one.

GRAPHICAL_HIERARCHY    = YES

# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
# then doxygen will show the dependencies a directory has on other directories 
# in a graphical way. The dependency relations are determined by the #include 
# relations between the files in the directories.

DIRECTORY_GRAPH        = YES

# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
# generated by dot. Possible values are png, jpg, or gif 
# If left blank png will be used.

DOT_IMAGE_FORMAT       = png

# The tag DOT_PATH can be used to specify the path where the dot tool can be 
# found. If left blank, it is assumed the dot tool can be found in the path.

DOT_PATH               = 

# The DOTFILE_DIRS tag can be used to specify one or more directories that 
# contain dot files that are included in the documentation (see the 
# \dotfile command).

DOTFILE_DIRS           = 

# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
# nodes that will be shown in the graph. If the number of nodes in a graph 
# becomes larger than this value, doxygen will truncate the graph, which is 
# visualized by representing a node as a red box. Note that doxygen if the 
# number of direct children of the root node in a graph is already larger than 
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.

DOT_GRAPH_MAX_NODES    = 50

# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
# graphs generated by dot. A depth value of 3 means that only nodes reachable 
# from the root by following a path via at most 3 edges will be shown. Nodes 
# that lay further from the root node will be omitted. Note that setting this 
# option to 1 or 2 may greatly reduce the computation time needed for large 
# code bases. Also note that the size of a graph can be further restricted by 
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.

MAX_DOT_GRAPH_DEPTH    = 0

# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
# background. This is disabled by default, because dot on Windows does not 
# seem to support this out of the box. Warning: Depending on the platform used, 
# enabling this option may lead to badly anti-aliased labels on the edges of 
# a graph (i.e. they become hard to read).

DOT_TRANSPARENT        = NO

# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
# files in one run (i.e. multiple -o and -T options on the command line). This 
# makes dot run faster, but since only newer versions of dot (>1.8.10) 
# support this, this feature is disabled by default.

DOT_MULTI_TARGETS      = NO

# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
# generate a legend page explaining the meaning of the various boxes and 
# arrows in the dot generated graphs.

GENERATE_LEGEND        = YES

# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
# remove the intermediate dot files that are used to generate 
# the various graphs.

DOT_CLEANUP            = YES

#---------------------------------------------------------------------------
# Options related to the search engine
#---------------------------------------------------------------------------

# The SEARCHENGINE tag specifies whether or not a search engine should be 
# used. If set to NO the values of all tags below this one will be ignored.

SEARCHENGINE           = YES


================================================
FILE: Doxyfile_internal
================================================
# Doxyfile 1.5.8

# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
#
# All text after a hash (#) is considered a comment and will be ignored
# The format is:
#       TAG = value [value, ...]
# For lists items can also be appended using:
#       TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------

# This tag specifies the encoding used for all characters in the config file 
# that follow. The default is UTF-8 which is also the encoding used for all 
# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
# iconv built into libc) for the transcoding. See 
# http://www.gnu.org/software/libiconv for the list of possible encodings.

DOXYFILE_ENCODING      = UTF-8

# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
# by quotes) that should identify the project.

PROJECT_NAME           = "GraphLab: Distributed Graph-Parallel API"

# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
# This could be handy for archiving the generated documentation or 
# if some version control system is used.

PROJECT_NUMBER         = 2.2

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
# base path where the generated documentation will be put. 
# If a relative path is entered, it will be relative to the location 
# where doxygen was started. If left blank the current directory will be used.

OUTPUT_DIRECTORY       = doc/doxygen_internal

# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
# 4096 sub-directories (in 2 levels) under the output directory of each output 
# format and will distribute the generated files over these directories. 
# Enabling this option can be useful when feeding doxygen a huge amount of 
# source files, where putting all generated files in the same directory would 
# otherwise cause performance problems for the file system.

CREATE_SUBDIRS         = NO

# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
# documentation generated by doxygen is written. Doxygen will use this 
# information to generate all constant output in the proper language. 
# The default language is English, other supported languages are: 
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, 
# Spanish, Swedish, and Ukrainian.

OUTPUT_LANGUAGE        = English

# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
# include brief member descriptions after the members that are listed in 
# the file and class documentation (similar to JavaDoc). 
# Set to NO to disable this.

BRIEF_MEMBER_DESC      = YES

# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
# the brief description of a member or function before the detailed description. 
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
# brief descriptions will be completely suppressed.

REPEAT_BRIEF           = YES

# This tag implements a quasi-intelligent brief description abbreviator 
# that is used to form the text in various listings. Each string 
# in this list, if found as the leading text of the brief description, will be 
# stripped from the text and the result after processing the whole list, is 
# used as the annotated text. Otherwise, the brief description is used as-is. 
# If left blank, the following values are used ("$name" is automatically 
# replaced with the name of the entity): "The $name class" "The $name widget" 
# "The $name file" "is" "provides" "specifies" "contains" 
# "represents" "a" "an" "the"

ABBREVIATE_BRIEF       = 

# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
# Doxygen will generate a detailed section even if there is only a brief 
# description.

ALWAYS_DETAILED_SEC    = NO

# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
# inherited members of a class in the documentation of that class as if those 
# members were ordinary class members. Constructors, destructors and assignment 
# operators of the base classes will not be shown.

INLINE_INHERITED_MEMB  = YES

# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
# path before files name in the file list and in the header files. If set 
# to NO the shortest path that makes the file name unique will be used.

FULL_PATH_NAMES        = YES

# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
# can be used to strip a user-defined part of the path. Stripping is 
# only done if one of the specified strings matches the left-hand part of 
# the path. The tag can be used to show relative paths in the file list. 
# If left blank the directory from which doxygen is run is used as the 
# path to strip.

STRIP_FROM_PATH        = src/ 

# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
# the path mentioned in the documentation of a class, which tells 
# the reader which header file to include in order to use a class. 
# If left blank only the name of the header file containing the class 
# definition is used. Otherwise one should specify the include paths that 
# are normally passed to the compiler using the -I flag.

STRIP_FROM_INC_PATH    = src/ 

# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
# (but less readable) file names. This can be useful is your file systems 
# doesn't support long names like on DOS, Mac, or CD-ROM.

SHORT_NAMES            = NO

# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
# will interpret the first line (until the first dot) of a JavaDoc-style 
# comment as the brief description. If set to NO, the JavaDoc 
# comments will behave just like regular Qt-style comments 
# (thus requiring an explicit @brief command for a brief description.)

JAVADOC_AUTOBRIEF      = NO

# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
# interpret the first line (until the first dot) of a Qt-style 
# comment as the brief description. If set to NO, the comments 
# will behave just like regular Qt-style comments (thus requiring 
# an explicit \brief command for a brief description.)

QT_AUTOBRIEF           = NO

# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
# comments) as a brief description. This used to be the default behaviour. 
# The new default is to treat a multi-line C++ comment block as a detailed 
# description. Set this tag to YES if you prefer the old behaviour instead.

MULTILINE_CPP_IS_BRIEF = NO

# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
# member inherits the documentation from any documented member that it 
# re-implements.

INHERIT_DOCS           = YES

# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
# a new page for each member. If set to NO, the documentation of a member will 
# be part of the file/class/namespace that contains it.

SEPARATE_MEMBER_PAGES  = NO

# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
# Doxygen uses this value to replace tabs by spaces in code fragments.

TAB_SIZE               = 2

# This tag can be used to specify a number of aliases that acts 
# as commands in the documentation. An alias has the form "name=value". 
# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
# put the command \sideeffect (or @sideeffect) in the documentation, which 
# will result in a user-defined paragraph with heading "Side Effects:". 
# You can put \n's in the value part of an alias to insert newlines.

ALIASES                = 

# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
# sources only. Doxygen will then generate output that is more tailored for C. 
# For instance, some of the names that are used will be different. The list 
# of all members will be omitted, etc.

OPTIMIZE_OUTPUT_FOR_C  = NO

# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
# sources only. Doxygen will then generate output that is more tailored for 
# Java. For instance, namespaces will be presented as packages, qualified 
# scopes will look different, etc.

OPTIMIZE_OUTPUT_JAVA   = NO

# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
# sources only. Doxygen will then generate output that is more tailored for 
# Fortran.

OPTIMIZE_FOR_FORTRAN   = NO

# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
# sources. Doxygen will then generate output that is tailored for 
# VHDL.

OPTIMIZE_OUTPUT_VHDL   = NO

# Doxygen selects the parser to use depending on the extension of the files it parses. 
# With this tag you can assign which parser to use for a given extension. 
# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
# The format is ext=language, where ext is a file extension, and language is one of 
# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
# use: inc=Fortran f=C

EXTENSION_MAPPING      = 

# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
# to include (a tag file for) the STL sources as input, then you should 
# set this tag to YES in order to let doxygen match functions declarations and 
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
# func(std::string) {}). This also make the inheritance and collaboration 
# diagrams that involve STL classes more complete and accurate.

BUILTIN_STL_SUPPORT    = YES

# If you use Microsoft's C++/CLI language, you should set this option to YES to 
# enable parsing support.

CPP_CLI_SUPPORT        = NO

# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
# Doxygen will parse them like normal C++ but will assume all classes use public 
# instead of private inheritance when no explicit protection keyword is present.

SIP_SUPPORT            = NO

# For Microsoft's IDL there are propget and propput attributes to indicate getter 
# and setter methods for a property. Setting this option to YES (the default) 
# will make doxygen to replace the get and set methods by a property in the 
# documentation. This will only work if the methods are indeed getting or 
# setting a simple type. If this is not the case, or you want to show the 
# methods anyway, you should set this option to NO.

IDL_PROPERTY_SUPPORT   = NO

# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
# tag is set to YES, then doxygen will reuse the documentation of the first 
# member in the group (if any) for the other members of the group. By default 
# all members of a group must be documented explicitly.

DISTRIBUTE_GROUP_DOC   = NO

# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
# the same type (for instance a group of public functions) to be put as a 
# subgroup of that type (e.g. under the Public Functions section). Set it to 
# NO to prevent subgrouping. Alternatively, this can be done per class using 
# the \nosubgrouping command.

SUBGROUPING            = YES

# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
# is documented as struct, union, or enum with the name of the typedef. So 
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
# with name TypeT. When disabled the typedef will appear as a member of a file, 
# namespace, or class. And the struct will be named TypeS. This can typically 
# be useful for C code in case the coding convention dictates that all compound 
# types are typedef'ed and only the typedef is referenced, never the tag name.

TYPEDEF_HIDES_STRUCT   = NO

# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
# determine which symbols to keep in memory and which to flush to disk. 
# When the cache is full, less often used symbols will be written to disk. 
# For small to medium size projects (<1000 input files) the default value is 
# probably good enough. For larger projects a too small cache size can cause 
# doxygen to be busy swapping symbols to and from disk most of the time 
# causing a significant performance penality. 
# If the system has enough physical memory increasing the cache will improve the 
# performance by keeping more symbols in memory. Note that the value works on 
# a logarithmic scale so increasing the size by one will rougly double the 
# memory usage. The cache size is given by this formula: 
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
# corresponding to a cache size of 2^16 = 65536 symbols

SYMBOL_CACHE_SIZE      = 0

#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------

# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
# documentation are documented, even if no documentation was available. 
# Private class members and static file members will be hidden unless 
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES

EXTRACT_ALL            = NO

# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
# will be included in the documentation.

EXTRACT_PRIVATE        = NO

# If the EXTRACT_STATIC tag is set to YES all static members of a file 
# will be included in the documentation.

EXTRACT_STATIC         = NO

# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
# defined locally in source files will be included in the documentation. 
# If set to NO only classes defined in header files are included.

EXTRACT_LOCAL_CLASSES  = NO

# This flag is only useful for Objective-C code. When set to YES local 
# methods, which are defined in the implementation section but not in 
# the interface are included in the documentation. 
# If set to NO (the default) only methods in the interface are included.

EXTRACT_LOCAL_METHODS  = NO

# If this flag is set to YES, the members of anonymous namespaces will be 
# extracted and appear in the documentation as a namespace called 
# 'anonymous_namespace{file}', where file will be replaced with the base 
# name of the file that contains the anonymous namespace. By default 
# anonymous namespace are hidden.

EXTRACT_ANON_NSPACES   = NO

# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
# undocumented members of documented classes, files or namespaces. 
# If set to NO (the default) these members will be included in the 
# various overviews, but no documentation section is generated. 
# This option has no effect if EXTRACT_ALL is enabled.

HIDE_UNDOC_MEMBERS     = NO

# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
# undocumented classes that are normally visible in the class hierarchy. 
# If set to NO (the default) these classes will be included in the various 
# overviews. This option has no effect if EXTRACT_ALL is enabled.

HIDE_UNDOC_CLASSES     = YES

# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
# friend (class|struct|union) declarations. 
# If set to NO (the default) these declarations will be included in the 
# documentation.

HIDE_FRIEND_COMPOUNDS  = YES

# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
# documentation blocks found inside the body of a function. 
# If set to NO (the default) these blocks will be appended to the 
# function's detailed documentation block.

HIDE_IN_BODY_DOCS      = YES

# The INTERNAL_DOCS tag determines if documentation 
# that is typed after a \internal command is included. If the tag is set 
# to NO (the default) then the documentation will be excluded. 
# Set it to YES to include the internal documentation.

INTERNAL_DOCS          = YES 

# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
# file names in lower-case letters. If set to YES upper-case letters are also 
# allowed. This is useful if you have classes or files whose names only differ 
# in case and if your file system supports case sensitive file names. Windows 
# and Mac users are advised to set this option to NO.

CASE_SENSE_NAMES       = YES

# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
# will show members with their full class and namespace scopes in the 
# documentation. If set to YES the scope will be hidden.

HIDE_SCOPE_NAMES       = NO

# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
# will put a list of the files that are included by a file in the documentation 
# of that file.

SHOW_INCLUDE_FILES     = YES

# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
# is inserted in the documentation for inline members.

INLINE_INFO            = YES

# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
# will sort the (detailed) documentation of file and class members 
# alphabetically by member name. If set to NO the members will appear in 
# declaration order.

SORT_MEMBER_DOCS       = YES

# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
# brief documentation of file, namespace and class members alphabetically 
# by member name. If set to NO (the default) the members will appear in 
# declaration order.

SORT_BRIEF_DOCS        = NO

# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
# hierarchy of group names into alphabetical order. If set to NO (the default) 
# the group names will appear in their defined order.

SORT_GROUP_NAMES       = NO

# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
# sorted by fully-qualified names, including namespaces. If set to 
# NO (the default), the class list will be sorted only by class name, 
# not including the namespace part. 
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
# Note: This option applies only to the class list, not to the 
# alphabetical list.

SORT_BY_SCOPE_NAME     = NO

# The GENERATE_TODOLIST tag can be used to enable (YES) or 
# disable (NO) the todo list. This list is created by putting \todo 
# commands in the documentation.

GENERATE_TODOLIST      = NO

# The GENERATE_TESTLIST tag can be used to enable (YES) or 
# disable (NO) the test list. This list is created by putting \test 
# commands in the documentation.

GENERATE_TESTLIST      = NO

# The GENERATE_BUGLIST tag can be used to enable (YES) or 
# disable (NO) the bug list. This list is created by putting \bug 
# commands in the documentation.

GENERATE_BUGLIST       = NO

# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
# disable (NO) the deprecated list. This list is created by putting 
# \deprecated commands in the documentation.

GENERATE_DEPRECATEDLIST= NO

# The ENABLED_SECTIONS tag can be used to enable conditional 
# documentation sections, marked by \if sectionname ... \endif.

ENABLED_SECTIONS       = GRAPHLAB_INTERNAL

# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
# the initial value of a variable or define consists of for it to appear in 
# the documentation. If the initializer consists of more lines than specified 
# here it will be hidden. Use a value of 0 to hide initializers completely. 
# The appearance of the initializer of individual variables and defines in the 
# documentation can be controlled using \showinitializer or \hideinitializer 
# command in the documentation regardless of this setting.

MAX_INITIALIZER_LINES  = 30

# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
# at the bottom of the documentation of classes and structs. If set to YES the 
# list will mention the files that were used to generate the documentation.

SHOW_USED_FILES        = YES

# If the sources in your project are distributed over multiple directories 
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
# in the documentation. The default is NO.

SHOW_DIRECTORIES       = YES

# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
# This will remove the Files entry from the Quick Index and from the 
# Folder Tree View (if specified). The default is YES.

SHOW_FILES             = YES

# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
# Namespaces page. 
# This will remove the Namespaces entry from the Quick Index 
# and from the Folder Tree View (if specified). The default is YES.

SHOW_NAMESPACES        = YES

# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
# doxygen should invoke to get the current version for each file (typically from 
# the version control system). Doxygen will invoke the program by executing (via 
# popen()) the command <command> <input-file>, where <command> is the value of 
# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
# provided by doxygen. Whatever the program writes to standard output 
# is used as the file version. See the manual for examples.

FILE_VERSION_FILTER    = 

# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
# doxygen. The layout file controls the global structure of the generated output files 
# in an output format independent way. The create the layout file that represents 
# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
# of the layout file.

LAYOUT_FILE            = 

#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------

# The QUIET tag can be used to turn on/off the messages that are generated 
# by doxygen. Possible values are YES and NO. If left blank NO is used.

QUIET                  = NO

# The WARNINGS tag can be used to turn on/off the warning messages that are 
# generated by doxygen. Possible values are YES and NO. If left blank 
# NO is used.

WARNINGS               = YES

# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
# automatically be disabled.

WARN_IF_UNDOCUMENTED   = YES

# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
# potential errors in the documentation, such as not documenting some 
# parameters in a documented function, or documenting parameters that 
# don't exist or using markup commands wrongly.

WARN_IF_DOC_ERROR      = YES

# This WARN_NO_PARAMDOC option can be abled to get warnings for 
# functions that are documented, but have no documentation for their parameters 
# or return value. If set to NO (the default) doxygen will only warn about 
# wrong or incomplete parameter documentation, but not about the absence of 
# documentation.

WARN_NO_PARAMDOC       = NO

# The WARN_FORMAT tag determines the format of the warning messages that 
# doxygen can produce. The string should contain the $file, $line, and $text 
# tags, which will be replaced by the file and line number from which the 
# warning originated and the warning text. Optionally the format may contain 
# $version, which will be replaced by the version of the file (if it could 
# be obtained via FILE_VERSION_FILTER)

WARN_FORMAT            = "$file:$line: $text"

# The WARN_LOGFILE tag can be used to specify a file to which warning 
# and error messages should be written. If left blank the output is written 
# to stderr.

WARN_LOGFILE           = doxygen.log 

#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------

# The INPUT tag can be used to specify the files and/or directories that contain 
# documented source files. You may enter file names like "myfile.cpp" or 
# directories like "/usr/src/myproject". Separate the files or directories 
# with spaces.

INPUT                  = src \
                         demoapps \
                         toolkits

# This tag can be used to specify the character encoding of the source files 
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
# also the default input encoding. Doxygen uses libiconv (or the iconv built 
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
# the list of possible encodings.

INPUT_ENCODING         = UTF-8

# If the value of the INPUT tag contains directories, you can use the 
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
# and *.h) to filter out the source-files in the directories. If left 
# blank the following patterns are tested: 
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90

FILE_PATTERNS          = *.hpp *.cpp *.dox 

# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
# should be searched for input files as well. Possible values are YES and NO. 
# If left blank NO is used.

RECURSIVE              = YES

# The EXCLUDE tag can be used to specify files and/or directories that should 
# excluded from the INPUT source files. This way you can easily exclude a 
# subdirectory from a directory tree whose root is specified with the INPUT tag.

EXCLUDE                = src/graphlab/matlab src/graphlab/gpu 

# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
# directories that are symbolic links (a Unix filesystem feature) are excluded 
# from the input.

EXCLUDE_SYMLINKS       = NO

# If the value of the INPUT tag contains directories, you can use the 
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
# certain files from those directories. Note that the wildcards are matched 
# against the file with absolute path, so to exclude all test directories 
# for example use the pattern */test/*

EXCLUDE_PATTERNS       =  */src/graphlab/rpc/*issue.hpp */src/graphlab/rpc/*dispatch.hpp */toolkits/*cpp */toolkits/*hpp

# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
# (namespaces, classes, functions, etc.) that should be excluded from the 
# output. The symbol name can be a fully qualified name, a word, or if the 
# wildcard * is used, a substring. Examples: ANamespace, AClass, 
# AClass::ANamespace, ANamespace::*Test

EXCLUDE_SYMBOLS        = graphlab::archive_detail::* graphlab::dc_impl::*

# The EXAMPLE_PATH tag can be used to specify one or more files or 
# directories that contain example code fragments that are included (see 
# the \include command).

EXAMPLE_PATH           = 

# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
# and *.h) to filter out the source-files in the directories. If left 
# blank all files are included.

EXAMPLE_PATTERNS       = 

# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
# searched for input files to be used with the \include or \dontinclude 
# commands irrespective of the value of the RECURSIVE tag. 
# Possible values are YES and NO. If left blank NO is used.

EXAMPLE_RECURSIVE      = NO

# The IMAGE_PATH tag can be used to specify one or more files or 
# directories that contain image that are included in the documentation (see 
# the \image command).

IMAGE_PATH             = doc/images

# The INPUT_FILTER tag can be used to specify a program that doxygen should 
# invoke to filter for each input file. Doxygen will invoke the filter program 
# by executing (via popen()) the command <filter> <input-file>, where <filter> 
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
# input file. Doxygen will then use the output that the filter program writes 
# to standard output. 
# If FILTER_PATTERNS is specified, this tag will be 
# ignored.

INPUT_FILTER           = 

# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
# basis. 
# Doxygen will compare the file name with each pattern and apply the 
# filter if there is a match. 
# The filters are a list of the form: 
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
# is applied to all files.

FILTER_PATTERNS        = 

# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
# INPUT_FILTER) will be used to filter the input files when producing source 
# files to browse (i.e. when SOURCE_BROWSER is set to YES).

FILTER_SOURCE_FILES    = NO

#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------

# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
# be generated. Documented entities will be cross-referenced with these sources. 
# Note: To get rid of all source code in the generated output, make sure also 
# VERBATIM_HEADERS is set to NO.

SOURCE_BROWSER         = YES

# Setting the INLINE_SOURCES tag to YES will include the body 
# of functions and classes directly in the documentation.

INLINE_SOURCES         = NO

# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
# doxygen to hide any special comment blocks from generated source code 
# fragments. Normal C and C++ comments will always remain visible.

STRIP_CODE_COMMENTS    = NO

# If the REFERENCED_BY_RELATION tag is set to YES 
# then for each documented function all documented 
# functions referencing it will be listed.

REFERENCED_BY_RELATION = NO

# If the REFERENCES_RELATION tag is set to YES 
# then for each documented function all documented entities 
# called/used by that function will be listed.

REFERENCES_RELATION    = NO

# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
# link to the source code. 
# Otherwise they will link to the documentation.

REFERENCES_LINK_SOURCE = YES

# If the USE_HTAGS tag is set to YES then the references to source code 
# will point to the HTML generated by the htags(1) tool instead of doxygen 
# built-in source browser. The htags tool is part of GNU's global source 
# tagging system (see http://www.gnu.org/software/global/global.html). You 
# will need version 4.8.6 or higher.

USE_HTAGS              = NO

# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
# will generate a verbatim copy of the header file for each class for 
# which an include is specified. Set to NO to disable this.

VERBATIM_HEADERS       = NO

#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------

# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
# of all compounds will be generated. Enable this if the project 
# contains a lot of classes, structs, unions or interfaces.

ALPHABETICAL_INDEX     = YES

# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
# in which this list will be split (can be a number in the range [1..20])

COLS_IN_ALPHA_INDEX    = 5

# In case all classes in a project start with a common prefix, all 
# classes will be put under the same header in the alphabetical index. 
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
# should be ignored while generating the index headers.

IGNORE_PREFIX          = 

#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------

# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
# generate HTML output.

GENERATE_HTML          = YES

# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `html' will be used as the default path.

HTML_OUTPUT            = html

# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
# doxygen will generate files with .html extension.

HTML_FILE_EXTENSION    = .html

# The HTML_HEADER tag can be used to specify a personal HTML header for 
# each generated HTML page. If it is left blank doxygen will generate a 
# standard header.

HTML_HEADER            = 

# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
# each generated HTML page. If it is left blank doxygen will generate a 
# standard footer.

HTML_FOOTER            = 

# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
# style sheet that is used by each HTML page. It can be used to 
# fine-tune the look of the HTML output. If the tag is left blank doxygen 
# will generate a default style sheet. Note that doxygen will try to copy 
# the style sheet file to the HTML output directory, so don't put your own 
# stylesheet in the HTML output directory as well, or it will be erased!

HTML_STYLESHEET        = 

# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
# files or namespaces will be aligned in HTML using tables. If set to 
# NO a bullet list will be used.

HTML_ALIGN_MEMBERS     = YES

# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
# documentation will contain sections that can be hidden and shown after the 
# page has loaded. For this to work a browser that supports 
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).

HTML_DYNAMIC_SECTIONS  = YES

# If the GENERATE_DOCSET tag is set to YES, additional index files 
# will be generated that can be used as input for Apple's Xcode 3 
# integrated development environment, introduced with OSX 10.5 (Leopard). 
# To create a documentation set, doxygen will generate a Makefile in the 
# HTML output directory. Running make will produce the docset in that 
# directory and running "make install" will install the docset in 
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
# it at startup. 
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.

GENERATE_DOCSET        = NO

# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
# feed. A documentation feed provides an umbrella under which multiple 
# documentation sets from a single provider (such as a company or product suite) 
# can be grouped.

DOCSET_FEEDNAME        = "Doxygen generated docs"

# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
# should uniquely identify the documentation set bundle. This should be a 
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
# will append .docset to the name.

DOCSET_BUNDLE_ID       = org.doxygen.Project

# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
# will be generated that can be used as input for tools like the 
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
# of the generated HTML documentation.

GENERATE_HTMLHELP      = NO

# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
# be used to specify the file name of the resulting .chm file. You 
# can add a path in front of the file if the result should not be 
# written to the html output directory.

CHM_FILE               = 

# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
# be used to specify the location (absolute path including file name) of 
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
# the HTML help compiler on the generated index.hhp.

HHC_LOCATION           = 

# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
# controls if a separate .chi index file is generated (YES) or that 
# it should be included in the master .chm file (NO).

GENERATE_CHI           = NO

# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
# content.

CHM_INDEX_ENCODING     = 

# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
# controls whether a binary table of contents is generated (YES) or a 
# normal table of contents (NO) in the .chm file.

BINARY_TOC             = NO

# The TOC_EXPAND flag can be set to YES to add extra items for group members 
# to the contents of the HTML help documentation and to the tree view.

TOC_EXPAND             = NO

# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
# are set, an additional index file will be generated that can be used as input for 
# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
# HTML documentation.

GENERATE_QHP           = NO

# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
# be used to specify the file name of the resulting .qch file. 
# The path specified is relative to the HTML output folder.

QCH_FILE               = 

# The QHP_NAMESPACE tag specifies the namespace to use when generating 
# Qt Help Project output. For more information please see 
# http://doc.trolltech.com/qthelpproject.html#namespace

QHP_NAMESPACE          = 

# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
# Qt Help Project output. For more information please see 
# http://doc.trolltech.com/qthelpproject.html#virtual-folders

QHP_VIRTUAL_FOLDER     = doc

# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
# For more information please see 
# http://doc.trolltech.com/qthelpproject.html#custom-filters

QHP_CUST_FILTER_NAME   = 

# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.

QHP_CUST_FILTER_ATTRS  = 

# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
# filter section matches. 
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.

QHP_SECT_FILTER_ATTRS  = 

# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
# be used to specify the location of Qt's qhelpgenerator. 
# If non-empty doxygen will try to run qhelpgenerator on the generated 
# .qhp file.

QHG_LOCATION           = 

# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
# top of each HTML page. The value NO (the default) enables the index and 
# the value YES disables it.

DISABLE_INDEX          = NO

# This tag can be used to set the number of enum values (range [1..20]) 
# that doxygen will group on one line in the generated HTML documentation.

ENUM_VALUES_PER_LINE   = 4

# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
# structure should be generated to display hierarchical information. 
# If the tag value is set to FRAME, a side panel will be generated 
# containing a tree-like index structure (just like the one that 
# is generated for HTML Help). For this to work a browser that supports 
# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
# probably better off using the HTML help feature. Other possible values 
# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
# and Class Hierarchy pages using a tree view instead of an ordered list; 
# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
# disables this behavior completely. For backwards compatibility with previous 
# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
# respectively.

GENERATE_TREEVIEW      = YES

# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
# used to set the initial width (in pixels) of the frame in which the tree 
# is shown.

TREEVIEW_WIDTH         = 250

# Use this tag to change the font size of Latex formulas included 
# as images in the HTML documentation. The default is 10. Note that 
# when you change the font size after a successful doxygen run you need 
# to manually remove any form_*.png images from the HTML output directory 
# to force them to be regenerated.

FORMULA_FONTSIZE       = 10

#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------

# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
# generate Latex output.

GENERATE_LATEX         = NO

# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `latex' will be used as the default path.

LATEX_OUTPUT           = latex

# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
# invoked. If left blank `latex' will be used as the default command name.

LATEX_CMD_NAME         = latex

# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
# generate index for LaTeX. If left blank `makeindex' will be used as the 
# default command name.

MAKEINDEX_CMD_NAME     = makeindex

# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
# LaTeX documents. This may be useful for small projects and may help to 
# save some trees in general.

COMPACT_LATEX          = NO

# The PAPER_TYPE tag can be used to set the paper type that is used 
# by the printer. Possible values are: a4, a4wide, letter, legal and 
# executive. If left blank a4wide will be used.

PAPER_TYPE             = a4wide

# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
# packages that should be included in the LaTeX output.

EXTRA_PACKAGES         = 

# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
# the generated latex document. The header should contain everything until 
# the first chapter. If it is left blank doxygen will generate a 
# standard header. Notice: only use this tag if you know what you are doing!

LATEX_HEADER           = 

# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
# contain links (just like the HTML output) instead of page references 
# This makes the output suitable for online browsing using a pdf viewer.

PDF_HYPERLINKS         = YES

# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
# plain latex in the generated Makefile. Set this option to YES to get a 
# higher quality PDF documentation.

USE_PDFLATEX           = YES

# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
# command to the generated LaTeX files. This will instruct LaTeX to keep 
# running if errors occur, instead of asking the user for help. 
# This option is also used when generating formulas in HTML.

LATEX_BATCHMODE        = NO

# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
# include the index chapters (such as File Index, Compound Index, etc.) 
# in the output.

LATEX_HIDE_INDICES     = NO

#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------

# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
# The RTF output is optimized for Word 97 and may not look very pretty with 
# other RTF readers or editors.

GENERATE_RTF           = NO

# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `rtf' will be used as the default path.

RTF_OUTPUT             = rtf

# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
# RTF documents. This may be useful for small projects and may help to 
# save some trees in general.

COMPACT_RTF            = NO

# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
# will contain hyperlink fields. The RTF file will 
# contain links (just like the HTML output) instead of page references. 
# This makes the output suitable for online browsing using WORD or other 
# programs which support those fields. 
# Note: wordpad (write) and others do not support links.

RTF_HYPERLINKS         = NO

# Load stylesheet definitions from file. Syntax is similar to doxygen's 
# config file, i.e. a series of assignments. You only have to provide 
# replacements, missing definitions are set to their default value.

RTF_STYLESHEET_FILE    = 

# Set optional variables used in the generation of an rtf document. 
# Syntax is similar to doxygen's config file.

RTF_EXTENSIONS_FILE    = 

#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------

# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
# generate man pages

GENERATE_MAN           = NO

# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `man' will be used as the default path.

MAN_OUTPUT             = man

# The MAN_EXTENSION tag determines the extension that is added to 
# the generated man pages (default is the subroutine's section .3)

MAN_EXTENSION          = .3

# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
# then it will generate one additional man file for each entity 
# documented in the real man page(s). These additional files 
# only source the real man page, but without them the man command 
# would be unable to find the correct page. The default is NO.

MAN_LINKS              = NO

#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------

# If the GENERATE_XML tag is set to YES Doxygen will 
# generate an XML file that captures the structure of 
# the code including all documentation.

GENERATE_XML           = NO

# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
# put in front of it. If left blank `xml' will be used as the default path.

XML_OUTPUT             = xml

# The XML_SCHEMA tag can be used to specify an XML schema, 
# which can be used by a validating XML parser to check the 
# syntax of the XML files.

XML_SCHEMA             = 

# The XML_DTD tag can be used to specify an XML DTD, 
# which can be used by a validating XML parser to check the 
# syntax of the XML files.

XML_DTD                = 

# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
# dump the program listings (including syntax highlighting 
# and cross-referencing information) to the XML output. Note that 
# enabling this will significantly increase the size of the XML output.

XML_PROGRAMLISTING     = YES

#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------

# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
# generate an AutoGen Definitions (see autogen.sf.net) file 
# that captures the structure of the code including all 
# documentation. Note that this feature is still experimental 
# and incomplete at the moment.

GENERATE_AUTOGEN_DEF   = NO

#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------

# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
# generate a Perl module file that captures the structure of 
# the code including all documentation. Note that this 
# feature is still experimental and incomplete at the 
# moment.

GENERATE_PERLMOD       = NO

# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
# to generate PDF and DVI output from the Perl module output.

PERLMOD_LATEX          = NO

# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
# nicely formatted so it can be parsed by a human reader. 
# This is useful 
# if you want to understand what is going on. 
# On the other hand, if this 
# tag is set to NO the size of the Perl module output will be much smaller 
# and Perl will parse it just the same.

PERLMOD_PRETTY         = YES

# The names of the make variables in the generated doxyrules.make file 
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
# This is useful so different doxyrules.make files included by the same 
# Makefile don't overwrite each other's variables.

PERLMOD_MAKEVAR_PREFIX = 

#---------------------------------------------------------------------------
# Configuration options related to the preprocessor   
#---------------------------------------------------------------------------

# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
# evaluate all C-preprocessor directives found in the sources and include 
# files.

ENABLE_PREPROCESSING   = YES 

# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
# names in the source code. If set to NO (the default) only conditional 
# compilation will be performed. Macro expansion can be done in a controlled 
# way by setting EXPAND_ONLY_PREDEF to YES.

MACRO_EXPANSION        = NO

# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
# then the macro expansion is limited to the macros specified with the 
# PREDEFINED and EXPAND_AS_DEFINED tags.

EXPAND_ONLY_PREDEF     = YES

# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
# in the INCLUDE_PATH (see below) will be search if a #include is found.

SEARCH_INCLUDES        = YES

# The INCLUDE_PATH tag can be used to specify one or more directories that 
# contain include files that are not input files but should be processed by 
# the preprocessor.

INCLUDE_PATH           = 

# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
# patterns (like *.h and *.hpp) to filter out the header-files in the 
# directories. If left blank, the patterns specified with FILE_PATTERNS will 
# be used.

INCLUDE_FILE_PATTERNS  = 

# The PREDEFINED tag can be used to specify one or more macro names that 
# are defined before the preprocessor is started (similar to the -D option of 
# gcc). The argument of the tag is a list of macros of the form: name 
# or name=definition (no spaces). If the definition and the = are 
# omitted =1 is assumed. To prevent a macro definition from being 
# undefined via #undef or recursively expanded use the := operator 
# instead of the = operator.

PREDEFINED             = DOXYGEN_DOCUMENTATION GRAPHLAB_SERIALIZE_HPP 

# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
# this tag can be used to specify a list of macro names that should be expanded. 
# The macro definition that is found in the sources will be used. 
# Use the PREDEFINED tag if you want to use a different macro definition.

EXPAND_AS_DEFINED      = RPC_DEFAULT_NUMHANDLERTHREADS RPC_DEFAULT_COMMTYPE 

# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
# doxygen's preprocessor will remove all function-like macros that are alone 
# on a line, have an all uppercase name, and do not end with a semicolon. Such 
# function macros are typically used for boiler-plate code, and will confuse 
# the parser if not removed.

SKIP_FUNCTION_MACROS   = YES

#---------------------------------------------------------------------------
# Configuration::additions related to external references   
#---------------------------------------------------------------------------

# The TAGFILES option can be used to specify one or more tagfiles. 
# Optionally an initial location of the external documentation 
# can be added for each tagfile. The format of a tag file without 
# this location is as follows: 
#  
# TAGFILES = file1 file2 ... 
# Adding location for the tag files is done as follows: 
#  
# TAGFILES = file1=loc1 "file2 = loc2" ... 
# where "loc1" and "loc2" can be relative or absolute paths or 
# URLs. If a location is present for each tag, the installdox tool 
# does not have to be run to correct the links. 
# Note that each tag file must have a unique name 
# (where the name does NOT include the path) 
# If a tag file is not located in the directory in which doxygen 
# is run, you must also specify the path to the tagfile here.

TAGFILES               = 

# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
# a tag file that is based on the input files it reads.

GENERATE_TAGFILE       = 

# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
# in the class index. If set to NO only the inherited external classes 
# will be listed.

ALLEXTERNALS           = NO

# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
# in the modules index. If set to NO, only the current project's groups will 
# be listed.

EXTERNAL_GROUPS        = YES

# The PERL_PATH should be the absolute path and name of the perl script 
# interpreter (i.e. the result of `which perl').

PERL_PATH              = /usr/bin/perl

#---------------------------------------------------------------------------
# Configuration options related to the dot tool   
#---------------------------------------------------------------------------

# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
# or super classes. Setting the tag to NO turns the diagrams off. Note that 
# this option is superseded by the HAVE_DOT option below. This is only a 
# fallback. It is recommended to install and use dot, since it yields more 
# powerful graphs.

CLASS_DIAGRAMS         = NO

# You can define message sequence charts within doxygen comments using the \msc 
# command. Doxygen will then run the mscgen tool (see 
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
# the mscgen tool resides. If left empty the tool is assumed to be found in the 
# default search path.

MSCGEN_PATH            = 

# If set to YES, the inheritance and collaboration graphs will hide 
# inheritance and usage relations if the target is undocumented 
# or is not a class.

HIDE_UNDOC_RELATIONS   = YES

# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
# available from the path. This tool is part of Graphviz, a graph visualization 
# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
# have no effect if this option is set to NO (the default)

HAVE_DOT               = NO

# By default doxygen will write a font called FreeSans.ttf to the output 
# directory and reference it in all dot files that doxygen generates. This 
# font does not include all possible unicode characters however, so when you need 
# these (or just want a differently looking font) you can specify the font name 
# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
# which can be done by putting it in a standard location or by setting the 
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
# containing the font.

DOT_FONTNAME           = FreeSans

# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
# The default size is 10pt.

DOT_FONTSIZE           = 10

# By default doxygen will tell dot to use the output directory to look for the 
# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
# different font using DOT_FONTNAME you can set the path where dot 
# can find it using this tag.

DOT_FONTPATH           = 

# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
# will generate a graph for each documented class showing the direct and 
# indirect inheritance relations. Setting this tag to YES will force the 
# the CLASS_DIAGRAMS tag to NO.

CLASS_GRAPH            = NO

# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
# will generate a graph for each documented class showing the direct and 
# indirect implementation dependencies (inheritance, containment, and 
# class references variables) of the class with other documented classes.

COLLABORATION_GRAPH    = NO

# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
# will generate a graph for groups, showing the direct groups dependencies

GROUP_GRAPHS           = NO

# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
# collaboration diagrams in a style similar to the OMG's Unified Modeling 
# Language.

UML_LOOK               = NO

# If set to YES, the inheritance and collaboration graphs will show the 
# relations between templates and their instances.

TEMPLATE_RELATIONS     = NO

# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
# tags are set to YES then doxygen will generate a graph for each documented 
# file showing the direct and indirect include dependencies of the file with 
# other documented files.

INCLUDE_GRAPH          = NO

# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
# documented header file showing the documented files that directly or 
# indirectly include this file.

INCLUDED_BY_GRAPH      = NO

# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
# doxygen will generate a call dependency graph for every global function 
# or class method. Note that enabling this option will significantly increase 
# the time of a run. So in most cases it will be better to enable call graphs 
# for selected functions only using the \callgraph command.

CALL_GRAPH             = NO

# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
# doxygen will generate a caller dependency graph for every global function 
# or class method. Note that enabling this option will significantly increase 
# the time of a run. So in most cases it will be better to enable caller 
# graphs for selected functions only using the \callergraph command.

CALLER_GRAPH           = NO

# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
# will graphical hierarchy of all classes instead of a textual one.

GRAPHICAL_HIERARCHY    = YES

# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
# then doxygen will show the dependencies a directory has on other directories 
# in a graphical way. The dependency relations are determined by the #include 
# relations between the files in the directories.

DIRECTORY_GRAPH        = YES

# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
# generated by dot. Possible values are png, jpg, or gif 
# If left blank png will be used.

DOT_IMAGE_FORMAT       = png

# The tag DOT_PATH can be used to specify the path where the dot tool can be 
# found. If left blank, it is assumed the dot tool can be found in the path.

DOT_PATH               = 

# The DOTFILE_DIRS tag can be used to specify one or more directories that 
# contain dot files that are included in the documentation (see the 
# \dotfile command).

DOTFILE_DIRS           = 

# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
# nodes that will be shown in the graph. If the number of nodes in a graph 
# becomes larger than this value, doxygen will truncate the graph, which is 
# visualized by representing a node as a red box. Note that doxygen if the 
# number of direct children of the root node in a graph is already larger than 
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.

DOT_GRAPH_MAX_NODES    = 50

# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
# graphs generated by dot. A depth value of 3 means that only nodes reachable 
# from the root by following a path via at most 3 edges will be shown. Nodes 
# that lay further from the root node will be omitted. Note that setting this 
# option to 1 or 2 may greatly reduce the computation time needed for large 
# code bases. Also note that the size of a graph can be further restricted by 
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.

MAX_DOT_GRAPH_DEPTH    = 0

# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
# background. This is disabled by default, because dot on Windows does not 
# seem to support this out of the box. Warning: Depending on the platform used, 
# enabling this option may lead to badly anti-aliased labels on the edges of 
# a graph (i.e. they become hard to read).

DOT_TRANSPARENT        = NO

# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
# files in one run (i.e. multiple -o and -T options on the command line). This 
# makes dot run faster, but since only newer versions of dot (>1.8.10) 
# support this, this feature is disabled by default.

DOT_MULTI_TARGETS      = NO

# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
# generate a legend page explaining the meaning of the various boxes and 
# arrows in the dot generated graphs.

GENERATE_LEGEND        = YES

# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
# remove the intermediate dot files that are used to generate 
# the various graphs.

DOT_CLEANUP            = YES

#---------------------------------------------------------------------------
# Options related to the search engine
#---------------------------------------------------------------------------

# The SEARCHENGINE tag specifies whether or not a search engine should be 
# used. If set to NO the values of all tags below this one will be ignored.

SEARCHENGINE           = YES


================================================
FILE: README.md
================================================
# GraphLab PowerGraph v2.2

## UPDATE: For a signficant evolution of this codebase, see GraphLab Create which is available for download at [turi.com](https://turi.com)

## History
In 2013, the team that created GraphLab PowerGraph started the Seattle-based company, GraphLab, Inc. The learnings from GraphLab PowerGraph and GraphChi projects have culminated into GraphLab Create, a enterprise-class data science platform for data scientists and software engineers that can simplify building and deploying advanced machine learning models as a RESTful predictive service. In January 2015, GraphLab, Inc. was renamed to Turi. See [turi.com](https://turi.com) for more information. 

## Status
GraphLab PowerGraph is no longer in active development by the founding team. GraphLab PowerGraph is now supported by the community at [http://forum.turi.com/](http://forum.turi.com/).  

# Introduction

GraphLab PowerGraph is a graph-based, high performance, distributed computation framework written in C++. 

The GraphLab PowerGraph academic project was started in 2009 at Carnegie Mellon University to develop a new parallel computation abstraction tailored to machine learning. GraphLab PowerGraph 1.0 employed shared-memory design. In GraphLab PowerGraph 2.1, the framework was redesigned to target the distributed environment. It addressed the difficulties with real-world power-law graphs and achieved unparalleled performance at the time. In GraphLab PowerGraph 2.2, the Warp System was introduced and provided a new flexible, distributed architecture around fine-grained user-mode threading (fibers). The Warp System allows one to easily extend the abstraction, to improve optimization for example, while also improving usability.

GraphLab PowerGraph is the culmination of 4-years of research and development into graph computation, distributed computing, and machine learning. GraphLab PowerGraph scales to graphs with billions of vertices and edges easily, performing orders of magnitude faster than competing systems. GraphLab PowerGraph combines advances in machine learning algorithms, asynchronous distributed graph computation, prioritized scheduling, and graph placement with optimized low-level system design and efficient data-structures to achieve unmatched performance and scalability in challenging machine learning tasks.

Related is GraphChi, a spin-off project separate from the GraphLab PowerGraph project. GraphChi was designed to run very large graph computations on just a single machine, by using a novel algorithm for processing the graph from disk (SSD or hard drive) enabling a single desktop computer (actually a Mac Mini) to tackle problems that previously demanded an entire cluster. For more information, see [https://github.com/GraphChi](https://github.com/GraphChi).

# License


GraphLab PowerGraph is released under the [Apache 2 license](http://www.apache.org/licenses/LICENSE-2.0.html).

If you use GraphLab PowerGraph in your research, please cite our paper:
```
    @inproceedings{Low+al:uai10graphlab,
      title = {GraphLab: A New Parallel Framework for Machine Learning},
      author = {Yucheng Low and
                Joseph Gonzalez and
                Aapo Kyrola and
                Danny Bickson and
                Carlos Guestrin and
                Joseph M. Hellerstein},
      booktitle = {Conference on Uncertainty in Artificial Intelligence (UAI)},
      month = {July},
      year = {2010}
    }
```

# Academic and Conference Papers

Joseph E. Gonzalez, Yucheng Low, Haijie Gu, Danny Bickson, and Carlos Guestrin (2012). "[PowerGraph: Distributed Graph-Parallel Computation on Natural Graphs](https://www.usenix.org/conference/osdi12/technical-sessions/presentation/gonzalez)." Proceedings of the 10th USENIX Symposium on Operating Systems Design and Implementation (OSDI '12).

Yucheng Low, Joseph Gonzalez, Aapo Kyrola, Danny Bickson, Carlos Guestrin and Joseph M. Hellerstein (2012). "[Distributed GraphLab: A Framework for Machine Learning and Data Mining in the Cloud](http://vldb.org/pvldb/vol5/p716_yuchenglow_vldb2012.pdf)." Proceedings of the VLDB Endowment (PVLDB).

Yucheng Low, Joseph Gonzalez, Aapo Kyrola, Danny Bickson, Carlos Guestrin, and Joseph M. Hellerstein (2010). "[GraphLab: A New Parallel Framework for Machine Learning](http://arxiv.org/pdf/1006.4990v1.pdf)." Conference on Uncertainty in Artificial Intelligence (UAI).

Li, Kevin; Gibson, Charles; Ho, David; Zhou, Qi; Kim, Jason; Buhisi, Omar; Brown, Donald E.; Gerber, Matthew, "[Assessment of machine learning algorithms in cloud computing frameworks](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=6549501)", Systems and Information Engineering Design Symposium (SIEDS), 2013 IEEE, pp.98,103, 26-26 April 2013

[Towards Benchmarking Graph-Processing Platforms](http://sc13.supercomputing.org/sites/default/files/PostersArchive/post152.html). by Yong Guo (Delft University of Technology), Marcin Biczak (Delft University of Technology), Ana Lucia Varbanescu (University of Amsterdam), Alexandru Iosup (Delft University of Technology), Claudio Martella (VU University Amsterdam), Theodore L. Willke (Intel Corporation), in Super Computing 13

Aapo Kyrola, Guy Blelloch, and Carlos Guestrin (2012). "[GraphChi: Large-Scale Graph computation on Just a PC](https://www.usenix.org/conference/osdi12/technical-sessions/presentation/kyrola)." Proceedings of the 10th USENIX Symposium on Operating Systems Design and Implementation (OSDI '12).


# The Software Stack

The GraphLab PowerGraph project consists of a core API and a collection of high-performance machine learning and data mining toolkits built on top. The API is written in C++ and built on top of standard cluster and cloud technologies. Inter-process communication is accomplished over TCP-IP and MPI is used to launch and manage GraphLab PowerGraph programs. Each process is multithreaded to fully utilize the multicore resources available on modern cluster nodes. It supports reading and writing to both Posix and HDFS filesystems.

![GraphLab PowerGraph Software Stack](images/gl_os_software_stack.png "GraphLab Software Stack")

GraphLab PowerGraph has a large selection of machine learning methods already implemented (see /toolkits directory in this repo). You can also implement your own algorithms on top of the graph programming API (a certain degree of C++ knowledge is required).

GraphLab PowerGraph Feature Highlights
--------------------------------------

* **Unified multicore/distributed API:** write once run anywhere 

* **Tuned for performance:** optimized C++ execution engine leverages extensive multi-threading and asynchronous IO 

* **Scalable:** Run on large cluster deployments by intelligently placing data and computation 

* **HDFS Integration:** Access your data directly from HDFS 

* **Powerful Machine Learning Toolkits:** Tackle challenging machine learning problems with ease

## Building

The current version of GraphLab PowerGraph was tested on Ubuntu Linux 64-bit 10.04,  11.04 (Natty), 12.04 (Pangolin) as well as Mac OS X 10.7 (Lion) and Mac OS X 10.8 (Mountain Lion). It requires a 64-bit operating system.

# Dependencies

To simplify installation, GraphLab PowerGraph currently downloads and builds most of its required dependencies using CMake’s External Project feature. This also means the first build could take a long time.

There are however, a few dependencies which must be manually satisfied.

* On OS X: g++ (>= 4.2) or clang (>= 3.0) [Required]
  +  Required for compiling GraphLab.

* On Linux: g++ (>= 4.3) or clang (>= 3.0) [Required]
  +  Required for compiling GraphLab.

* *nix build tools: patch, make [Required]
   +  Should come with most Mac/Linux systems by default. Recent Ubuntu version will require to install the build-essential package.

* zlib [Required]
   +   Comes with most Mac/Linux systems by default. Recent Ubuntu version will require the zlib1g-dev package.

* Open MPI or MPICH2 [Strongly Recommended]
   + Required for running GraphLab distributed. 

* JDK 6 or greater [Optional]
   + Required for HDFS support 

## Satisfying Dependencies on Mac OS X

Installing XCode with the command line tools (in XCode 4.3 you have to do this manually in the XCode Preferences -&gt; Download pane), satisfies all of these dependencies.

## Satisfying Dependencies on Ubuntu

All the dependencies can be satisfied from the repository:

    sudo apt-get update
    sudo apt-get install gcc g++ build-essential libopenmpi-dev openmpi-bin default-jdk cmake zlib1g-dev git

# Downloading GraphLab PowerGraph

You can download GraphLab PowerGraph directly from the Github Repository. Github also offers a zip download of the repository if you do not have git.

The git command line for cloning the repository is:

    git clone https://github.com/graphlab-code/graphlab.git
    cd graphlab


# Compiling and Running

```
./configure
```

In the graphlabapi directory, will create two sub-directories, release/ and debug/ . cd into either of these directories and running make will build the release or the debug versions respectively. Note that this will compile all of GraphLab, including all toolkits. Since some toolkits require additional dependencies (for instance, the Computer Vision toolkit needs OpenCV), this will also download and build all optional dependencies.

We recommend using make’s parallel build feature to accelerate the compilation process. For instance:

```
make -j4
```

will perform up to 4 build tasks in parallel. When building in release/ mode, GraphLab does require a large amount of memory to compile with the heaviest toolkit requiring 1GB of RAM.

Alternatively, if you know exactly which toolkit you want to build, cd into the toolkit’s sub-directory and running make, will be significantly faster as it will only download the minimal set of dependencies for that toolkit. For instance:

```
cd release/toolkits/graph_analytics
make -j4
```

will build only the Graph Analytics toolkit and will not need to obtain OpenCV, Eigen, etc used by the other toolkits.

## Compilation Issues
If you encounter issues please post the following on the [GraphLab forum](http://forum.graphlab.com).

* detailed description of the problem you are facing
* OS and OS version
* output of uname -a
* hardware of the machine
* utput of g++ -v and clang++ -v
* contents of graphlab/config.log and graphlab/configure.deps

# Writing Your Own Apps

There are two ways to write your own apps.

* To work in the GraphLab PowerGraph source tree, (recommended)
* Install and link against Graphlab PowerGraph (not recommended)


## 1:  Working in the GraphLab PowerGraph Source Tree

This is the best option if you just want to try using GraphLab PowerGraph quickly. GraphLab PowerGraph
uses the CMake build system which enables you to quickly create
a C++ project without having to write complicated Makefiles. 

1. Create your own sub-directory in the apps/ directory. for example apps/my_app
   
2. Create a CMakeLists.txt in apps/my_app containing the following lines:

    project(GraphLab) 
    add_graphlab_executable(my_app [List of cpp files space separated]) 

3. Substituting the right values into the square brackets. For instance:

    project(GraphLab) 
    add_graphlab_executable(my_app my_app.cpp) 

4. Running "make" in the apps/ directory of any of the build directories 
should compile your app. If your app does not show up, try running

    cd [the GraphLab API directory]
    touch apps/CMakeLists.txt


## 2: Installing and Linking Against GraphLab PowerGraph

To install and use GraphLab PowerGraph this way will require your system
to completely satisfy all remaining dependencies, which GraphLab PowerGraph normally 
builds automatically. This path is not extensively tested and is 
**not recommended**

You will require the following additional dependencies
 - libevent (>=2.0.18)
 - libjson (>=7.6.0)
 - libboost (>=1.53)
 - libhdfs (required for HDFS support)
 - tcmalloc (optional)

Follow the instructions in the [Compiling] section to build the release/ 
version of the library. Then cd into the release/ build directory and 
run make install . This will install the following:

* include/graphlab.hpp
 +   The primary GraphLab header 
*  include/graphlab/...
 +   The folder containing the headers for the rest of the GraphLab library 
*  lib/libgraphlab.a
 +   The GraphLab static library.
    
Once you have installed GraphLab PowerGraph you can compile your program by running:

```
g++ -O3 -pthread -lzookeeper_mt -lzookeeper_st -lboost_context -lz -ltcmalloc -levent -levent_pthreads -ljson -lboost_filesystem -lboost_program_options -lboost_system -lboost_iostreams -lboost_date_time -lhdfs -lgraphlab hello_world.cpp
```
    
If you have compiled with MPI support, you will also need

   -lmpi -lmpi++ 
   
# Tutorials
See [tutorials](TUTORIALS.md)

# Datasets
The following are data sets links we found useful when getting started with GraphLab PowerGraph.

##Social Graphs
* [Stanford Large Network Dataset (SNAP)](http://snap.stanford.edu/data/index.html)
* [Laboratory for Web Algorithms](http://law.di.unimi.it/datasets.php)

##Collaborative Filtering
* [Million Song dataset](http://labrosa.ee.columbia.edu/millionsong/)
* [Movielens dataset GroupLens](http://grouplens.org/datasets/movielens/)
* [KDD Cup 2012 by Tencent, Inc.](https://www.kddcup2012.org/)
* [University of Florida sparse matrix collection](http://www.cise.ufl.edu/research/sparse/matrices/)

##Classification
* [Airline on time performance](http://stat-computing.org/dataexpo/2009/)
* [SF restaurants](http://missionlocal.org/san-francisco-restaurant-health-inspections/)

##Misc
* [Amazon Web Services public datasets](http://aws.amazon.com/datasets)
  
# Release Notes
##### **map_reduce_vertices/edges and transform_vertices/edges are not parallelized on Mac OS X**

These operations currently rely on OpenMP for parallelism.

On OS X 10.6 and earlier, gcc 4.2 has several OpenMP bugs and is not stable enough to use reliably.

On OS X 10.7, the clang
++ compiler does not yet support OpenMP.

##### **map_reduce_vertices/edges and transform_vertices/edges use a lot more processors than what was specified in –ncpus**

This is related to the question above. While there is a simple temporary solution (omp_set_num_threads), we intend to properly resolve the issue by not using openMP at all.

##### **Unable to launch distributed GraphLab when each machine has multiple network interfaces**

The communication initialization currently takes the first non-localhost IP address as the machine’s IP. A more reliable solution will be to use the hostname used by MPI.


================================================
FILE: TUTORIALS.md
================================================
# GraphLab PowerGraph Tutorials

##Table of Contents
* [Deploying on AWS EC2 Cluster](#ec2)
* [Deploying in a Cluster](#cluster)
* [Deploying on a single multicore machine](#multicore)
* [Benchmarking on AWS EC2](#benchmarking)
* [Fine tuning GraphLab PowerGraph performance](#perf_tuning)

<a name="ec2"></a>
# Deploying in AWS EC2 Cluster

## Step 0: Requirements
* You should have Amazon EC2 account eligible to run on us-east-1a zone.

* Find out using the Amazon AWS console your AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (under your account name on the top right corner-&gt; security credentials -&gt; access keys)

* You should have a keypair attached to the zone you are running on (in our example us-east-1a) as explained <a {{ trackClick() }} href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html">here</a>. You will need to know your keypair name (graphlabkey in our example), and the location of the private key (~/.ssh/graphlabkey.pem in our example).

* Install [boto](https://pypi.python.org/pypi/boto/). This is the AWS Python client. To install, run: 

```
sudo pip install boto
```

* Download and install GraphLab PowerGraph using the instructions in the [README.md](README.md).


## Step 1: Environment Setup

Edit your .bashrc or .bash_profile or .profile files (remember to source it after editing, using the bash command “source &lt;filename&gt;”)

```
export AWS_ACCESS_KEY_ID=[ Your access key ]
export AWS_SECRET_ACCESS_KEY=[ Your access key secret ]
```

## Step 2: Start the cluster

```
cd ~/graphlabapi/scripts/ec2
./gl-ec2 -i ~/.ssh/graphlab.pem -k graphlabkey  -s 1 launch launchtest
```

(In the above command, we created a 2-node cluster in us-east-1a zone. -s is the number of slaves, launch is the action, and launchtest is the name of the cluster)

## Step 3: Update GraphLab PowerGraph

```
./gl-ec2 -i ~/.ssh/graphlab.pem -k graphlabkey update launchtest
```

## Step 4: Run Alternating Least Squares Demo

This step runs ALS (alternating least squares) in a cluster using small netflix subset.
It first downloads the data from the web: [http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.train](http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.train) and [http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.validate](http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.validate), copy it into HDFS, and runs 5 alternating least squares iterations:

```
./gl-ec2 -i ~/.ssh/graphlab.pem -k graphlabkey als_demo launchtest
```

After the run is completed, login to the master node and view the output files in the folder ~/graphlabapi/release/toolkits/collaborative_filtering/ The algorithm and exact format is explained in the API docs.

## Step 5: Shutdown the Cluster

```
./gl-ec2 -i ~/.ssh/graphlab.pem -k grpahlabkey destroy launchtest
```

## Other Useful Commands:

Login into the master node using

```
./gl-ec2 -i ~/.ssh/graphlab.pem -s 1 login launchtest
```

<a name="cluster"></a>
# Deploying in a Cluster

## Step 0: Install GraphLab PowerGraph on one of your cluster nodes.

Install GraphLab PowerGraph, using instructions in the [README.md](README.md), on your master node (one of your cluster machines).

## Step 1: Copy GraphLab PowerGraph files to all machines.

1) Create a file called in your home directory called “machines” with the names of all the MPI nodes participate in the computation.

For example:

```
cat ~/machines
mynode1.some.random.domain
mynode2.some.random.domain
...
mynode18.some.random.domain
```
2) Verify you have the machines files from section 1) in your root folder of all of the machines.

3) You will need to setup password-less SSH between the master node and all other machines.

Verify it is possible to ssh without password between any pairs of machines. These [instructions](http://www.linuxproblem.org/art_9.html) explain how to setup ssh without passswords.

Before proceeding, verify that this is setup correctly; check that the following connects to the remote machine without prompting for a password:

```
# from machine mynode1.some.random.domain
ssh mynode2.some.random.domain
```

4) On the node you installed GraphLab on, run the following commands to copy GraphLab files to the rest of the machines:

```
cd ~/graphlab/release/toolkits
~/graphlab/scripts/mpirsync
cd ~/graphlab/deps/local
~/graphlab/scripts/mpirsync
```

This step will only work if the file you created in step 1 was named "machines" and located in your home directory.

In order for mpirsync to run properly all machines must have all network ports open.

## Step 2a: Run PageRank on a synthetic graph

This step runs the [PageRank](http://en.wikipedia.org/wiki/PageRank) algorithm on a synthetic generated graph of 100,000 nodes. It spawns two GraphLab mpi instances (-n 2).
```
mpiexec -n 2 -hostfile ~/machines /path/to/pagerank --powerlaw=100000
```

## Step 2: Run GraphLab PowerGraph ALS using subset of Netflix data

This step runs ALS (alternating least squares) in a cluster using small netflix susbset.
It first downloads an anonymized, synthetic Netflix dataset from the web: [http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.train](http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.train) and [http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.validate](http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.validate), and runs 5 alternating least squares iterations. After the run is completed, you can login into any of the nodes and view the output files in the folder ~/graphlab/release/toolkits/collaborative_filtering/

 ```
 cd /some/ns/folder/
mkdir smallnetflix
cd smallnetflix/
wget http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.train
wget http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.validate
```
Now run GraphLab:

````
mpiexec -n 2 -hostfile ~/machines /path/to/als  --matrix /some/ns/folder/smallnetflix/ --max_iter=3 --ncpus=1 --minval=1 --maxval=5 --predictions=out_file
```
Where -n is the number of MPI nodes, and –ncpus is the number of deployed cores on each MPI node.

machines is a file which includes a list of the machines you like to deploy on (each machine in a new line)

Note: this section assumes you have a network storage (ns) folder where the input can be stored.
Alternatively, you can split the input into several disjoint files, and store the subsets on the cluster machines.

Note: Don’t forget to change /path/to/als and /some/ns/folder to your actual folder path!

Note: For mpich2, use -f instead of -hostfile.

## Step 3:

[Fine tuning graphlab deployment](#perf_tuning).

## Errors and their resolution:

### Error:

```
/mnt/info/home/daroczyb/als: error while loading shared libraries: libevent_pthreads-2.0.so.5: cannot open shared object file: No such file or directory
```

**Solution:**

You should define LD_LIBRARY_PATH to point to the location of libevent_pthreads, this is done with the -x mpi command, for example:

```
mpiexec --hostfile machines -x LD_LIBRARY_PATH=/home/daroczyb/graphlab/deps/local/lib/ /mnt/info/home/daroczyb/als /mnt/info/home/daroczyb/smallnetflix_mm.train
```

### Error:

```
mnt/info/home/daroczyb/als: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
```

**Solution:**

Point LD_LIBRARY_PATH to the location of libjvm.so using the -x mpi command:

```
mpiexec --hostfile machines -x LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/daroczyb/graphlab/deps/local/lib/:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/ /mnt/info/home/daroczyb/als /mnt/info/home/daroczyb/smallnetflix_mm.train
```

### Error:

```
problem with execution of /graphlab/release/toolkits/collaborative_filtering/als  on  debian1:  [Errno 2] No such file or directory
```

**Solution:**

You should verify the executable is found on the same path on all machines.

### Error:

a prompt asking for password when running mpiexec

**Solution:** Use the following [instructions](http://www.linuxproblem.org/art_9.html) to allow connection with a public/private key pair (no password).

### Error:

```
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://[domain]:9000/user/[user_name]/data.txt, expected: file:///
    at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:381)
    at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:55)
    at org.apache.hadoop.fs.RawLocalFileSystem.listStatus(RawLocalFileSystem.java:307)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:842)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:867)
    at org.apache.hadoop.fs.ChecksumFileSystem.listStatus(ChecksumFileSystem.java:487)
    Call to org.apache.hadoop.fs.FileSystem::listStatus failed!
    WARNING: distributed_graph.hpp(load_from_hdfs:1889): No files found matching hdfs://[domain]:9000/user/[user_name]/data.txt
```

**Solution:**
Verify you classpath includes all hadoop required folders.

### Error:

Just after TCP Communication layer is constructed: 
```
BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES, EXITCODE: 11, CLEANING UP REMAINING PROCESSES, YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
```
or:

```
[xyzserver:22296] *** Process received signal *** mpiexec noticed that process rank 0 with PID 22296 on node xyzserver exited on signal 11 (Segmentation fault).
```

**Solution:**

Check that all machines have access to, or are using the same binary

<a id="multicore"></a>
#Deployment on a single multicore machine

## Preliminaries:

## Step 0: Install GraphLab on one of your cluster nodes.

Using the instructions [here](/projects/source.html) on your master node (one of your cluster machines), except invoke the  configure script with the ‘–no_mpi’ flag.
Don’t forget to use
```
./configure --no_mpi
```

when configuring GraphLab.

## Step 1: Run GraphLab ALS

This step runs ALS (alternating least squares) in a cluster using small netflix susbset. It first downloads the data from the web, runs 5 alternating least squares iterations. After the run is completed, the output files will be created in the running folder (the folder graphlab/release/toolkits/collaborative_filtering/) 

```
cd graphlab/release/toolkits/collaborative_filtering/
mkdir smallnetflix
cd smallnetflix/
wget http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.train
wget http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.validate
cd ..
```

Now run GraphLab:

```
./als --matrix ./smallnetflix/ --max_iter=5 --ncpus=1 --predictions=out_file
```
    
Where –ncpus is the number of deployed cores.

<a id="benchmarking"></a>
# Benchmarking on AWS EC2

A commonly repeating task is evaluation of GraphLab performance and scaling properties on a cluster. To help jump start benchmarking we have created this tutorial.

## Step 0: Requirements

1. You should have Amazon EC2 account eligible to run on us-west zone.
2. Find out using the Amazon AWS console your AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (under your account name on the top right corner-> security credentials -> access keys)
3. You should have a keypair attached to the zone you are running on (in our example us-west) as explained [here](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). You will need to know your keypair name (amazonec2 in our example), and the location of the private key (~/.ssh/amazonec2.pem in our example).
4. Install boto. This is the AWS Python client. To install, run: `sudo pip boto`.
5. Download and install GraphLab  using the instructions [here](/projects/source.html).

## Step 1: Recommended setting

We recommend using high performance computing instances (like cc2.8xlarge) since we observed a significant improved performance especially related to variation in cluster load and network utilization. The scripts also allow using regular instances.

To avoid ec2 unexpected loads, we recommend repeating each experiment a few times and computing the average.

## Step 2: Environment Setup

Edit your .bashrc or .bash_profile or .profile files (remember to source it after editing, using the bash command “source <filename>”)

```
export AWS_ACCESS_KEY_ID=[ Your access key ]
export AWS_SECRET_ACCESS_KEY=[ Your access key secret ]
```

## Step 3: configure benchmarking

Edit the [benchmark_ec2.sh](https://github.com/graphlab-code/graphlab/blob/master/scripts/ec2/benchmark_ec2.sh) script found under graphlab/scripts/ec2
1. Select the requested algorithms of the following options:
 ```
ALS=1 # alternating least squares
SVD=1 # singular value decomposition
PR=1  # pagerank
```
(Setting an algorithm to 0 will disable its run).
2. Select the number of slaves (any number between 0 to n) by setting the MAX_SLAVES variable.
3. Select the number of experiment repeats (any number between 0 to n) by setting the MAX_RETRY variable. The benchmarking script, spawns an ec2 cluster of size n machines, and then tests the requested algorithm using 0, 1, … n-1 slaves. Each experiment is repeated MAX_RETRY times.

### Step 3: Perform benchmarking

```
cd ~/graphlabapi/scripts/ec2
./benchmark_ec2.sh
```
It is advised to redirect the benchmarking output to file, for example on bash:

 ```
 ./benchmark_ec2 > output 2>&1
 ```

### Step 4: Processing the results

For detecting final runtime for ALS/SVD

```
grep "Runtime" output
```
For detecting final runtime for PR:

```
grep "Finished Running" output
```
You will need to manually compute the average runtime for each case. A recommended metric to use is the “speedup” curve, which is the time for executing on a single machine divided by the time executing on k machines. The optimal result is linear speedup, namely running on k machines speeds up the algorithm k times vs. running on a single machine.

### Step 5: behind the scenes

Here is a more detailed explanation of the benchmarking process. The benchmarking is calling gl-ec2 script which calls [gl_ec2.py](https://github.com/graphlab-code/graphlab/blob/master/scripts/ec2/gl_ec2.py) script.
1. The “launch” command to start a graphlab cluster with X machines.
2. The “update” command to get the latest version of graphlab from git, recompile it, and disseminate the binary to the salves
3. The “als_demo”, “svd_demo”, “pagerank_demo” command benchmark ALS/SVD/PR algorithms. It first downloads a dataset from the web and then calls graphlab with the right command lines to issue a run on the downloaded dataset. For PR we use the [LiveJournal](http://snap.stanford.edu/data/soc-LiveJournal1.html) dataset. For ALS/SVD we use a [netflix like synthetic sample](http://www.select.cs.cmu.edu/code/graphlab/datasets/smallnetflix_mm.train).
4. In case you would like to benchmark a different dataset, you can edit the dataset URL in the gl_ec2.py example.
5. In case you would like to benchmark a different algorithm, you can add an additional youralgo_demo section into the gl_ec2.py script.
6. In case you would like to bechmark a regular instance, simply change the following line in gl_ec2.py from

````
./gl-ec2 -i ~/.ssh/amazonec2.pem -k amazonec2 -a hpc -s $MAX_SLAVES -t cc2.8xlarge launch hpctest
```
to:
```
./gl-ec2 -i ~/.ssh/amazonec2.pem -k amazonec2  -s $MAX_SLAVES -t m1.xlarge launch hpctest
```

### Advanced topics.

In case you like to work in a different ec2 region (than the default us-west):

For us-east region, those are the provided AMIs:

Standard: ami-31360458, high performance: ami-39360450.

You should

1. add the following line just before: [gl_ec2.py](https://github.com/graphlab-code/graphlab/blob/master/scripts/ec2/gl_ec2.py#L223)
    
```
opts.ami = "ami-31360458"
```
2. run with the additional command line argument:
```
-r us-east-1
```

### Support

If you encounter any problem when trying to run this benchmarking feel free to post on [forum.graphlab.com](http://forum.graphlab.com)

<a id="perf_tuning"></a>
# Fine tuning GraphLab PowerGraph performance

This section contains tips and examples on how to setup GraphLab properly on your cluster and how to squeeze performance.

## 0: Compile in release

Verify you compiled graphlab in the release subfolder (and not in debug subfolder). Compiling in release may speed execution up to x10 times!

Tip: Always compile in release when testing performance.

## 1: Understanding input graph loading

GraphLab PowerGraph has built in parallel loading of the input graph. However, for efficient parallel loading, the input file should be split into multiple disjoint sub files. When using a single input file, the graph loading becomes serial (which is bad!).

Each MPIinstance has a single loader of the input graph attached to it (does not matter how many cpus are used by that MPI instance).

Tip: Always split your input file into at least as many MPI processes you are using.

## 2: Verify MPI is working correctly

You can test your MPI setup as follows:

1. Compile the release/demoapps/rpc subfolder (using “cd release/demoapps/rpc/; make”). Copy the files generated by the compile to all machines.
2. Run:

```
mpiexec -n 2 --hostfile ~/machines  /home/ubuntu/graphlab/release/demoapps/rpc/rpc_example1
```
As part of the output, you should see something like this:

```
TCP Communication layer constructed.
TCP Communication layer constructed.

10
5 plus 1 is : 6
11 plus 1 is : 12
```

If you get something else, please report an error as explained below

## 3: Fine tuning of the partitioning.

Previous to the program execution, the graph is first loaded into memory and partitioned into the different cluster machines. It is possible to try different partitioning strategies. This is done using the following flags:

```
--graph_opts="ingress=oblivious
```

or

````
--graph_opts="ingress=grid" # works for power of 2 sized cluster i.e. 2,4,8,.. machines
```

For different graphs, different partitioning methods may give different performance gains.

## 4: Setting ncpus

The –ncpus option let you set the number of cores used to perform computation. Prior to 2.1.4644 this defaults to 2. After 2.1.4644, this defaults to #cores – 2. When run in the distributed setting, the maximum number this should be set to is #cores – 2 since 2 cores should be reserved for communication.


================================================
FILE: apps/CMakeLists.txt
================================================
project(GraphLab)

# link_libraries(${Boost_LIBRARIES})
# link_libraries(${GraphLab_LIBRARIES})



macro(add_all_subdirectories retval curdir)
  file(GLOB sub-dir RELATIVE ${curdir} *)
  set(list_of_dirs "")
  foreach(dir ${sub-dir})
    if(IS_DIRECTORY ${curdir}/${dir})
    STRING(SUBSTRING ${dir} 0 1 firstchar)
        if(${firstchar} STREQUAL "." OR ${firstchar} STREQUAL "_" )
        else(${firstchar} STREQUAL "." OR ${firstchar} STREQUAL "_")
          set(list_of_dirs ${list_of_dirs} ${dir})
          message(STATUS "Detected App: " ${dir})
          add_subdirectory(${dir})
        endif()
    endif()
  endforeach()
  set(${retval} ${list_of_dirs})
endmacro()

add_all_subdirectories(retval, ${CMAKE_CURRENT_SOURCE_DIR})



================================================
FILE: apps/cascades/CMakeLists.txt
================================================
project(cascades)
add_graphlab_executable(cascades cascades.cpp)


================================================
FILE: apps/cascades/cascades.cpp
================================================
/*  
 * Copyright (c) 2009 Carnegie Mellon University. 
 *     All rights reserved.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an "AS
 *  IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 *  express or implied.  See the License for the specific language
 *  governing permissions and limitations under the License.
 *
 *
 */


#include <graphlab.hpp>
#include <math.h>
#include <cstdlib>
#include <ctime>

double infection_chance;
double recovery_chance;

enum Status {INFECTED, SUSCEPTIBLE, RECOVERED};

// The vertex data is its status (S, I, or R) 
typedef Status vertex_data_type;

// infected_status counts the number of infected neighbors, since
// the number of infected neighbors determines how likely a susceptible node is
// to be infected
struct infected_status: public graphlab::IS_POD_TYPE {
  int value;
  vertex_data_type status;

  infected_status() {
    value = 0;
    status = INFECTED;
  }

  infected_status& operator+=(const infected_status& other) {
    if (other.status == INFECTED) {
      this->value++;
    }

    return *this;
  }
};


typedef infected_status gather_type;
 
// The graph type is determined by the vertex and edge data types
typedef graphlab::distributed_graph<vertex_data_type, graphlab::empty> graph_type;

bool line_parser(graph_type& graph, const std::string& filename, const std::string& textline) {
  std::stringstream strm(textline);
  graphlab::vertex_id_type vid;

  char label;
  // first entry in the line is a vertex ID
  strm >> vid;

  // next entry is their status (S, I, or R)
  strm >> label;

  vertex_data_type statusLabel;
  if (label == 'S') {
    statusLabel = SUSCEPTIBLE;
  } else if (label == 'I') {
    statusLabel = INFECTED;
  } else {
    statusLabel = RECOVERED;
  }

  
  // insert this vertex with its label 
  graph.add_vertex(vid, statusLabel);

  // while there are elements in the line, continue to read until we fail
  while(1) {
    graphlab::vertex_id_type other_vid;
    strm >> other_vid;
    if (strm.fail()) {
      break;
    }
    graph.add_edge(vid, other_vid);
  }

  return true;
}

class cascades:
  public graphlab::ivertex_program<graph_type, gather_type>,
  public graphlab::IS_POD_TYPE {

  public:
    edge_dir_type gather_edges(icontext_type& context, const vertex_type& vertex) const {
      return graphlab::ALL_EDGES;
    }

    gather_type gather(icontext_type& context, const vertex_type& vertex, edge_type& edge) const {
      // figure out which data to get from the edge.
      bool isEdgeSource = (vertex.id() == edge.source().id());
      vertex_data_type neighbor_status = isEdgeSource ? edge.target().data() : edge.source().data();

      // create infected_status and add neighbor's status to it. 

      infected_status status;
      status.status = neighbor_status;
      status.value = 1;
      
      return status;
    }

    void apply(icontext_type& context, vertex_type& vertex, const gather_type& total) {
      vertex_data_type old_data = vertex.data();

      vertex_data_type result = old_data;
      double random_value;

      // if vertex.data == RECOVERED, don't do anything
      // if vertex.data == INFECTED, roll on recovery_chance to see if recovery
      // occurs 
      // if vertex.data == SUSCEPTIBLE, then do (total) dice rolls (each time comparing
      // the result to infection_chance). if any of them show up as positive,
      // set vertex.data to INFECTED.  

      if (old_data != RECOVERED) {
        if (old_data == INFECTED) {
          random_value = ((double)rand())/RAND_MAX;
          if (random_value <= recovery_chance) {
            result = RECOVERED;
          }
        } else if (old_data == SUSCEPTIBLE) {
          for (int i = 0; i < total.value; i++) {
            random_value = ((double)rand())/RAND_MAX;
            if (random_value <= infection_chance) {
              result = INFECTED;
              break;
            }
          }
        }
      }

      vertex.data() = result;

      if (result == INFECTED) {
        context.signal(vertex);
      }
    }
Download .txt
gitextract_mlg8j482/

├── .gitignore
├── BINARY_README
├── CMakeLists.txt
├── Doxyfile
├── Doxyfile_internal
├── README.md
├── TUTORIALS.md
├── apps/
│   ├── CMakeLists.txt
│   ├── cascades/
│   │   ├── CMakeLists.txt
│   │   └── cascades.cpp
│   ├── concomp/
│   │   ├── CMakeLists.txt
│   │   └── concomp.cpp
│   ├── example/
│   │   ├── CMakeLists.txt
│   │   └── hello_world.cpp
│   └── label_propagation/
│       ├── CMakeLists.txt
│       └── label_propagation.cpp
├── cmake/
│   ├── FindAnt.cmake
│   ├── FindBoost.cmake
│   ├── FindCUDA/
│   │   ├── make2cmake.cmake
│   │   ├── parse_cubin.cmake
│   │   └── run_nvcc.cmake
│   ├── FindCUDA.cmake
│   ├── FindLibJpeg.cmake
│   ├── FindMPICH2.cmake
│   ├── FindMatlab.cmake
│   ├── FindPerftools.cmake
│   ├── Mex_stub.cpp
│   └── mex_link.sh
├── configure
├── cxxtest/
│   ├── cxxtest/
│   │   ├── Descriptions.cpp
│   │   ├── Descriptions.h
│   │   ├── DummyDescriptions.cpp
│   │   ├── DummyDescriptions.h
│   │   ├── ErrorFormatter.h
│   │   ├── ErrorPrinter.h
│   │   ├── Flags.h
│   │   ├── GlobalFixture.cpp
│   │   ├── GlobalFixture.h
│   │   ├── Gui.h
│   │   ├── LinkedList.cpp
│   │   ├── LinkedList.h
│   │   ├── Mock.h
│   │   ├── ParenPrinter.h
│   │   ├── QtGui.h
│   │   ├── RealDescriptions.cpp
│   │   ├── RealDescriptions.h
│   │   ├── Root.cpp
│   │   ├── SelfTest.h
│   │   ├── StdHeaders.h
│   │   ├── StdTestSuite.h
│   │   ├── StdValueTraits.h
│   │   ├── StdioFilePrinter.h
│   │   ├── StdioPrinter.h
│   │   ├── TeeListener.h
│   │   ├── TestListener.h
│   │   ├── TestMain.h
│   │   ├── TestRunner.h
│   │   ├── TestSuite.cpp
│   │   ├── TestSuite.h
│   │   ├── TestTracker.cpp
│   │   ├── TestTracker.h
│   │   ├── ValueTraits.cpp
│   │   ├── ValueTraits.h
│   │   ├── Win32Gui.h
│   │   ├── X11Gui.h
│   │   ├── XUnitPrinter.h
│   │   ├── XmlFormatter.h
│   │   ├── XmlPrinter.h
│   │   ├── YesNoRunner.h
│   │   ├── __init__.py
│   │   ├── __release__.py
│   │   ├── cxx_parser.py
│   │   ├── cxxtest_fog.py
│   │   ├── cxxtest_misc.py
│   │   ├── cxxtest_parser.py
│   │   └── cxxtestgen.py
│   ├── cxxtestgen
│   └── python/
│       ├── README.txt
│       ├── convert.py
│       ├── cxxtest/
│       │   ├── __init__.py
│       │   ├── __release__.py
│       │   ├── cxx_parser.py
│       │   ├── cxxtest_fog.py
│       │   ├── cxxtest_misc.py
│       │   ├── cxxtest_parser.py
│       │   └── cxxtestgen.py
│       ├── python3/
│       │   ├── cxxtest/
│       │   │   ├── __init__.py
│       │   │   ├── __release__.py
│       │   │   ├── cxx_parser.py
│       │   │   ├── cxxtest_fog.py
│       │   │   ├── cxxtest_misc.py
│       │   │   ├── cxxtest_parser.py
│       │   │   └── cxxtestgen.py
│       │   └── scripts/
│       │       └── cxxtestgen
│       ├── scripts/
│       │   └── cxxtestgen
│       └── setup.py
├── demoapps/
│   ├── CMakeLists.txt
│   ├── dsl/
│   │   ├── CMakeLists.txt
│   │   ├── gen_impl.cpp
│   │   ├── gl_server.cpp
│   │   ├── graph_typedefs.gen
│   │   ├── impl.graphlab
│   │   └── scala_impl/
│   │       └── dsl.scala
│   ├── pagerank/
│   │   ├── CMakeLists.txt
│   │   ├── simple_pagerank.cpp
│   │   ├── warp_engine_pagerank.cpp
│   │   └── warp_parfor_pagerank.cpp
│   └── rpc/
│       ├── CMakeLists.txt
│       ├── dht_performance_test.cpp
│       ├── fiber_future_test.cpp
│       ├── obj_fiber_future_test.cpp
│       ├── rpc_call_perf_test.cpp
│       ├── rpc_example1.cpp
│       ├── rpc_example2.cpp
│       ├── rpc_example3.cpp
│       ├── rpc_example4.cpp
│       ├── rpc_example5.cpp
│       ├── rpc_example6.cpp
│       ├── rpc_example7.cpp
│       ├── rpc_example8.cpp
│       └── rpc_example9.cpp
├── dist/
│   └── README
├── doc/
│   ├── README
│   └── images/
│       ├── cycle_triangle.dot
│       ├── example_webgraph.dot
│       ├── graph_format_example.dot
│       ├── images.pptx
│       ├── in_triangle.dot
│       ├── out_triangle.dot
│       └── through_triangle.dot
├── license/
│   ├── LICENSE.txt
│   ├── LICENSE_prepend.txt
│   ├── corporate_CLA.txt
│   └── individual_CLA.txt
├── matlab/
│   └── eventlog_parser.m
├── patches/
│   ├── boost.patch
│   ├── libbz2_fpic.patch
│   ├── libevent_clean_and_remap.sh
│   ├── libevent_remap_file.txt
│   ├── libhdfs.patch
│   ├── libjson.patch
│   ├── opencv_apple_rpath.patch
│   ├── tcmalloc.patch
│   └── zookeeper/
│       ├── Makefile
│       └── configure
├── scripts/
│   ├── add_line_to_eof.sh
│   ├── binary_list.txt
│   ├── build_linux_static.sh
│   ├── build_linux_static_no_jvm.sh
│   ├── build_linux_static_no_jvm_no_mpi.sh
│   ├── build_osx_static.sh
│   ├── compile_static_release.sh
│   ├── ec2/
│   │   ├── benchmark_ec2.sh
│   │   ├── gl-ec2
│   │   ├── gl_ec2.py
│   │   └── readme
│   ├── ec2_tools/
│   │   ├── scatter
│   │   ├── setup-hadoop
│   │   └── setup-torque
│   ├── install_graphlab.sh
│   ├── license_prepend.sh
│   ├── linux_run_script_no_jvm_template.sh
│   ├── linux_run_script_template.sh
│   ├── make_all_docs.sh
│   ├── make_dist.sh
│   ├── mpi_redirect_stdout.sh
│   ├── mpirsync
│   ├── rpcexec.py
│   └── test_dist.sh
├── src/
│   ├── CMakeLists.txt
│   ├── graphlab/
│   │   ├── CMakeLists.txt
│   │   ├── aggregation/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── aggregation_includes.hpp
│   │   │   └── distributed_aggregator.hpp
│   │   ├── docs/
│   │   │   ├── faq.dox
│   │   │   ├── overview.dox
│   │   │   ├── using.dox
│   │   │   └── using_warp.dox
│   │   ├── engine/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── async_consistent_engine.hpp
│   │   │   ├── distributed_chandy_misra.hpp
│   │   │   ├── engine_includes.hpp
│   │   │   ├── execution_status.hpp
│   │   │   ├── iengine.hpp
│   │   │   ├── message_array.hpp
│   │   │   ├── omni_engine.hpp
│   │   │   ├── synchronous_engine.hpp
│   │   │   ├── warp_engine.hpp
│   │   │   ├── warp_graph_broadcast.hpp
│   │   │   ├── warp_graph_mapreduce.hpp
│   │   │   ├── warp_graph_transform.hpp
│   │   │   └── warp_parfor_all_vertices.hpp
│   │   ├── graph/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── builtin_parsers.hpp
│   │   │   ├── distributed_graph.hpp
│   │   │   ├── dynamic_local_graph.hpp
│   │   │   ├── graph_basic_types.hpp
│   │   │   ├── graph_formats.dox
│   │   │   ├── graph_gather_apply.hpp
│   │   │   ├── graph_hash.hpp
│   │   │   ├── graph_includes.hpp
│   │   │   ├── graph_ops.hpp
│   │   │   ├── graph_storage_deprecated.hpp
│   │   │   ├── graph_vertex_join.hpp
│   │   │   ├── ingress/
│   │   │   │   ├── distributed_batch_ingress.hpp
│   │   │   │   ├── distributed_constrained_batch_ingress.hpp
│   │   │   │   ├── distributed_constrained_oblivious_ingress.hpp
│   │   │   │   ├── distributed_constrained_random_ingress.hpp
│   │   │   │   ├── distributed_hdrf_ingress.hpp
│   │   │   │   ├── distributed_identity_ingress.hpp
│   │   │   │   ├── distributed_ingress_base.hpp
│   │   │   │   ├── distributed_oblivious_ingress.hpp
│   │   │   │   ├── distributed_random_ingress.hpp
│   │   │   │   ├── ingress_edge_decision.hpp
│   │   │   │   └── sharding_constraint.hpp
│   │   │   ├── local_edge_buffer.hpp
│   │   │   ├── local_graph.hpp
│   │   │   ├── local_graph_ops.hpp
│   │   │   └── vertex_set.hpp
│   │   ├── jni/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── java_any.cpp
│   │   │   ├── java_any.hpp
│   │   │   ├── org_graphlab_Aggregator.cpp
│   │   │   ├── org_graphlab_Aggregator.h
│   │   │   ├── org_graphlab_Aggregator.hpp
│   │   │   ├── org_graphlab_Context.cpp
│   │   │   ├── org_graphlab_Context.h
│   │   │   ├── org_graphlab_Context.hpp
│   │   │   ├── org_graphlab_Core.cpp
│   │   │   ├── org_graphlab_Core.h
│   │   │   ├── org_graphlab_Core.hpp
│   │   │   ├── org_graphlab_Updater.cpp
│   │   │   ├── org_graphlab_Updater.h
│   │   │   └── org_graphlab_Updater.hpp
│   │   ├── logger/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── assertions.hpp
│   │   │   ├── assertions.hpp.orig
│   │   │   ├── backtrace.cpp
│   │   │   ├── backtrace.hpp
│   │   │   ├── fail_method.hpp
│   │   │   ├── logger.cpp
│   │   │   ├── logger.hpp
│   │   │   └── logger_includes.hpp
│   │   ├── macros_def.hpp
│   │   ├── macros_undef.hpp
│   │   ├── options/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── command_line_options.cpp
│   │   │   ├── command_line_options.hpp
│   │   │   ├── engine_help.txt
│   │   │   ├── graph_help.txt
│   │   │   ├── graphlab_options.hpp
│   │   │   ├── options_includes.hpp
│   │   │   ├── options_map.cpp
│   │   │   └── options_map.hpp
│   │   ├── parallel/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── atomic.hpp
│   │   │   ├── atomic_add_vector2_empty_specialization.hpp
│   │   │   ├── atomic_ops.hpp
│   │   │   ├── cache_line_pad.hpp
│   │   │   ├── deferred_rwlock.hpp
│   │   │   ├── fiber_barrier.hpp
│   │   │   ├── fiber_conditional.hpp
│   │   │   ├── fiber_control.cpp
│   │   │   ├── fiber_control.hpp
│   │   │   ├── fiber_group.cpp
│   │   │   ├── fiber_group.hpp
│   │   │   ├── fiber_remote_request.hpp
│   │   │   ├── lockfree_push_back.hpp
│   │   │   ├── mutex.hpp
│   │   │   ├── parallel_includes.hpp
│   │   │   ├── pthread_tools.cpp
│   │   │   ├── pthread_tools.hpp
│   │   │   ├── queued_rwlock.hpp
│   │   │   ├── thread_pool.cpp
│   │   │   └── thread_pool.hpp
│   │   ├── rpc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── async_consensus.cpp
│   │   │   ├── async_consensus.hpp
│   │   │   ├── buffered_exchange.hpp
│   │   │   ├── caching_dht.hpp
│   │   │   ├── circular_char_buffer.cpp
│   │   │   ├── circular_char_buffer.hpp
│   │   │   ├── circular_iovec_buffer.hpp
│   │   │   ├── dc.cpp
│   │   │   ├── dc.hpp
│   │   │   ├── dc_buffered_stream_send2.cpp
│   │   │   ├── dc_buffered_stream_send2.hpp
│   │   │   ├── dc_comm_base.hpp
│   │   │   ├── dc_compile_parameters.hpp
│   │   │   ├── dc_dist_object.hpp
│   │   │   ├── dc_dist_object_base.hpp
│   │   │   ├── dc_init_from_env.cpp
│   │   │   ├── dc_init_from_env.hpp
│   │   │   ├── dc_init_from_mpi.cpp
│   │   │   ├── dc_init_from_mpi.hpp
│   │   │   ├── dc_init_from_zookeeper.cpp
│   │   │   ├── dc_init_from_zookeeper.hpp
│   │   │   ├── dc_internal_types.hpp
│   │   │   ├── dc_packet_mask.hpp
│   │   │   ├── dc_receive.hpp
│   │   │   ├── dc_send.hpp
│   │   │   ├── dc_services.hpp
│   │   │   ├── dc_stream_receive.cpp
│   │   │   ├── dc_stream_receive.hpp
│   │   │   ├── dc_tcp_comm.cpp
│   │   │   ├── dc_tcp_comm.hpp
│   │   │   ├── dc_thread_get_send_buffer.hpp
│   │   │   ├── dc_types.hpp
│   │   │   ├── delta_dht.cpp
│   │   │   ├── delta_dht.hpp
│   │   │   ├── dht.hpp
│   │   │   ├── distributed_event_log.cpp
│   │   │   ├── distributed_event_log.hpp
│   │   │   ├── evwrapdef.h
│   │   │   ├── evwrapundef.h
│   │   │   ├── fiber_async_consensus.cpp
│   │   │   ├── fiber_async_consensus.hpp
│   │   │   ├── fiber_buffered_exchange.hpp
│   │   │   ├── function_arg_types_def.hpp
│   │   │   ├── function_arg_types_undef.hpp
│   │   │   ├── function_broadcast_issue.hpp
│   │   │   ├── function_call_dispatch.hpp
│   │   │   ├── function_call_issue.hpp
│   │   │   ├── function_ret_type.hpp
│   │   │   ├── get_current_process_hash.cpp
│   │   │   ├── get_current_process_hash.hpp
│   │   │   ├── is_rpc_call.hpp
│   │   │   ├── lazy_dht.hpp
│   │   │   ├── mem_function_arg_types_def.hpp
│   │   │   ├── mem_function_arg_types_undef.hpp
│   │   │   ├── object_broadcast_issue.hpp
│   │   │   ├── object_call_dispatch.hpp
│   │   │   ├── object_call_issue.hpp
│   │   │   ├── object_request_dispatch.hpp
│   │   │   ├── object_request_issue.hpp
│   │   │   ├── pod_template_structs.hpp
│   │   │   ├── request_dispatch.hpp
│   │   │   ├── request_future.hpp
│   │   │   ├── request_issue.hpp
│   │   │   ├── request_reply_handler.cpp
│   │   │   ├── request_reply_handler.hpp
│   │   │   ├── rpc.dox
│   │   │   ├── rpc_includes.hpp
│   │   │   ├── sample_sort.hpp
│   │   │   ├── thread_local_send_buffer.cpp
│   │   │   └── thread_local_send_buffer.hpp
│   │   ├── scheduler/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── fifo_scheduler.cpp
│   │   │   ├── fifo_scheduler.hpp
│   │   │   ├── get_message_priority.hpp
│   │   │   ├── ischeduler.hpp
│   │   │   ├── priority_scheduler.cpp
│   │   │   ├── priority_scheduler.hpp
│   │   │   ├── queued_fifo_scheduler.cpp
│   │   │   ├── queued_fifo_scheduler.hpp
│   │   │   ├── scheduler_factory.hpp
│   │   │   ├── scheduler_includes.hpp
│   │   │   ├── scheduler_list.cpp
│   │   │   ├── scheduler_list.hpp
│   │   │   ├── sweep_scheduler.cpp
│   │   │   └── sweep_scheduler.hpp
│   │   ├── serialization/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── basic_types.hpp
│   │   │   ├── conditional_serialize.hpp
│   │   │   ├── has_load.hpp
│   │   │   ├── has_save.hpp
│   │   │   ├── iarchive.hpp
│   │   │   ├── is_pod.hpp
│   │   │   ├── iterator.hpp
│   │   │   ├── list.hpp
│   │   │   ├── map.hpp
│   │   │   ├── oarchive.hpp
│   │   │   ├── serializable_concept.hpp
│   │   │   ├── serializable_pod.hpp
│   │   │   ├── serialization.dox
│   │   │   ├── serialization_includes.hpp
│   │   │   ├── serialize.hpp
│   │   │   ├── serialize_to_from_string.hpp
│   │   │   ├── set.hpp
│   │   │   ├── unordered_map.hpp
│   │   │   ├── unordered_set.hpp
│   │   │   ├── unsupported_serialize.hpp
│   │   │   └── vector.hpp
│   │   ├── ui/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── graphlab_visualization.js
│   │   │   ├── index.html
│   │   │   ├── intel_demo/
│   │   │   │   ├── graph_builder.json
│   │   │   │   ├── graphlab_visualization.js
│   │   │   │   ├── index.html
│   │   │   │   └── style.css
│   │   │   ├── metrics_server.cpp
│   │   │   ├── metrics_server.hpp
│   │   │   ├── mongoose/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── LICENSE
│   │   │   │   ├── mongoose.cpp
│   │   │   │   └── mongoose.h
│   │   │   └── style.css
│   │   ├── util/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── binary_parser.hpp
│   │   │   ├── blocking_queue.hpp
│   │   │   ├── bloom_filter.hpp
│   │   │   ├── branch_hints.hpp
│   │   │   ├── cache.hpp
│   │   │   ├── chandy_misra.hpp
│   │   │   ├── chandy_misra2.hpp
│   │   │   ├── chandy_misra_lockfree.hpp
│   │   │   ├── char_counting_sink.hpp
│   │   │   ├── charstream.hpp
│   │   │   ├── cuckoo_map.hpp
│   │   │   ├── cuckoo_map_pow2.hpp
│   │   │   ├── cuckoo_set_pow2.hpp
│   │   │   ├── dense_bitset.hpp
│   │   │   ├── empty.hpp
│   │   │   ├── event_log.cpp
│   │   │   ├── event_log.hpp
│   │   │   ├── fast_multinomial.hpp
│   │   │   ├── fiber_blocking_queue.hpp
│   │   │   ├── fs_util.cpp
│   │   │   ├── fs_util.hpp
│   │   │   ├── generate_pds.hpp
│   │   │   ├── generics/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── any.cpp
│   │   │   │   ├── any.hpp
│   │   │   │   ├── blob.hpp
│   │   │   │   ├── block_linked_list.hpp
│   │   │   │   ├── conditional_addition_wrapper.hpp
│   │   │   │   ├── conditional_combiner_wrapper.hpp
│   │   │   │   ├── counting_sort.hpp
│   │   │   │   ├── csr_storage.hpp
│   │   │   │   ├── dynamic_block.hpp
│   │   │   │   ├── dynamic_csr_storage.hpp
│   │   │   │   ├── float_selector.hpp
│   │   │   │   ├── integer_selector.hpp
│   │   │   │   ├── remove_member_pointer.hpp
│   │   │   │   ├── robust_cast.hpp
│   │   │   │   ├── shuffle.hpp
│   │   │   │   ├── test_function_or_functor_type.hpp
│   │   │   │   └── vector_zip.hpp
│   │   │   ├── hash_functions.hpp
│   │   │   ├── hashstream.hpp
│   │   │   ├── hdfs.cpp
│   │   │   ├── hdfs.hpp
│   │   │   ├── hopscotch_map.hpp
│   │   │   ├── hopscotch_set.hpp
│   │   │   ├── hopscotch_table.hpp
│   │   │   ├── inplace_lf_queue.cpp
│   │   │   ├── inplace_lf_queue.hpp
│   │   │   ├── inplace_lf_queue2.hpp
│   │   │   ├── integer_mix.hpp
│   │   │   ├── integer_selector.hpp
│   │   │   ├── lock_free_internal.hpp
│   │   │   ├── lock_free_pool.hpp
│   │   │   ├── memory_info.cpp
│   │   │   ├── memory_info.hpp
│   │   │   ├── mpi_tools.cpp
│   │   │   ├── mpi_tools.hpp
│   │   │   ├── mutable_queue.hpp
│   │   │   ├── net_util.cpp
│   │   │   ├── net_util.hpp
│   │   │   ├── random.cpp
│   │   │   ├── random.hpp
│   │   │   ├── resizing_array_sink.hpp
│   │   │   ├── safe_circular_char_buffer.cpp
│   │   │   ├── safe_circular_char_buffer.hpp
│   │   │   ├── small_map.hpp
│   │   │   ├── small_set.hpp
│   │   │   ├── stl_util.hpp
│   │   │   ├── synchronized_unordered_map.hpp
│   │   │   ├── synchronized_unordered_map2.hpp
│   │   │   ├── system_usage.hpp
│   │   │   ├── timer.cpp
│   │   │   ├── timer.hpp
│   │   │   ├── tracepoint.cpp
│   │   │   ├── tracepoint.hpp
│   │   │   ├── uint128.hpp
│   │   │   ├── union_find.hpp
│   │   │   ├── util_includes.hpp
│   │   │   ├── web_util.cpp
│   │   │   └── web_util.hpp
│   │   ├── version.hpp
│   │   ├── vertex_program/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── context.hpp
│   │   │   ├── icontext.hpp
│   │   │   ├── ivertex_program.hpp
│   │   │   ├── messages.hpp
│   │   │   ├── op_plus_eq_concept.hpp
│   │   │   └── vertex_program_includes.hpp
│   │   ├── warp.hpp
│   │   └── zookeeper/
│   │       ├── key_value.cpp
│   │       ├── key_value.hpp
│   │       ├── server_list.cpp
│   │       ├── server_list.hpp
│   │       ├── zookeeper_common.cpp
│   │       └── zookeeper_common.hpp
│   └── graphlab.hpp
├── tests/
│   ├── CMakeLists.txt
│   ├── arbitrary_signal_test.cpp
│   ├── async_consistent_test.cpp
│   ├── chandy_misra.cxx
│   ├── csr_storage_test.cxx
│   ├── cuckootest.cpp
│   ├── data/
│   │   ├── CMakeLists.txt
│   │   ├── test_adj/
│   │   │   └── test.adj
│   │   ├── test_snap/
│   │   │   └── test.snap
│   │   └── test_tsv/
│   │       └── test.tsv
│   ├── dc_consensus_test.cpp
│   ├── dc_fiber_consensus_test.cpp
│   ├── dc_test_sequentialization.cpp
│   ├── dcsc_test.cpp
│   ├── dense_bitset_test.cxx
│   ├── dht_performance_test.cpp
│   ├── distributed_chandy_misra_test.cpp
│   ├── distributed_graph_test.cpp
│   ├── distributed_ingress_test.cpp
│   ├── empty_test.cxx
│   ├── engine_terminator_bench.cxx
│   ├── fiber_test.cpp
│   ├── fibo_fiber_test.cpp
│   ├── hdfs_test.cpp
│   ├── hopscotch_test.cpp
│   ├── local_graph_test.cxx
│   ├── lock_free_pushback.cxx
│   ├── mini_web_server.cpp
│   ├── random_test.cxx
│   ├── runtests.sh
│   ├── scheduler_test.cxx
│   ├── serializetests.cxx
│   ├── sfinae_function_test.cpp
│   ├── small_map_test.cxx
│   ├── small_set_test.cxx
│   ├── sort_test.cpp
│   ├── synchronous_engine_test.cpp
│   ├── test_lock_free_pool.cxx
│   ├── test_parsers.cpp
│   ├── test_vertex_set.cpp
│   ├── thread_tools.cxx
│   └── union_find_test.cxx
└── toolkits/
    ├── CMakeLists.txt
    ├── README.md
    ├── clustering/
    │   ├── CMakeLists.txt
    │   ├── clustering.dox
    │   ├── generate_synthetic.cpp
    │   ├── graph_laplacian_for_sc.cpp
    │   ├── kmeans.cpp
    │   └── spectral_clustering.cpp
    ├── collaborative_filtering/
    │   ├── CMakeLists.txt
    │   ├── adpredictor.cpp
    │   ├── als.cpp
    │   ├── biassgd.cpp
    │   ├── cdf.hpp
    │   ├── collaborative_filtering.dox
    │   ├── cosamp.hpp
    │   ├── doc.cpp
    │   ├── eigen_serialization.hpp
    │   ├── eigen_wrapper.hpp
    │   ├── implicit.hpp
    │   ├── make_synthetic_als_data.cpp
    │   ├── math.hpp
    │   ├── nmf.cpp
    │   ├── printouts.hpp
    │   ├── sgd.cpp
    │   ├── sparse_als.cpp
    │   ├── stats.hpp
    │   ├── svd.cpp
    │   ├── svdpp.cpp
    │   ├── types.hpp
    │   ├── wals.cpp
    │   ├── warp_als_coord.cpp
    │   └── warp_nmf.cpp
    ├── computer_vision/
    │   ├── CMakeLists.txt
    │   ├── computer_vision.dox
    │   ├── eigen_serialization.cpp
    │   ├── eigen_serialization.hpp
    │   ├── gcgraph.hpp
    │   ├── grabcut.cpp
    │   ├── opencv_serialization.cpp
    │   ├── opencv_serialization.hpp
    │   ├── precomp.hpp
    │   ├── seam_finders_gr.hpp
    │   ├── stitch_full_main.cpp
    │   ├── stitch_grlab.hpp
    │   ├── stitch_main.cpp
    │   ├── stitch_main.hpp
    │   ├── stitch_opts.hpp
    │   ├── stitching.cpp
    │   ├── stitching_detailed.cpp
    │   └── utils.hpp
    ├── extensions/
    │   ├── CMakeLists.txt
    │   ├── MurmurHash3.cpp
    │   ├── MurmurHash3.h
    │   ├── example.txt
    │   ├── extension.cpp
    │   ├── extension_data.hpp
    │   ├── extension_gas.hpp
    │   ├── extension_gas_base_types.hpp
    │   ├── extension_gas_lambda_wrapper.hpp
    │   ├── extension_graph.cpp
    │   ├── extension_graph.hpp
    │   ├── extension_main.cpp
    │   ├── extension_main.hpp
    │   ├── extension_pagerank.cpp
    │   ├── extensions.hpp
    │   └── pagerank_extension_driver.cpp
    ├── graph_algorithms/
    │   ├── CMakeLists.txt
    │   ├── betweeness.cpp
    │   ├── closeness.cpp
    │   ├── djikstra.cpp
    │   ├── graph_analytics.dox
    │   └── prestige.cpp
    ├── graph_analytics/
    │   ├── CMakeLists.txt
    │   ├── TSC.cpp
    │   ├── approximate_diameter.cpp
    │   ├── connected_component.cpp
    │   ├── connected_component_stats.cpp
    │   ├── degree_ordered_coloring.cpp
    │   ├── directed_triangle_count.cpp
    │   ├── eigen_vector_normalization.cpp
    │   ├── format_convert.cpp
    │   ├── graph_analytics.dox
    │   ├── graph_laplacian.cpp
    │   ├── http/
    │   │   ├── index.html
    │   │   ├── make_jsons.m
    │   │   ├── style.css
    │   │   ├── top_users.json
    │   │   └── twitter_triangles.js
    │   ├── kcore.cpp
    │   ├── pagerank.cpp
    │   ├── partitioning.cpp
    │   ├── saturation_ordered_coloring.cpp
    │   ├── simple_coloring.cpp
    │   ├── simple_undirected_triangle_count.cpp
    │   ├── sssp.cpp
    │   ├── undirected_triangle_count.cpp
    │   ├── warp_bond_percolation.cpp
    │   ├── warp_coloring.cpp
    │   ├── warp_pagerank.cpp
    │   └── warp_pagerank2.cpp
    ├── graphical_models/
    │   ├── CMakeLists.txt
    │   ├── ad3_qp.hpp
    │   ├── dd_grlab.hpp
    │   ├── dd_main.cpp
    │   ├── dd_main.hpp
    │   ├── dd_opts.hpp
    │   ├── deprecated/
    │   │   ├── factors/
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── binary_factor.cpp
    │   │   │   ├── binary_factor.hpp
    │   │   │   ├── discrete_variable.cpp
    │   │   │   ├── factor_includes.hpp
    │   │   │   ├── factor_test.cxx
    │   │   │   ├── unary_factor.cpp
    │   │   │   └── unary_factor.hpp
    │   │   ├── gibbs_sampling/
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── README
    │   │   │   ├── chromatic_sampler.cpp
    │   │   │   ├── chromatic_sampler.hpp
    │   │   │   ├── factorized_model.cpp
    │   │   │   ├── factorized_model.hpp
    │   │   │   ├── global_variables.cpp
    │   │   │   ├── global_variables.hpp
    │   │   │   ├── image.cpp
    │   │   │   ├── image.hpp
    │   │   │   ├── jt_splash_sampler.cpp
    │   │   │   ├── jt_splash_sampler.hpp
    │   │   │   ├── junction_tree.cpp
    │   │   │   ├── junction_tree.hpp
    │   │   │   ├── make_denoise_alchemy.cpp
    │   │   │   ├── matlab/
    │   │   │   │   ├── Makefile
    │   │   │   │   ├── asg2ind.m
    │   │   │   │   ├── compile_gibbs_sampler.m
    │   │   │   │   ├── gibbs_sampler.m
    │   │   │   │   ├── gibbs_sampler_impl.cpp
    │   │   │   │   ├── ind2asg.m
    │   │   │   │   ├── matwrap.hpp
    │   │   │   │   ├── table_factor.m
    │   │   │   │   └── tests/
    │   │   │   │       ├── denoise_test.m
    │   │   │   │       ├── make_grid_model.m
    │   │   │   │       ├── small_test.m
    │   │   │   │       └── small_test2.m
    │   │   │   ├── mrf.cpp
    │   │   │   ├── mrf.hpp
    │   │   │   ├── pgibbs_tls.cpp
    │   │   │   ├── pgibbs_tls.hpp
    │   │   │   ├── run_statistics.hpp
    │   │   │   ├── sampler.cpp
    │   │   │   ├── util.cpp
    │   │   │   └── util.hpp
    │   │   ├── kernelbp/
    │   │   │   ├── CMakeLists.txt
    │   │   │   └── old/
    │   │   │       ├── BallTreeDensity.cpp
    │   │   │       ├── CMakeLists.txt
    │   │   │       ├── cpp/
    │   │   │       │   ├── BallTree.h
    │   │   │       │   ├── BallTreeClass.cc
    │   │   │       │   ├── BallTreeDensity.h
    │   │   │       │   ├── BallTreeDensityClass.cc
    │   │   │       │   ├── NOTICE
    │   │   │       │   └── kernels.h
    │   │   │       ├── denoise.cpp
    │   │   │       ├── fakemex.h
    │   │   │       ├── image.hpp
    │   │   │       ├── kde.h
    │   │   │       ├── prob.hpp
    │   │   │       └── prodSampleEpsilon.hpp
    │   │   └── loopybp_denoise.cpp
    │   ├── eigen_serialization.cpp
    │   ├── eigen_serialization.hpp
    │   ├── factors/
    │   │   ├── CMakeLists.txt
    │   │   ├── bp_graph_data.h
    │   │   ├── bp_vertex_program.hpp
    │   │   ├── dense_table.hpp
    │   │   ├── discrete_assignment.hpp
    │   │   ├── discrete_bounds.hpp
    │   │   ├── discrete_domain.hpp
    │   │   ├── discrete_variable.hpp
    │   │   ├── factor_graph.hpp
    │   │   ├── factor_graphs.dox
    │   │   ├── fast_discrete_assignment.hpp
    │   │   ├── sparse_index.hpp
    │   │   ├── sparse_table.hpp
    │   │   ├── table_base.hpp
    │   │   ├── table_factor.hpp
    │   │   └── tests/
    │   │       ├── CMakeLists.txt
    │   │       ├── denoise/
    │   │       │   ├── CMakeLists.txt
    │   │       │   └── denoise.cpp
    │   │       ├── test_MAD_relation/
    │   │       │   ├── CMakeLists.txt
    │   │       │   └── test_MAD_relation.cpp
    │   │       ├── test_bool_var/
    │   │       │   ├── CMakeLists.txt
    │   │       │   ├── test_bool_var.cpp
    │   │       │   └── test_cat_bool_joint.cpp
    │   │       ├── test_dense_table/
    │   │       │   ├── CMakeLists.txt
    │   │       │   └── test_dense_table.cpp
    │   │       └── test_sparse_table/
    │   │           ├── CMakeLists.txt
    │   │           ├── test_neg_relation.cpp
    │   │           └── test_sparse_table.cpp
    │   ├── graphical_models.dox
    │   ├── lbp_structured_prediction.cpp
    │   ├── mplp_denoise.cpp
    │   ├── mplp_structured_prediction.cpp
    │   ├── profile_lbp_synthetic.cpp
    │   ├── profile_lbp_synthetic2.cpp
    │   ├── synthetic_image_data.cpp
    │   └── utils.hpp
    ├── linear_solvers/
    │   ├── CMakeLists.txt
    │   ├── jacobi.cpp
    │   └── linear_solvers.dox
    ├── toolkits.dox
    └── topic_modeling/
        ├── CMakeLists.txt
        ├── cgs_lda.cpp
        ├── cgs_lda_mimno_experimental.cpp
        ├── deprecated/
        │   ├── cgs_lda.cpp
        │   ├── cvb0_lda_common.cpp
        │   ├── cvb0_lda_common.hpp
        │   └── fast_cvb0_lda.cpp
        ├── http/
        │   ├── index.html
        │   ├── lda_visualizer.js
        │   ├── style.css
        │   └── wordclouds
        ├── lda_sequential_cgs.cpp
        └── topic_modeling.dox
Download .txt
Showing preview only (898K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8634 symbols across 522 files)

FILE: apps/cascades/cascades.cpp
  type Status (line 29) | enum Status {INFECTED, SUSCEPTIBLE, RECOVERED}
  type infected_status (line 37) | struct infected_status: public graphlab::IS_POD_TYPE {
    method infected_status (line 41) | infected_status() {
    method infected_status (line 46) | infected_status& operator+=(const infected_status& other) {
  function line_parser (line 61) | bool line_parser(graph_type& graph, const std::string& filename, const s...
  class cascades (line 98) | class cascades:
    method edge_dir_type (line 103) | edge_dir_type gather_edges(icontext_type& context, const vertex_type& ...
    method gather_type (line 107) | gather_type gather(icontext_type& context, const vertex_type& vertex, ...
    method apply (line 121) | void apply(icontext_type& context, vertex_type& vertex, const gather_t...
    method edge_dir_type (line 158) | edge_dir_type scatter_edges(icontext_type& context, const vertex_type&...
  type cascades_writer (line 163) | struct cascades_writer{
    method save_vertex (line 164) | std::string save_vertex(graph_type::vertex_type v) {
    method save_edge (line 181) | std::string save_edge (graph_type::edge_type e) { return ""; }
  function main (line 185) | int main(int argc, char** argv) {

FILE: apps/concomp/concomp.cpp
  function init_vertex (line 36) | void init_vertex(graph_type::vertex_type& vertex) { vertex.data() = -1; }
  type min_combiner (line 38) | struct min_combiner : public graphlab::IS_POD_TYPE {
    method min_combiner (line 41) | min_combiner() {
    method min_combiner (line 45) | min_combiner& operator+=(const min_combiner& other) {
  class concomp (line 53) | class concomp :
    method init (line 64) | void init(icontext_type& context, const vertex_type& vertex, const mes...
    method edge_dir_type (line 75) | edge_dir_type gather_edges(icontext_type& context, const vertex_type& ...
    method apply (line 80) | void apply(icontext_type& context, vertex_type& vertex, const gather_t...
    method edge_dir_type (line 90) | edge_dir_type scatter_edges(icontext_type& context, const vertex_type&...
    method scatter (line 100) | void scatter(icontext_type& context, const vertex_type& vertex, edge_t...
  type concomp_writer (line 115) | struct concomp_writer {
    method save_vertex (line 116) | std::string save_vertex(graph_type::vertex_type v) {
    method save_edge (line 121) | std::string save_edge(graph_type::edge_type e) { return ""; }
  function main (line 125) | int main(int argc, char** argv) {

FILE: apps/example/hello_world.cpp
  function init_vertex (line 37) | void init_vertex(graph_type::vertex_type& vertex) { vertex.data() = vert...
  type min_combiner (line 39) | struct min_combiner {
    method min_combiner (line 41) | min_combiner& operator+=(const min_combiner& other) {
  class concomp (line 47) | class concomp :
    method gather (line 52) | float gather(icontext_type& context, const vertex_type& vertex, edge_t...
    method apply (line 69) | void apply(icontext_type& context, vertex_type& vertex, const gather_t...
    method edge_dir_type (line 81) | edge_dir_type scatter_edges(icontext_type& context, const vertex_type&...
    method scatter (line 90) | void scatter(icontext_type& context, const vertex_type& vertex, edge_t...
  type concomp_writer (line 98) | struct concomp_writer {
    method save_vertex (line 99) | std::string save_vertex(graph_type::vertex_type v) {
    method save_edge (line 104) | std::string save_edge(graph_type::edge_type e) { return ""; }
  function main (line 108) | int main(int argc, char** argv) {

FILE: apps/label_propagation/label_propagation.cpp
  type label_counter (line 23) | struct label_counter {
    method label_counter (line 26) | label_counter() {
    method label_counter (line 29) | label_counter& operator+=(const label_counter& other) {
    method save (line 38) | void save(graphlab::oarchive& oarc) const {
    method load (line 42) | void load(graphlab::iarchive& iarc) {
  function line_parser (line 55) | bool line_parser(graph_type& graph, const std::string& filename, const s...
  class labelpropagation (line 76) | class labelpropagation :
    method edge_dir_type (line 82) | edge_dir_type gather_edges(icontext_type& context, const vertex_type& ...
    method gather_type (line 86) | gather_type gather(icontext_type& context, const vertex_type& vertex, ...
    method apply (line 101) | void apply(icontext_type& context, vertex_type& vertex, const gather_t...
    method edge_dir_type (line 127) | edge_dir_type scatter_edges(icontext_type& context, const vertex_type&...
    method scatter (line 136) | void scatter(icontext_type& context, const vertex_type& vertex, edge_t...
  type labelpropagation_writer (line 143) | struct labelpropagation_writer {
    method save_vertex (line 144) | std::string save_vertex(graph_type::vertex_type v) {
    method save_edge (line 149) | std::string save_edge (graph_type::edge_type e) { return ""; }
  function main (line 153) | int main(int argc, char** argv) {

FILE: cmake/Mex_stub.cpp
  function mexFunction (line 13) | void mexFunction(int nlhs, mxArray *plhs[],
  function at_exit (line 23) | static void at_exit()

FILE: cxxtest/cxxtest/Descriptions.cpp
  type CxxTest (line 17) | namespace CxxTest

FILE: cxxtest/cxxtest/Descriptions.h
  function virtual (line 32) | virtual int line() const = 0;

FILE: cxxtest/cxxtest/DummyDescriptions.cpp
  type CxxTest (line 14) | namespace CxxTest
    function TestDescription (line 26) | TestDescription *DummyTestDescription::next() { return 0; }
    function TestDescription (line 27) | const TestDescription *DummyTestDescription::next() const { return 0; }
    function TestSuite (line 34) | TestSuite *DummySuiteDescription::suite() const { return 0; }
    function TestDescription (line 36) | const TestDescription &DummySuiteDescription::testDescription( unsigne...
    function SuiteDescription (line 37) | SuiteDescription *DummySuiteDescription::next() { return 0; }
    function TestDescription (line 38) | TestDescription *DummySuiteDescription::firstTest() { return 0; }
    function SuiteDescription (line 39) | const SuiteDescription *DummySuiteDescription::next() const { return 0; }
    function TestDescription (line 40) | const TestDescription *DummySuiteDescription::firstTest() const { retu...
    function SuiteDescription (line 51) | const SuiteDescription &DummyWorldDescription::suiteDescription( unsig...
    function SuiteDescription (line 52) | SuiteDescription *DummyWorldDescription::firstSuite() { return 0; }
    function SuiteDescription (line 53) | const SuiteDescription *DummyWorldDescription::firstSuite() const { re...

FILE: cxxtest/cxxtest/DummyDescriptions.h
  function line (line 29) | int line() const;

FILE: cxxtest/cxxtest/ErrorFormatter.h
  function namespace (line 29) | namespace CxxTest
  function endl (line 42) | static void endl( OutputStream &o ) { (o << "\n").flush(); }
  function class (line 45) | class ErrorFormatter : public TestListener
  function newLine (line 246) | void newLine( void )
  function reportTest (line 254) | void reportTest( void )
  function dump (line 262) | void dump( const void *buffer, unsigned size )
  function dumpNull (line 270) | void dumpNull()
  function dumpBuffer (line 275) | void dumpBuffer( const void *buffer, unsigned size )
  function endl (line 290) | static void endl( OutputStream &o )

FILE: cxxtest/cxxtest/ErrorPrinter.h
  function namespace (line 37) | namespace CxxTest

FILE: cxxtest/cxxtest/GlobalFixture.cpp
  type CxxTest (line 17) | namespace CxxTest
    function GlobalFixture (line 27) | GlobalFixture *GlobalFixture::firstGlobalFixture() { return (GlobalFix...
    function GlobalFixture (line 28) | GlobalFixture *GlobalFixture::lastGlobalFixture() { return (GlobalFixt...
    function GlobalFixture (line 29) | GlobalFixture *GlobalFixture::nextGlobalFixture() { return (GlobalFixt...
    function GlobalFixture (line 30) | GlobalFixture *GlobalFixture::prevGlobalFixture() { return (GlobalFixt...

FILE: cxxtest/cxxtest/GlobalFixture.h
  function namespace (line 17) | namespace CxxTest

FILE: cxxtest/cxxtest/Gui.h
  function namespace (line 22) | namespace CxxTest

FILE: cxxtest/cxxtest/LinkedList.cpp
  type CxxTest (line 17) | namespace CxxTest
    function Link (line 27) | Link *List::head()
    function Link (line 35) | const Link *List::head() const
    function Link (line 43) | Link *List::tail()
    function Link (line 51) | const Link *List::tail() const
    function Link (line 72) | Link *List::nth( unsigned n )
    function Link (line 114) | Link * Link::justNext()
    function Link (line 119) | Link * Link::justPrev()
    function Link (line 124) | Link * Link::next()
    function Link (line 132) | Link * Link::prev()
    function Link (line 140) | const Link * Link::next() const
    function Link (line 148) | const Link * Link::prev() const

FILE: cxxtest/cxxtest/LinkedList.h
  function namespace (line 17) | namespace CxxTest

FILE: cxxtest/cxxtest/Mock.h
  function namespace (line 15) | namespace dummy_mock_ns {}

FILE: cxxtest/cxxtest/ParenPrinter.h
  function namespace (line 23) | namespace CxxTest

FILE: cxxtest/cxxtest/QtGui.h
  function namespace (line 39) | namespace CxxTest

FILE: cxxtest/cxxtest/RealDescriptions.cpp
  type CxxTest (line 22) | namespace CxxTest
  function TestDescription (line 102) | TestDescription *RealTestDescription::next() { return (RealTestDescripti...
  function TestDescription (line 103) | const TestDescription *RealTestDescription::next() const { return (const...
  function TestSuite (line 105) | TestSuite *RealTestDescription::suite() const { return _suite->suite(); }
  function TestDescription (line 140) | TestDescription *RealSuiteDescription::firstTest() { return (RealTestDes...
  function TestDescription (line 141) | const TestDescription *RealSuiteDescription::firstTest() const { return ...
  function SuiteDescription (line 142) | SuiteDescription *RealSuiteDescription::next() { return (RealSuiteDescri...
  function SuiteDescription (line 143) | const SuiteDescription *RealSuiteDescription::next() const { return (con...
  function TestDescription (line 147) | const TestDescription &RealSuiteDescription::testDescription( unsigned i...
  function TestSuite (line 190) | TestSuite *StaticSuiteDescription::suite() const
  function List (line 221) | List &RealWorldDescription::suites()
  function SuiteDescription (line 239) | SuiteDescription *RealWorldDescription::firstSuite()
  function SuiteDescription (line 244) | const SuiteDescription *RealWorldDescription::firstSuite() const
  function SuiteDescription (line 249) | const SuiteDescription &RealWorldDescription::suiteDescription( unsigned...
  function activateAllTests (line 318) | void activateAllTests()
  function leaveOnly (line 323) | bool leaveOnly( const char *suiteName, const char *testName )

FILE: cxxtest/cxxtest/RealDescriptions.h
  function namespace (line 23) | namespace CxxTest
  function class (line 212) | class RealWorldDescription : public WorldDescription

FILE: cxxtest/cxxtest/StdTestSuite.h
  function namespace (line 20) | namespace CxxTest {

FILE: cxxtest/cxxtest/StdValueTraits.h
  function namespace (line 32) | namespace CxxTest

FILE: cxxtest/cxxtest/StdioFilePrinter.h
  function namespace (line 25) | namespace CxxTest

FILE: cxxtest/cxxtest/StdioPrinter.h
  function namespace (line 23) | namespace CxxTest

FILE: cxxtest/cxxtest/TeeListener.h
  function namespace (line 22) | namespace CxxTest

FILE: cxxtest/cxxtest/TestListener.h
  function virtual (line 32) | virtual ~TestListener() {}

FILE: cxxtest/cxxtest/TestMain.h
  function namespace (line 32) | namespace CxxTest

FILE: cxxtest/cxxtest/TestRunner.h
  function namespace (line 26) | namespace CxxTest

FILE: cxxtest/cxxtest/TestSuite.cpp
  type CxxTest (line 20) | namespace CxxTest
    function abortTestOnFail (line 34) | bool abortTestOnFail()
    function setAbortTestOnFail (line 39) | void setAbortTestOnFail( bool value )
    function doAbortTest (line 44) | void doAbortTest()
    function maxDumpSize (line 57) | unsigned maxDumpSize()
    function setMaxDumpSize (line 62) | void setMaxDumpSize( unsigned value )
    function doTrace (line 70) | void doTrace( const char *file, int line, const char *message )
    function doWarn (line 77) | void doWarn( const char *file, int line, const char *message )
    function doFailTest (line 82) | void doFailTest( const char *file, int line, const char *message )
    function doFailAssert (line 88) | void doFailAssert( const char *file, int line,
    function sameData (line 97) | bool sameData( const void *x, const void *y, unsigned size )
    function doAssertSameData (line 117) | void doAssertSameData( const char *file, int line,
    function sameFiles (line 132) | bool sameFiles( const char* file1, const char* file2, std::ostringstre...
    function doAssertSameFiles (line 216) | void doAssertSameFiles( const char* file, int line,
    function doFailAssertThrows (line 234) | void doFailAssertThrows( const char *file, int line,
    function doFailAssertThrowsNot (line 249) | void doFailAssertThrowsNot( const char *file, int line,

FILE: cxxtest/cxxtest/TestSuite.h
  function namespace (line 31) | namespace CxxTest
  function test (line 92) | static bool test( X x, Y y )
  function test (line 114) | static bool test( X x, Y y )
  function test (line 136) | static bool test( X x, Y y )
  function test (line 195) | static bool test( X x, Y y, D d )

FILE: cxxtest/cxxtest/TestTracker.cpp
  type CxxTest (line 17) | namespace CxxTest
    function TestTracker (line 35) | TestTracker & TestTracker::tracker()
    function TestDescription (line 53) | const TestDescription *TestTracker::fixTest( const TestDescription *d ...
    function SuiteDescription (line 58) | const SuiteDescription *TestTracker::fixSuite( const SuiteDescription ...
    function WorldDescription (line 63) | const WorldDescription *TestTracker::fixWorld( const WorldDescription ...
    function TestDescription (line 68) | const TestDescription &TestTracker::dummyTest() const
    function SuiteDescription (line 73) | const SuiteDescription &TestTracker::dummySuite() const
    function WorldDescription (line 78) | const WorldDescription &TestTracker::dummyWorld() const

FILE: cxxtest/cxxtest/TestTracker.h
  function namespace (line 24) | namespace CxxTest

FILE: cxxtest/cxxtest/ValueTraits.cpp
  type CxxTest (line 17) | namespace CxxTest
    function digitToChar (line 23) | char digitToChar( unsigned digit )
    function stringsEqual (line 50) | bool stringsEqual( const char *s1, const char *s2 )

FILE: cxxtest/cxxtest/ValueTraits.h
  function namespace (line 38) | namespace CxxTest
  type _CXXTEST_LONGLONG (line 230) | typedef _CXXTEST_LONGLONG T;
  type T (line 245) | typedef unsigned _CXXTEST_LONGLONG T;
  type T (line 261) | typedef signed long int T;
  type T (line 276) | typedef unsigned long int T;
  function namespace (line 369) | namespace dummy_enum_ns {}

FILE: cxxtest/cxxtest/Win32Gui.h
  function namespace (line 36) | namespace CxxTest
  function greenBar (line 396) | void greenBar()
  function setColor (line 403) | void setColor( BYTE red, BYTE green, BYTE blue )
  function setColor (line 408) | void setColor( BYTE, BYTE, BYTE )
  function setIcon (line 413) | void setIcon( LPCTSTR icon )
  function HICON (line 418) | HICON loadStandardIcon( LPCTSTR icon )
  function setTestCaption (line 423) | void setTestCaption( const char *suiteName, const char *testName )
  function showSuiteName (line 443) | void showSuiteName( const char *suiteName )
  function showTestName (line 448) | void showTestName( const char *testName )
  function showTestsDone (line 453) | void showTestsDone()
  function updateTime (line 461) | void updateTime()
  function setStatusTime (line 468) | void setStatusTime( unsigned part, DWORD start )
  function keep (line 483) | bool keep()
  function showSummary (line 492) | void showSummary()
  function setStatusPart (line 499) | void setStatusPart( unsigned part, const char *text )
  function stopTimer (line 504) | void stopTimer()
  function setSummaryStatusBar (line 510) | void setSummaryStatusBar()
  function setSummaryCaption (line 525) | void setSummaryCaption()
  function deallocate (line 535) | void deallocate( char *data )

FILE: cxxtest/cxxtest/X11Gui.h
  function namespace (line 34) | namespace CxxTest

FILE: cxxtest/cxxtest/XUnitPrinter.h
  function namespace (line 23) | namespace CxxTest

FILE: cxxtest/cxxtest/XmlFormatter.h
  function namespace (line 49) | namespace CxxTest
  function class (line 114) | class ElementInfo
  function class (line 184) | class TestCaseInfo
  function class (line 243) | class XmlFormatter : public TestListener

FILE: cxxtest/cxxtest/XmlPrinter.h
  function namespace (line 37) | namespace CxxTest

FILE: cxxtest/cxxtest/YesNoRunner.h
  function namespace (line 23) | namespace CxxTest

FILE: cxxtest/cxxtest/cxx_parser.py
  function ply_init (line 68) | def ply_init(data):
  class Scope (line 73) | class Scope(object):
    method __init__ (line 75) | def __init__(self,name,abs_name,scope_t,base_classes,lineno):
    method insert (line 84) | def insert(self,scope):
  class CppInfo (line 88) | class CppInfo(object):
    method __init__ (line 90) | def __init__(self, filter=None):
    method push_scope (line 101) | def push_scope(self,ns,scope_t,base_classes=[]):
    method pop_scope (line 108) | def pop_scope(self):
    method add_function (line 114) | def add_function(self, fn):
    method get_functions (line 124) | def get_functions(self,name,quiet=False):
    method find_class (line 139) | def find_class(self,name,scope):
    method __repr__ (line 154) | def __repr__(self):
    method is_baseclass (line 157) | def is_baseclass(self,cls,base):
    method __str__ (line 173) | def __str__(self):
  function flatten (line 190) | def flatten(x):
  function t_COMMENT (line 365) | def t_COMMENT(t):
  function t_StringLiteral (line 373) | def t_StringLiteral(t):
  function t_Identifier (line 378) | def t_Identifier(t):
  function t_error (line 384) | def t_error(t):
  function t_newline (line 389) | def t_newline(t):
  function p_identifier (line 417) | def p_identifier(p):
  function p_id (line 425) | def p_id(p):
  function p_global_scope (line 432) | def p_global_scope(p):
  function p_id_scope (line 437) | def p_id_scope(p):
  function p_id_scope_seq (line 441) | def p_id_scope_seq(p):
  function p_nested_id (line 451) | def p_nested_id(p):
  function p_scoped_id (line 457) | def p_scoped_id(p):
  function p_destructor_id (line 476) | def p_destructor_id(p):
  function p_template_decl (line 488) | def p_template_decl(p):
  function p_special_function_id (line 498) | def p_special_function_id(p):
  function p_nested_special_function_id (line 505) | def p_nested_special_function_id(p):
  function p_scoped_special_function_id (line 512) | def p_scoped_special_function_id(p):
  function p_declarator_id (line 519) | def p_declarator_id(p):
  function p_built_in_type_id (line 533) | def p_built_in_type_id(p):
  function p_pseudo_destructor_id (line 539) | def p_pseudo_destructor_id(p):
  function p_nested_pseudo_destructor_id (line 546) | def p_nested_pseudo_destructor_id(p):
  function p_scoped_pseudo_destructor_id (line 552) | def p_scoped_pseudo_destructor_id(p):
  function p_literal (line 563) | def p_literal(p):
  function p_translation_unit (line 576) | def p_translation_unit(p):
  function get_rest (line 620) | def get_rest(p):
  function p_primary_expression (line 623) | def p_primary_expression(p):
  function p_abstract_expression (line 634) | def p_abstract_expression(p):
  function p_postfix_expression (line 641) | def p_postfix_expression(p):
  function p_bexpression_opt (line 661) | def p_bexpression_opt(p):
  function p_bexpression (line 667) | def p_bexpression(p):
  function p_bexpression_seq (line 674) | def p_bexpression_seq(p):
  function p_bexpression_clause (line 680) | def p_bexpression_clause(p):
  function p_expression_list_opt (line 687) | def p_expression_list_opt(p):
  function p_expression_list (line 693) | def p_expression_list(p):
  function p_unary_expression (line 699) | def p_unary_expression(p):
  function p_delete_expression (line 717) | def p_delete_expression(p):
  function p_new_expression (line 722) | def p_new_expression(p):
  function p_new_type_id (line 730) | def p_new_type_id(p):
  function p_new_declarator (line 737) | def p_new_declarator(p):
  function p_direct_new_declarator (line 743) | def p_direct_new_declarator(p):
  function p_new_initializer_opt (line 749) | def p_new_initializer_opt(p):
  function p_cast_expression (line 760) | def p_cast_expression(p):
  function p_pm_expression (line 766) | def p_pm_expression(p):
  function p_multiplicative_expression (line 773) | def p_multiplicative_expression(p):
  function p_additive_expression (line 781) | def p_additive_expression(p):
  function p_shift_expression (line 788) | def p_shift_expression(p):
  function p_relational_expression (line 799) | def p_relational_expression(p):
  function p_equality_expression (line 804) | def p_equality_expression(p):
  function p_and_expression (line 811) | def p_and_expression(p):
  function p_exclusive_or_expression (line 817) | def p_exclusive_or_expression(p):
  function p_inclusive_or_expression (line 823) | def p_inclusive_or_expression(p):
  function p_logical_and_expression (line 829) | def p_logical_and_expression(p):
  function p_logical_or_expression (line 835) | def p_logical_or_expression(p):
  function p_conditional_expression (line 841) | def p_conditional_expression(p):
  function p_assignment_expression (line 853) | def p_assignment_expression(p):
  function p_assignment_operator (line 861) | def p_assignment_operator(p):
  function p_expression (line 882) | def p_expression(p):
  function p_constant_expression (line 888) | def p_constant_expression(p):
  function p_statement (line 903) | def p_statement(p):
  function p_compound_statement (line 914) | def p_compound_statement(p):
  function p_statement_seq_opt (line 919) | def p_statement_seq_opt(p):
  function p_selection_statement (line 928) | def p_selection_statement(p):
  function p_condition_opt (line 935) | def p_condition_opt(p):
  function p_condition (line 941) | def p_condition(p):
  function p_condition_seq (line 948) | def p_condition_seq(p):
  function p_labeled_statement (line 954) | def p_labeled_statement(p):
  function p_try_block (line 961) | def p_try_block(p):
  function p_jump_statement (line 967) | def p_jump_statement(p):
  function p_iteration_statement (line 975) | def p_iteration_statement(p):
  function p_declaration_statement (line 982) | def p_declaration_statement(p):
  function p_compound_declaration (line 990) | def p_compound_declaration(p):
  function p_declaration_seq_opt (line 995) | def p_declaration_seq_opt(p):
  function p_declaration (line 1001) | def p_declaration(p):
  function p_specialised_declaration (line 1010) | def p_specialised_declaration(p):
  function p_block_declaration (line 1017) | def p_block_declaration(p):
  function p_specialised_block_declaration (line 1023) | def p_specialised_block_declaration(p):
  function p_simple_declaration (line 1032) | def p_simple_declaration(p):
  function p_suffix_built_in_decl_specifier_raw (line 1055) | def p_suffix_built_in_decl_specifier_raw(p):
  function p_suffix_built_in_decl_specifier (line 1062) | def p_suffix_built_in_decl_specifier(p):
  function p_suffix_named_decl_specifier (line 1070) | def p_suffix_named_decl_specifier(p):
  function p_suffix_named_decl_specifier_bi (line 1077) | def p_suffix_named_decl_specifier_bi(p):
  function p_suffix_named_decl_specifiers (line 1084) | def p_suffix_named_decl_specifiers(p):
  function p_suffix_named_decl_specifiers_sf (line 1090) | def p_suffix_named_decl_specifiers_sf(p):
  function p_suffix_decl_specified_ids (line 1098) | def p_suffix_decl_specified_ids(p):
  function p_suffix_decl_specified_scope (line 1108) | def p_suffix_decl_specified_scope(p):
  function p_decl_specifier_affix (line 1115) | def p_decl_specifier_affix(p):
  function p_decl_specifier_suffix (line 1124) | def p_decl_specifier_suffix(p):
  function p_decl_specifier_prefix (line 1129) | def p_decl_specifier_prefix(p):
  function p_storage_class_specifier (line 1135) | def p_storage_class_specifier(p):
  function p_function_specifier (line 1145) | def p_function_specifier(p):
  function p_type_specifier (line 1152) | def p_type_specifier(p):
  function p_elaborate_type_specifier (line 1159) | def p_elaborate_type_specifier(p):
  function p_simple_type_specifier (line 1167) | def p_simple_type_specifier(p):
  function p_built_in_type_specifier (line 1174) | def p_built_in_type_specifier(p):
  function p_attributes (line 1180) | def p_attributes(p):
  function p_attribute (line 1186) | def p_attribute(p):
  function p_Xbuilt_in_type_specifier (line 1190) | def p_Xbuilt_in_type_specifier(p):
  function p_elaborated_type_specifier (line 1216) | def p_elaborated_type_specifier(p):
  function p_elaborated_enum_specifier (line 1223) | def p_elaborated_enum_specifier(p):
  function p_enum_specifier (line 1228) | def p_enum_specifier(p):
  function p_enumerator_clause (line 1234) | def p_enumerator_clause(p):
  function p_enumerator_list_ecarb (line 1241) | def p_enumerator_list_ecarb(p):
  function p_enumerator_definition_ecarb (line 1246) | def p_enumerator_definition_ecarb(p):
  function p_enumerator_definition_filler (line 1251) | def p_enumerator_definition_filler(p):
  function p_enumerator_list_head (line 1256) | def p_enumerator_list_head(p):
  function p_enumerator_list (line 1262) | def p_enumerator_list(p):
  function p_enumerator_definition (line 1267) | def p_enumerator_definition(p):
  function p_enumerator (line 1273) | def p_enumerator(p):
  function p_namespace_definition (line 1278) | def p_namespace_definition(p):
  function p_namespace_alias_definition (line 1285) | def p_namespace_alias_definition(p):
  function p_push_scope (line 1290) | def p_push_scope(p):
  function p_using_declaration (line 1299) | def p_using_declaration(p):
  function p_using_directive (line 1305) | def p_using_directive(p):
  function p_asm_definition (line 1311) | def p_asm_definition(p):
  function p_linkage_specification (line 1316) | def p_linkage_specification(p):
  function p_init_declarations (line 1331) | def p_init_declarations(p):
  function p_init_declaration (line 1337) | def p_init_declaration(p):
  function p_star_ptr_operator (line 1342) | def p_star_ptr_operator(p):
  function p_nested_ptr_operator (line 1348) | def p_nested_ptr_operator(p):
  function p_ptr_operator (line 1354) | def p_ptr_operator(p):
  function p_ptr_operator_seq (line 1361) | def p_ptr_operator_seq(p):
  function p_ptr_operator_seq_opt (line 1370) | def p_ptr_operator_seq_opt(p):
  function p_cv_qualifier_seq_opt (line 1376) | def p_cv_qualifier_seq_opt(p):
  function p_cv_qualifier (line 1383) | def p_cv_qualifier(p):
  function p_type_id (line 1390) | def p_type_id(p):
  function p_abstract_declarator_opt (line 1396) | def p_abstract_declarator_opt(p):
  function p_direct_abstract_declarator_opt (line 1403) | def p_direct_abstract_declarator_opt(p):
  function p_direct_abstract_declarator (line 1409) | def p_direct_abstract_declarator(p):
  function p_parenthesis_clause (line 1416) | def p_parenthesis_clause(p):
  function p_parameters_clause (line 1422) | def p_parameters_clause(p):
  function p_abstract_pointer_declaration (line 1433) | def p_abstract_pointer_declaration(p):
  function p_abstract_parameter_declaration (line 1439) | def p_abstract_parameter_declaration(p):
  function p_special_parameter_declaration (line 1446) | def p_special_parameter_declaration(p):
  function p_parameter_declaration (line 1453) | def p_parameter_declaration(p):
  function p_function_definition (line 1463) | def p_function_definition(p):
  function p_func_definition (line 1469) | def p_func_definition(p):
  function p_ctor_definition (line 1488) | def p_ctor_definition(p):
  function p_constructor_head (line 1498) | def p_constructor_head(p):
  function p_function_try_block (line 1504) | def p_function_try_block(p):
  function p_function_block (line 1511) | def p_function_block(p):
  function p_function_body (line 1516) | def p_function_body(p):
  function p_initializer_clause (line 1521) | def p_initializer_clause(p):
  function p_braced_initializer (line 1527) | def p_braced_initializer(p):
  function p_initializer_list (line 1534) | def p_initializer_list(p):
  function p_class_specifier_head (line 1555) | def p_class_specifier_head(p):
  function p_class_key (line 1575) | def p_class_key(p):
  function p_class_specifier (line 1582) | def p_class_specifier(p):
  function p_member_specification_opt (line 1587) | def p_member_specification_opt(p):
  function p_member_declaration (line 1593) | def p_member_declaration(p):
  function p_simple_member_declaration (line 1609) | def p_simple_member_declaration(p):
  function p_member_init_declarations (line 1621) | def p_member_init_declarations(p):
  function p_member_init_declaration (line 1628) | def p_member_init_declaration(p):
  function p_accessibility_specifier (line 1634) | def p_accessibility_specifier(p):
  function p_bit_field_declaration (line 1639) | def p_bit_field_declaration(p):
  function p_bit_field_width (line 1646) | def p_bit_field_width(p):
  function p_bit_field_init_declaration (line 1652) | def p_bit_field_init_declaration(p):
  function p_base_specifier_list (line 1661) | def p_base_specifier_list(p):
  function p_base_specifier (line 1670) | def p_base_specifier(p):
  function p_access_specifier (line 1680) | def p_access_specifier(p):
  function p_conversion_function_id (line 1690) | def p_conversion_function_id(p):
  function p_conversion_type_id (line 1695) | def p_conversion_type_id(p):
  function p_ctor_initializer_opt (line 1708) | def p_ctor_initializer_opt(p):
  function p_ctor_initializer (line 1714) | def p_ctor_initializer(p):
  function p_mem_initializer_list (line 1719) | def p_mem_initializer_list(p):
  function p_mem_initializer_list_head (line 1725) | def p_mem_initializer_list_head(p):
  function p_mem_initializer (line 1730) | def p_mem_initializer(p):
  function p_mem_initializer_id (line 1735) | def p_mem_initializer_id(p):
  function p_operator_function_id (line 1744) | def p_operator_function_id(p):
  function p_operator (line 1763) | def p_operator(p):
  function p_reserved (line 1808) | def p_reserved(p):
  function p_template_declaration (line 1884) | def p_template_declaration(p):
  function p_template_parameter_clause (line 1890) | def p_template_parameter_clause(p):
  function p_explicit_specialization (line 1901) | def p_explicit_specialization(p):
  function p_handler_seq (line 1909) | def p_handler_seq(p):
  function p_handler (line 1915) | def p_handler(p):
  function p_exception_declaration (line 1921) | def p_exception_declaration(p):
  function p_throw_expression (line 1926) | def p_throw_expression(p):
  function p_exception_specification (line 1933) | def p_exception_specification(p):
  function p_type_id_list (line 1940) | def p_type_id_list(p):
  function p_nonsemicolon_seq (line 1949) | def p_nonsemicolon_seq(p):
  function p_nonsemicolon (line 1955) | def p_nonsemicolon(p):
  function p_nonparen_seq_opt (line 1966) | def p_nonparen_seq_opt(p):
  function p_nonparen_seq (line 1972) | def p_nonparen_seq(p):
  function p_nonparen (line 1978) | def p_nonparen(p):
  function p_nonbracket_seq_opt (line 1988) | def p_nonbracket_seq_opt(p):
  function p_nonbracket_seq (line 1994) | def p_nonbracket_seq(p):
  function p_nonbracket (line 2000) | def p_nonbracket(p):
  function p_nonbrace_seq_opt (line 2012) | def p_nonbrace_seq_opt(p):
  function p_nonbrace (line 2018) | def p_nonbrace(p):
  function p_nonlgt_seq_opt (line 2030) | def p_nonlgt_seq_opt(p):
  function p_nonlgt (line 2036) | def p_nonlgt(p):
  function p_misc (line 2046) | def p_misc(p):
  function p_empty (line 2063) | def p_empty(p):
  function _find_column (line 2074) | def _find_column(input,token):
  function p_error (line 2083) | def p_error(p):
  function parse_cpp (line 2102) | def parse_cpp(data=None, filename=None, debug=0, optimize=0, verbose=Fal...

FILE: cxxtest/cxxtest/cxxtest_fog.py
  function cstr (line 26) | def cstr( str ):
  function scanInputFiles (line 30) | def scanInputFiles(files, _options):

FILE: cxxtest/cxxtest/cxxtest_misc.py
  function abort (line 13) | def abort( problem ):

FILE: cxxtest/cxxtest/cxxtest_parser.py
  function scanInputFiles (line 25) | def scanInputFiles(files, _options):
  function scanInputFile (line 37) | def scanInputFile(fileName):
  function scanInputLine (line 69) | def scanInputLine( fileName, lineNo, line ):
  function scanLineInsideSuite (line 80) | def scanLineInsideSuite( suite, lineNo, line ):
  function lineBelongsToSuite (line 88) | def lineBelongsToSuite( suite, lineNo, line ):
  function scanLineForStandardLibrary (line 104) | def scanLineForStandardLibrary( line ):
  function scanLineForExceptionHandling (line 112) | def scanLineForExceptionHandling( line ):
  function scanLineForSuiteStart (line 126) | def scanLineForSuiteStart( fileName, lineNo, line ):
  function startSuite (line 141) | def startSuite( name, file, line, generated ):
  function lineStartsBlock (line 159) | def lineStartsBlock( line ):
  function scanLineForTest (line 164) | def scanLineForTest( suite, lineNo, line ):
  function addTest (line 170) | def addTest( suite, name, line ):
  function addLineToBlock (line 180) | def addLineToBlock( suite, lineNo, line ):
  function fixBlockLine (line 191) | def fixBlockLine( suite, lineNo, line):
  function scanLineForCreate (line 198) | def scanLineForCreate( suite, lineNo, line ):
  function scanLineForDestroy (line 204) | def scanLineForDestroy( suite, lineNo, line ):
  function cstr (line 209) | def cstr( s ):
  function addSuiteCreateDestroy (line 214) | def addSuiteCreateDestroy( suite, which, line ):
  function closeSuite (line 220) | def closeSuite():
  function verifySuite (line 229) | def verifySuite(suite):
  function rememberSuite (line 238) | def rememberSuite(suite):

FILE: cxxtest/cxxtest/cxxtestgen.py
  function main (line 41) | def main(args=sys.argv):
  function parseCommandline (line 62) | def parseCommandline(args):
  function printVersion (line 191) | def printVersion():
  function setFiles (line 196) | def setFiles(patterns ):
  function expandWildcards (line 201) | def expandWildcards( patterns ):
  function fixBackslashes (line 210) | def fixBackslashes( fileName ):
  function writeOutput (line 215) | def writeOutput():
  function writeSimpleOutput (line 222) | def writeSimpleOutput():
  function writeTemplateOutput (line 238) | def writeTemplateOutput():
  function startOutputFile (line 260) | def startOutputFile():
  function writePreamble (line 269) | def writePreamble( output ):
  function writeMain (line 303) | def writeMain( output ):
  function writeWorld (line 326) | def writeWorld( output ):
  function writeSuites (line 339) | def writeSuites(output):
  function isGenerated (line 353) | def isGenerated(suite):
  function isDynamic (line 357) | def isDynamic(suite):
  function writeInclude (line 361) | def writeInclude(output, file):
  function generateSuite (line 368) | def generateSuite( output, suite ):
  function writeSuitePointer (line 376) | def writeSuitePointer( output, suite ):
  function writeSuiteObject (line 383) | def writeSuiteObject( output, suite ):
  function writeTestList (line 387) | def writeTestList( output, suite ):
  function writeWorldDescr (line 394) | def writeWorldDescr( output ):
  function writeTestDescriptions (line 401) | def writeTestDescriptions( output, suite ):
  function writeTestDescription (line 406) | def writeTestDescription( output, suite, test ):
  function runBody (line 416) | def runBody( suite, test ):
  function dynamicRun (line 421) | def dynamicRun( suite, test ):
  function staticRun (line 425) | def staticRun( suite, test ):
  function writeSuiteDescription (line 429) | def writeSuiteDescription( output, suite ):
  function writeDynamicDescription (line 436) | def writeDynamicDescription( output, suite ):
  function writeStaticDescription (line 445) | def writeStaticDescription( output, suite ):
  function writeRoot (line 453) | def writeRoot(output):
  function writeInitialize (line 457) | def writeInitialize(output):

FILE: cxxtest/python/cxxtest/cxx_parser.py
  function ply_init (line 68) | def ply_init(data):
  class Scope (line 73) | class Scope(object):
    method __init__ (line 75) | def __init__(self,name,abs_name,scope_t,base_classes,lineno):
    method insert (line 84) | def insert(self,scope):
  class CppInfo (line 88) | class CppInfo(object):
    method __init__ (line 90) | def __init__(self, filter=None):
    method push_scope (line 101) | def push_scope(self,ns,scope_t,base_classes=[]):
    method pop_scope (line 108) | def pop_scope(self):
    method add_function (line 114) | def add_function(self, fn):
    method get_functions (line 124) | def get_functions(self,name,quiet=False):
    method find_class (line 139) | def find_class(self,name,scope):
    method __repr__ (line 154) | def __repr__(self):
    method is_baseclass (line 157) | def is_baseclass(self,cls,base):
    method __str__ (line 173) | def __str__(self):
  function flatten (line 190) | def flatten(x):
  function t_COMMENT (line 365) | def t_COMMENT(t):
  function t_StringLiteral (line 373) | def t_StringLiteral(t):
  function t_Identifier (line 378) | def t_Identifier(t):
  function t_error (line 384) | def t_error(t):
  function t_newline (line 389) | def t_newline(t):
  function p_identifier (line 417) | def p_identifier(p):
  function p_id (line 425) | def p_id(p):
  function p_global_scope (line 432) | def p_global_scope(p):
  function p_id_scope (line 437) | def p_id_scope(p):
  function p_id_scope_seq (line 441) | def p_id_scope_seq(p):
  function p_nested_id (line 451) | def p_nested_id(p):
  function p_scoped_id (line 457) | def p_scoped_id(p):
  function p_destructor_id (line 476) | def p_destructor_id(p):
  function p_template_decl (line 488) | def p_template_decl(p):
  function p_special_function_id (line 498) | def p_special_function_id(p):
  function p_nested_special_function_id (line 505) | def p_nested_special_function_id(p):
  function p_scoped_special_function_id (line 512) | def p_scoped_special_function_id(p):
  function p_declarator_id (line 519) | def p_declarator_id(p):
  function p_built_in_type_id (line 533) | def p_built_in_type_id(p):
  function p_pseudo_destructor_id (line 539) | def p_pseudo_destructor_id(p):
  function p_nested_pseudo_destructor_id (line 546) | def p_nested_pseudo_destructor_id(p):
  function p_scoped_pseudo_destructor_id (line 552) | def p_scoped_pseudo_destructor_id(p):
  function p_literal (line 563) | def p_literal(p):
  function p_translation_unit (line 576) | def p_translation_unit(p):
  function get_rest (line 620) | def get_rest(p):
  function p_primary_expression (line 623) | def p_primary_expression(p):
  function p_abstract_expression (line 634) | def p_abstract_expression(p):
  function p_postfix_expression (line 641) | def p_postfix_expression(p):
  function p_bexpression_opt (line 661) | def p_bexpression_opt(p):
  function p_bexpression (line 667) | def p_bexpression(p):
  function p_bexpression_seq (line 674) | def p_bexpression_seq(p):
  function p_bexpression_clause (line 680) | def p_bexpression_clause(p):
  function p_expression_list_opt (line 687) | def p_expression_list_opt(p):
  function p_expression_list (line 693) | def p_expression_list(p):
  function p_unary_expression (line 699) | def p_unary_expression(p):
  function p_delete_expression (line 717) | def p_delete_expression(p):
  function p_new_expression (line 722) | def p_new_expression(p):
  function p_new_type_id (line 730) | def p_new_type_id(p):
  function p_new_declarator (line 737) | def p_new_declarator(p):
  function p_direct_new_declarator (line 743) | def p_direct_new_declarator(p):
  function p_new_initializer_opt (line 749) | def p_new_initializer_opt(p):
  function p_cast_expression (line 760) | def p_cast_expression(p):
  function p_pm_expression (line 766) | def p_pm_expression(p):
  function p_multiplicative_expression (line 773) | def p_multiplicative_expression(p):
  function p_additive_expression (line 781) | def p_additive_expression(p):
  function p_shift_expression (line 788) | def p_shift_expression(p):
  function p_relational_expression (line 799) | def p_relational_expression(p):
  function p_equality_expression (line 804) | def p_equality_expression(p):
  function p_and_expression (line 811) | def p_and_expression(p):
  function p_exclusive_or_expression (line 817) | def p_exclusive_or_expression(p):
  function p_inclusive_or_expression (line 823) | def p_inclusive_or_expression(p):
  function p_logical_and_expression (line 829) | def p_logical_and_expression(p):
  function p_logical_or_expression (line 835) | def p_logical_or_expression(p):
  function p_conditional_expression (line 841) | def p_conditional_expression(p):
  function p_assignment_expression (line 853) | def p_assignment_expression(p):
  function p_assignment_operator (line 861) | def p_assignment_operator(p):
  function p_expression (line 882) | def p_expression(p):
  function p_constant_expression (line 888) | def p_constant_expression(p):
  function p_statement (line 903) | def p_statement(p):
  function p_compound_statement (line 914) | def p_compound_statement(p):
  function p_statement_seq_opt (line 919) | def p_statement_seq_opt(p):
  function p_selection_statement (line 928) | def p_selection_statement(p):
  function p_condition_opt (line 935) | def p_condition_opt(p):
  function p_condition (line 941) | def p_condition(p):
  function p_condition_seq (line 948) | def p_condition_seq(p):
  function p_labeled_statement (line 954) | def p_labeled_statement(p):
  function p_try_block (line 961) | def p_try_block(p):
  function p_jump_statement (line 967) | def p_jump_statement(p):
  function p_iteration_statement (line 975) | def p_iteration_statement(p):
  function p_declaration_statement (line 982) | def p_declaration_statement(p):
  function p_compound_declaration (line 990) | def p_compound_declaration(p):
  function p_declaration_seq_opt (line 995) | def p_declaration_seq_opt(p):
  function p_declaration (line 1001) | def p_declaration(p):
  function p_specialised_declaration (line 1010) | def p_specialised_declaration(p):
  function p_block_declaration (line 1017) | def p_block_declaration(p):
  function p_specialised_block_declaration (line 1023) | def p_specialised_block_declaration(p):
  function p_simple_declaration (line 1032) | def p_simple_declaration(p):
  function p_suffix_built_in_decl_specifier_raw (line 1055) | def p_suffix_built_in_decl_specifier_raw(p):
  function p_suffix_built_in_decl_specifier (line 1062) | def p_suffix_built_in_decl_specifier(p):
  function p_suffix_named_decl_specifier (line 1070) | def p_suffix_named_decl_specifier(p):
  function p_suffix_named_decl_specifier_bi (line 1077) | def p_suffix_named_decl_specifier_bi(p):
  function p_suffix_named_decl_specifiers (line 1084) | def p_suffix_named_decl_specifiers(p):
  function p_suffix_named_decl_specifiers_sf (line 1090) | def p_suffix_named_decl_specifiers_sf(p):
  function p_suffix_decl_specified_ids (line 1098) | def p_suffix_decl_specified_ids(p):
  function p_suffix_decl_specified_scope (line 1108) | def p_suffix_decl_specified_scope(p):
  function p_decl_specifier_affix (line 1115) | def p_decl_specifier_affix(p):
  function p_decl_specifier_suffix (line 1124) | def p_decl_specifier_suffix(p):
  function p_decl_specifier_prefix (line 1129) | def p_decl_specifier_prefix(p):
  function p_storage_class_specifier (line 1135) | def p_storage_class_specifier(p):
  function p_function_specifier (line 1145) | def p_function_specifier(p):
  function p_type_specifier (line 1152) | def p_type_specifier(p):
  function p_elaborate_type_specifier (line 1159) | def p_elaborate_type_specifier(p):
  function p_simple_type_specifier (line 1167) | def p_simple_type_specifier(p):
  function p_built_in_type_specifier (line 1174) | def p_built_in_type_specifier(p):
  function p_attributes (line 1180) | def p_attributes(p):
  function p_attribute (line 1186) | def p_attribute(p):
  function p_Xbuilt_in_type_specifier (line 1190) | def p_Xbuilt_in_type_specifier(p):
  function p_elaborated_type_specifier (line 1216) | def p_elaborated_type_specifier(p):
  function p_elaborated_enum_specifier (line 1223) | def p_elaborated_enum_specifier(p):
  function p_enum_specifier (line 1228) | def p_enum_specifier(p):
  function p_enumerator_clause (line 1234) | def p_enumerator_clause(p):
  function p_enumerator_list_ecarb (line 1241) | def p_enumerator_list_ecarb(p):
  function p_enumerator_definition_ecarb (line 1246) | def p_enumerator_definition_ecarb(p):
  function p_enumerator_definition_filler (line 1251) | def p_enumerator_definition_filler(p):
  function p_enumerator_list_head (line 1256) | def p_enumerator_list_head(p):
  function p_enumerator_list (line 1262) | def p_enumerator_list(p):
  function p_enumerator_definition (line 1267) | def p_enumerator_definition(p):
  function p_enumerator (line 1273) | def p_enumerator(p):
  function p_namespace_definition (line 1278) | def p_namespace_definition(p):
  function p_namespace_alias_definition (line 1285) | def p_namespace_alias_definition(p):
  function p_push_scope (line 1290) | def p_push_scope(p):
  function p_using_declaration (line 1299) | def p_using_declaration(p):
  function p_using_directive (line 1305) | def p_using_directive(p):
  function p_asm_definition (line 1311) | def p_asm_definition(p):
  function p_linkage_specification (line 1316) | def p_linkage_specification(p):
  function p_init_declarations (line 1331) | def p_init_declarations(p):
  function p_init_declaration (line 1337) | def p_init_declaration(p):
  function p_star_ptr_operator (line 1342) | def p_star_ptr_operator(p):
  function p_nested_ptr_operator (line 1348) | def p_nested_ptr_operator(p):
  function p_ptr_operator (line 1354) | def p_ptr_operator(p):
  function p_ptr_operator_seq (line 1361) | def p_ptr_operator_seq(p):
  function p_ptr_operator_seq_opt (line 1370) | def p_ptr_operator_seq_opt(p):
  function p_cv_qualifier_seq_opt (line 1376) | def p_cv_qualifier_seq_opt(p):
  function p_cv_qualifier (line 1383) | def p_cv_qualifier(p):
  function p_type_id (line 1390) | def p_type_id(p):
  function p_abstract_declarator_opt (line 1396) | def p_abstract_declarator_opt(p):
  function p_direct_abstract_declarator_opt (line 1403) | def p_direct_abstract_declarator_opt(p):
  function p_direct_abstract_declarator (line 1409) | def p_direct_abstract_declarator(p):
  function p_parenthesis_clause (line 1416) | def p_parenthesis_clause(p):
  function p_parameters_clause (line 1422) | def p_parameters_clause(p):
  function p_abstract_pointer_declaration (line 1433) | def p_abstract_pointer_declaration(p):
  function p_abstract_parameter_declaration (line 1439) | def p_abstract_parameter_declaration(p):
  function p_special_parameter_declaration (line 1446) | def p_special_parameter_declaration(p):
  function p_parameter_declaration (line 1453) | def p_parameter_declaration(p):
  function p_function_definition (line 1463) | def p_function_definition(p):
  function p_func_definition (line 1469) | def p_func_definition(p):
  function p_ctor_definition (line 1488) | def p_ctor_definition(p):
  function p_constructor_head (line 1498) | def p_constructor_head(p):
  function p_function_try_block (line 1504) | def p_function_try_block(p):
  function p_function_block (line 1511) | def p_function_block(p):
  function p_function_body (line 1516) | def p_function_body(p):
  function p_initializer_clause (line 1521) | def p_initializer_clause(p):
  function p_braced_initializer (line 1527) | def p_braced_initializer(p):
  function p_initializer_list (line 1534) | def p_initializer_list(p):
  function p_class_specifier_head (line 1555) | def p_class_specifier_head(p):
  function p_class_key (line 1575) | def p_class_key(p):
  function p_class_specifier (line 1582) | def p_class_specifier(p):
  function p_member_specification_opt (line 1587) | def p_member_specification_opt(p):
  function p_member_declaration (line 1593) | def p_member_declaration(p):
  function p_simple_member_declaration (line 1609) | def p_simple_member_declaration(p):
  function p_member_init_declarations (line 1621) | def p_member_init_declarations(p):
  function p_member_init_declaration (line 1628) | def p_member_init_declaration(p):
  function p_accessibility_specifier (line 1634) | def p_accessibility_specifier(p):
  function p_bit_field_declaration (line 1639) | def p_bit_field_declaration(p):
  function p_bit_field_width (line 1646) | def p_bit_field_width(p):
  function p_bit_field_init_declaration (line 1652) | def p_bit_field_init_declaration(p):
  function p_base_specifier_list (line 1661) | def p_base_specifier_list(p):
  function p_base_specifier (line 1670) | def p_base_specifier(p):
  function p_access_specifier (line 1680) | def p_access_specifier(p):
  function p_conversion_function_id (line 1690) | def p_conversion_function_id(p):
  function p_conversion_type_id (line 1695) | def p_conversion_type_id(p):
  function p_ctor_initializer_opt (line 1708) | def p_ctor_initializer_opt(p):
  function p_ctor_initializer (line 1714) | def p_ctor_initializer(p):
  function p_mem_initializer_list (line 1719) | def p_mem_initializer_list(p):
  function p_mem_initializer_list_head (line 1725) | def p_mem_initializer_list_head(p):
  function p_mem_initializer (line 1730) | def p_mem_initializer(p):
  function p_mem_initializer_id (line 1735) | def p_mem_initializer_id(p):
  function p_operator_function_id (line 1744) | def p_operator_function_id(p):
  function p_operator (line 1763) | def p_operator(p):
  function p_reserved (line 1808) | def p_reserved(p):
  function p_template_declaration (line 1884) | def p_template_declaration(p):
  function p_template_parameter_clause (line 1890) | def p_template_parameter_clause(p):
  function p_explicit_specialization (line 1901) | def p_explicit_specialization(p):
  function p_handler_seq (line 1909) | def p_handler_seq(p):
  function p_handler (line 1915) | def p_handler(p):
  function p_exception_declaration (line 1921) | def p_exception_declaration(p):
  function p_throw_expression (line 1926) | def p_throw_expression(p):
  function p_exception_specification (line 1933) | def p_exception_specification(p):
  function p_type_id_list (line 1940) | def p_type_id_list(p):
  function p_nonsemicolon_seq (line 1949) | def p_nonsemicolon_seq(p):
  function p_nonsemicolon (line 1955) | def p_nonsemicolon(p):
  function p_nonparen_seq_opt (line 1966) | def p_nonparen_seq_opt(p):
  function p_nonparen_seq (line 1972) | def p_nonparen_seq(p):
  function p_nonparen (line 1978) | def p_nonparen(p):
  function p_nonbracket_seq_opt (line 1988) | def p_nonbracket_seq_opt(p):
  function p_nonbracket_seq (line 1994) | def p_nonbracket_seq(p):
  function p_nonbracket (line 2000) | def p_nonbracket(p):
  function p_nonbrace_seq_opt (line 2012) | def p_nonbrace_seq_opt(p):
  function p_nonbrace (line 2018) | def p_nonbrace(p):
  function p_nonlgt_seq_opt (line 2030) | def p_nonlgt_seq_opt(p):
  function p_nonlgt (line 2036) | def p_nonlgt(p):
  function p_misc (line 2046) | def p_misc(p):
  function p_empty (line 2063) | def p_empty(p):
  function _find_column (line 2074) | def _find_column(input,token):
  function p_error (line 2083) | def p_error(p):
  function parse_cpp (line 2102) | def parse_cpp(data=None, filename=None, debug=0, optimize=0, verbose=Fal...

FILE: cxxtest/python/cxxtest/cxxtest_fog.py
  function cstr (line 26) | def cstr( str ):
  function scanInputFiles (line 30) | def scanInputFiles(files, _options):

FILE: cxxtest/python/cxxtest/cxxtest_misc.py
  function abort (line 13) | def abort( problem ):

FILE: cxxtest/python/cxxtest/cxxtest_parser.py
  function scanInputFiles (line 25) | def scanInputFiles(files, _options):
  function scanInputFile (line 37) | def scanInputFile(fileName):
  function scanInputLine (line 69) | def scanInputLine( fileName, lineNo, line ):
  function scanLineInsideSuite (line 80) | def scanLineInsideSuite( suite, lineNo, line ):
  function lineBelongsToSuite (line 88) | def lineBelongsToSuite( suite, lineNo, line ):
  function scanLineForStandardLibrary (line 104) | def scanLineForStandardLibrary( line ):
  function scanLineForExceptionHandling (line 112) | def scanLineForExceptionHandling( line ):
  function scanLineForSuiteStart (line 126) | def scanLineForSuiteStart( fileName, lineNo, line ):
  function startSuite (line 141) | def startSuite( name, file, line, generated ):
  function lineStartsBlock (line 159) | def lineStartsBlock( line ):
  function scanLineForTest (line 164) | def scanLineForTest( suite, lineNo, line ):
  function addTest (line 170) | def addTest( suite, name, line ):
  function addLineToBlock (line 180) | def addLineToBlock( suite, lineNo, line ):
  function fixBlockLine (line 191) | def fixBlockLine( suite, lineNo, line):
  function scanLineForCreate (line 198) | def scanLineForCreate( suite, lineNo, line ):
  function scanLineForDestroy (line 204) | def scanLineForDestroy( suite, lineNo, line ):
  function cstr (line 209) | def cstr( s ):
  function addSuiteCreateDestroy (line 214) | def addSuiteCreateDestroy( suite, which, line ):
  function closeSuite (line 220) | def closeSuite():
  function verifySuite (line 229) | def verifySuite(suite):
  function rememberSuite (line 238) | def rememberSuite(suite):

FILE: cxxtest/python/cxxtest/cxxtestgen.py
  function main (line 41) | def main(args=sys.argv):
  function parseCommandline (line 62) | def parseCommandline(args):
  function printVersion (line 191) | def printVersion():
  function setFiles (line 196) | def setFiles(patterns ):
  function expandWildcards (line 201) | def expandWildcards( patterns ):
  function fixBackslashes (line 210) | def fixBackslashes( fileName ):
  function writeOutput (line 215) | def writeOutput():
  function writeSimpleOutput (line 222) | def writeSimpleOutput():
  function writeTemplateOutput (line 238) | def writeTemplateOutput():
  function startOutputFile (line 260) | def startOutputFile():
  function writePreamble (line 269) | def writePreamble( output ):
  function writeMain (line 303) | def writeMain( output ):
  function writeWorld (line 326) | def writeWorld( output ):
  function writeSuites (line 339) | def writeSuites(output):
  function isGenerated (line 353) | def isGenerated(suite):
  function isDynamic (line 357) | def isDynamic(suite):
  function writeInclude (line 361) | def writeInclude(output, file):
  function generateSuite (line 368) | def generateSuite( output, suite ):
  function writeSuitePointer (line 376) | def writeSuitePointer( output, suite ):
  function writeSuiteObject (line 383) | def writeSuiteObject( output, suite ):
  function writeTestList (line 387) | def writeTestList( output, suite ):
  function writeWorldDescr (line 394) | def writeWorldDescr( output ):
  function writeTestDescriptions (line 401) | def writeTestDescriptions( output, suite ):
  function writeTestDescription (line 406) | def writeTestDescription( output, suite, test ):
  function runBody (line 416) | def runBody( suite, test ):
  function dynamicRun (line 421) | def dynamicRun( suite, test ):
  function staticRun (line 425) | def staticRun( suite, test ):
  function writeSuiteDescription (line 429) | def writeSuiteDescription( output, suite ):
  function writeDynamicDescription (line 436) | def writeDynamicDescription( output, suite ):
  function writeStaticDescription (line 445) | def writeStaticDescription( output, suite ):
  function writeRoot (line 453) | def writeRoot(output):
  function writeInitialize (line 457) | def writeInitialize(output):

FILE: cxxtest/python/python3/cxxtest/cxx_parser.py
  function ply_init (line 68) | def ply_init(data):
  class Scope (line 73) | class Scope(object):
    method __init__ (line 75) | def __init__(self,name,abs_name,scope_t,base_classes,lineno):
    method insert (line 84) | def insert(self,scope):
  class CppInfo (line 88) | class CppInfo(object):
    method __init__ (line 90) | def __init__(self, filter=None):
    method push_scope (line 101) | def push_scope(self,ns,scope_t,base_classes=[]):
    method pop_scope (line 108) | def pop_scope(self):
    method add_function (line 114) | def add_function(self, fn):
    method get_functions (line 124) | def get_functions(self,name,quiet=False):
    method find_class (line 139) | def find_class(self,name,scope):
    method __repr__ (line 154) | def __repr__(self):
    method is_baseclass (line 157) | def is_baseclass(self,cls,base):
    method __str__ (line 173) | def __str__(self):
  function flatten (line 190) | def flatten(x):
  function t_COMMENT (line 365) | def t_COMMENT(t):
  function t_StringLiteral (line 373) | def t_StringLiteral(t):
  function t_Identifier (line 378) | def t_Identifier(t):
  function t_error (line 384) | def t_error(t):
  function t_newline (line 389) | def t_newline(t):
  function p_identifier (line 417) | def p_identifier(p):
  function p_id (line 425) | def p_id(p):
  function p_global_scope (line 432) | def p_global_scope(p):
  function p_id_scope (line 437) | def p_id_scope(p):
  function p_id_scope_seq (line 441) | def p_id_scope_seq(p):
  function p_nested_id (line 451) | def p_nested_id(p):
  function p_scoped_id (line 457) | def p_scoped_id(p):
  function p_destructor_id (line 476) | def p_destructor_id(p):
  function p_template_decl (line 488) | def p_template_decl(p):
  function p_special_function_id (line 498) | def p_special_function_id(p):
  function p_nested_special_function_id (line 505) | def p_nested_special_function_id(p):
  function p_scoped_special_function_id (line 512) | def p_scoped_special_function_id(p):
  function p_declarator_id (line 519) | def p_declarator_id(p):
  function p_built_in_type_id (line 533) | def p_built_in_type_id(p):
  function p_pseudo_destructor_id (line 539) | def p_pseudo_destructor_id(p):
  function p_nested_pseudo_destructor_id (line 546) | def p_nested_pseudo_destructor_id(p):
  function p_scoped_pseudo_destructor_id (line 552) | def p_scoped_pseudo_destructor_id(p):
  function p_literal (line 563) | def p_literal(p):
  function p_translation_unit (line 576) | def p_translation_unit(p):
  function get_rest (line 620) | def get_rest(p):
  function p_primary_expression (line 623) | def p_primary_expression(p):
  function p_abstract_expression (line 634) | def p_abstract_expression(p):
  function p_postfix_expression (line 641) | def p_postfix_expression(p):
  function p_bexpression_opt (line 661) | def p_bexpression_opt(p):
  function p_bexpression (line 667) | def p_bexpression(p):
  function p_bexpression_seq (line 674) | def p_bexpression_seq(p):
  function p_bexpression_clause (line 680) | def p_bexpression_clause(p):
  function p_expression_list_opt (line 687) | def p_expression_list_opt(p):
  function p_expression_list (line 693) | def p_expression_list(p):
  function p_unary_expression (line 699) | def p_unary_expression(p):
  function p_delete_expression (line 717) | def p_delete_expression(p):
  function p_new_expression (line 722) | def p_new_expression(p):
  function p_new_type_id (line 730) | def p_new_type_id(p):
  function p_new_declarator (line 737) | def p_new_declarator(p):
  function p_direct_new_declarator (line 743) | def p_direct_new_declarator(p):
  function p_new_initializer_opt (line 749) | def p_new_initializer_opt(p):
  function p_cast_expression (line 760) | def p_cast_expression(p):
  function p_pm_expression (line 766) | def p_pm_expression(p):
  function p_multiplicative_expression (line 773) | def p_multiplicative_expression(p):
  function p_additive_expression (line 781) | def p_additive_expression(p):
  function p_shift_expression (line 788) | def p_shift_expression(p):
  function p_relational_expression (line 799) | def p_relational_expression(p):
  function p_equality_expression (line 804) | def p_equality_expression(p):
  function p_and_expression (line 811) | def p_and_expression(p):
  function p_exclusive_or_expression (line 817) | def p_exclusive_or_expression(p):
  function p_inclusive_or_expression (line 823) | def p_inclusive_or_expression(p):
  function p_logical_and_expression (line 829) | def p_logical_and_expression(p):
  function p_logical_or_expression (line 835) | def p_logical_or_expression(p):
  function p_conditional_expression (line 841) | def p_conditional_expression(p):
  function p_assignment_expression (line 853) | def p_assignment_expression(p):
  function p_assignment_operator (line 861) | def p_assignment_operator(p):
  function p_expression (line 882) | def p_expression(p):
  function p_constant_expression (line 888) | def p_constant_expression(p):
  function p_statement (line 903) | def p_statement(p):
  function p_compound_statement (line 914) | def p_compound_statement(p):
  function p_statement_seq_opt (line 919) | def p_statement_seq_opt(p):
  function p_selection_statement (line 928) | def p_selection_statement(p):
  function p_condition_opt (line 935) | def p_condition_opt(p):
  function p_condition (line 941) | def p_condition(p):
  function p_condition_seq (line 948) | def p_condition_seq(p):
  function p_labeled_statement (line 954) | def p_labeled_statement(p):
  function p_try_block (line 961) | def p_try_block(p):
  function p_jump_statement (line 967) | def p_jump_statement(p):
  function p_iteration_statement (line 975) | def p_iteration_statement(p):
  function p_declaration_statement (line 982) | def p_declaration_statement(p):
  function p_compound_declaration (line 990) | def p_compound_declaration(p):
  function p_declaration_seq_opt (line 995) | def p_declaration_seq_opt(p):
  function p_declaration (line 1001) | def p_declaration(p):
  function p_specialised_declaration (line 1010) | def p_specialised_declaration(p):
  function p_block_declaration (line 1017) | def p_block_declaration(p):
  function p_specialised_block_declaration (line 1023) | def p_specialised_block_declaration(p):
  function p_simple_declaration (line 1032) | def p_simple_declaration(p):
  function p_suffix_built_in_decl_specifier_raw (line 1055) | def p_suffix_built_in_decl_specifier_raw(p):
  function p_suffix_built_in_decl_specifier (line 1062) | def p_suffix_built_in_decl_specifier(p):
  function p_suffix_named_decl_specifier (line 1070) | def p_suffix_named_decl_specifier(p):
  function p_suffix_named_decl_specifier_bi (line 1077) | def p_suffix_named_decl_specifier_bi(p):
  function p_suffix_named_decl_specifiers (line 1084) | def p_suffix_named_decl_specifiers(p):
  function p_suffix_named_decl_specifiers_sf (line 1090) | def p_suffix_named_decl_specifiers_sf(p):
  function p_suffix_decl_specified_ids (line 1098) | def p_suffix_decl_specified_ids(p):
  function p_suffix_decl_specified_scope (line 1108) | def p_suffix_decl_specified_scope(p):
  function p_decl_specifier_affix (line 1115) | def p_decl_specifier_affix(p):
  function p_decl_specifier_suffix (line 1124) | def p_decl_specifier_suffix(p):
  function p_decl_specifier_prefix (line 1129) | def p_decl_specifier_prefix(p):
  function p_storage_class_specifier (line 1135) | def p_storage_class_specifier(p):
  function p_function_specifier (line 1145) | def p_function_specifier(p):
  function p_type_specifier (line 1152) | def p_type_specifier(p):
  function p_elaborate_type_specifier (line 1159) | def p_elaborate_type_specifier(p):
  function p_simple_type_specifier (line 1167) | def p_simple_type_specifier(p):
  function p_built_in_type_specifier (line 1174) | def p_built_in_type_specifier(p):
  function p_attributes (line 1180) | def p_attributes(p):
  function p_attribute (line 1186) | def p_attribute(p):
  function p_Xbuilt_in_type_specifier (line 1190) | def p_Xbuilt_in_type_specifier(p):
  function p_elaborated_type_specifier (line 1216) | def p_elaborated_type_specifier(p):
  function p_elaborated_enum_specifier (line 1223) | def p_elaborated_enum_specifier(p):
  function p_enum_specifier (line 1228) | def p_enum_specifier(p):
  function p_enumerator_clause (line 1234) | def p_enumerator_clause(p):
  function p_enumerator_list_ecarb (line 1241) | def p_enumerator_list_ecarb(p):
  function p_enumerator_definition_ecarb (line 1246) | def p_enumerator_definition_ecarb(p):
  function p_enumerator_definition_filler (line 1251) | def p_enumerator_definition_filler(p):
  function p_enumerator_list_head (line 1256) | def p_enumerator_list_head(p):
  function p_enumerator_list (line 1262) | def p_enumerator_list(p):
  function p_enumerator_definition (line 1267) | def p_enumerator_definition(p):
  function p_enumerator (line 1273) | def p_enumerator(p):
  function p_namespace_definition (line 1278) | def p_namespace_definition(p):
  function p_namespace_alias_definition (line 1285) | def p_namespace_alias_definition(p):
  function p_push_scope (line 1290) | def p_push_scope(p):
  function p_using_declaration (line 1299) | def p_using_declaration(p):
  function p_using_directive (line 1305) | def p_using_directive(p):
  function p_asm_definition (line 1311) | def p_asm_definition(p):
  function p_linkage_specification (line 1316) | def p_linkage_specification(p):
  function p_init_declarations (line 1331) | def p_init_declarations(p):
  function p_init_declaration (line 1337) | def p_init_declaration(p):
  function p_star_ptr_operator (line 1342) | def p_star_ptr_operator(p):
  function p_nested_ptr_operator (line 1348) | def p_nested_ptr_operator(p):
  function p_ptr_operator (line 1354) | def p_ptr_operator(p):
  function p_ptr_operator_seq (line 1361) | def p_ptr_operator_seq(p):
  function p_ptr_operator_seq_opt (line 1370) | def p_ptr_operator_seq_opt(p):
  function p_cv_qualifier_seq_opt (line 1376) | def p_cv_qualifier_seq_opt(p):
  function p_cv_qualifier (line 1383) | def p_cv_qualifier(p):
  function p_type_id (line 1390) | def p_type_id(p):
  function p_abstract_declarator_opt (line 1396) | def p_abstract_declarator_opt(p):
  function p_direct_abstract_declarator_opt (line 1403) | def p_direct_abstract_declarator_opt(p):
  function p_direct_abstract_declarator (line 1409) | def p_direct_abstract_declarator(p):
  function p_parenthesis_clause (line 1416) | def p_parenthesis_clause(p):
  function p_parameters_clause (line 1422) | def p_parameters_clause(p):
  function p_abstract_pointer_declaration (line 1433) | def p_abstract_pointer_declaration(p):
  function p_abstract_parameter_declaration (line 1439) | def p_abstract_parameter_declaration(p):
  function p_special_parameter_declaration (line 1446) | def p_special_parameter_declaration(p):
  function p_parameter_declaration (line 1453) | def p_parameter_declaration(p):
  function p_function_definition (line 1463) | def p_function_definition(p):
  function p_func_definition (line 1469) | def p_func_definition(p):
  function p_ctor_definition (line 1488) | def p_ctor_definition(p):
  function p_constructor_head (line 1498) | def p_constructor_head(p):
  function p_function_try_block (line 1504) | def p_function_try_block(p):
  function p_function_block (line 1511) | def p_function_block(p):
  function p_function_body (line 1516) | def p_function_body(p):
  function p_initializer_clause (line 1521) | def p_initializer_clause(p):
  function p_braced_initializer (line 1527) | def p_braced_initializer(p):
  function p_initializer_list (line 1534) | def p_initializer_list(p):
  function p_class_specifier_head (line 1555) | def p_class_specifier_head(p):
  function p_class_key (line 1575) | def p_class_key(p):
  function p_class_specifier (line 1582) | def p_class_specifier(p):
  function p_member_specification_opt (line 1587) | def p_member_specification_opt(p):
  function p_member_declaration (line 1593) | def p_member_declaration(p):
  function p_simple_member_declaration (line 1609) | def p_simple_member_declaration(p):
  function p_member_init_declarations (line 1621) | def p_member_init_declarations(p):
  function p_member_init_declaration (line 1628) | def p_member_init_declaration(p):
  function p_accessibility_specifier (line 1634) | def p_accessibility_specifier(p):
  function p_bit_field_declaration (line 1639) | def p_bit_field_declaration(p):
  function p_bit_field_width (line 1646) | def p_bit_field_width(p):
  function p_bit_field_init_declaration (line 1652) | def p_bit_field_init_declaration(p):
  function p_base_specifier_list (line 1661) | def p_base_specifier_list(p):
  function p_base_specifier (line 1670) | def p_base_specifier(p):
  function p_access_specifier (line 1680) | def p_access_specifier(p):
  function p_conversion_function_id (line 1690) | def p_conversion_function_id(p):
  function p_conversion_type_id (line 1695) | def p_conversion_type_id(p):
  function p_ctor_initializer_opt (line 1708) | def p_ctor_initializer_opt(p):
  function p_ctor_initializer (line 1714) | def p_ctor_initializer(p):
  function p_mem_initializer_list (line 1719) | def p_mem_initializer_list(p):
  function p_mem_initializer_list_head (line 1725) | def p_mem_initializer_list_head(p):
  function p_mem_initializer (line 1730) | def p_mem_initializer(p):
  function p_mem_initializer_id (line 1735) | def p_mem_initializer_id(p):
  function p_operator_function_id (line 1744) | def p_operator_function_id(p):
  function p_operator (line 1763) | def p_operator(p):
  function p_reserved (line 1808) | def p_reserved(p):
  function p_template_declaration (line 1884) | def p_template_declaration(p):
  function p_template_parameter_clause (line 1890) | def p_template_parameter_clause(p):
  function p_explicit_specialization (line 1901) | def p_explicit_specialization(p):
  function p_handler_seq (line 1909) | def p_handler_seq(p):
  function p_handler (line 1915) | def p_handler(p):
  function p_exception_declaration (line 1921) | def p_exception_declaration(p):
  function p_throw_expression (line 1926) | def p_throw_expression(p):
  function p_exception_specification (line 1933) | def p_exception_specification(p):
  function p_type_id_list (line 1940) | def p_type_id_list(p):
  function p_nonsemicolon_seq (line 1949) | def p_nonsemicolon_seq(p):
  function p_nonsemicolon (line 1955) | def p_nonsemicolon(p):
  function p_nonparen_seq_opt (line 1966) | def p_nonparen_seq_opt(p):
  function p_nonparen_seq (line 1972) | def p_nonparen_seq(p):
  function p_nonparen (line 1978) | def p_nonparen(p):
  function p_nonbracket_seq_opt (line 1988) | def p_nonbracket_seq_opt(p):
  function p_nonbracket_seq (line 1994) | def p_nonbracket_seq(p):
  function p_nonbracket (line 2000) | def p_nonbracket(p):
  function p_nonbrace_seq_opt (line 2012) | def p_nonbrace_seq_opt(p):
  function p_nonbrace (line 2018) | def p_nonbrace(p):
  function p_nonlgt_seq_opt (line 2030) | def p_nonlgt_seq_opt(p):
  function p_nonlgt (line 2036) | def p_nonlgt(p):
  function p_misc (line 2046) | def p_misc(p):
  function p_empty (line 2063) | def p_empty(p):
  function _find_column (line 2074) | def _find_column(input,token):
  function p_error (line 2083) | def p_error(p):
  function parse_cpp (line 2102) | def parse_cpp(data=None, filename=None, debug=0, optimize=0, verbose=Fal...

FILE: cxxtest/python/python3/cxxtest/cxxtest_fog.py
  function cstr (line 26) | def cstr( str ):
  function scanInputFiles (line 30) | def scanInputFiles(files, _options):

FILE: cxxtest/python/python3/cxxtest/cxxtest_misc.py
  function abort (line 13) | def abort( problem ):

FILE: cxxtest/python/python3/cxxtest/cxxtest_parser.py
  function scanInputFiles (line 25) | def scanInputFiles(files, _options):
  function scanInputFile (line 37) | def scanInputFile(fileName):
  function scanInputLine (line 69) | def scanInputLine( fileName, lineNo, line ):
  function scanLineInsideSuite (line 80) | def scanLineInsideSuite( suite, lineNo, line ):
  function lineBelongsToSuite (line 88) | def lineBelongsToSuite( suite, lineNo, line ):
  function scanLineForStandardLibrary (line 104) | def scanLineForStandardLibrary( line ):
  function scanLineForExceptionHandling (line 112) | def scanLineForExceptionHandling( line ):
  function scanLineForSuiteStart (line 126) | def scanLineForSuiteStart( fileName, lineNo, line ):
  function startSuite (line 141) | def startSuite( name, file, line, generated ):
  function lineStartsBlock (line 159) | def lineStartsBlock( line ):
  function scanLineForTest (line 164) | def scanLineForTest( suite, lineNo, line ):
  function addTest (line 170) | def addTest( suite, name, line ):
  function addLineToBlock (line 180) | def addLineToBlock( suite, lineNo, line ):
  function fixBlockLine (line 191) | def fixBlockLine( suite, lineNo, line):
  function scanLineForCreate (line 198) | def scanLineForCreate( suite, lineNo, line ):
  function scanLineForDestroy (line 204) | def scanLineForDestroy( suite, lineNo, line ):
  function cstr (line 209) | def cstr( s ):
  function addSuiteCreateDestroy (line 214) | def addSuiteCreateDestroy( suite, which, line ):
  function closeSuite (line 220) | def closeSuite():
  function verifySuite (line 229) | def verifySuite(suite):
  function rememberSuite (line 238) | def rememberSuite(suite):

FILE: cxxtest/python/python3/cxxtest/cxxtestgen.py
  function main (line 41) | def main(args=sys.argv):
  function parseCommandline (line 62) | def parseCommandline(args):
  function printVersion (line 191) | def printVersion():
  function setFiles (line 196) | def setFiles(patterns ):
  function expandWildcards (line 201) | def expandWildcards( patterns ):
  function fixBackslashes (line 210) | def fixBackslashes( fileName ):
  function writeOutput (line 215) | def writeOutput():
  function writeSimpleOutput (line 222) | def writeSimpleOutput():
  function writeTemplateOutput (line 238) | def writeTemplateOutput():
  function startOutputFile (line 260) | def startOutputFile():
  function writePreamble (line 269) | def writePreamble( output ):
  function writeMain (line 303) | def writeMain( output ):
  function writeWorld (line 326) | def writeWorld( output ):
  function writeSuites (line 339) | def writeSuites(output):
  function isGenerated (line 353) | def isGenerated(suite):
  function isDynamic (line 357) | def isDynamic(suite):
  function writeInclude (line 361) | def writeInclude(output, file):
  function generateSuite (line 368) | def generateSuite( output, suite ):
  function writeSuitePointer (line 376) | def writeSuitePointer( output, suite ):
  function writeSuiteObject (line 383) | def writeSuiteObject( output, suite ):
  function writeTestList (line 387) | def writeTestList( output, suite ):
  function writeWorldDescr (line 394) | def writeWorldDescr( output ):
  function writeTestDescriptions (line 401) | def writeTestDescriptions( output, suite ):
  function writeTestDescription (line 406) | def writeTestDescription( output, suite, test ):
  function runBody (line 416) | def runBody( suite, test ):
  function dynamicRun (line 421) | def dynamicRun( suite, test ):
  function staticRun (line 425) | def staticRun( suite, test ):
  function writeSuiteDescription (line 429) | def writeSuiteDescription( output, suite ):
  function writeDynamicDescription (line 436) | def writeDynamicDescription( output, suite ):
  function writeStaticDescription (line 445) | def writeStaticDescription( output, suite ):
  function writeRoot (line 453) | def writeRoot(output):
  function writeInitialize (line 457) | def writeInitialize(output):

FILE: demoapps/dsl/gen_impl.cpp
  function user_program (line 32) | void user_program(user_funs* f) {
  function vertex_reduce (line 46) | void vertex_reduce(vertex_data_type& a, const vertex_data_type& b) {

FILE: demoapps/dsl/gl_server.cpp
  function get_vertex_data (line 50) | graph_type::vertex_data_type get_vertex_data(graph_type::vertex_type* v) {
  function set_vertex_data (line 53) | void set_vertex_data(graph_type::vertex_data_type& d, graph_type::vertex...
  function vertex_get_map (line 60) | graph_type::vertex_data_type vertex_get_map(const graph_type::vertex_typ...
  function vertex_get_reduce (line 68) | void vertex_get_reduce(vertex_data_type& ev, const vertex_data_type ed) {
  function vertex_data_type (line 88) | vertex_data_type reduce_neighbors(edge_dir_type d, engine_type::context_...
  function signal_neighbors (line 92) | void signal_neighbors(edge_dir_type d, engine_type::context_type* ctx) {
  function server_program (line 100) | void server_program(engine_type::context_type& context,
  function init_vertex (line 133) | void init_vertex(graph_type::vertex_type& vertex) { vertex.data() = 1; }
  function main (line 135) | int main(int argc, char** argv) {

FILE: demoapps/pagerank/simple_pagerank.cpp
  function init_vertex (line 48) | void init_vertex(graph_type::vertex_type& vertex) { vertex.data() = 1; }
  class pagerank (line 72) | class pagerank :
    method gather (line 78) | float gather(icontext_type& context, const vertex_type& vertex,
    method apply (line 85) | void apply(icontext_type& context, vertex_type& vertex,
    method edge_dir_type (line 93) | edge_dir_type scatter_edges(icontext_type& context,
    method scatter (line 100) | void scatter(icontext_type& context, const vertex_type& vertex,
  type pagerank_writer (line 111) | struct pagerank_writer {
    method save_vertex (line 112) | std::string save_vertex(graph_type::vertex_type v) {
    method save_edge (line 117) | std::string save_edge(graph_type::edge_type e) { return ""; }
  function main (line 122) | int main(int argc, char** argv) {

FILE: demoapps/pagerank/warp_engine_pagerank.cpp
  function init_vertex (line 39) | void init_vertex(graph_type::vertex_type& vertex) { vertex.data() = 1; }
  function pagerank_map (line 42) | float pagerank_map(graph_type::edge_type edge, graph_type::vertex_type o...
  function signal_neighbor (line 47) | void signal_neighbor(warp_engine_type::context& context,
  function pagerank (line 54) | void pagerank(warp_engine_type::context& context,
  type pagerank_writer (line 74) | struct pagerank_writer {
    method save_vertex (line 75) | std::string save_vertex(graph_type::vertex_type v) {
    method save_edge (line 80) | std::string save_edge(graph_type::edge_type e) { return ""; }
  function main (line 84) | int main(int argc, char** argv) {

FILE: demoapps/pagerank/warp_parfor_pagerank.cpp
  function init_vertex (line 40) | void init_vertex(graph_type::vertex_type& vertex) { vertex.data() = 1; }
  function pagerank_map (line 43) | float pagerank_map(graph_type::edge_type edge, graph_type::vertex_type o...
  function pagerank (line 47) | void pagerank(graph_type::vertex_type vertex) {
  type pagerank_writer (line 57) | struct pagerank_writer {
    method save_vertex (line 58) | std::string save_vertex(graph_type::vertex_type v) {
    method save_edge (line 63) | std::string save_edge(graph_type::edge_type e) { return ""; }
  function main (line 67) | int main(int argc, char** argv) {

FILE: demoapps/rpc/dht_performance_test.cpp
  function randstring (line 34) | std::string randstring(size_t len) {
  function main (line 45) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/fiber_future_test.cpp
  function some_remote_function (line 35) | size_t some_remote_function(size_t a) {
  function test_fiber (line 39) | void test_fiber(size_t sequential_count) {
  function main (line 46) | int main(int argc, char** argv) {

FILE: demoapps/rpc/obj_fiber_future_test.cpp
  type testclass (line 33) | struct testclass {
    method testclass (line 37) | testclass(distributed_control& dc): rmi(dc, this) { }
    method some_remote_function (line 40) | size_t some_remote_function(size_t a) {
    method test_fiber (line 44) | void test_fiber(size_t sequential_count) {
  function main (line 53) | int main(int argc, char** argv) {

FILE: demoapps/rpc/rpc_call_perf_test.cpp
  type teststruct (line 33) | struct teststruct {
    method teststruct (line 36) | teststruct(distributed_control &dc):rmi(dc, this) {
    method receive_ints (line 45) | void receive_ints(size_t i0, size_t i1, size_t i2, size_t i3) {
    method receive_vector (line 50) | void receive_vector(const std::vector<size_t> &s) {
    method receive_string (line 54) | void receive_string(const std::string &s) {
    method perform_short_sends_0 (line 63) | void perform_short_sends_0(size_t number) {
    method perform_long_sends_0 (line 69) | void perform_long_sends_0(size_t length, size_t number) {
    method perform_string_sends_0 (line 77) | void perform_string_sends_0(size_t length, size_t number) {
    method print_res (line 86) | void print_res(double t1, double t2, double t3) {
    method run_short_sends_0 (line 93) | void run_short_sends_0() {
    method run_threaded_short_sends_0 (line 112) | void run_threaded_short_sends_0(size_t numthreads) {
    method run_string_sends_0 (line 138) | void run_string_sends_0(size_t length) {
    method run_threaded_string_sends_0 (line 163) | void run_threaded_string_sends_0(size_t length, size_t numthreads) {
  function main (line 194) | int main(int argc, char** argv) {

FILE: demoapps/rpc/rpc_example1.cpp
  function print (line 29) | void print(int val) {
  function add_one (line 33) | int add_one(int val) {
  function main (line 38) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example2.cpp
  function print (line 34) | void print(std::string val) {
  function add_one (line 38) | std::vector<int> add_one(std::vector<int> val) {
  function main (line 44) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example3.cpp
  type teststruct (line 33) | struct teststruct: public IS_POD_TYPE{
  function print (line 39) | void print(std::map<int, teststruct> &data1,
  function main (line 48) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example4.cpp
  type teststruct (line 32) | struct teststruct{
    method save (line 37) | void save(oarchive &arc) const {
    method load (line 40) | void load(iarchive &arc) {
  function print (line 46) | void print(std::map<int, teststruct> &data1,
  function main (line 55) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example5.cpp
  function main (line 31) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example6.cpp
  function print (line 32) | void print(any val) {
  function main (line 38) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example7.cpp
  class distributed_vector (line 33) | class distributed_vector {
    method distributed_vector (line 39) | distributed_vector(distributed_control &dc):rmi(dc, this) { }
    method T (line 42) | T get(size_t i) {
    method set (line 63) | void set(size_t i, const T& val) {
  function main (line 83) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example8.cpp
  function print (line 29) | void print(distributed_control &dc, procid_t caller, int val) {
  function main (line 35) | int main(int argc, char ** argv) {

FILE: demoapps/rpc/rpc_example9.cpp
  type test_struct (line 30) | struct test_struct {
    method test_struct (line 32) | test_struct(distributed_control &dc):rmi(dc, this) {
    method test_blob (line 36) | void test_blob(size_t len, wild_pointer w) {
    method print (line 41) | void print(int val) {
    method test (line 45) | void test() {
  function main (line 69) | int main(int argc, char ** argv) {

FILE: scripts/ec2/gl_ec2.py
  function parse_args (line 42) | def parse_args():
  function get_or_make_group (line 118) | def get_or_make_group(conn, name):
  function wait_for_instances (line 130) | def wait_for_instances(conn, instances):
  function is_active (line 143) | def is_active(instance):
  function launch_cluster (line 152) | def launch_cluster(conn, opts, cluster_name):
  function get_existing_cluster (line 309) | def get_existing_cluster(conn, opts, cluster_name):
  function get_internal_ips (line 340) | def get_internal_ips(conn, opts, cluster_name):
  function attach_ebs (line 347) | def attach_ebs(conn, opts, cluster_name):
  function detach_ebs (line 356) | def detach_ebs(conn, opts, cluster_name):
  function setup_cluster (line 369) | def setup_cluster(conn, master_nodes, slave_nodes, zoo_nodes, opts, clus...
  function wait_for_cluster (line 406) | def wait_for_cluster(conn, wait_secs, master_nodes, slave_nodes, zoo_nod...
  function get_num_disks (line 418) | def get_num_disks(instance_type):
  function deploy_files (line 447) | def deploy_files(conn, root_dir, opts, master_nodes, slave_nodes, zoo_no...
  function scp (line 505) | def scp(host, opts, local_file, dest_file):
  function ssh (line 512) | def ssh(host, opts, command):
  function main (line 518) | def main():

FILE: scripts/rpcexec.py
  function escape (line 13) | def escape(s):
  function get_ssh_cmd (line 25) | def get_ssh_cmd(gui, machines, port, machineid, prog, opts):
  function get_screen_cmd (line 58) | def get_screen_cmd(gui, machines, port, machineid, prog, opts):
  function shell_popen (line 84) | def shell_popen(cmd):
  function shell_wait_native (line 89) | def shell_wait_native(cmd):

FILE: src/graphlab/aggregation/distributed_aggregator.hpp
  type graphlab (line 47) | namespace graphlab {
    class distributed_aggregator (line 80) | class distributed_aggregator {
      type imap_reduce_base (line 102) | struct imap_reduce_base {
      type default_map_types (line 149) | struct default_map_types{
      type map_reduce_type (line 164) | struct map_reduce_type : public imap_reduce_base {
        method map_reduce_type (line 176) | map_reduce_type(VertexMapperType map_vtx_function,
        method map_reduce_type (line 185) | map_reduce_type(EdgeMapperType map_edge_function,
        method perform_map_vertex (line 192) | void perform_map_vertex(icontext_type& context, vertex_type& verte...
        method perform_map_edge (line 215) | void perform_map_edge(icontext_type& context, edge_type& edge) {
        method is_vertex_map (line 238) | bool is_vertex_map() const {
        method any (line 242) | any get_accumulator() const {
        method add_accumulator_any (line 246) | void add_accumulator_any(any& other) {
        method set_accumulator_any (line 252) | void set_accumulator_any(any& other) {
        method add_accumulator (line 259) | void add_accumulator(imap_reduce_base* other) {
        method clear_accumulator (line 265) | void clear_accumulator() {
        method finalize (line 269) | void finalize(icontext_type& context) {
        method imap_reduce_base (line 273) | imap_reduce_base* clone_empty() const {
      type async_aggregator_state (line 292) | struct async_aggregator_state {
      method test_vertex_mapper_type (line 315) | static void test_vertex_mapper_type(std::string key = "") {
      method test_edge_mapper_type (line 349) | static void test_edge_mapper_type(std::string key = "") {
      method distributed_aggregator (line 384) | distributed_aggregator(distributed_control& dc,
      method add_vertex_aggregator (line 396) | bool add_vertex_aggregator(const std::string& key,
      method add_vertex_aggregator (line 431) | bool add_vertex_aggregator(const std::string& key,
      method add_edge_aggregator (line 458) | bool add_edge_aggregator(const std::string& key,
      method add_edge_aggregator (line 493) | bool add_edge_aggregator(const std::string& key,
      method aggregate_now (line 518) | bool aggregate_now(const std::string& key) {
      method aggregate_periodic (line 595) | bool aggregate_periodic(const std::string& key, float seconds) {
      method aggregate_all_periodic (line 608) | void aggregate_all_periodic() {
      method start (line 627) | void start(size_t ncpus = 0) {
      method tick_asynchronous (line 675) | std::string tick_asynchronous() {
      method tick_asynchronous_compute (line 703) | void tick_asynchronous_compute(size_t cpuid, const std::string& key) {
      method rpc_key_merge (line 764) | void rpc_key_merge(const std::string& key, any& acc) {
      method decrement_distributed_counter (line 779) | void decrement_distributed_counter(const std::string& key) {
      method rpc_perform_finalize (line 812) | void rpc_perform_finalize(const std::string& key, any& acc_val) {
      method decrement_finalize_counter (line 827) | void decrement_finalize_counter(const std::string& key) {
      method rpc_schedule_key (line 853) | void rpc_schedule_key(const std::string& key, float next_time) {
      method tick_synchronous (line 867) | void tick_synchronous() {
      method stop (line 896) | void stop() {
      method get_all_periodic_keys (line 926) | std::set<std::string> get_all_periodic_keys() const {
      method ResultType (line 941) | ResultType map_reduce_vertices(MapFunctionType mapfunction) {
      method ResultType (line 997) | ResultType map_reduce_edges(MapFunctionType mapfunction) {
      method transform_vertices (line 1052) | void transform_vertices(TransformType transform_functor) {
      method transform_edges (line 1070) | void transform_edges(TransformType transform_functor) {

FILE: src/graphlab/engine/async_consistent_engine.hpp
  type graphlab (line 58) | namespace graphlab {
    class async_consistent_engine (line 205) | class async_consistent_engine: public iengine<VertexProgram> {
      type vertex_fiber_cm_handle (line 381) | struct vertex_fiber_cm_handle {
      method async_consistent_engine (line 438) | async_consistent_engine(distributed_control &dc,
      method set_options (line 471) | void set_options(const graphlab_options& opts) {
      method init (line 539) | void init() {
      method num_updates (line 572) | size_t num_updates() const {
      method elapsed_seconds (line 581) | float elapsed_seconds() const {
      method iteration (line 589) | int iteration() const { return -1; }
      method rpc_signal (line 602) | void rpc_signal(vertex_id_type vid,
      method internal_signal (line 619) | void internal_signal(const vertex_type& vtx,
      method internal_signal_gvid (line 662) | void internal_signal_gvid(vertex_id_type gvid,
      method rpc_internal_stop (line 675) | void rpc_internal_stop() {
      method internal_stop (line 686) | void internal_stop() {
      method internal_post_delta (line 702) | void internal_post_delta(const vertex_type& vertex,
      method internal_clear_gather_cache (line 727) | void internal_clear_gather_cache(const vertex_type& vertex) {
      method signal (line 742) | void signal(vertex_id_type gvid,
      method signal_all (line 750) | void signal_all(const message_type& message = message_type(),
      method signal_vset (line 756) | void signal_vset(const vertex_set& vset,
      method get_next_sched_task (line 790) | sched_status::status_enum get_next_sched_task( size_t threadid,
      method set_endgame_mode (line 804) | void set_endgame_mode() {
      method try_to_quit (line 816) | bool try_to_quit(size_t threadid,
      method lock_ready (line 866) | void lock_ready(lvid_type lvid) {
      method conditional_gather_type (line 874) | conditional_gather_type perform_gather(vertex_id_type vid,
      method perform_scatter_local (line 920) | void perform_scatter_local(lvid_type lvid,
      method perform_scatter (line 956) | void perform_scatter(vertex_id_type vid,
      method get_exclusive_access_to_vertex (line 971) | bool get_exclusive_access_to_vertex(const lvid_type lvid,
      method release_exclusive_access_to_vertex (line 990) | void release_exclusive_access_to_vertex(const lvid_type lvid) {
      method eval_sched_task (line 1010) | void eval_sched_task(const lvid_type lvid,
      method thread_start (line 1138) | void thread_start(size_t threadid) {
      method start (line 1210) | execution_status::status_enum start() {
      method aggregator_type (line 1289) | aggregator_type* get_aggregator() { return &aggregator; }

FILE: src/graphlab/engine/distributed_chandy_misra.hpp
  type graphlab (line 33) | namespace graphlab {
    class distributed_chandy_misra (line 40) | class distributed_chandy_misra {
      method request_bit (line 67) | inline unsigned char request_bit(bool owner) {
      type philosopher (line 78) | struct philosopher {
      method request_for_fork (line 101) | inline void request_for_fork(size_t forkid, bool nextowner) {
      method fork_owner (line 105) | inline bool fork_owner(size_t forkid) {
      method fork_dirty (line 109) | inline bool fork_dirty(size_t forkid) {
      method dirty_fork (line 113) | inline void dirty_fork(size_t forkid) {
      method compute_initial_fork_arrangement (line 119) | void compute_initial_fork_arrangement() {
      method try_acquire_edge_with_backoff (line 149) | void try_acquire_edge_with_backoff(lvid_type v1,
      method advance_fork_state_on_lock (line 177) | inline bool advance_fork_state_on_lock(size_t forkid,
      method cancellation_request_unlocked (line 256) | void cancellation_request_unlocked(lvid_type lvid, procid_t requesto...
      method rpc_cancellation_request (line 300) | void rpc_cancellation_request(vertex_id_type gvid, procid_t requesto...
      method issue_cancellation_request_unlocked (line 305) | void issue_cancellation_request_unlocked(lvid_type lvid, bool lockid) {
      method rpc_cancellation_accept (line 335) | void rpc_cancellation_accept(vertex_id_type gvid, bool lockid) {
      method cancellation_accept_unlocked (line 340) | void cancellation_accept_unlocked(lvid_type p_id, bool lockid) {
      method rpc_make_philosopher_hungry (line 434) | void rpc_make_philosopher_hungry(vertex_id_type gvid, bool newlockid) {
      method local_philosopher_grabs_forks (line 451) | void local_philosopher_grabs_forks(lvid_type p_id) {
      method enter_hors_doeuvre_unlocked (line 515) | void enter_hors_doeuvre_unlocked(lvid_type p_id) {
      method signal_ready_unlocked (line 547) | void signal_ready_unlocked(lvid_type lvid, bool lockid) {
      method rpc_signal_ready (line 586) | void rpc_signal_ready(vertex_id_type gvid, bool lockid) {
      method set_eating (line 591) | void set_eating(lvid_type lvid, bool lockid) {
      method rpc_set_eating (line 611) | void rpc_set_eating(vertex_id_type gvid, bool lockid) {
      method advance_fork_state_on_unlock (line 627) | inline bool advance_fork_state_on_unlock(size_t forkid,
      method local_philosopher_stops_eating (line 667) | void local_philosopher_stops_eating(lvid_type p_id) {
      method rpc_philosopher_stops_eating (line 740) | void rpc_philosopher_stops_eating(vertex_id_type gvid) {
      method distributed_chandy_misra (line 746) | inline distributed_chandy_misra(distributed_control &dc,
      method num_clean_forks (line 762) | size_t num_clean_forks() const {
      method initialize_master_philosopher_as_hungry_locked (line 766) | void initialize_master_philosopher_as_hungry_locked(lvid_type p_id,
      method make_philosopher_hungry (line 773) | void make_philosopher_hungry(lvid_type p_id) {
      method make_philosopher_hungry_per_replica (line 796) | void make_philosopher_hungry_per_replica(lvid_type p_id) {
      method philosopher_stops_eating (line 819) | void philosopher_stops_eating(lvid_type p_id) {
      method philosopher_stops_eating_per_replica (line 836) | void philosopher_stops_eating_per_replica(lvid_type p_id) {
      method no_locks_consistency_check (line 846) | void no_locks_consistency_check() {
      method print_out (line 853) | void print_out() {
      method complete_consistency_check (line 896) | void complete_consistency_check() {

FILE: src/graphlab/engine/execution_status.hpp
  type graphlab (line 27) | namespace graphlab {
    type execution_status (line 37) | struct execution_status {
      type status_enum (line 38) | enum status_enum {
      method to_string (line 53) | static std::string to_string(status_enum es) {

FILE: src/graphlab/engine/iengine.hpp
  type graphlab (line 56) | namespace graphlab {
    class iengine (line 105) | class iengine {
      method iteration (line 227) | virtual int iteration() const { return -1; }
      method add_vertex_aggregator (line 484) | bool add_vertex_aggregator(const std::string& key,
      method add_vertex_aggregator (line 539) | bool add_vertex_aggregator(const std::string& key,
      method add_edge_aggregator (line 692) | bool add_edge_aggregator(const std::string& key,
      method add_edge_aggregator (line 748) | bool add_edge_aggregator(const std::string& key,
      method aggregate_now (line 780) | bool aggregate_now(const std::string& key) {
      method ReductionType (line 876) | ReductionType map_reduce_vertices(VertexMapperType mapfunction) {
      method ReductionType (line 974) | ReductionType map_reduce_edges(EdgeMapperType mapfunction) {
      method transform_vertices (line 1055) | void transform_vertices(VertexMapperType mapfunction) {
      method transform_edges (line 1132) | void transform_edges(EdgeMapperType mapfunction) {
      method aggregate_periodic (line 1169) | bool aggregate_periodic(const std::string& key, float seconds) {

FILE: src/graphlab/engine/message_array.hpp
  type graphlab (line 32) | namespace graphlab {
    class message_array (line 39) | class message_array {
      type message_box (line 44) | struct message_box {
        method message_box (line 48) | message_box() : empty(true) { }
        method add (line 50) | inline bool add(const value_type& other, double& priority) {
        method clear (line 63) | void clear() {
      method get_lock_idx (line 79) | static size_t get_lock_idx(size_t i) {
      method message_array (line 84) | message_array(size_t num_vertices = 0) :
      method resize (line 95) | void resize(size_t num_vertices) {
      method add (line 101) | bool add(const size_t idx,
      method get (line 120) | bool get(const size_t idx,
      method peek (line 139) | bool peek(const size_t idx,
      method clear (line 154) | void clear(const size_t idx) {
      method empty (line 162) | bool empty(const size_t idx) const {
      method empty (line 166) | bool empty() const {
      method size (line 174) | size_t size() const {
      method num_joins (line 178) | size_t num_joins() const {
      method num_adds (line 187) | size_t num_adds() const {
      method clear (line 196) | void clear() {

FILE: src/graphlab/engine/omni_engine.hpp
  type graphlab (line 35) | namespace graphlab {
    class omni_engine (line 80) | class omni_engine : public iengine<VertexProgram> {
      method omni_engine (line 151) | omni_engine() { }
      method omni_engine (line 156) | omni_engine(const omni_engine& other ) { }
      method omni_engine (line 177) | omni_engine(distributed_control& dc, graph_type& graph,
      method start (line 211) | execution_status::status_enum start( ) { return engine_ptr->start(); }
      method num_updates (line 213) | size_t num_updates() const { return engine_ptr->num_updates(); }
      method elapsed_seconds (line 214) | float elapsed_seconds() const { return engine_ptr->elapsed_seconds(); }
      method iteration (line 215) | int iteration() const { return engine_ptr->iteration(); }
      method signal (line 216) | void signal(vertex_id_type vertex,
      method signal_all (line 220) | void signal_all(const message_type& message = message_type(),
      method signal_vset (line 224) | void signal_vset(const vertex_set& vset,
      method aggregator_type (line 231) | aggregator_type* get_aggregator() { return engine_ptr->get_aggregato...

FILE: src/graphlab/engine/synchronous_engine.hpp
  type graphlab (line 59) | namespace graphlab {
    class synchronous_engine (line 207) | class synchronous_engine :
      method thread_launch_wrapped_event_counter (line 771) | void thread_launch_wrapped_event_counter(boost::function<void(void)>...
      method run_synchronous (line 796) | void run_synchronous(MemberFunction member_fun) {
    function foreach (line 1020) | foreach(std::string opt, keys) {
    function foreach (line 1474) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 1519) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 1585) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 1686) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 1755) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 1802) | foreach(const procid_t& mirror, vertex.mirrors()) {
    function foreach (line 1817) | foreach(const vid_prog_pair_type& pair, buffer) {
    function foreach (line 1834) | foreach(const procid_t& mirror, vertex.mirrors()) {
    function foreach (line 1850) | foreach(const vid_vdata_pair_type& pair, buffer) {
    function foreach (line 1886) | foreach(const vid_gather_pair_type& pair, buffer) {
    function foreach (line 1923) | foreach(const vid_message_pair_type& pair, buffer) {

FILE: src/graphlab/engine/warp_engine.hpp
  type graphlab (line 55) | namespace graphlab {
    type warp (line 57) | namespace warp {
      class warp_engine (line 176) | class warp_engine {
        type context (line 234) | struct context {
          method context (line 247) | context(warp_engine& engine, graph_type& graph,
          method context (line 257) | context(warp_engine& engine, graph_type& graph):
          method num_vertices (line 269) | size_t num_vertices() const { return graph.num_vertices(); }
          method num_edges (line 278) | size_t num_edges() const { return graph.num_edges(); }
          method procid (line 290) | size_t procid() const { return graph.procid(); }
          method num_procs (line 303) | size_t num_procs() const { return graph.numprocs(); }
          method elapsed_seconds (line 347) | float elapsed_seconds() const { return engine.elapsed_seconds(); }
          method iteration (line 355) | int iteration() const { return -1; }
          method stop (line 367) | void stop() { engine.internal_stop(); }
          method signal (line 387) | void signal(const vertex_type& vertex,
          method signal (line 412) | void signal(vertex_id_type gvid,
          method set_synchronized (line 422) | void set_synchronized() {
          method synchronize (line 436) | void synchronize() {
        type vertex_fiber_cm_handle (line 521) | struct vertex_fiber_cm_handle {
        method warp_engine (line 580) | warp_engine(distributed_control &dc,
        method get_rpc_obj_id (line 602) | size_t get_rpc_obj_id() {
        method set_options (line 617) | void set_options(const graphlab_options& opts) {
        method initialize (line 677) | void initialize() {
        method set_update_function (line 709) | void set_update_function(update_function_type update_function) {
        method num_updates (line 720) | size_t num_updates() const {
        method elapsed_seconds (line 734) | float elapsed_seconds() const {
        method iteration (line 742) | int iteration() const { return -1; }
        method rpc_signal (line 755) | void rpc_signal(vertex_id_type vid,
        method internal_signal (line 772) | void internal_signal(const vertex_type& vtx,
        method internal_signal_gvid (line 815) | void internal_signal_gvid(vertex_id_type gvid,
        method rpc_internal_stop (line 829) | void rpc_internal_stop() {
        method internal_stop (line 840) | void internal_stop() {
        method signal (line 894) | void signal(vertex_id_type gvid,
        method signal_all (line 936) | void signal_all(const message_type& message = message_type(),
        method signal_vset (line 967) | void signal_vset(const vertex_set& vset,
        method get_next_sched_task (line 1001) | sched_status::status_enum get_next_sched_task(size_t threadid,
        method set_endgame_mode (line 1015) | void set_endgame_mode() {
        method try_to_quit (line 1027) | bool try_to_quit(size_t threadid,
        method lock_ready (line 1077) | void lock_ready(lvid_type lvid) {
        method get_exclusive_access_to_vertex (line 1088) | bool get_exclusive_access_to_vertex(const lvid_type lvid,
        method release_exclusive_access_to_vertex (line 1107) | void release_exclusive_access_to_vertex(const lvid_type lvid) {
        method update_vertex_value (line 1120) | void update_vertex_value(vertex_id_type vid,
        method synchronize_one_vertex (line 1126) | void synchronize_one_vertex(vertex_type vtx) {
        method synchronize_one_vertex_wait (line 1134) | void synchronize_one_vertex_wait(vertex_type vtx) {
        method eval_sched_task (line 1155) | void eval_sched_task(const lvid_type lvid,
        method thread_start (line 1212) | void thread_start(size_t threadid) {
        method start (line 1281) | execution_status::status_enum start() {
        method aggregator_type (line 1354) | aggregator_type* get_aggregator() { return &aggregator; }

FILE: src/graphlab/engine/warp_graph_broadcast.hpp
  type graphlab (line 35) | namespace graphlab {
    type warp (line 37) | namespace warp {
      type warp_impl (line 39) | namespace warp_impl {
        type broadcast_neighborhood_impl (line 42) | struct broadcast_neighborhood_impl {
          method basic_local_broadcast_neighborhood (line 63) | static void basic_local_broadcast_neighborhood(context_type& con...
          method basic_local_broadcast_neighborhood_from_remote (line 101) | static void basic_local_broadcast_neighborhood_from_remote(std::...
          method basic_broadcast_neighborhood (line 121) | static void basic_broadcast_neighborhood(context_type& context,
        type broadcast_neighborhood_impl2 (line 163) | struct broadcast_neighborhood_impl2 {
          method extended_local_broadcast_neighborhood (line 186) | static void extended_local_broadcast_neighborhood(context_type& ...
          method extended_local_broadcast_neighborhood_from_remote (line 226) | static void extended_local_broadcast_neighborhood_from_remote(st...
          method extended_broadcast_neighborhood (line 249) | static void extended_broadcast_neighborhood(context_type& context,
      function broadcast_neighborhood (line 360) | void broadcast_neighborhood(ContextType& context,
      function broadcast_neighborhood (line 444) | void broadcast_neighborhood(ContextType& context,

FILE: src/graphlab/engine/warp_graph_mapreduce.hpp
  type graphlab (line 35) | namespace graphlab {
    type warp (line 37) | namespace warp {
      type warp_impl (line 39) | namespace warp_impl {
        function default_combiner (line 46) | void default_combiner(T& self, const T& other) {
        function extended_default_combiner (line 56) | void extended_default_combiner(T& self, const T& other, const Extr...
        type map_reduce_neighborhood_impl (line 62) | struct map_reduce_neighborhood_impl {
          method basic_local_mapper (line 81) | static conditional_combiner_wrapper<RetType> basic_local_mapper(...
          method basic_local_mapper_from_remote (line 119) | static conditional_combiner_wrapper<RetType> basic_local_mapper_...
          method RetType (line 137) | static RetType basic_map_reduce_neighborhood(typename GraphType:...
        type map_reduce_neighborhood_impl2 (line 196) | struct map_reduce_neighborhood_impl2 {
          method extended_local_mapper (line 204) | static conditional_combiner_wrapper<RetType> extended_local_mapp...
          method extended_local_mapper_from_remote (line 245) | static conditional_combiner_wrapper<RetType> extended_local_mapp...
          method RetType (line 265) | static RetType extended_map_reduce_neighborhood(typename GraphTy...
      function RetType (line 392) | RetType map_reduce_neighborhood(VertexType current,
      function RetType (line 485) | RetType map_reduce_neighborhood(VertexType current,

FILE: src/graphlab/engine/warp_graph_transform.hpp
  type graphlab (line 35) | namespace graphlab {
    type warp (line 37) | namespace warp {
      type warp_impl (line 39) | namespace warp_impl {
        type transform_neighborhood_impl (line 42) | struct transform_neighborhood_impl {
          method basic_local_transform_neighborhood (line 61) | static void basic_local_transform_neighborhood(GraphType& graph,
          method basic_local_transform_neighborhood_from_remote (line 97) | static void basic_local_transform_neighborhood_from_remote(size_...
          method basic_transform_neighborhood (line 111) | static void basic_transform_neighborhood(typename GraphType::ver...
        type transform_neighborhood_impl2 (line 151) | struct transform_neighborhood_impl2 {
          method extended_local_transform_neighborhood (line 172) | static void extended_local_transform_neighborhood(GraphType& graph,
          method extended_local_transform_neighborhood_from_remote (line 210) | static void extended_local_transform_neighborhood_from_remote(si...
          method extended_transform_neighborhood (line 226) | static void extended_transform_neighborhood(typename GraphType::...
      function transform_neighborhood (line 331) | void transform_neighborhood(VertexType current,
      function transform_neighborhood (line 409) | void transform_neighborhood(VertexType current,

FILE: src/graphlab/engine/warp_parfor_all_vertices.hpp
  type graphlab (line 31) | namespace graphlab {
    type warp (line 32) | namespace warp {
      type warp_impl (line 34) | namespace warp_impl {
        type parfor_all_vertices_impl (line 43) | struct parfor_all_vertices_impl{
          method parfor_all_vertices_impl (line 50) | parfor_all_vertices_impl(GraphType& graph,
          method run_fiber (line 54) | void run_fiber() {
      function parfor_all_vertices (line 106) | void parfor_all_vertices(GraphType& graph,

FILE: src/graphlab/graph/builtin_parsers.hpp
  type graphlab (line 46) | namespace graphlab {
    type builtin_parsers (line 48) | namespace builtin_parsers {
      function snap_parser (line 63) | bool snap_parser(Graph& graph, const std::string& srcfilename,
      function tsv_parser (line 86) | bool tsv_parser(Graph& graph, const std::string& srcfilename,
      function csv_parser (line 100) | bool csv_parser(Graph& graph,
      function adj_parser (line 120) | bool adj_parser(Graph& graph, const std::string& srcfilename,
      function adj_parser (line 147) | bool adj_parser(Graph& graph, const std::string& srcfilename,
      type tsv_writer (line 183) | struct tsv_writer{
        method save_vertex (line 186) | std::string save_vertex(vertex_type) { return ""; }
        method save_edge (line 187) | std::string save_edge(edge_type e) {
      type graphjrl_writer (line 196) | struct graphjrl_writer{
        method escape_newline (line 205) | static std::string escape_newline(charstream& strm) {
        method unescape_newline (line 241) | static std::string unescape_newline(const std::string& str) {
        method save_vertex (line 268) | std::string save_vertex(vertex_type v) {
        method save_edge (line 276) | std::string save_edge(edge_type e) {
      function graphjrl_parser (line 288) | bool graphjrl_parser(Graph& graph, const std::string& srcfilename,

FILE: src/graphlab/graph/distributed_graph.hpp
  type tests (line 98) | namespace tests {
    class distributed_graph_test (line 99) | class distributed_graph_test
  type graphlab (line 101) | namespace graphlab {
    class distributed_graph (line 312) | class distributed_graph {
      type vertex_type (line 418) | struct vertex_type
        method vertex_type (line 448) | vertex_type(distributed_graph& graph_ref, lvid_type lvid):
        method vertex_data_type (line 459) | const vertex_data_type& data() const {
        method vertex_data_type (line 464) | vertex_data_type& data() {
        method num_in_edges (line 469) | size_t num_in_edges() const {
        method num_out_edges (line 474) | size_t num_out_edges() const {
        method vertex_id_type (line 479) | vertex_id_type id() const {
        method edge_list_type (line 486) | edge_list_type in_edges() __attribute__ ((noreturn)) {
        method edge_list_type (line 491) | edge_list_type out_edges() __attribute__ ((noreturn)) {
        method lvid_type (line 499) | lvid_type local_id() const {
      class edge_type (line 420) | class edge_type
        method edge_type (line 532) | edge_type(distributed_graph& graph_ref,
        method vertex_type (line 556) | vertex_type source() const {
        method vertex_type (line 572) | vertex_type target() const {
        method edge_data_type (line 579) | const edge_data_type& data() const { return edge.data(); }
        method edge_data_type (line 584) | edge_data_type& data() { return edge.data(); }
      type local_vertex_type (line 422) | struct local_vertex_type
        method local_vertex_type (line 2904) | local_vertex_type(distributed_graph& graph_ref, lvid_type lvid):
        method local_vertex_type (line 2908) | explicit local_vertex_type(vertex_type v) :graph_ref(v.graph_ref),...
        method vertex_data_type (line 2919) | const vertex_data_type& data() const {
        method vertex_data_type (line 2924) | vertex_data_type& data() {
        method num_in_edges (line 2931) | size_t num_in_edges() const {
        method num_out_edges (line 2938) | size_t num_out_edges() const {
        method lvid_type (line 2943) | lvid_type id() const {
        method vertex_id_type (line 2948) | vertex_id_type global_id() const {
        method local_edge_list_type (line 2955) | local_edge_list_type in_edges() {
        method local_edge_list_type (line 2962) | local_edge_list_type out_edges() {
        method procid_t (line 2968) | procid_t owner() const {
        method owned (line 2974) | bool owned() const {
        method global_num_in_edges (line 2981) | size_t global_num_in_edges() const {
        method global_num_out_edges (line 2989) | size_t global_num_out_edges() const {
        method mirror_type (line 2996) | const mirror_type& mirrors() const {
        method num_mirrors (line 3000) | size_t num_mirrors() const {
        method vertex_record (line 3007) | vertex_record& get_vertex_record() {
      type local_edge_list_type (line 423) | struct local_edge_list_type
        method local_edge_list_type (line 3077) | local_edge_list_type(distributed_graph& graph_ref,
        method size (line 3081) | size_t size() const { return elist.size(); }
        method local_edge_type (line 3084) | local_edge_type operator[](size_t i) const { return me_functor(eli...
        method iterator (line 3100) | iterator begin() const { return
        method iterator (line 3117) | iterator end() const { return
        method empty (line 3121) | bool empty() const { return elist.empty(); }
      class local_edge_type (line 424) | class local_edge_type
        method local_edge_type (line 3020) | local_edge_type(distributed_graph& graph_ref,
        method local_edge_type (line 3025) | explicit local_edge_type(edge_type ge) :graph_ref(ge.graph_ref),e(...
        method local_vertex_type (line 3033) | local_vertex_type source() const { return local_vertex_type(graph_...
        method local_vertex_type (line 3036) | local_vertex_type target() const { return local_vertex_type(graph_...
        method edge_data_type (line 3041) | const edge_data_type& data() const { return e.data(); }
        method edge_data_type (line 3044) | edge_data_type& data() { return e.data(); }
        method edge_id_type (line 3047) | edge_id_type id() const { return e.id(); }
      type vertex_type (line 435) | struct vertex_type {
        method vertex_type (line 448) | vertex_type(distributed_graph& graph_ref, lvid_type lvid):
        method vertex_data_type (line 459) | const vertex_data_type& data() const {
        method vertex_data_type (line 464) | vertex_data_type& data() {
        method num_in_edges (line 469) | size_t num_in_edges() const {
        method num_out_edges (line 474) | size_t num_out_edges() const {
        method vertex_id_type (line 479) | vertex_id_type id() const {
        method edge_list_type (line 486) | edge_list_type in_edges() __attribute__ ((noreturn)) {
        method edge_list_type (line 491) | edge_list_type out_edges() __attribute__ ((noreturn)) {
        method lvid_type (line 499) | lvid_type local_id() const {
      class edge_type (line 516) | class edge_type {
        method edge_type (line 532) | edge_type(distributed_graph& graph_ref,
        method vertex_type (line 556) | vertex_type source() const {
        method vertex_type (line 572) | vertex_type target() const {
        method edge_data_type (line 579) | const edge_data_type& data() const { return edge.data(); }
        method edge_data_type (line 584) | edge_data_type& data() { return edge.data(); }
      method distributed_graph (line 621) | distributed_graph(distributed_control& dc,
      method lock_manager_type (line 641) | lock_manager_type& get_lock_manager() {
      method set_options (line 645) | void set_options(const graphlab_options& opts) {
      method is_dynamic (line 693) | bool is_dynamic() const {
      method finalize (line 706) | void finalize() {
      method is_finalized (line 720) | bool is_finalized() {
      method num_vertices (line 725) | size_t num_vertices() const { return nverts; }
      method num_edges (line 728) | size_t num_edges() const { return nedges; }
      method vertex_type (line 738) | vertex_type vertex(vertex_id_type vid) {
        method vertex_type (line 448) | vertex_type(distributed_graph& graph_ref, lvid_type lvid):
        method vertex_data_type (line 459) | const vertex_data_type& data() const {
        method vertex_data_type (line 464) | vertex_data_type& data() {
        method num_in_edges (line 469) | size_t num_in_edges() const {
        method num_out_edges (line 474) | size_t num_out_edges() const {
        method vertex_id_type (line 479) | vertex_id_type id() const {
        method edge_list_type (line 486) | edge_list_type in_edges() __attribute__ ((noreturn)) {
        method edge_list_type (line 491) | edge_list_type out_edges() __attribute__ ((noreturn)) {
        method lvid_type (line 499) | lvid_type local_id() const {
      method edge_list_type (line 744) | edge_list_type in_edges(const vertex_id_type vid) const
      method edge_list_type (line 752) | edge_list_type out_edges(const vertex_id_type vid) const
      method num_in_edges (line 771) | size_t num_in_edges(const vertex_id_type vid) const {
      method num_out_edges (line 785) | size_t num_out_edges(const vertex_id_type vid) const {
      method set_duplicate_vertex_strategy (line 795) | void set_duplicate_vertex_strategy(boost::function<void(vertex_data_...
      method add_vertex (line 819) | bool add_vertex(const vertex_id_type& vid,
      method add_edge (line 860) | bool add_edge(vertex_id_type source, vertex_id_type target,
      method ReductionType (line 967) | ReductionType map_reduce_vertices(MapFunctionType mapfunction,
      method ReductionType (line 1094) | ReductionType map_reduce_edges(MapFunctionType mapfunction,
      method ReductionType (line 1243) | ReductionType fold_vertices(VertexFoldType foldfunction,
      method ReductionType (line 1361) | ReductionType fold_edges(FoldFunctionType foldfunction,
      method transform_vertices (line 1474) | void transform_vertices(TransformType transform_functor,
      method transform_edges (line 1556) | void transform_edges(TransformType transform_functor,
      method parallel_for_vertices (line 1602) | void parallel_for_vertices(std::vector<VertexFunctorType>& accfuncti...
      method parallel_for_edges (line 1632) | void parallel_for_edges(std::vector<EdgeFunctorType>& accfunction) {
      method load (line 1653) | void load(iarchive& arc) {
      method save (line 1669) | void save(oarchive& arc) const {
      method clear (line 1688) | void clear () {
      method load_binary (line 1720) | bool load_binary(const std::string& prefix) {
      method save_binary (line 1785) | bool save_binary(const std::string& prefix) {
      method save_to_posixfs (line 1836) | void save_to_posixfs(const std::string& prefix, Writer writer,
      method save_to_hdfs (line 1913) | void save_to_hdfs(const std::string& prefix, Writer writer,
      method save (line 2091) | void save(const std::string& prefix, Writer writer,
      method save_format (line 2142) | void save_format(const std::string& prefix, const std::string& format,
      method load_from_posixfs (line 2170) | void load_from_posixfs(std::string prefix,
      method load_from_hdfs (line 2228) | void load_from_hdfs(std::string prefix, line_parser_type line_parser) {
      method load (line 2342) | void load(std::string prefix, line_parser_type line_parser) {
      method load_synthetic_powerlaw (line 2380) | void load_synthetic_powerlaw(size_t nverts, bool in_degree = false,
      method load_format (line 2421) | void load_format(const std::string& path, const std::string& format) {
      method vertex_set (line 2459) | static vertex_set empty_set() {
      method vertex_set (line 2466) | static vertex_set complete_set() {
      method vertex_set (line 2471) | vertex_set neighbors(const vertex_set& cur,
      method vertex_set (line 2533) | vertex_set select(FunctionType select_functor,
      method sync_vertex_set_master_to_mirrors (line 2552) | void sync_vertex_set_master_to_mirrors(vertex_set& vset) {
      method vertex_set_size (line 2568) | size_t vertex_set_size(const vertex_set& vset) {
      method vertex_set_empty (line 2585) | bool vertex_set_empty(const vertex_set& vset) {
      type vertex_record (line 2606) | struct vertex_record {
        method vertex_record (line 2616) | vertex_record() :
        method vertex_record (line 2618) | vertex_record(const vertex_id_type& vid) :
        method procid_t (line 2620) | procid_t get_owner () const { return owner; }
        method mirror_type (line 2621) | const mirror_type& mirrors() const { return _mirrors; }
        method num_mirrors (line 2622) | size_t num_mirrors() const { return _mirrors.popcount(); }
        method clear (line 2624) | void clear() {
        method load (line 2628) | void load(iarchive& arc) {
        method save (line 2637) | void save(oarchive& arc) const {
      method local_vertex_type (line 2662) | local_vertex_type l_vertex(lvid_type vid) {
        method local_vertex_type (line 2904) | local_vertex_type(distributed_graph& graph_ref, lvid_type lvid):
        method local_vertex_type (line 2908) | explicit local_vertex_type(vertex_type v) :graph_ref(v.graph_ref),...
        method vertex_data_type (line 2919) | const vertex_data_type& data() const {
        method vertex_data_type (line 2924) | vertex_data_type& data() {
        method num_in_edges (line 2931) | size_t num_in_edges() const {
        method num_out_edges (line 2938) | size_t num_out_edges() const {
        method lvid_type (line 2943) | lvid_type id() const {
        method vertex_id_type (line 2948) | vertex_id_type global_id() const {
        method local_edge_list_type (line 2955) | local_edge_list_type in_edges() {
        method local_edge_list_type (line 2962) | local_edge_list_type out_edges() {
        method procid_t (line 2968) | procid_t owner() const {
        method owned (line 2974) | bool owned() const {
        method global_num_in_edges (line 2981) | size_t global_num_in_edges() const {
        method global_num_out_edges (line 2989) | size_t global_num_out_edges() const {
        method mirror_type (line 2996) | const mirror_type& mirrors() const {
        method num_mirrors (line 3000) | size_t num_mirrors() const {
        method vertex_record (line 3007) | vertex_record& get_vertex_record() {
      method num_replicas (line 2668) | size_t num_replicas() const { return nreplicas; }
      method num_local_vertices (line 2672) | size_t num_local_vertices() const { return local_graph.num_vertices(...
      method num_local_edges (line 2676) | size_t num_local_edges() const { return local_graph.num_edges(); }
      method num_local_own_vertices (line 2680) | size_t num_local_own_vertices() const { return local_own_nverts; }
      method lvid_type (line 2684) | lvid_type local_vid (const vertex_id_type vid) const {
      method vertex_id_type (line 2693) | vertex_id_type global_vid(const lvid_type lvid) const {
      method contains_vertex (line 2703) | bool contains_vertex(const vertex_id_type vid) const {
      method local_edge_list_type (line 2713) | local_edge_list_type l_in_edges(const lvid_type lvid) {
        method local_edge_list_type (line 3077) | local_edge_list_type(distributed_graph& graph_ref,
        method size (line 3081) | size_t size() const { return elist.size(); }
        method local_edge_type (line 3084) | local_edge_type operator[](size_t i) const { return me_functor(eli...
        method iterator (line 3100) | iterator begin() const { return
        method iterator (line 3117) | iterator end() const { return
        method empty (line 3121) | bool empty() const { return elist.empty(); }
      method l_num_in_edges (line 2724) | size_t l_num_in_edges(const lvid_type lvid) const {
      method local_edge_list_type (line 2735) | local_edge_list_type l_out_edges(const lvid_type lvid) {
        method local_edge_list_type (line 3077) | local_edge_list_type(distributed_graph& graph_ref,
        method size (line 3081) | size_t size() const { return elist.size(); }
        method local_edge_type (line 3084) | local_edge_type operator[](size_t i) const { return me_functor(eli...
        method iterator (line 3100) | iterator begin() const { return
        method iterator (line 3117) | iterator end() const { return
        method empty (line 3121) | bool empty() const { return elist.empty(); }
      method l_num_out_edges (line 2746) | size_t l_num_out_edges(const lvid_type lvid) const {
      method procid_t (line 2750) | procid_t procid() const {
      method procid_t (line 2755) | procid_t numprocs() const {
      method distributed_control (line 2759) | distributed_control& dc() {
      method vertex_record (line 2768) | const vertex_record& get_vertex_record(vertex_id_type vid) const {
        method vertex_record (line 2616) | vertex_record() :
        method vertex_record (line 2618) | vertex_record(const vertex_id_type& vid) :
        method procid_t (line 2620) | procid_t get_owner () const { return owner; }
        method mirror_type (line 2621) | const mirror_type& mirrors() const { return _mirrors; }
        method num_mirrors (line 2622) | size_t num_mirrors() const { return _mirrors.popcount(); }
        method clear (line 2624) | void clear() {
        method load (line 2628) | void load(iarchive& arc) {
        method save (line 2637) | void save(oarchive& arc) const {
      method vertex_record (line 2779) | vertex_record& l_get_vertex_record(lvid_type lvid) {
        method vertex_record (line 2616) | vertex_record() :
        method vertex_record (line 2618) | vertex_record(const vertex_id_type& vid) :
        method procid_t (line 2620) | procid_t get_owner () const { return owner; }
        method mirror_type (line 2621) | const mirror_type& mirrors() const { return _mirrors; }
        method num_mirrors (line 2622) | size_t num_mirrors() const { return _mirrors.popcount(); }
        method clear (line 2624) | void clear() {
        method load (line 2628) | void load(iarchive& arc) {
        method save (line 2637) | void save(oarchive& arc) const {
      method vertex_record (line 2787) | const vertex_record& l_get_vertex_record(lvid_type lvid) const {
        method vertex_record (line 2616) | vertex_record() :
        method vertex_record (line 2618) | vertex_record(const vertex_id_type& vid) :
        method procid_t (line 2620) | procid_t get_owner () const { return owner; }
        method mirror_type (line 2621) | const mirror_type& mirrors() const { return _mirrors; }
        method num_mirrors (line 2622) | size_t num_mirrors() const { return _mirrors.popcount(); }
        method clear (line 2624) | void clear() {
        method load (line 2628) | void load(iarchive& arc) {
        method save (line 2637) | void save(oarchive& arc) const {
      method is_master (line 2796) | bool is_master(vertex_id_type vid) const {
      method procid_t (line 2802) | procid_t master(vertex_id_type vid) const {
      method l_is_master (line 2811) | bool l_is_master(lvid_type lvid) const {
      method procid_t (line 2819) | procid_t l_master(lvid_type lvid) const {
      method local_graph_type (line 2828) | local_graph_type& get_local_graph() {
      method local_graph_type (line 2835) | const local_graph_type& get_local_graph() const {
      method synchronize (line 2846) | void synchronize(const vertex_set& vset = complete_set()) {
      type local_vertex_type (line 2900) | struct local_vertex_type {
        method local_vertex_type (line 2904) | local_vertex_type(distributed_graph& graph_ref, lvid_type lvid):
        method local_vertex_type (line 2908) | explicit local_vertex_type(vertex_type v) :graph_ref(v.graph_ref),...
        method vertex_data_type (line 2919) | const vertex_data_type& data() const {
        method vertex_data_type (line 2924) | vertex_data_type& data() {
        method num_in_edges (line 2931) | size_t num_in_edges() const {
        method num_out_edges (line 2938) | size_t num_out_edges() const {
        method lvid_type (line 2943) | lvid_type id() const {
        method vertex_id_type (line 2948) | vertex_id_type global_id() const {
        method local_edge_list_type (line 2955) | local_edge_list_type in_edges() {
        method local_edge_list_type (line 2962) | local_edge_list_type out_edges() {
        method procid_t (line 2968) | procid_t owner() const {
        method owned (line 2974) | bool owned() const {
        method global_num_in_edges (line 2981) | size_t global_num_in_edges() const {
        method global_num_out_edges (line 2989) | size_t global_num_out_edges() const {
        method mirror_type (line 2996) | const mirror_type& mirrors() const {
        method num_mirrors (line 3000) | size_t num_mirrors() const {
        method vertex_record (line 3007) | vertex_record& get_vertex_record() {
      class local_edge_type (line 3015) | class local_edge_type {
        method local_edge_type (line 3020) | local_edge_type(distributed_graph& graph_ref,
        method local_edge_type (line 3025) | explicit local_edge_type(edge_type ge) :graph_ref(ge.graph_ref),e(...
        method local_vertex_type (line 3033) | local_vertex_type source() const { return local_vertex_type(graph_...
        method local_vertex_type (line 3036) | local_vertex_type target() const { return local_vertex_type(graph_...
        method edge_data_type (line 3041) | const edge_data_type& data() const { return e.data(); }
        method edge_data_type (line 3044) | edge_data_type& data() { return e.data(); }
        method edge_id_type (line 3047) | edge_id_type id() const { return e.id(); }
      type make_local_edge_type_functor (line 3054) | struct make_local_edge_type_functor {
        method make_local_edge_type_functor (line 3058) | make_local_edge_type_functor(distributed_graph& graph_ref):
        method result_type (line 3060) | result_type operator() (const argument_type et) const {
      type local_edge_list_type (line 3069) | struct local_edge_list_type {
        method local_edge_list_type (line 3077) | local_edge_list_type(distributed_graph& graph_ref,
        method size (line 3081) | size_t size() const { return elist.size(); }
        method local_edge_type (line 3084) | local_edge_type operator[](size_t i) const { return me_functor(eli...
        method iterator (line 3100) | iterator begin() const { return
        method iterator (line 3117) | iterator end() const { return
        method empty (line 3121) | bool empty() const { return elist.empty(); }
      method get_rpc_obj_id (line 3134) | size_t get_rpc_obj_id() {
      method set_ingress_method (line 3179) | void set_ingress_method(const std::string& method,
      method load_from_stream (line 3231) | bool load_from_stream(std::string filename, Fstream& fin,
      method save_vertex_to_stream (line 3259) | void save_vertex_to_stream(vertex_type& vertex, Fstream& fout, Write...
      method save_edge_to_stream (line 3265) | void save_edge_to_stream(edge_type& edge, Fstream& fout, Writer writ...
      method save_bintsv4_to_stream (line 3271) | void save_bintsv4_to_stream(std::ostream& out) {
      method load_bintsv4_from_stream (line 3291) | bool load_bintsv4_from_stream(std::istream& in) {
      method save_direct (line 3318) | void save_direct(const std::string& prefix, bool gzip,
      method load_direct_from_posixfs (line 3370) | void load_direct_from_posixfs(std::string prefix,
      method load_direct_from_hdfs (line 3423) | void load_direct_from_hdfs(std::string prefix,
      method load_direct (line 3464) | void load_direct(std::string prefix,

FILE: src/graphlab/graph/dynamic_local_graph.hpp
  type graphlab (line 67) | namespace graphlab {
    class dynamic_local_graph (line 69) | class dynamic_local_graph {
      class edge_iterator (line 82) | class edge_iterator
      class vertex_type (line 90) | class vertex_type
      class edge_type (line 95) | class edge_type
      method dynamic_local_graph (line 101) | dynamic_local_graph()  { }
      method dynamic_local_graph (line 104) | dynamic_local_graph(size_t nverts) :
      method is_dynamic (line 109) | static bool is_dynamic() {
      method clear (line 116) | void clear() {
      method num_vertices (line 127) | size_t num_vertices() const {
      method num_edges (line 132) | size_t num_edges() const {
      method add_vertex (line 142) | void add_vertex(lvid_type vid, const VertexData& vdata = VertexData(...
      method reserve (line 155) | void reserve(size_t num_vertices) {
      method resize (line 164) | void resize(size_t num_vertices ) {
      method reserve_edge_space (line 169) | void reserve_edge_space(size_t n) {
      method edge_id_type (line 176) | edge_id_type add_edge(lvid_type source, lvid_type target,
      method add_edges (line 198) | void add_edges(const std::vector<lvid_type>& src_arr,
      method vertex_type (line 230) | vertex_type vertex(lvid_type vid) {
      method vertex_type (line 236) | const vertex_type vertex(lvid_type vid) const {
      method VertexData (line 242) | VertexData& vertex_data(lvid_type v) {
      method VertexData (line 248) | const VertexData& vertex_data(lvid_type v) const {
      method finalize (line 261) | void finalize() {
      method load (line 350) | void load(iarchive& arc) {
      method save (line 360) | void save(oarchive& arc) const {
      method swap (line 369) | void swap(dynamic_local_graph& other) {
      method load (line 378) | void load(const std::string& filename) {
      method save (line 388) | void save(const std::string& filename) const {
      method save_adjacency (line 403) | void save_adjacency(const std::string& filename) const {
      method num_in_edges (line 428) | size_t num_in_edges(const lvid_type v) const {
      method num_out_edges (line 435) | size_t num_out_edges(const lvid_type v) const {
      method edge_list_type (line 442) | edge_list_type in_edges(lvid_type v) {
      method edge_list_type (line 453) | edge_list_type out_edges(lvid_type v) {
      method EdgeData (line 465) | EdgeData& edge_data(edge_id_type eid) {
      method EdgeData (line 473) | const EdgeData& edge_data(edge_id_type eid) const {
      method estimate_sizeof (line 481) | size_t estimate_sizeof() const {
      method lvid_type (line 494) | const lvid_type maxlvid() const {
    class dynamic_local_graph<VertexData, EdgeData>::vertex_type (line 557) | class dynamic_local_graph<VertexData, EdgeData>::vertex_type {
      method vertex_type (line 559) | vertex_type(dynamic_local_graph& lgraph_ref, lvid_type vid):lgraph_r...
      method vertex_data_type (line 562) | const vertex_data_type& data() const {
      method vertex_data_type (line 566) | vertex_data_type& data() {
      method num_in_edges (line 570) | size_t num_in_edges() const {
      method num_out_edges (line 574) | size_t num_out_edges() const {
      method lvid_type (line 578) | lvid_type id() const {
      method edge_list_type (line 582) | edge_list_type in_edges() {
      method edge_list_type (line 586) | edge_list_type out_edges() {
    class dynamic_local_graph<VertexData, EdgeData>::edge_type (line 595) | class dynamic_local_graph<VertexData, EdgeData>::edge_type {
      method edge_type (line 597) | edge_type(dynamic_local_graph& lgraph_ref, lvid_type _source, lvid_t...
      method edge_data_type (line 601) | const edge_data_type& data() const {
      method edge_data_type (line 605) | edge_data_type& data() {
      method vertex_type (line 609) | vertex_type source() const {
      method vertex_type (line 613) | vertex_type target() const {
      method edge_id_type (line 617) | edge_id_type id() const { return _eid; }
    class dynamic_local_graph<VertexData, EdgeData>::edge_iterator (line 627) | class dynamic_local_graph<VertexData, EdgeData>::edge_iterator :
      type list_type (line 633) | enum list_type {CSR, CSC}
      method edge_iterator (line 635) | edge_iterator(dynamic_local_graph& lgraph_ref, list_type _type,
      method increment (line 642) | void increment() {
      method equal (line 645) | bool equal(const edge_iterator& other) const
      method edge_type (line 650) | edge_type dereference() const {
      method advance (line 653) | void advance(int n) {
      method distance_to (line 656) | ptrdiff_t distance_to(const edge_iterator& other) const {
      method edge_type (line 660) | edge_type make_value() const {
  type graphlab (line 555) | namespace graphlab {
    class dynamic_local_graph (line 69) | class dynamic_local_graph {
      class edge_iterator (line 82) | class edge_iterator
      class vertex_type (line 90) | class vertex_type
      class edge_type (line 95) | class edge_type
      method dynamic_local_graph (line 101) | dynamic_local_graph()  { }
      method dynamic_local_graph (line 104) | dynamic_local_graph(size_t nverts) :
      method is_dynamic (line 109) | static bool is_dynamic() {
      method clear (line 116) | void clear() {
      method num_vertices (line 127) | size_t num_vertices() const {
      method num_edges (line 132) | size_t num_edges() const {
      method add_vertex (line 142) | void add_vertex(lvid_type vid, const VertexData& vdata = VertexData(...
      method reserve (line 155) | void reserve(size_t num_vertices) {
      method resize (line 164) | void resize(size_t num_vertices ) {
      method reserve_edge_space (line 169) | void reserve_edge_space(size_t n) {
      method edge_id_type (line 176) | edge_id_type add_edge(lvid_type source, lvid_type target,
      method add_edges (line 198) | void add_edges(const std::vector<lvid_type>& src_arr,
      method vertex_type (line 230) | vertex_type vertex(lvid_type vid) {
      method vertex_type (line 236) | const vertex_type vertex(lvid_type vid) const {
      method VertexData (line 242) | VertexData& vertex_data(lvid_type v) {
      method VertexData (line 248) | const VertexData& vertex_data(lvid_type v) const {
      method finalize (line 261) | void finalize() {
      method load (line 350) | void load(iarchive& arc) {
      method save (line 360) | void save(oarchive& arc) const {
      method swap (line 369) | void swap(dynamic_local_graph& other) {
      method load (line 378) | void load(const std::string& filename) {
      method save (line 388) | void save(const std::string& filename) const {
      method save_adjacency (line 403) | void save_adjacency(const std::string& filename) const {
      method num_in_edges (line 428) | size_t num_in_edges(const lvid_type v) const {
      method num_out_edges (line 435) | size_t num_out_edges(const lvid_type v) const {
      method edge_list_type (line 442) | edge_list_type in_edges(lvid_type v) {
      method edge_list_type (line 453) | edge_list_type out_edges(lvid_type v) {
      method EdgeData (line 465) | EdgeData& edge_data(edge_id_type eid) {
      method EdgeData (line 473) | const EdgeData& edge_data(edge_id_type eid) const {
      method estimate_sizeof (line 481) | size_t estimate_sizeof() const {
      method lvid_type (line 494) | const lvid_type maxlvid() const {
    class dynamic_local_graph<VertexData, EdgeData>::vertex_type (line 557) | class dynamic_local_graph<VertexData, EdgeData>::vertex_type {
      method vertex_type (line 559) | vertex_type(dynamic_local_graph& lgraph_ref, lvid_type vid):lgraph_r...
      method vertex_data_type (line 562) | const vertex_data_type& data() const {
      method vertex_data_type (line 566) | vertex_data_type& data() {
      method num_in_edges (line 570) | size_t num_in_edges() const {
      method num_out_edges (line 574) | size_t num_out_edges() const {
      method lvid_type (line 578) | lvid_type id() const {
      method edge_list_type (line 582) | edge_list_type in_edges() {
      method edge_list_type (line 586) | edge_list_type out_edges() {
    class dynamic_local_graph<VertexData, EdgeData>::edge_type (line 595) | class dynamic_local_graph<VertexData, EdgeData>::edge_type {
      method edge_type (line 597) | edge_type(dynamic_local_graph& lgraph_ref, lvid_type _source, lvid_t...
      method edge_data_type (line 601) | const edge_data_type& data() const {
      method edge_data_type (line 605) | edge_data_type& data() {
      method vertex_type (line 609) | vertex_type source() const {
      method vertex_type (line 613) | vertex_type target() const {
      method edge_id_type (line 617) | edge_id_type id() const { return _eid; }
    class dynamic_local_graph<VertexData, EdgeData>::edge_iterator (line 627) | class dynamic_local_graph<VertexData, EdgeData>::edge_iterator :
      type list_type (line 633) | enum list_type {CSR, CSC}
      method edge_iterator (line 635) | edge_iterator(dynamic_local_graph& lgraph_ref, list_type _type,
      method increment (line 642) | void increment() {
      method equal (line 645) | bool equal(const edge_iterator& other) const
      method edge_type (line 650) | edge_type dereference() const {
      method advance (line 653) | void advance(int n) {
      method distance_to (line 656) | ptrdiff_t distance_to(const edge_iterator& other) const {
      method edge_type (line 660) | edge_type make_value() const {
  type std (line 681) | namespace std {
    function swap (line 686) | inline void swap(graphlab::dynamic_local_graph<VertexData,EdgeData>& a,

FILE: src/graphlab/graph/graph_basic_types.hpp
  type graphlab (line 29) | namespace graphlab {
    type edge_dir_type (line 54) | enum edge_dir_type {

FILE: src/graphlab/graph/graph_gather_apply.hpp
  type graphlab (line 38) | namespace graphlab {
    class graph_gather_apply (line 40) | class graph_gather_apply {
      method run_synchronous (line 230) | void run_synchronous(MemberFunction member_fun, const vertex_set& vs...
    function foreach (line 407) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 458) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 501) | foreach(size_t lvid_block_offset, local_bitset) {
    function foreach (line 547) | foreach(const procid_t& mirror, vertex.mirrors()) {
    function foreach (line 558) | foreach(const vid_gather_pair_type& pair, buffer) {

FILE: src/graphlab/graph/graph_hash.hpp
  type graphlab (line 29) | namespace graphlab {
    type graph_hash (line 30) | namespace graph_hash {
      function hash_vertex (line 32) | inline static size_t hash_vertex (const vertex_id_type vid) {
      function hash_edge (line 37) | inline static size_t hash_edge (const std::pair<vertex_id_type, vert...

FILE: src/graphlab/graph/graph_ops.hpp
  type graphlab (line 45) | namespace graphlab {
    type graph_ops (line 48) | namespace graph_ops {
      function topological_sort (line 59) | bool topological_sort(const distributed_graph<VertexType, EdgeType>&...
      function num_neighbors (line 94) | size_t num_neighbors(const distributed_graph<VertexType, EdgeType>& ...
      function neighbors (line 119) | void neighbors(const distributed_graph<VertexType, EdgeType>& graph,
      function save_metis_structure (line 151) | bool save_metis_structure(const std::string& filename,
      function save_edge_list_structure (line 183) | bool save_edge_list_structure(const std::string& filename,
      function save_zoltan_hypergraph_structure (line 202) | bool save_zoltan_hypergraph_structure(const std::string& filename,

FILE: src/graphlab/graph/graph_storage_deprecated.hpp
  type graphlab (line 74) | namespace graphlab {
    class graph_storage (line 77) | class graph_storage {
      class edge_type (line 99) | class edge_type {
        method edge_type (line 101) | edge_type () : _source(-1), _target(-1), _eid(-1) {}
        method edge_type (line 102) | edge_type(lvid_type _source, lvid_type _target, edge_id_type _eid)
        method is_empty (line 105) | inline bool is_empty() { return _eid == -1; }
        method lvid_type (line 106) | lvid_type source() const { return _source; }
        method lvid_type (line 107) | lvid_type target() const { return _target; }
        method edge_id_type (line 108) | edge_id_type id() const { return _eid; }
      method csr_zip_iterator (line 121) | csr_zip_iterator make_csr_zip_iterator(typename csr_type::iterator i...
      type make_edge_type_csr_functor (line 127) | struct make_edge_type_csr_functor {
        method make_edge_type_csr_functor (line 131) | make_edge_type_csr_functor() : sourceid(-1) { }
        method make_edge_type_csr_functor (line 133) | make_edge_type_csr_functor(lvid_type sourceid) : sourceid(sourceid...
        method result_type (line 135) | result_type operator() (argument_type arg) const {
      type make_edge_type_csc_functor (line 143) | struct make_edge_type_csc_functor {
        method make_edge_type_csc_functor (line 146) | make_edge_type_csc_functor() : destid(-1) {}
        method make_edge_type_csc_functor (line 148) | make_edge_type_csc_functor(lvid_type destid) : destid(destid) { }
        method result_type (line 150) | result_type operator() (argument_type arg) const {
      class edge_iterator (line 161) | class edge_iterator :
        method edge_iterator (line 168) | edge_iterator() : _type(UNDEFINED) {}
        method edge_iterator (line 169) | edge_iterator(csc_edge_iterator iter) : _type(CSC), csc_iter(iter) {}
        method edge_iterator (line 170) | edge_iterator(csr_edge_iterator iter) : _type(CSR), csr_iter(iter) {}
        method increment (line 175) | void increment() {
        method equal (line 182) | bool equal(const edge_iterator& other) const
        method edge_type (line 191) | edge_type dereference() const {
        method decrement (line 198) | void decrement() {
        method advance (line 205) | void advance(int n) {
        method distance_to (line 212) | int distance_to(const edge_iterator& other) const {
        type list_type (line 220) | enum list_type {CSR, CSC, UNDEFINED}
      class edge_list (line 226) | class edge_list {
        method edge_list (line 228) | edge_list(edge_iterator _begin, edge_iterator _end) :
        method size (line 234) | inline size_t size() const {
        method edge_type (line 238) | inline edge_type operator[](size_t i) const {
        method is_empty (line 242) | bool is_empty() const { return size() == 0; }
        method iterator (line 244) | iterator begin() const { return _begin; }
        method iterator (line 246) | iterator end() const { return _end; }
      method graph_storage (line 255) | graph_storage() {  }
      method num_edges (line 259) | size_t num_edges() const { return _edata_storage.size(); }
      method num_vertices (line 262) | size_t num_vertices() const { return _csr_storage.num_keys(); }
      method num_in_edges (line 265) | size_t num_in_edges (const lvid_type v) const {
      method num_out_edges (line 270) | size_t num_out_edges (const lvid_type v) const {
      method edge_list (line 275) | edge_list in_edges(const lvid_type v) {
        method edge_list (line 228) | edge_list(edge_iterator _begin, edge_iterator _end) :
        method size (line 234) | inline size_t size() const {
        method edge_type (line 238) | inline edge_type operator[](size_t i) const {
        method is_empty (line 242) | bool is_empty() const { return size() == 0; }
        method iterator (line 244) | iterator begin() const { return _begin; }
        method iterator (line 246) | iterator end() const { return _end; }
      method edge_list (line 286) | edge_list out_edges(const lvid_type v) {
        method edge_list (line 228) | edge_list(edge_iterator _begin, edge_iterator _end) :
        method size (line 234) | inline size_t size() const {
        method edge_type (line 238) | inline edge_type operator[](size_t i) const {
        method is_empty (line 242) | bool is_empty() const { return size() == 0; }
        method iterator (line 244) | iterator begin() const { return _begin; }
        method iterator (line 246) | iterator end() const { return _end; }
      method EdgeData (line 303) | EdgeData& edge_data(edge_id_type eid) {
      method EdgeData (line 308) | const EdgeData& edge_data(edge_id_type eid) const {
      method finalize (line 319) | void finalize(local_edge_buffer<VertexData, EdgeData> &edges) {
      method clear (line 411) | void clear() {
      method estimate_sizeof (line 416) | size_t estimate_sizeof() const {
      method load (line 429) | void load(iarchive& arc) {
      method save (line 437) | void save(oarchive& arc) const {
      method swap (line 444) | void swap(graph_storage& other) {
  type std (line 452) | namespace std {
    function swap (line 454) | inline void swap(graphlab::graph_storage<VertexData,EdgeData>& a,

FILE: src/graphlab/graph/graph_vertex_join.hpp
  type graphlab (line 30) | namespace graphlab {
    class graph_vertex_join (line 171) | class graph_vertex_join {
      type injective_join_index (line 198) | struct injective_join_index {
      method graph_vertex_join (line 208) | graph_vertex_join(distributed_control& dc,
      method prepare_injective_join (line 255) | void prepare_injective_join(LeftEmitKey left_emit_key,
      method left_injective_join (line 304) | void left_injective_join(JoinOp join_op) {
      method right_injective_join (line 330) | void right_injective_join(JoinOp join_op) {
      method reset_and_fill_injective_index (line 338) | void reset_and_fill_injective_index(injective_join_index& idx,
      method compute_injective_join (line 365) | void compute_injective_join() {
      method get_procs_with_keys (line 459) | std::vector<std::vector<size_t> >
      method injective_join (line 475) | void injective_join(injective_join_index& target,

FILE: src/graphlab/graph/ingress/distributed_batch_ingress.hpp
  type graphlab (line 36) | namespace graphlab {
    class distributed_graph (line 38) | class distributed_graph
    class distributed_batch_ingress (line 41) | class distributed_batch_ingress :
      method vid_to_dht_entry_with_readlock (line 71) | size_t vid_to_dht_entry_with_readlock(vertex_id_type vid) {
      method distributed_batch_ingress (line 108) | distributed_batch_ingress(distributed_control& dc, graph_type& graph,
      method add_edge (line 124) | void add_edge(vertex_id_type source, vertex_id_type target, const Ed...
      method finalize (line 139) | void finalize() {
      method add_edges (line 151) | void add_edges(const std::vector<vertex_id_type>& source_arr,
      method block_add_degree_counts (line 238) | void block_add_degree_counts (procid_t pid, std::vector<vertex_id_ty...
      method dht_degree_table_type (line 250) | dht_degree_table_type
      method assign_edges (line 265) | void assign_edges(std::vector<std::vector<vertex_id_type> >& proc_src,
      method flush (line 320) | void flush() {
      method size (line 340) | size_t size() { return num_edges; }
      method is_full (line 343) | bool is_full() { return size() >= bufsize; }

FILE: src/graphlab/graph/ingress/distributed_constrained_batch_ingress.hpp
  type graphlab (line 36) | namespace graphlab {
    class distributed_graph (line 38) | class distributed_graph
    class distributed_constrained_batch_ingress (line 41) | class distributed_constrained_batch_ingress :
      method vid_to_dht_entry_with_readlock (line 71) | size_t vid_to_dht_entry_with_readlock(vertex_id_type vid) {
      method distributed_constrained_batch_ingress (line 109) | distributed_constrained_batch_ingress(distributed_control& dc, graph...
      method add_edge (line 122) | void add_edge(vertex_id_type source, vertex_id_type target, const Ed...
      method finalize (line 135) | void finalize() {
      method add_edges (line 147) | void add_edges(const std::vector<vertex_id_type>& source_arr,
      method block_add_degree_counts (line 232) | void block_add_degree_counts (procid_t pid, std::vector<vertex_id_ty...
      method dht_degree_table_type (line 242) | dht_degree_table_type
      method assign_edges (line 255) | void assign_edges(std::vector<std::vector<vertex_id_type> >& proc_src,
      method flush (line 310) | void flush() {
      method size (line 330) | size_t size() { return num_edges; }
      method is_full (line 333) | bool is_full() { return size() >= bufsize; }
      method procid_t (line 336) | procid_t get_master (vertex_id_type vid) {

FILE: src/graphlab/graph/ingress/distributed_constrained_oblivious_ingress.hpp
  type graphlab (line 38) | namespace graphlab {
    class distributed_graph (line 40) | class distributed_graph
    class distributed_constrained_oblivious_ingress (line 46) | class distributed_constrained_oblivious_ingress:
      method distributed_constrained_oblivious_ingress (line 78) | distributed_constrained_oblivious_ingress(distributed_control& dc, g...
      method add_edge (line 89) | void add_edge(vertex_id_type source, vertex_id_type target,
      method finalize (line 101) | virtual void finalize() {
      method procid_t (line 107) | procid_t get_master (vertex_id_type vid) {

FILE: src/graphlab/graph/ingress/distributed_constrained_random_ingress.hpp
  type graphlab (line 37) | namespace graphlab {
    class distributed_graph (line 39) | class distributed_graph
    class distributed_constrained_random_ingress (line 45) | class distributed_constrained_random_ingress :
      method distributed_constrained_random_ingress (line 61) | distributed_constrained_random_ingress(distributed_control& dc, grap...
      method add_edge (line 72) | void add_edge(vertex_id_type source, vertex_id_type target,

FILE: src/graphlab/graph/ingress/distributed_hdrf_ingress.hpp
  type graphlab (line 36) | namespace graphlab {
    class distributed_graph (line 38) | class distributed_graph
    class distributed_hdrf_ingress (line 41) | class distributed_hdrf_ingress:
      method distributed_hdrf_ingress (line 76) | distributed_hdrf_ingress(distributed_control& dc, graph_type& graph,...
      method add_edge (line 86) | void add_edge(vertex_id_type source, vertex_id_type target,
      method finalize (line 99) | virtual void finalize() {

FILE: src/graphlab/graph/ingress/distributed_identity_ingress.hpp
  type graphlab (line 35) | namespace graphlab {
    class distributed_graph (line 37) | class distributed_graph
    class distributed_identity_ingress (line 43) | class distributed_identity_ingress :
      method distributed_identity_ingress (line 55) | distributed_identity_ingress(distributed_control& dc, graph_type& gr...
      method add_edge (line 62) | void add_edge(vertex_id_type source, vertex_id_type target,

FILE: src/graphlab/graph/ingress/distributed_ingress_base.hpp
  type graphlab (line 34) | namespace graphlab {
    class distributed_graph (line 40) | class distributed_graph
    class distributed_ingress_base (line 43) | class distributed_ingress_base {
      type vertex_buffer_record (line 61) | struct vertex_buffer_record {
        method vertex_buffer_record (line 64) | vertex_buffer_record(vertex_id_type vid = -1,
        method load (line 67) | void load(iarchive& arc) { arc >> vid >> vdata; }
        method save (line 68) | void save(oarchive& arc) const { arc << vid << vdata; }
      type edge_buffer_record (line 73) | struct edge_buffer_record {
        method edge_buffer_record (line 76) | edge_buffer_record(const vertex_id_type& source = vertex_id_type(-1),
        method load (line 80) | void load(iarchive& arc) { arc >> source >> target >> edata; }
        method save (line 81) | void save(oarchive& arc) const { arc << source << target << edata; }
      type vertex_negotiator_record (line 86) | struct vertex_negotiator_record {
        method vertex_negotiator_record (line 91) | vertex_negotiator_record() : num_in_edges(0), num_out_edges(0), ha...
        method load (line 93) | void load(iarchive& arc) {
        method save (line 96) | void save(oarchive& arc) const {
        method vertex_negotiator_record (line 100) | vertex_negotiator_record operator+=(const vertex_negotiator_record...
      method distributed_ingress_base (line 115) | distributed_ingress_base(distributed_control& dc, graph_type& graph) :
      method add_edge (line 130) | virtual void add_edge(vertex_id_type source, vertex_id_type target,
      method add_vertex (line 144) | virtual void add_vertex(vertex_id_type vid, const VertexData& vdata)  {
      method set_duplicate_vertex_strategy (line 155) | void set_duplicate_vertex_strategy(
      method finalize (line 181) | virtual void finalize() {
      method exchange_global_info (line 514) | void exchange_global_info () {
      method vertex_negotiator_record (line 562) | vertex_negotiator_record finalize_gather(lvid_type& lvid, graph_type...
        method vertex_negotiator_record (line 91) | vertex_negotiator_record() : num_in_edges(0), num_out_edges(0), ha...
        method load (line 93) | void load(iarchive& arc) {
        method save (line 96) | void save(oarchive& arc) const {
        method vertex_negotiator_record (line 100) | vertex_negotiator_record operator+=(const vertex_negotiator_record...
      method finalize_apply (line 577) | void finalize_apply(lvid_type lvid, const vertex_negotiator_record& ...

FILE: src/graphlab/graph/ingress/distributed_oblivious_ingress.hpp
  type graphlab (line 37) | namespace graphlab {
    class distributed_graph (line 39) | class distributed_graph
    class distributed_oblivious_ingress (line 45) | class distributed_oblivious_ingress:
      method distributed_oblivious_ingress (line 75) | distributed_oblivious_ingress(distributed_control& dc, graph_type& g...
      method add_edge (line 85) | void add_edge(vertex_id_type source, vertex_id_type target,
      method finalize (line 102) | virtual void finalize() {

FILE: src/graphlab/graph/ingress/distributed_random_ingress.hpp
  type graphlab (line 35) | namespace graphlab {
    class distributed_graph (line 37) | class distributed_graph
    class distributed_random_ingress (line 43) | class distributed_random_ingress :
      method distributed_random_ingress (line 56) | distributed_random_ingress(distributed_control& dc, graph_type& grap...
      method add_edge (line 63) | void add_edge(vertex_id_type source, vertex_id_type target,

FILE: src/graphlab/graph/ingress/ingress_edge_decision.hpp
  type graphlab (line 32) | namespace graphlab {
    class distributed_graph (line 34) | class distributed_graph
    class ingress_edge_decision (line 37) | class ingress_edge_decision {
      method ingress_edge_decision (line 46) | ingress_edge_decision(distributed_control& dc) { }
      method procid_t (line 49) | procid_t edge_to_proc_random (const vertex_id_type source,
      method procid_t (line 59) | procid_t edge_to_proc_random (const vertex_id_type source,
      method procid_t (line 75) | procid_t edge_to_proc_greedy (const vertex_id_type source,
      method procid_t (line 127) | procid_t edge_to_proc_greedy (const vertex_id_type source,
      method procid_t (line 192) | procid_t edge_to_proc_hdrf (const vertex_id_type source,

FILE: src/graphlab/graph/ingress/sharding_constraint.hpp
  type graphlab (line 53) | namespace graphlab {
    class sharding_constraint (line 54) | class sharding_constraint {
      method is_grid_compatible (line 62) | static bool is_grid_compatible(size_t num_shards, int& nrow, int& nc...
      method is_pds_compatible (line 73) | static bool is_pds_compatible(size_t num_shards, int& p) {
      method sharding_constraint (line 79) | sharding_constraint(size_t num_shards, std::string method) {
      method get_neighbors (line 101) | bool get_neighbors (procid_t shard, std::vector<procid_t>& neighbors) {
      method make_grid_constraint (line 116) | void make_grid_constraint() {
      method make_pds_constraint (line 141) | void make_pds_constraint() {
      method compute_neighbors (line 165) | bool compute_neighbors(procid_t shardi, procid_t shardj, std::vector...

FILE: src/graphlab/graph/local_edge_buffer.hpp
  type graphlab (line 30) | namespace graphlab {
    class local_edge_buffer (line 34) | class local_edge_buffer {
      method local_edge_buffer (line 40) | local_edge_buffer() {}
      method reserve_edge_space (line 41) | void reserve_edge_space(size_t n) {
      method add_edge (line 47) | void add_edge(lvid_type source, lvid_type target, EdgeData _data) {
      method add_block_edges (line 53) | void add_block_edges(const std::vector<lvid_type>& src_arr,
      method clear (line 61) | void clear() {
      method size (line 67) | size_t size() const {
      method estimate_sizeof (line 71) | size_t estimate_sizeof() const {

FILE: src/graphlab/graph/local_graph.hpp
  type graphlab (line 66) | namespace graphlab {
    class local_graph (line 69) | class local_graph {
      class edge_type (line 81) | class edge_type
        method edge_type (line 134) | edge_type(local_graph& lgraph_ref, lvid_type _source, lvid_type _t...
        method edge_data_type (line 138) | const edge_data_type& data() const {
        method edge_data_type (line 142) | edge_data_type& data() {
        method vertex_type (line 146) | vertex_type source() const {
        method vertex_type (line 150) | vertex_type target() const {
        method edge_id_type (line 154) | edge_id_type id() const { return _eid; }
      class vertex_type (line 82) | class vertex_type
        method vertex_type (line 95) | vertex_type(local_graph& lgraph_ref, lvid_type vid):lgraph_ref(lgr...
        method vertex_data_type (line 98) | const vertex_data_type& data() const {
        method vertex_data_type (line 102) | vertex_data_type& data() {
        method num_in_edges (line 106) | size_t num_in_edges() const {
        method num_out_edges (line 110) | size_t num_out_edges() const {
        method lvid_type (line 114) | lvid_type id() const {
        method edge_list_type (line 118) | edge_list_type in_edges() {
        method edge_list_type (line 122) | edge_list_type out_edges() {
      class edge_iterator (line 85) | class edge_iterator
        method edge_iterator (line 623) | edge_iterator(local_graph& lgraph_ref,
        method edge_iterator (line 626) | edge_iterator(local_graph& lgraph_ref,
        method increment (line 633) | void increment() {
        method equal (line 640) | bool equal(const edge_iterator& other) const
        method edge_type (line 649) | edge_type dereference() const {
        method decrement (line 652) | void decrement() {
        method advance (line 659) | void advance(int n) {
        method distance_to (line 666) | ptrdiff_t distance_to(const edge_iterator& other) const {
        method edge_type (line 674) | edge_type make_value() const {
        type list_type (line 692) | enum list_type {CSR, CSC}
      class vertex_type (line 93) | class vertex_type {
        method vertex_type (line 95) | vertex_type(local_graph& lgraph_ref, lvid_type vid):lgraph_ref(lgr...
        method vertex_data_type (line 98) | const vertex_data_type& data() const {
        method vertex_data_type (line 102) | vertex_data_type& data() {
        method num_in_edges (line 106) | size_t num_in_edges() const {
        method num_out_edges (line 110) | size_t num_out_edges() const {
        method lvid_type (line 114) | lvid_type id() const {
        method edge_list_type (line 118) | edge_list_type in_edges() {
        method edge_list_type (line 122) | edge_list_type out_edges() {
      class edge_type (line 132) | class edge_type {
        method edge_type (line 134) | edge_type(local_graph& lgraph_ref, lvid_type _source, lvid_type _t...
        method edge_data_type (line 138) | const edge_data_type& data() const {
        method edge_data_type (line 142) | edge_data_type& data() {
        method vertex_type (line 146) | vertex_type source() const {
        method vertex_type (line 150) | vertex_type target() const {
        method edge_id_type (line 154) | edge_id_type id() const { return _eid; }
      method local_graph (line 168) | local_graph() : finalized(false) { }
      method local_graph (line 171) | local_graph(size_t nverts) :
      method is_dynamic (line 177) | static bool is_dynamic() {
      method clear (line 184) | void clear() {
      method finalize (line 203) | void finalize() {
      method num_vertices (line 284) | size_t num_vertices() const {
      method num_edges (line 289) | size_t num_edges() const {
      method add_vertex (line 298) | void add_vertex(lvid_type vid,
      method reserve (line 312) | void reserve(size_t num_vertices) {
      method resize (line 321) | void resize(size_t num_vertices ) {
      method reserve_edge_space (line 326) | void reserve_edge_space(size_t n) {
      method edge_id_type (line 333) | edge_id_type add_edge(lvid_type source, lvid_type target,
      method add_edges (line 361) | void add_edges(const std::vector<lvid_type>& src_arr,
      method vertex_type (line 397) | vertex_type vertex(lvid_type vid) {
        method vertex_type (line 95) | vertex_type(local_graph& lgraph_ref, lvid_type vid):lgraph_ref(lgr...
        method vertex_data_type (line 98) | const vertex_data_type& data() const {
        method vertex_data_type (line 102) | vertex_data_type& data() {
        method num_in_edges (line 106) | size_t num_in_edges() const {
        method num_out_edges (line 110) | size_t num_out_edges() const {
        method lvid_type (line 114) | lvid_type id() const {
        method edge_list_type (line 118) | edge_list_type in_edges() {
        method edge_list_type (line 122) | edge_list_type out_edges() {
      method vertex_type (line 403) | const vertex_type vertex(lvid_type vid) const {
        method vertex_type (line 95) | vertex_type(local_graph& lgraph_ref, lvid_type vid):lgraph_ref(lgr...
        method vertex_data_type (line 98) | const vertex_data_type& data() const {
        method vertex_data_type (line 102) | vertex_data_type& data() {
        method num_in_edges (line 106) | size_t num_in_edges() const {
        method num_out_edges (line 110) | size_t num_out_edges() const {
        method lvid_type (line 114) | lvid_type id() const {
        method edge_list_type (line 118) | edge_list_type in_edges() {
        method edge_list_type (line 122) | edge_list_type out_edges() {
      method VertexData (line 409) | VertexData& vertex_data(lvid_type v) {
      method VertexData (line 415) | const VertexData& vertex_data(lvid_type v) const {
      method load (line 421) | void load(iarchive& arc) {
      method save (line 432) | void save(oarchive& arc) const {
      method swap (line 442) | void swap(local_graph& other) {
      method load (line 453) | void load(const std::string& filename) {
      method save (line 463) | void save(const std::string& filename) const {
      method save_adjacency (line 478) | void save_adjacency(const std::string& filename) const {
      method num_in_edges (line 503) | size_t num_in_edges(const lvid_type v) const {
      method num_out_edges (line 511) | size_t num_out_edges(const lvid_type v) const {
      method edge_list_type (line 519) | edge_list_type in_edges(lvid_type v) {
      method edge_list_type (line 528) | edge_list_type out_edges(lvid_type v) {
      method EdgeData (line 554) | EdgeData& edge_data(edge_id_type eid) {
      method EdgeData (line 562) | const EdgeData& edge_data(edge_id_type eid) const {
      method estimate_sizeof (line 570) | size_t estimate_sizeof() const {
      method lvid_type (line 588) | const lvid_type maxlvid() const {
      class edge_iterator (line 616) | class edge_iterator :
        method edge_iterator (line 623) | edge_iterator(local_graph& lgraph_ref,
        method edge_iterator (line 626) | edge_iterator(local_graph& lgraph_ref,
        method increment (line 633) | void increment() {
        method equal (line 640) | bool equal(const edge_iterator& other) const
        method edge_type (line 649) | edge_type dereference() const {
        method decrement (line 652) | void decrement() {
        method advance (line 659) | void advance(int n) {
        method distance_to (line 666) | ptrdiff_t distance_to(const edge_iterator& other) const {
        method edge_type (line 674) | edge_type make_value() const {
        type list_type (line 692) | enum list_type {CSR, CSC}
  type std (line 748) | namespace std {
    function swap (line 753) | inline void swap(graphlab::local_graph<VertexData,EdgeData>& a,

FILE: src/graphlab/graph/local_graph_ops.hpp
  type graphlab (line 45) | namespace graphlab {
    type local_graph_ops (line 48) | namespace local_graph_ops {
      function topological_sort (line 59) | bool topological_sort(const graphlab::local_graph<VertexType, EdgeTy...
      function num_neighbors (line 94) | size_t num_neighbors(const graphlab::local_graph<VertexType, EdgeTyp...
      function neighbors (line 119) | void neighbors(const graphlab::local_graph<VertexType, EdgeType>& gr...
      function save_metis_structure (line 151) | bool save_metis_structure(const std::string& filename,
      function save_edge_list_structure (line 183) | bool save_edge_list_structure(const std::string& filename,
      function save_zoltan_hypergraph_structure (line 202) | bool save_zoltan_hypergraph_structure(const std::string& filename,

FILE: src/graphlab/graph/vertex_set.hpp
  type graphlab (line 33) | namespace graphlab {
    class vertex_set (line 71) | class vertex_set {
      method dense_bitset (line 101) | const dense_bitset& get_lvid_bitset(const DGraphType& dgraph) const {
      method set_lvid_unsync (line 114) | inline void set_lvid_unsync(lvid_type lvid) {
      method set_lvid (line 127) | inline void set_lvid(lvid_type lvid) {
      method make_explicit (line 138) | void make_explicit(const DGraphType& dgraph) const {
      method synchronize_master_to_mirrors (line 157) | void synchronize_master_to_mirrors(DGraphType& dgraph,
      method synchronize_mirrors_to_master_or (line 196) | void synchronize_mirrors_to_master_or(DGraphType& dgraph,
      method vertex_set (line 229) | vertex_set():is_complete_set(false), lazy(true){}
      method vertex_set (line 236) | explicit vertex_set(bool complete):is_complete_set(complete),lazy(tr...
      method vertex_set (line 239) | inline vertex_set(const vertex_set& other):
      method vertex_set (line 245) | inline vertex_set& operator=(const vertex_set& other) {
      method l_contains (line 256) | inline bool l_contains(lvid_type lvid) const {
      method vertex_set (line 275) | inline vertex_set operator&(const vertex_set& other) const {
      method vertex_set (line 291) | inline vertex_set operator|(const vertex_set& other) const {
      method vertex_set (line 314) | inline vertex_set operator-(const vertex_set& other) const {
      method vertex_set (line 331) | inline vertex_set& operator&=(const vertex_set& other) {
      method vertex_set (line 356) | inline vertex_set& operator|=(const vertex_set& other) {
      method vertex_set (line 386) | inline vertex_set& operator-=(const vertex_set& other) {
      method vertex_set (line 409) | inline vertex_set operator~() const {
      method invert (line 423) | inline void invert() {

FILE: src/graphlab/jni/java_any.cpp
  function jobject (line 46) | jobject &java_any::obj() {
  function jobject (line 50) | const jobject &java_any::obj() const {
  function java_any (line 68) | java_any &java_any::operator=(const java_any& other){

FILE: src/graphlab/jni/java_any.hpp
  type graphlab (line 33) | namespace graphlab {
    class java_any (line 42) | class java_any {

FILE: src/graphlab/jni/org_graphlab_Aggregator.cpp
  function JNIEXPORT (line 36) | JNIEXPORT void JNICALL
  function proxy_aggregator (line 84) | proxy_aggregator &proxy_aggregator::operator=(const proxy_aggregator& ot...

FILE: src/graphlab/jni/org_graphlab_Aggregator.hpp
  type graphlab (line 38) | namespace graphlab {
    class proxy_aggregator (line 48) | class proxy_aggregator :

FILE: src/graphlab/jni/org_graphlab_Context.cpp
  function JNIEXPORT (line 39) | JNIEXPORT void JNICALL

FILE: src/graphlab/jni/org_graphlab_Core.cpp
  function jlong (line 60) | static jlong createCore (JNIEnv *env, jobject obj, int argc, char **argv){
  function JNIEXPORT (line 91) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 97) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 126) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 145) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 162) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 183) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 203) | JNIEXPORT jdouble JNICALL
  function JNIEXPORT (line 223) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 240) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 266) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 293) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 321) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 347) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 364) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 385) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 406) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 427) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 448) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 474) | JNIEXPORT void JNICALL

FILE: src/graphlab/jni/org_graphlab_Core.hpp
  type graphlab (line 40) | namespace graphlab {
    class jni_core (line 49) | class jni_core : public java_any {
      method jni_core (line 75) | jni_core (JNIEnv *env, jobject &obj) : java_any (env, obj) {
      method core_type (line 83) | core_type &operator()(){
      method set_jvm (line 99) | static void set_jvm (JavaVM *jvm){
      method JavaVM (line 107) | static JavaVM *get_jvm (){
      method detach_from_jvm (line 119) | static void detach_from_jvm() {
      method dump_backtrace (line 130) | static void dump_backtrace(int sig){
      method throw_exception (line 144) | static void throw_exception(JNIEnv* env,
      method JNIEnv (line 161) | static JNIEnv *get_jni_env (){

FILE: src/graphlab/jni/org_graphlab_Updater.cpp
  function JNIEXPORT (line 47) | JNIEXPORT void JNICALL
  function proxy_updater (line 124) | proxy_updater &proxy_updater::operator=(const proxy_updater& other){
  function edge_set (line 172) | edge_set proxy_updater::gather_edges() const {
  function edge_set (line 184) | edge_set proxy_updater::scatter_edges() const {
  function consistency_model (line 196) | consistency_model proxy_updater::consistency() const {
  function consistency_model (line 209) | consistency_model proxy_updater::gather_consistency() const {
  function consistency_model (line 222) | consistency_model proxy_updater::scatter_consistency() const {

FILE: src/graphlab/jni/org_graphlab_Updater.hpp
  type graphlab (line 36) | namespace graphlab {
    class proxy_edge (line 39) | class proxy_edge : public java_any {
      method proxy_edge (line 48) | proxy_edge (JNIEnv *env, jobject &obj) : java_any (env, obj) {}
    class proxy_vertex (line 52) | class proxy_vertex : public java_any {
      method proxy_vertex (line 54) | proxy_vertex () : java_any () {}
      method proxy_vertex (line 62) | proxy_vertex (JNIEnv *env, jobject &obj) : java_any (env, obj) {}
    class proxy_updater (line 79) | class proxy_updater :

FILE: src/graphlab/logger/backtrace.cpp
  function demangle (line 34) | std::string demangle(const char* symbol) {
  function __set_back_trace_file_number (line 63) | extern void __set_back_trace_file_number(int number) {
  function __print_back_trace (line 68) | void __print_back_trace() {

FILE: src/graphlab/logger/logger.cpp
  function file_logger (line 33) | file_logger& global_logger() {
  function streambuffdestructor (line 41) | void streambuffdestructor(void* v){
  function textcolor (line 108) | void textcolor(FILE* handle, int attr, int fg)
  function reset_color (line 116) | void reset_color(FILE* handle)
  function file_logger (line 238) | file_logger& file_logger::start_stream(int lineloglevel,const char* file,

FILE: src/graphlab/logger/logger.hpp
  type logger_impl (line 172) | namespace logger_impl {
    type streambuff_tls_entry (line 173) | struct streambuff_tls_entry {
  class file_logger (line 186) | class file_logger{
    method set_log_to_console (line 204) | void set_log_to_console(bool consolelog) {
    method get_log_file (line 209) | std::string get_log_file(void) {
    method get_log_to_console (line 214) | bool get_log_to_console() {
    method get_log_level (line 219) | int get_log_level() {
    method file_logger (line 226) | file_logger& operator<<(T a) {
    method file_logger (line 239) | inline file_logger& operator<<(const char* a) {
    method file_logger (line 257) | inline file_logger& operator<<(std::ostream& (*f)(std::ostream&)){
    method set_log_level (line 284) | void set_log_level(int new_log_level) {
    method stream_flush (line 308) | inline void stream_flush() {
  type log_dispatch (line 343) | struct log_dispatch {}
  type log_dispatch<true> (line 346) | struct log_dispatch<true> {
    method exec (line 347) | inline static void exec(int loglevel,const char* file,const char* func...
  type log_dispatch<false> (line 361) | struct log_dispatch<false> {
    method exec (line 362) | inline static void exec(int loglevel,const char* file,const char* func...
  type null_stream (line 367) | struct null_stream {
    method null_stream (line 369) | inline null_stream operator<<(T t) { return null_stream(); }
    method null_stream (line 370) | inline null_stream operator<<(const char* a) { return null_stream(); }
    method null_stream (line 371) | inline null_stream operator<<(std::ostream& (*f)(std::ostream&)) { ret...
  type log_stream_dispatch (line 376) | struct log_stream_dispatch {}
  type log_stream_dispatch<true> (line 379) | struct log_stream_dispatch<true> {
    method file_logger (line 380) | inline static file_logger& exec(int lineloglevel,const char* file,cons...
  type log_stream_dispatch<false> (line 386) | struct log_stream_dispatch<false> {
    method null_stream (line 387) | inline static null_stream exec(int lineloglevel,const char* file,const...

FILE: src/graphlab/options/command_line_options.cpp
  type boost (line 26) | namespace boost {
  type graphlab (line 60) | namespace graphlab {

FILE: src/graphlab/options/command_line_options.hpp
  type boost (line 37) | namespace boost {
    function graphlab_vec_to_string (line 43) | std::string graphlab_vec_to_string(const std::vector<T>& vec) {
  type graphlab (line 106) | namespace graphlab {
    class command_line_options (line 167) | class command_line_options : public graphlab_options {
      method command_line_options (line 194) | command_line_options(std::string desc_str,
      method print_description (line 208) | inline void print_description() const { std::cout << desc << std::en...
      method unrecognized (line 236) | inline std::vector<std::string> unrecognized() const {
      method attach_option (line 261) | void attach_option(const std::string& option,

FILE: src/graphlab/options/graphlab_options.hpp
  type graphlab (line 45) | namespace graphlab {
    class graphlab_options (line 71) | class graphlab_options {
      method graphlab_options (line 88) | graphlab_options() :
      method set_ncpus (line 109) | void set_ncpus(size_t n)
      method get_ncpus (line 120) | size_t get_ncpus() const { return ncpus; }
      method set_scheduler_type (line 122) | void set_scheduler_type(const std::string& stype) {
      method options_map (line 134) | const options_map& get_engine_args() const {
      method options_map (line 139) | options_map& get_engine_args() {
      method options_map (line 143) | const options_map& get_graph_args() const {
      method options_map (line 147) | options_map& get_graph_args() {
      method options_map (line 152) | const options_map& get_scheduler_args() const {
      method options_map (line 156) | options_map& get_scheduler_args() {
      method print (line 163) | virtual void print() const {

FILE: src/graphlab/options/options_map.cpp
  type graphlab (line 41) | namespace graphlab {

FILE: src/graphlab/options/options_map.hpp
  type graphlab (line 44) | namespace graphlab {
    class options_map (line 52) | class options_map {
      method options_map (line 55) | options_map() {}
      method options_map (line 57) | explicit options_map(std::string &s) {
      method set_option_str (line 65) | inline void set_option_str(const std::string &opt,
      method set_option (line 80) | void set_option(const std::string& opt, const T& val) {
      method is_set (line 94) | inline bool is_set(const std::string& opt) const {
      method get_option (line 102) | inline bool get_option(const std::string& opt, std::string& val) con...
      method get_option (line 112) | inline bool get_option(const std::string& opt, bool& val) const {
      method get_option (line 124) | inline bool get_option(const std::string& opt, IntType& val) const {
      method get_option (line 134) | inline bool get_option(const std::string& opt, float& val) const {
      method get_option (line 144) | inline bool get_option(const std::string& opt, double& val) const {
      method erase_option (line 155) | inline void erase_option(const std::string &opt) {
      method clear_options (line 162) | void clear_options() {
      method parse_options (line 170) | inline bool parse_options(std::istream& s) {
      type option_values (line 186) | struct option_values{
        method option_values (line 191) | option_values () : intval(0), dblval(0), boolval(false) { }
      method get_option_keys (line 195) | std::vector<std::string> get_option_keys() const {

FILE: src/graphlab/parallel/atomic.hpp
  type graphlab (line 34) | namespace graphlab {
    type graphlab_impl (line 35) | namespace graphlab_impl {
      class atomic_impl (line 37) | class atomic_impl {}
      class atomic_impl <T, true> (line 44) | class atomic_impl <T, true>: public IS_POD_TYPE {
        method atomic_impl (line 50) | atomic_impl(const T& value = T()) : value(value) { }
        method T (line 53) | T inc() { return __sync_add_and_fetch(&value, 1);  }
        method T (line 56) | T dec() { return __sync_sub_and_fetch(&value, 1);  }
        method T (line 62) | T operator++() { return inc(); }
        method T (line 65) | T operator--() { return dec(); }
        method T (line 68) | T inc(const T val) { return __sync_add_and_fetch(&value, val);  }
        method T (line 71) | T dec(const T val) { return __sync_sub_and_fetch(&value, val);  }
        method T (line 74) | T operator+=(const T val) { return inc(val); }
        method T (line 77) | T operator-=(const T val) { return dec(val); }
        method T (line 80) | T inc_ret_last() { return __sync_fetch_and_add(&value, 1);  }
        method T (line 83) | T dec_ret_last() { return __sync_fetch_and_sub(&value, 1);  }
        method T (line 86) | T operator++(int) { return inc_ret_last(); }
        method T (line 89) | T operator--(int) { return dec_ret_last(); }
        method T (line 92) | T inc_ret_last(const T val) { return __sync_fetch_and_add(&value, ...
        method T (line 95) | T dec_ret_last(const T val) { return __sync_fetch_and_sub(&value, ...
        method T (line 98) | T exchange(const T val) { return __sync_lock_test_and_set(&value, ...
      class atomic_impl <T, false> (line 103) | class atomic_impl <T, false>: public IS_POD_TYPE {
        method atomic_impl (line 109) | atomic_impl(const T& value = T()) : value(value) { }
        method T (line 112) | T inc() { return inc(1);  }
        method T (line 115) | T dec() { return dec(1);  }
        method T (line 121) | T operator++() { return inc(); }
        method T (line 124) | T operator--() { return dec(); }
        method T (line 127) | T inc(const T val) {
        method T (line 138) | T dec(const T val) {
        method T (line 149) | T operator+=(const T val) { return inc(val); }
        method T (line 152) | T operator-=(const T val) { return dec(val); }
        method T (line 155) | T inc_ret_last() { return inc_ret_last(1);  }
        method T (line 158) | T dec_ret_last() { return dec_ret_last(1);  }
        method T (line 161) | T operator++(int) { return inc_ret_last(); }
        method T (line 164) | T operator--(int) { return dec_ret_last(); }
        method T (line 167) | T inc_ret_last(const T val) {
        method T (line 178) | T dec_ret_last(const T val) {
        method T (line 189) | T exchange(const T val) { return __sync_lock_test_and_set(&value, ...
    class atomic (line 194) | class atomic: public graphlab_impl::atomic_impl<T, boost::is_integral<...
      method atomic (line 197) | atomic(const T& value = T()):

FILE: src/graphlab/parallel/atomic_add_vector2_empty_specialization.hpp
  type graphlab (line 49) | namespace graphlab {
    class atomic_add_vector2<graphlab::empty> (line 56) | class atomic_add_vector2<graphlab::empty> {
      method atomic_add_vector2 (line 72) | atomic_add_vector2(size_t num_vertices = 0) {
      method resize (line 80) | void resize(size_t num_vertices) {
      method add (line 87) | bool add(const size_t& idx,
      method add (line 102) | bool add(const size_t& idx,
      method test_and_get (line 109) | bool test_and_get(const size_t& idx,
      method peek (line 114) | bool peek(const size_t& idx,
      method empty (line 119) | bool empty(const size_t& idx) const {
      method size (line 123) | size_t size() const {
      method num_joins (line 127) | size_t num_joins() const {
      method clear (line 132) | void clear() {
      method clear (line 136) | void clear(size_t i) { atomic_box_vec.clear_bit(i);}

FILE: src/graphlab/parallel/atomic_ops.hpp
  type graphlab (line 30) | namespace graphlab {
    function atomic_compare_and_swap (line 45) | bool atomic_compare_and_swap(T& a, T oldval, T newval) {
    function atomic_compare_and_swap (line 63) | bool atomic_compare_and_swap(volatile T& a,
    function atomic_compare_and_swap (line 83) | inline bool atomic_compare_and_swap(volatile double& a,
    function atomic_compare_and_swap (line 106) | inline bool atomic_compare_and_swap(volatile float& a,
    function atomic_exchange (line 122) | void atomic_exchange(T& a, T& b) {
    function atomic_exchange (line 133) | void atomic_exchange(volatile T& a, T& b) {
    function T (line 142) | T fetch_and_store(T& a, const T& newval) {

FILE: src/graphlab/parallel/cache_line_pad.hpp
  type graphlab (line 39) | namespace graphlab {
    type cache_line_pad (line 43) | struct cache_line_pad  {
      method cache_line_pad (line 46) | cache_line_pad(const T& value = T()) : value(value) { }
      method T (line 47) | T& operator=(const T& other) { return value = other; }

FILE: src/graphlab/parallel/deferred_rwlock.hpp
  type graphlab (line 29) | namespace graphlab {
    class deferred_rwlock (line 30) | class deferred_rwlock{
      type request (line 33) | struct request{
      method deferred_rwlock (line 46) | deferred_rwlock(): head(NULL),
      method get_reader_count (line 50) | inline size_t get_reader_count() {
      method has_waiters (line 56) | inline bool has_waiters() {
      method insert_queue (line 60) | inline void insert_queue(request *I) {
      method insert_queue_head (line 70) | inline void insert_queue_head(request *I) {
      method writelock_priority (line 81) | inline bool writelock_priority(request *I) {
      method writelock (line 98) | inline bool writelock(request *I) {
      method complete_wrlock (line 117) | inline void complete_wrlock() {
      method complete_rdlock (line 126) | inline size_t complete_rdlock(request* &released) {
      method wrunlock (line 167) | inline size_t wrunlock(request* &released) {
      method readlock (line 188) | inline size_t readlock(request *I, request* &released)  {
      method readlock_priority (line 213) | inline size_t readlock_priority(request *I, request* &released)  {
      method rdunlock (line 238) | inline size_t rdunlock(request* &released)  {

FILE: src/graphlab/parallel/fiber_barrier.hpp
  type graphlab (line 5) | namespace graphlab {
    class fiber_barrier (line 6) | class fiber_barrier {
      method fiber_barrier (line 20) | fiber_barrier(const fiber_barrier&) { }
      method fiber_barrier (line 28) | fiber_barrier(size_t numthreads) {
      method resize_unsafe (line 37) | void resize_unsafe(size_t numthreads) {
      method wait (line 43) | inline void wait() const {

FILE: src/graphlab/parallel/fiber_conditional.hpp
  type graphlab (line 6) | namespace graphlab {
    class fiber_conditional (line 21) | class fiber_conditional {
      method fiber_conditional (line 31) | fiber_conditional() {
      method fiber_conditional (line 40) | fiber_conditional(const fiber_conditional &) {
      method wait (line 49) | inline void wait(const mutex& mut) const {
      method signal (line 63) | inline void signal() const {
      method broadcast (line 79) | inline void broadcast() const {

FILE: src/graphlab/parallel/fiber_control.cpp
  type graphlab (line 31) | namespace graphlab {
    type trampoline_args (line 242) | struct trampoline_args {
    function foreach (line 277) | foreach(size_t b, affinity) {
    function fiber_control (line 549) | fiber_control& fiber_control::get_instance() {

FILE: src/graphlab/parallel/fiber_control.hpp
  type graphlab (line 36) | namespace graphlab {
    class fiber_control (line 41) | class fiber_control {
      type fiber (line 47) | struct fiber {
      type thread_schedule (line 91) | struct thread_schedule {
        method thread_schedule (line 92) | thread_schedule():waiting(false) { }
      type tls (line 117) | struct tls {
      method fiber_control (line 150) | fiber_control(fiber_control&) {}
      method num_workers (line 177) | size_t num_workers() {
      method num_threads (line 184) | inline size_t num_threads() {
      method total_threads_created (line 191) | inline size_t total_threads_created() {

FILE: src/graphlab/parallel/fiber_group.cpp
  type graphlab (line 26) | namespace graphlab {

FILE: src/graphlab/parallel/fiber_group.hpp
  type graphlab (line 29) | namespace graphlab {
    class fiber_group (line 38) | class fiber_group {
      method increment_running_counter (line 52) | inline void increment_running_counter() {
      method decrement_running_counter (line 56) | inline void decrement_running_counter() {
      method fiber_group (line 75) | fiber_group(size_t stacksize = 8192,
      method set_stacksize (line 86) | inline void set_stacksize(size_t new_stacksize) {
      method set_affinity (line 95) | inline void set_affinity(affinity_type new_affinity) {
      method running_threads (line 126) | inline size_t running_threads() {

FILE: src/graphlab/parallel/fiber_remote_request.hpp
  type graphlab (line 30) | namespace graphlab {
    type fiber_reply_container (line 37) | struct fiber_reply_container: public dc_impl::ireply_container {
      method fiber_reply_container (line 47) | fiber_reply_container():waiting_tid(0),valready(false) { }
      method wait (line 53) | void wait() {
      method receive (line 76) | void receive(procid_t source, dc_impl::blob b) {
      method ready (line 89) | bool ready() const {

FILE: src/graphlab/parallel/lockfree_push_back.hpp
  type graphlab (line 28) | namespace graphlab {
    type lockfree_push_back_impl (line 30) | namespace lockfree_push_back_impl {
      type idx_ref (line 31) | struct idx_ref {
        method idx_ref (line 32) | idx_ref(): reference_count(0), idx(0) { }
        method idx_ref (line 33) | idx_ref(size_t idx): reference_count(0), idx(idx) { }
        method inc_ref (line 41) | inline void inc_ref() {
        method wait_till_no_ref (line 51) | inline void wait_till_no_ref() {
        method dec_ref (line 55) | inline void dec_ref() {
        method flag_ref (line 59) | inline void flag_ref() {
        method inc_idx (line 63) | inline size_t inc_idx() {
        method inc_idx (line 67) | inline size_t inc_idx(size_t n) {
    class lockfree_push_back (line 86) | class lockfree_push_back {
      method lockfree_push_back (line 93) | lockfree_push_back(Container& container, size_t startidx, float scal...
      method size (line 96) | size_t size() const {
      method set_size (line 100) | void set_size(size_t s) {
      method push_back (line 105) | size_t push_back(Iterator begin, Iterator end) {
      method query (line 144) | bool query(size_t item, T& value) {
      method T (line 155) | T* query(size_t item) {
      method query_unsafe (line 165) | bool query_unsafe(size_t item, T& value) {
      method T (line 174) | T* query_unsafe(size_t item) {
      method push_back (line 183) | size_t push_back(const T& t) {

FILE: src/graphlab/parallel/mutex.hpp
  type graphlab (line 31) | namespace graphlab {
    class mutex (line 39) | class mutex {
      method mutex (line 44) | mutex() {
      method mutex (line 52) | mutex(const mutex&) {
      method lock (line 66) | inline void lock() const {
      method unlock (line 72) | inline void unlock() const {
      method try_lock (line 77) | inline bool try_lock() const {
    class recursive_mutex (line 92) | class recursive_mutex {
      method recursive_mutex (line 97) | recursive_mutex() {
      method recursive_mutex (line 111) | recursive_mutex(const recursive_mutex&) {
      method lock (line 131) | inline void lock() const {
      method unlock (line 137) | inline void unlock() const {
      method try_lock (line 142) | inline bool try_lock() const {

FILE: src/graphlab/parallel/pthread_tools.cpp
  type graphlab (line 28) | namespace graphlab {
    type thread_keys (line 32) | struct thread_keys {
      method thread_keys (line 34) | thread_keys() : GRAPHLAB_TSD_ID(0) {
    function pthread_key_t (line 42) | static pthread_key_t get_tsd_id() {
    function destroy_tls_data (line 97) | void destroy_tls_data(void* ptr) {

FILE: src/graphlab/parallel/pthread_tools.hpp
  type graphlab (line 53) | namespace graphlab {
    class spinlock (line 67) | class spinlock {
      method spinlock (line 73) | spinlock () {
      method spinlock (line 82) | spinlock(const spinlock&) {
      method lock (line 92) | inline void lock() const {
      method unlock (line 97) | inline void unlock() const {
      method try_lock (line 102) | inline bool try_lock() const {
    class simple_spinlock (line 126) | class simple_spinlock {
      method simple_spinlock (line 132) | simple_spinlock () {
      method simple_spinlock (line 140) | simple_spinlock(const simple_spinlock&) {
      method lock (line 149) | inline void lock() const {
      method unlock (line 153) | inline void unlock() const {
      method try_lock (line 158) | inline bool try_lock() const {
    class padded_simple_spinlock (line 174) | class padded_simple_spinlock {
      method padded_simple_spinlock (line 181) | padded_simple_spinlock () {
      method padded_simple_spinlock (line 189) | padded_simple_spinlock(const padded_simple_spinlock&) {
      method lock (line 198) | inline void lock() const {
      method unlock (line 202) | inline void unlock() const {
      method try_lock (line 207) | inline bool try_lock() const {
    class conditional (line 224) | class conditional {
      method conditional (line 229) | conditional() {
      method conditional (line 238) | conditional(const conditional &) {
      method wait (line 249) | inline void wait(const mutex& mut) const {
      method timedwait (line 254) | inline int timedwait(const mutex& mut, size_t sec) const {
      method timedwait_ms (line 264) | inline int timedwait_ms(const mutex& mut, size_t ms) const {
      method timedwait_ns (line 287) | inline int timedwait_ns(const mutex& mut, size_t ns) const {
      method signal (line 311) | inline void signal() const {
      method broadcast (line 316) | inline void broadcast() const {
    class semaphore (line 333) | class semaphore {
      method semaphore (line 341) | semaphore() {
      method semaphore (line 349) | semaphore(const semaphore&) {
      method post (line 357) | inline void post() const {
      method wait (line 365) | inline void wait() const {
      method semaphore (line 391) | semaphore() {
      method semaphore (line 400) | semaphore(const semaphore&) {
      method post (line 408) | inline void post() const {
      method wait (line 412) | inline void wait() const {
    class semaphore (line 386) | class semaphore {
      method semaphore (line 341) | semaphore() {
      method semaphore (line 349) | semaphore(const semaphore&) {
      method post (line 357) | inline void post() const {
      method wait (line 365) | inline void wait() const {
      method semaphore (line 391) | semaphore() {
      method semaphore (line 400) | semaphore(const semaphore&) {
      method post (line 408) | inline void post() const {
      method wait (line 412) | inline void wait() const {
    class spinrwlock (line 438) | class spinrwlock {
      method spinrwlock (line 452) | spinrwlock() {
      method writelock (line 455) | inline void writelock() const {
      method wrunlock (line 463) | inline void wrunlock() const{
      method readlock (line 474) | inline void readlock() const {
      method rdunlock (line 482) | inline void rdunlock() const {
      method unlock (line 486) | inline void unlock() const {
    type spinrwlock2 (line 502) | struct spinrwlock2 {
      method spinrwlock2 (line 505) | spinrwlock2():l(0) {}
      method writelock (line 506) | void writelock() const {
      method wrunlock (line 528) | void wrunlock() const {
      method readlock (line 532) | void readlock() const {
      method rdunlock (line 545) | void rdunlock() const {
    class rwlock (line 569) | class rwlock {
      method rwlock (line 573) | rwlock() {
      method rwlock (line 592) | rwlock(const rwlock &) {
      method readlock (line 597) | inline void readlock() const {
      method writelock (line 601) | inline void writelock() const {
      method try_readlock (line 605) | inline bool try_readlock() const {
      method try_writelock (line 608) | inline bool try_writelock() const {
      method unlock (line 611) | inline void unlock() const {
      method rdunlock (line 615) | inline void rdunlock() const {
      method wrunlock (line 618) | inline void wrunlock() const {
    class cancellable_barrier (line 636) | class cancellable_barrier {
      method cancellable_barrier (line 648) | cancellable_barrier(const cancellable_barrier&) { }
      method cancellable_barrier (line 653) | cancellable_barrier(size_t numthreads) {
      method resize_unsafe (line 664) | void resize_unsafe(size_t numthreads) {
      method cancel (line 672) | inline void cancel() {
      method wait (line 677) | inline void wait() const {
    class barrier (line 712) | class barrier {
      method barrier (line 716) | barrier(const barrier&) { }
      method barrier (line 719) | barrier
Condensed preview — 757 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,606K chars).
[
  {
    "path": ".gitignore",
    "chars": 388,
    "preview": "# use glob syntax\nsyntax: glob\n\n*~\ndebug/*\nrelease/*\nprofile/*\ndist/graphlabapi*\ndoc/doxygen/*\ndoc/doxygen_internal/*\nde"
  },
  {
    "path": "BINARY_README",
    "chars": 4446,
    "preview": "\n                         Graphlab Binary Release\n                         -----------------------\n\n=======\nLicense\n===="
  },
  {
    "path": "CMakeLists.txt",
    "chars": 28012,
    "preview": "project(GraphLab)\n\n# We require the most recent version of cmake and automatically\n# install the correct version when us"
  },
  {
    "path": "Doxyfile",
    "chars": 63861,
    "preview": "# Doxyfile 1.5.8\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
  },
  {
    "path": "Doxyfile_internal",
    "chars": 63889,
    "preview": "# Doxyfile 1.5.8\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
  },
  {
    "path": "README.md",
    "chars": 14676,
    "preview": "# GraphLab PowerGraph v2.2\n\n## UPDATE: For a signficant evolution of this codebase, see GraphLab Create which is availab"
  },
  {
    "path": "TUTORIALS.md",
    "chars": 18332,
    "preview": "# GraphLab PowerGraph Tutorials\n\n##Table of Contents\n* [Deploying on AWS EC2 Cluster](#ec2)\n* [Deploying in a Cluster](#"
  },
  {
    "path": "apps/CMakeLists.txt",
    "chars": 737,
    "preview": "project(GraphLab)\n\n# link_libraries(${Boost_LIBRARIES})\n# link_libraries(${GraphLab_LIBRARIES})\n\n\n\nmacro(add_all_subdire"
  },
  {
    "path": "apps/cascades/CMakeLists.txt",
    "chars": 65,
    "preview": "project(cascades)\nadd_graphlab_executable(cascades cascades.cpp)\n"
  },
  {
    "path": "apps/cascades/cascades.cpp",
    "chars": 8295,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "apps/concomp/CMakeLists.txt",
    "chars": 62,
    "preview": "project(example)\nadd_graphlab_executable(concomp concomp.cpp)\n"
  },
  {
    "path": "apps/concomp/concomp.cpp",
    "chars": 6177,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "apps/example/CMakeLists.txt",
    "chars": 70,
    "preview": "project(example)\nadd_graphlab_executable(hello_world hello_world.cpp)\n"
  },
  {
    "path": "apps/example/hello_world.cpp",
    "chars": 5233,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "apps/label_propagation/CMakeLists.txt",
    "chars": 92,
    "preview": "project(label_propagation)\nadd_graphlab_executable(label_propagation label_propagation.cpp)\n"
  },
  {
    "path": "apps/label_propagation/label_propagation.cpp",
    "chars": 6479,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "cmake/FindAnt.cmake",
    "chars": 217,
    "preview": "# - Try to find Ant\nfind_file(ANT_EXEC NAMES ant ant.sh ant.bat PATHS $ENV{ANT_HOME}/bin)\n\nINCLUDE(FindPackageHandleStan"
  },
  {
    "path": "cmake/FindBoost.cmake",
    "chars": 30370,
    "preview": "# - Try to find Boost include dirs and libraries\n# Usage of this module as follows:\n#\n#     SET(Boost_USE_STATIC_LIBS ON"
  },
  {
    "path": "cmake/FindCUDA/make2cmake.cmake",
    "chars": 3058,
    "preview": "#  James Bigler, NVIDIA Corp (nvidia.com - jbigler)\n#  Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindC"
  },
  {
    "path": "cmake/FindCUDA/parse_cubin.cmake",
    "chars": 3782,
    "preview": "#  James Bigler, NVIDIA Corp (nvidia.com - jbigler)\n#  Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindC"
  },
  {
    "path": "cmake/FindCUDA/run_nvcc.cmake",
    "chars": 10655,
    "preview": "#  James Bigler, NVIDIA Corp (nvidia.com - jbigler)\n#\n#  Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reser"
  },
  {
    "path": "cmake/FindCUDA.cmake",
    "chars": 53191,
    "preview": "# - Tools for building CUDA C files: libraries and build dependencies.\n# This script locates the NVIDIA CUDA C tools. It"
  },
  {
    "path": "cmake/FindLibJpeg.cmake",
    "chars": 2949,
    "preview": "# Copyright (c) 2009, Whispersoft s.r.l.\n# All rights reserved.\n#\n# Redistribution and use in source and binary forms, w"
  },
  {
    "path": "cmake/FindMPICH2.cmake",
    "chars": 13383,
    "preview": "# - Message Passing Interface (MPI) module.\n# \n# The Message Passing Interface (MPI) is a library used to write\n# high-p"
  },
  {
    "path": "cmake/FindMatlab.cmake",
    "chars": 3273,
    "preview": "# - this module looks for Matlab\n# Defines:\n#  MATLAB_INCLUDE_DIR: include path for mex.h, engine.h\n#  MATLAB_LIBRARIES:"
  },
  {
    "path": "cmake/FindPerftools.cmake",
    "chars": 6306,
    "preview": "## Obtained from:\n#\n# http://tracker.icir.org/bro/browser/branches/matthias/vast/cmake/FindPerftools.cmake?order=date\n# "
  },
  {
    "path": "cmake/Mex_stub.cpp",
    "chars": 523,
    "preview": "// Adopted from: http://www.cmake.org/Wiki/images/7/72/Mex_stub.cpp\n// and tutorial: http://www.cmake.org/Wiki/CMake:Mat"
  },
  {
    "path": "cmake/mex_link.sh",
    "chars": 791,
    "preview": "#!/bin/sh\n\nOUTPUT=$1\nSTATIC_LIB_NAME=$OUTPUT\nMOVE_LOCATION=$2\nBASEDIR=$3\nLINKFILES=$4\nLINKER_FLAGS= -shared -Wl,--versio"
  },
  {
    "path": "configure",
    "chars": 12342,
    "preview": "#!/bin/bash\n##=============================================================================\n## Support code\nfunction dow"
  },
  {
    "path": "cxxtest/cxxtest/Descriptions.cpp",
    "chars": 2103,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/Descriptions.h",
    "chars": 2926,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/DummyDescriptions.cpp",
    "chars": 3101,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/DummyDescriptions.h",
    "chars": 2512,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/ErrorFormatter.h",
    "chars": 10377,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/ErrorPrinter.h",
    "chars": 2117,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/Flags.h",
    "chars": 4757,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/GlobalFixture.cpp",
    "chars": 1408,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/GlobalFixture.h",
    "chars": 1183,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/Gui.h",
    "chars": 6401,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/LinkedList.cpp",
    "chars": 3660,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/LinkedList.h",
    "chars": 1634,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/Mock.h",
    "chars": 12507,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/ParenPrinter.h",
    "chars": 1008,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/QtGui.h",
    "chars": 8357,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/RealDescriptions.cpp",
    "chars": 11433,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/RealDescriptions.h",
    "chars": 7659,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/Root.cpp",
    "chars": 999,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/SelfTest.h",
    "chars": 665,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/StdHeaders.h",
    "chars": 971,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/StdTestSuite.h",
    "chars": 1692,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/StdValueTraits.h",
    "chars": 6414,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/StdioFilePrinter.h",
    "chars": 1838,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/StdioPrinter.h",
    "chars": 1092,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TeeListener.h",
    "chars": 7224,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TestListener.h",
    "chars": 4794,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TestMain.h",
    "chars": 3376,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TestRunner.h",
    "chars": 3818,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TestSuite.cpp",
    "chars": 8018,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TestSuite.h",
    "chars": 27819,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TestTracker.cpp",
    "chars": 8047,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/TestTracker.h",
    "chars": 5866,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/ValueTraits.cpp",
    "chars": 4812,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/ValueTraits.h",
    "chars": 12298,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/Win32Gui.h",
    "chars": 17048,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/X11Gui.h",
    "chars": 10058,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/XUnitPrinter.h",
    "chars": 1283,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/XmlFormatter.h",
    "chars": 19150,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/XmlPrinter.h",
    "chars": 2138,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/YesNoRunner.h",
    "chars": 1057,
    "preview": "/*\n-------------------------------------------------------------------------\n CxxTest: A lightweight C++ unit testing li"
  },
  {
    "path": "cxxtest/cxxtest/__init__.py",
    "chars": 1301,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/cxxtest/__release__.py",
    "chars": 600,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/cxxtest/cxx_parser.py",
    "chars": 72662,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/cxxtest/cxxtest_fog.py",
    "chars": 3866,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/cxxtest/cxxtest_misc.py",
    "chars": 713,
    "preview": "#!/usr/bin/python\n#-------------------------------------------------------------------------\n# CxxTest: A lightweight C+"
  },
  {
    "path": "cxxtest/cxxtest/cxxtest_parser.py",
    "chars": 8794,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/cxxtest/cxxtestgen.py",
    "chars": 19506,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/cxxtestgen",
    "chars": 423,
    "preview": "#! /usr/bin/env python\n#\n# The CxxTest driver script, which uses the cxxtest Python package.\n#\n\nimport sys\nimport os\nfro"
  },
  {
    "path": "cxxtest/python/README.txt",
    "chars": 255,
    "preview": "CxxTest Python Package\n======================\n\nThe CxxTest Python package includes utilities that are used by the\nCxxTes"
  },
  {
    "path": "cxxtest/python/convert.py",
    "chars": 378,
    "preview": "#\n# Execute this script to copy the cxxtest/*.py files\n# and run 2to3 to convert them to Python 3.\n#\n\nimport glob\nimport"
  },
  {
    "path": "cxxtest/python/cxxtest/__init__.py",
    "chars": 1301,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/cxxtest/__release__.py",
    "chars": 600,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/cxxtest/cxx_parser.py",
    "chars": 72662,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/cxxtest/cxxtest_fog.py",
    "chars": 3866,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/cxxtest/cxxtest_misc.py",
    "chars": 713,
    "preview": "#!/usr/bin/python\n#-------------------------------------------------------------------------\n# CxxTest: A lightweight C+"
  },
  {
    "path": "cxxtest/python/cxxtest/cxxtest_parser.py",
    "chars": 8794,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/cxxtest/cxxtestgen.py",
    "chars": 19506,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/python3/cxxtest/__init__.py",
    "chars": 1301,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/python3/cxxtest/__release__.py",
    "chars": 600,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/python3/cxxtest/cxx_parser.py",
    "chars": 72634,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/python3/cxxtest/cxxtest_fog.py",
    "chars": 3857,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/python3/cxxtest/cxxtest_misc.py",
    "chars": 713,
    "preview": "#!/usr/bin/python\n#-------------------------------------------------------------------------\n# CxxTest: A lightweight C+"
  },
  {
    "path": "cxxtest/python/python3/cxxtest/cxxtest_parser.py",
    "chars": 8763,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/python3/cxxtest/cxxtestgen.py",
    "chars": 19497,
    "preview": "#-------------------------------------------------------------------------\n# CxxTest: A lightweight C++ unit testing lib"
  },
  {
    "path": "cxxtest/python/python3/scripts/cxxtestgen",
    "chars": 64,
    "preview": "#! python\n\nimport cxxtest.cxxtestgen\n\ncxxtest.cxxtestgen.main()\n"
  },
  {
    "path": "cxxtest/python/scripts/cxxtestgen",
    "chars": 64,
    "preview": "#! python\n\nimport cxxtest.cxxtestgen\n\ncxxtest.cxxtestgen.main()\n"
  },
  {
    "path": "cxxtest/python/setup.py",
    "chars": 1389,
    "preview": "\"\"\"\nScript to generate the installer for cxxtest.\n\"\"\"\n\nclassifiers = \"\"\"\\\nDevelopment Status :: 4 - Beta\nIntended Audien"
  },
  {
    "path": "demoapps/CMakeLists.txt",
    "chars": 742,
    "preview": "project(GraphLab)\n\n# link_libraries(${Boost_LIBRARIES})\n# link_libraries(${GraphLab_LIBRARIES})\n\n\n\nmacro(add_all_subdire"
  },
  {
    "path": "demoapps/dsl/CMakeLists.txt",
    "chars": 115,
    "preview": "project(GraphLab)\n\n# add_graphlab_executable(gl_server gl_server.cpp)\n\n# add_library(gen_impl SHARED gen_impl.cpp)\n"
  },
  {
    "path": "demoapps/dsl/gen_impl.cpp",
    "chars": 1414,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/dsl/gl_server.cpp",
    "chars": 8364,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/dsl/graph_typedefs.gen",
    "chars": 976,
    "preview": "#include <vector>\n#include <graphlab/graph/graph_basic_types.hpp>\n#include <ostream>\n\ntypedef float vertex_data_type;\nty"
  },
  {
    "path": "demoapps/dsl/impl.graphlab",
    "chars": 638,
    "preview": "types {\n  vertextype float\n  edgetype float\n}\n\n\ndef update() {\n  //get a local copy of the vertex data\n  float prev = ge"
  },
  {
    "path": "demoapps/dsl/scala_impl/dsl.scala",
    "chars": 490,
    "preview": "import scala.util.parsing.combinator.syntactical._\n\n\nobject GLParser extends StandardTokenParsers {\n  val keywords = Lis"
  },
  {
    "path": "demoapps/pagerank/CMakeLists.txt",
    "chars": 225,
    "preview": "project(GraphLab)\n\n\nadd_graphlab_executable(simple_pagerank simple_pagerank.cpp)\n\nadd_graphlab_executable(warp_parfor_pa"
  },
  {
    "path": "demoapps/pagerank/simple_pagerank.cpp",
    "chars": 6564,
    "preview": "/*\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licens"
  },
  {
    "path": "demoapps/pagerank/warp_engine_pagerank.cpp",
    "chars": 4340,
    "preview": "/*\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licens"
  },
  {
    "path": "demoapps/pagerank/warp_parfor_pagerank.cpp",
    "chars": 3973,
    "preview": "/*\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licens"
  },
  {
    "path": "demoapps/rpc/CMakeLists.txt",
    "chars": 849,
    "preview": "project(GraphLab)\n\nadd_graphlab_executable(rpc_example1 rpc_example1.cpp)\nadd_graphlab_executable(rpc_example2 rpc_examp"
  },
  {
    "path": "demoapps/rpc/dht_performance_test.cpp",
    "chars": 3832,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/fiber_future_test.cpp",
    "chars": 1829,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/obj_fiber_future_test.cpp",
    "chars": 1976,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_call_perf_test.cpp",
    "chars": 6951,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example1.cpp",
    "chars": 1536,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example2.cpp",
    "chars": 1931,
    "preview": "/* \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lice"
  },
  {
    "path": "demoapps/rpc/rpc_example3.cpp",
    "chars": 1724,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example4.cpp",
    "chars": 1846,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example5.cpp",
    "chars": 1244,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example6.cpp",
    "chars": 1571,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example7.cpp",
    "chars": 3391,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example8.cpp",
    "chars": 1794,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "demoapps/rpc/rpc_example9.cpp",
    "chars": 2388,
    "preview": "/*\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licens"
  },
  {
    "path": "dist/README",
    "chars": 96,
    "preview": "This folder contains the distribution files created by the make_dist\nscript in the project root."
  },
  {
    "path": "doc/README",
    "chars": 87,
    "preview": "To generate docs, run \"doxygen\" in the graphlab/ directory\nDoxygen >= 1.8 recommended\n\n"
  },
  {
    "path": "doc/images/cycle_triangle.dot",
    "chars": 203,
    "preview": "digraph g{\n  A [label=\"A\",style=filled, color=green, shape=circle];\n  b [label=\"\", shape=circle];\n  c [label=\"\", shape=c"
  },
  {
    "path": "doc/images/example_webgraph.dot",
    "chars": 167,
    "preview": "digraph webgraph {\n  a [label=\"1: a.com\"];\n  b [label=\"4: b.org\"];\n  c [label=\"10: c.edu\"];\n  d [label=\"11: d.gov\"];\n  a"
  },
  {
    "path": "doc/images/graph_format_example.dot",
    "chars": 129,
    "preview": "digraph webgraph {\n  a [label=\"1\"];\n  b [label=\"2\"];\n  c [label=\"5\"];\n  d [label=\"7\"];\n  a->b;\n  a->c;\n  c->d;\n  d->a;\n "
  },
  {
    "path": "doc/images/in_triangle.dot",
    "chars": 236,
    "preview": "digraph g{\n  A [label=\"A\",style=filled, color=green, shape=circle];\n  b [label=\"\", shape=circle];\n  c [label=\"\", shape=c"
  },
  {
    "path": "doc/images/out_triangle.dot",
    "chars": 214,
    "preview": "digraph g{\n  A [label=\"A\",style=filled, color=green, shape=circle];\n  b [label=\"\", shape=circle];\n  c [label=\"\", shape=c"
  },
  {
    "path": "doc/images/through_triangle.dot",
    "chars": 203,
    "preview": "digraph g{\n  A [label=\"A\",style=filled, color=green, shape=circle];\n  b [label=\"\", shape=circle];\n  c [label=\"\", shape=c"
  },
  {
    "path": "license/LICENSE.txt",
    "chars": 10143,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "license/LICENSE_prepend.txt",
    "chars": 745,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "license/corporate_CLA.txt",
    "chars": 7802,
    "preview": "                     Carnegie Mellon University \n               Corporate Contributor License Agreement\n                "
  },
  {
    "path": "license/individual_CLA.txt",
    "chars": 7342,
    "preview": "                     Carnegie Mellon University \n              Individual Contributor License Agreement\n                "
  },
  {
    "path": "matlab/eventlog_parser.m",
    "chars": 1104,
    "preview": "function ret = eventlog_parser(eventlogfile)\nf = fopen(eventlogfile);\nres = textscan(f, '%s %f %f %f %f %f %f', 'Delimit"
  },
  {
    "path": "patches/boost.patch",
    "chars": 1232,
    "preview": "diff -rupN boost_1_53_0_old/boost/cstdint.hpp boost_1_53_0/boost/cstdint.hpp\nindex ea84b65..697b67b 100644\n--- boost_1_5"
  },
  {
    "path": "patches/libbz2_fpic.patch",
    "chars": 336,
    "preview": "--- Makefile\t2010-09-10 18:46:02.000000000 -0400\n+++ Makefile\t2012-05-31 13:21:15.211233533 -0400\n@@ -21,7 +21,7 @@\n LDF"
  },
  {
    "path": "patches/libevent_clean_and_remap.sh",
    "chars": 343,
    "preview": "#!/bin/bash\nif [ $# -ne 1 ]\nthen\n  echo \"Missing argument: directory where libevent libraries reside\"\n  exit 1\nfi\n\nCURDI"
  },
  {
    "path": "patches/libevent_remap_file.txt",
    "chars": 44392,
    "preview": "accept_socket_cb gl_accept_socket_cb\nadvance_last_with_data.isra.5 gl_advance_last_with_data.isra.5\narc4_count gl_arc4_c"
  },
  {
    "path": "patches/libhdfs.patch",
    "chars": 2337,
    "preview": "diff -rupN hadoop-1.0.1_old/src/c++/libhdfs/hdfsJniHelper.c hadoop-1.0.1/src/c++/libhdfs/hdfsJniHelper.c\n--- hadoop-1.0."
  },
  {
    "path": "patches/libjson.patch",
    "chars": 8237,
    "preview": "diff -rup libjson2/JSONOptions.h libjson/JSONOptions.h\n--- libjson2/JSONOptions.h\t2012-03-10 01:41:30.000000000 -0800\n++"
  },
  {
    "path": "patches/opencv_apple_rpath.patch",
    "chars": 424,
    "preview": "564a565\n>   if(APPLE)\n571c572\n<     INSTALL_NAME_DIR lib\n---\n>     INSTALL_NAME_DIR \"@rpath\"\n573c574,581\n< \n---\n>   else"
  },
  {
    "path": "patches/tcmalloc.patch",
    "chars": 1293,
    "preview": "Index: src/base/linux_syscall_support.h\n===================================================================\n--- src/base"
  },
  {
    "path": "patches/zookeeper/Makefile",
    "chars": 55,
    "preview": "all:\n\tcd src/c; make\n\ninstall:\n\tcd src/c; make install\n"
  },
  {
    "path": "patches/zookeeper/configure",
    "chars": 53,
    "preview": "#!/bin/bash\nant compile_jute\ncd src/c\n./configure $@\n"
  },
  {
    "path": "scripts/add_line_to_eof.sh",
    "chars": 186,
    "preview": "#!/bin/bash\nfor f in `find src \\( -name \"*.cpp\" -or -name \"*.hpp\" \\)`; do\nlastline=`tail -n 1 $f`\nlen=$((${#lastline}))\n"
  },
  {
    "path": "scripts/binary_list.txt",
    "chars": 930,
    "preview": "toolkits/clustering/kmeans\ntoolkits/graph_analytics/undirected_triangle_count\ntoolkits/graph_analytics/directed_triangle"
  },
  {
    "path": "scripts/build_linux_static.sh",
    "chars": 2641,
    "preview": "if [ ! -d src ]; then\n  echo \"Run from the graphlab root folder\"\n  exit\nfi\n./configure -D MARCH=x86-64 -D MTUNE=generic "
  },
  {
    "path": "scripts/build_linux_static_no_jvm.sh",
    "chars": 2678,
    "preview": "if [ ! -d src ]; then\n  echo \"Run from the graphlab root folder\"\n  exit\nfi\n./configure -D MARCH=x86-64 -D MTUNE=generic "
  },
  {
    "path": "scripts/build_linux_static_no_jvm_no_mpi.sh",
    "chars": 1943,
    "preview": "if [ ! -d src ]; then\n  echo \"Run from the graphlab root folder\"\n  exit\nfi\n./configure -D MARCH=x86-64 -D MTUNE=generic "
  },
  {
    "path": "scripts/build_osx_static.sh",
    "chars": 894,
    "preview": "if [ ! -d src ]; then\n  echo \"Run from the graphlab root folder\"\n  exit\nfi\n\n\n./configure --no_jvm -D NO_MPI:BOOL=true -D"
  },
  {
    "path": "scripts/compile_static_release.sh",
    "chars": 659,
    "preview": "#!/bin/bash\nif [ ! -d release ]; then\n  echo \"Run from the graphlab root folder after ./configure\"\nelse\n  cd release\n  m"
  },
  {
    "path": "scripts/ec2/benchmark_ec2.sh",
    "chars": 2936,
    "preview": "#!/bin/bash\n\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See"
  },
  {
    "path": "scripts/ec2/gl-ec2",
    "chars": 903,
    "preview": "#!/bin/sh\n\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See t"
  },
  {
    "path": "scripts/ec2/gl_ec2.py",
    "chars": 32907,
    "preview": "#ls!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more "
  },
  {
    "path": "scripts/ec2/readme",
    "chars": 3956,
    "preview": "*The new ec2 aims to simplify the procedure of launching EC2 nodes with ready-to-go GraphLab environment.\n**The scripts "
  },
  {
    "path": "scripts/ec2_tools/scatter",
    "chars": 175,
    "preview": "#!/bin/bash\n\nsrc_path=$(hostname):$1\ndest_path=$2\n\necho \"Copying $src_path to $dest_path\"\nmpiexec.openmpi -hostfile ~/ma"
  },
  {
    "path": "scripts/ec2_tools/setup-hadoop",
    "chars": 5203,
    "preview": "#!/bin/bash\n\nif [ ! -e ~/machines ]; then\necho \"A list of machines must be provided in ~/machines\"\necho \"Exiting...\"\nexi"
  },
  {
    "path": "scripts/ec2_tools/setup-torque",
    "chars": 1319,
    "preview": "#!/bin/bash\n\nif [ ! -e ~/machines ]; then\necho \"A list of machines must be provided in ~/machines\"\necho \"Exiting...\"\nexi"
  },
  {
    "path": "scripts/install_graphlab.sh",
    "chars": 166,
    "preview": "#!/bin/bash\n\ngit clone https://code.google.com/p/graphlabapi/ \ncd graphlab\n./configure | tee install_configure_log.txt\nc"
  },
  {
    "path": "scripts/license_prepend.sh",
    "chars": 177,
    "preview": "DIR=\"$( cd -P \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\necho $DIR\nif ! grep -q Apache $1\nthen\necho $1\ncat $DIR/../lic"
  },
  {
    "path": "scripts/linux_run_script_no_jvm_template.sh",
    "chars": 1868,
    "preview": "#!/bin/bash\n# This script will run the program in the same location and with the same\n# name as this script (without the"
  },
  {
    "path": "scripts/linux_run_script_template.sh",
    "chars": 3242,
    "preview": "#!/bin/bash\n# This script will run the program in the same location and with the same\n# name as this script (without the"
  },
  {
    "path": "scripts/make_all_docs.sh",
    "chars": 35,
    "preview": "doxygen\ndoxygen Doxyfile_internal \n"
  },
  {
    "path": "scripts/make_dist.sh",
    "chars": 849,
    "preview": "#!/bin/bash\n\nmajor_version=2.1\n\necho \"THIS MUST BE RUN IN GRAPHLAB HOME\"\n\n## JOEY: WHY ARE WE REMOVING THE FOLDER AND TH"
  },
  {
    "path": "scripts/mpi_redirect_stdout.sh",
    "chars": 219,
    "preview": "#!/bin/bash\n\nif [ ! -z \"$PMI_RANK\" ]; then\nRANK=$PMI_RANK\nelif [ ! -z \"$OMPI_COMM_WORLD_RANK\" ]; then\nRANK=$OMPI_COMM_WO"
  },
  {
    "path": "scripts/mpirsync",
    "chars": 387,
    "preview": "#!/bin/bash\n\nsrc_path=$(hostname):$PWD\ndest_path=$PWD\nmpiexec.openmpi -hostfile ~/machines -nolocal -pernode mkdir -p $d"
  },
  {
    "path": "scripts/rpcexec.py",
    "chars": 6406,
    "preview": "#!/usr/bin/python\nimport sys\nimport os\nimport string\nimport subprocess\nimport time\n\n\"\"\"\nUsage: rpcexec -n n_to_start -f "
  },
  {
    "path": "scripts/test_dist.sh",
    "chars": 345,
    "preview": "#!/bin/sh\n\n#script for auto test graphlab distribution, written by danny bickson\nif [ $# -ne 1 ]; then\n   echo \"Usage: $"
  },
  {
    "path": "src/CMakeLists.txt",
    "chars": 38,
    "preview": "project(GraphLab)\n\nsubdirs(graphlab)\n\n"
  },
  {
    "path": "src/graphlab/CMakeLists.txt",
    "chars": 1723,
    "preview": "project(GraphLab)\n\n# link_libraries(${Boost_LIBRARIES})\n\n\nsubdirs(\n#  aggregation\n  engine\n  graph\n  options\n  parallel\n"
  },
  {
    "path": "src/graphlab/aggregation/CMakeLists.txt",
    "chars": 22,
    "preview": "project(GraphLab)\n\n\n\n\n"
  },
  {
    "path": "src/graphlab/aggregation/aggregation_includes.hpp",
    "chars": 794,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/aggregation/distributed_aggregator.hpp",
    "chars": 40862,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/docs/faq.dox",
    "chars": 748,
    "preview": "/**\n \n\\page FAQ FAQ\n\n##I am trying to run GraphLab distributed using files from HDFS as input. However, I am getting scr"
  },
  {
    "path": "src/graphlab/docs/overview.dox",
    "chars": 2289,
    "preview": "/**\n\n  \\defgroup engines GraphLab Engines\n\\defgroup util GraphLab Utility Classes and Functions\n\\defgroup rpc GraphLab R"
  },
  {
    "path": "src/graphlab/docs/using.dox",
    "chars": 35081,
    "preview": "/**\n  \\page using_graphlab Basic GraphLab Tutorial\n\n  In this example, we would implement a simple PageRank application "
  },
  {
    "path": "src/graphlab/docs/using_warp.dox",
    "chars": 12218,
    "preview": "/**\n\\page using_warp GraphLab Warp System Tutorial\n\nThis tutorial demonstrate the latest feature of GraphLab -- the Warp"
  },
  {
    "path": "src/graphlab/engine/CMakeLists.txt",
    "chars": 40,
    "preview": "project(GraphLab)\n\n# subdirs(callback)\n\n"
  },
  {
    "path": "src/graphlab/engine/async_consistent_engine.hpp",
    "chars": 47503,
    "preview": "/**\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licen"
  },
  {
    "path": "src/graphlab/engine/distributed_chandy_misra.hpp",
    "chars": 35874,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "src/graphlab/engine/engine_includes.hpp",
    "chars": 1136,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/engine/execution_status.hpp",
    "chars": 2234,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/engine/iengine.hpp",
    "chars": 49526,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/engine/message_array.hpp",
    "chars": 5531,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/engine/omni_engine.hpp",
    "chars": 7766,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/engine/synchronous_engine.hpp",
    "chars": 67812,
    "preview": "/**\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licen"
  },
  {
    "path": "src/graphlab/engine/warp_engine.hpp",
    "chars": 46916,
    "preview": "/**\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licen"
  },
  {
    "path": "src/graphlab/engine/warp_graph_broadcast.hpp",
    "chars": 20251,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "src/graphlab/engine/warp_graph_mapreduce.hpp",
    "chars": 22976,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "src/graphlab/engine/warp_graph_transform.hpp",
    "chars": 18124,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "src/graphlab/engine/warp_parfor_all_vertices.hpp",
    "chars": 4468,
    "preview": "/*  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Lic"
  },
  {
    "path": "src/graphlab/graph/CMakeLists.txt",
    "chars": 19,
    "preview": "project(GraphLab)\n\n"
  },
  {
    "path": "src/graphlab/graph/builtin_parsers.hpp",
    "chars": 9686,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/graph/distributed_graph.hpp",
    "chars": 132263,
    "preview": "/**\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licen"
  },
  {
    "path": "src/graphlab/graph/dynamic_local_graph.hpp",
    "chars": 25271,
    "preview": "/**\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licen"
  },
  {
    "path": "src/graphlab/graph/graph_basic_types.hpp",
    "chars": 2290,
    "preview": "/**\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licen"
  },
  {
    "path": "src/graphlab/graph/graph_formats.dox",
    "chars": 5529,
    "preview": "/**\n\n\\page graph_formats Graph File Formats\n\nWe build in support for 3 common portable graph file formats (tsv, snap, ad"
  },
  {
    "path": "src/graphlab/graph/graph_gather_apply.hpp",
    "chars": 23845,
    "preview": "/**\n * Copyright (c) 2009 Carnegie Mellon University.\n *     All rights reserved.\n *\n *  Licensed under the Apache Licen"
  },
  {
    "path": "src/graphlab/graph/graph_hash.hpp",
    "chars": 2043,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  },
  {
    "path": "src/graphlab/graph/graph_includes.hpp",
    "chars": 910,
    "preview": "/**  \n * Copyright (c) 2009 Carnegie Mellon University. \n *     All rights reserved.\n *\n *  Licensed under the Apache Li"
  }
]

// ... and 557 more files (download for full content)

About this extraction

This page contains the full source code of the dato-code/PowerGraph GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 757 files (6.0 MB), approximately 1.6M tokens, and a symbol index with 8634 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!