function.h File Reference

#include "callstack_tracker.h"
#include "chaos.h"
#include <string.h>

Include dependency graph for function.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  basis

Defines

#define GC_WHACK(ptr)
 managed c++ does not allow normal pointer reference behavior and needs a simpler version.
#define low_byte(w)   ((byte)(w))
 low_byte operates on 16 bit integers by returning the low end of the number.
#define high_byte(w)   ((byte)(uint16(w) >> 8))
 high_byte operates on 16 bit integers by returning the high end byte.
#define low_short(l)   ((u_short)(l))
 low_short operates on 32 bit integers by returning the low end short.
#define high_short(l)   ((u_short)(u_int(l) >> 16))
 high_short operates on 32 bit integers by returning the high end short.
#define __WHERE__   isprintf("%s [line %d]", __FILE__, __LINE__)
 __WHERE__ is a macro that combines the file and line number macros.
#define FUNCDEF(func_in)
 FUNCDEF is used to set the name of a function and plug into the callstack.
#define BASE_FUNCTION(func)
 A macro used within the FUNCTION macro to do most of the work.
#define FUNCTION(func)
 This macro sets up a descriptive variable called "function_name".
#define BASE_INSTANCE_FUNCTION(func)
 A macro used within the INSTANCE_FUNCTION macro.
#define INSTANCE_FUNCTION(func)
 A function macro that contains more information.

Functions

template<class type>
type maximum (type a, type b)
 minimum returns the lesser of two values.
template<class type>
type minimum (type a, type b)
 maximum returns the greater of two values.
template<class type>
type absolute_value (type a)
 Returns a if a is non-negative, and returns -a otherwise.
template<class type>
bool positive (type a)
 positive returns true if "a" is greater than zero, or false otherwise.
template<class type>
bool non_positive (type a)
 non_positive returns true if "a" is less than or equal to zero.
template<class type>
bool negative (type a)
 negative returns true if "a" is less than zero.
template<class type>
bool non_negative (type a)
 non_negative returns true if "a" is greater than or equal to zero.
template<class T1, class T2>
bool basis::operator!= (const T1 &x, const T2 &y)
template<class T1, class T2>
bool basis::operator> (const T1 &x, const T2 &y)
template<class T1, class T2>
bool basis::operator<= (const T1 &x, const T2 &y)
template<class T1, class T2>
bool basis::operator>= (const T1 &x, const T2 &y)
template<class type>
bool range_check (const type &c, const type &low, const type &high)
 Returns true if "c" is between "low" and "high" inclusive.
template<class type>
type square (const type &a)
 Returns the square of the object (which is a * a).
template<class type>
void flip_increasing (type &a, type &b)
 Makes sure that two values are in increasing order (a < b).
template<class type>
void flip_decreasing (type &a, type &b)
 Makes sure that two values are in decreasing order (a > b).
template<class type>
void swap_values (type &a, type &b)
 Exchanges the values held by "a" & "b".
template<class type>
type sign (type a)
 Returns the numerical sign of a number "a".
template<class type>
void shuffle_list (type *list, int elems)
 shuffles a list of objects by iterating on list and moving each element.
template<class type>
type number_of_packets (type message_size, type packet_size)
 Reports number of packets needed given a total size and the packet size.
template<class type>
type last_packet_size (type message_size, type packet_size)
 Tells how many bytes are used within last packet.
template<class contents>
void WHACK (contents *&ptr)
 deletion with clearing of the pointer.
template<class contents>
void memory_assign (contents *destination, const contents *source, int length)
 A copy routine that provides some machine independence.
template<class contents>
void object_assign (contents *destination, const contents *source)
 Similar to an assignment operator (destination = source).
template<class type>
type & bogonic ()
 Returns an object that is defined statically.


Detailed Description

Provides a set of useful mini-functions.

Definition in file function.h.


Define Documentation

#define __WHERE__   isprintf("%s [line %d]", __FILE__, __LINE__)

__WHERE__ is a macro that combines the file and line number macros.

These are available to most compilers as automatically updated macros called __FILE__ and __LINE__. This macro can be used anywhere an istring can be used and reports the current file name and line number.

Definition at line 153 of file function.h.

Referenced by array_tester(), and deep_array_tester().

#define BASE_FUNCTION ( func   ) 

Value:

istring just_function = istring(func); \
  istring function_name = static_class_name(); \
  function_name += istring("::") + just_function
A macro used within the FUNCTION macro to do most of the work.

Definition at line 167 of file function.h.

#define BASE_INSTANCE_FUNCTION ( func   ) 

Value:

istring just_function = istring(func); \
  istring function_name = instance_name(); \
  function_name += istring("::") + just_function
A macro used within the INSTANCE_FUNCTION macro.

Definition at line 179 of file function.h.

#define FUNCDEF ( func_in   ) 

Value:

const char *func = (const char *)func_in; \
  frame_tracking_instance __trail_of_function(static_class_name(), func, \
      __FILE__, __LINE__, true)
FUNCDEF is used to set the name of a function and plug into the callstack.

This macro establishes the function name and should be used at the top of functions that wish to participate in class based logged as well as the callstack tracing capability of hoople. A new variable is created on the stack to track the function's presence until the function exits, at which time the stack will no longer show it as active.

Definition at line 161 of file function.h.

Referenced by spocket::accept(), hash_table< key_type, contents >::acquire(), deep_array< contents >::acquire(), amorph< contents >::acquire(), cromp_client::acquire(), entity_data_bin::acquire_for_any(), entity_data_bin::acquire_for_entity(), entity_data_bin::acquire_for_identifier(), key_repository::add(), scheduler::add(), nodes::symbol_tree::add(), symbol_table< contents >::add(), hash_table< key_type, contents >::add(), connection_table::add(), buffer_manager::add_buffer(), file_transfer_tentacle::add_correspondence(), cromp_security::add_entity(), entity_data_bin::add_item(), directory_tree::add_path(), example_rpc_client::add_point(), application_config::add_program(), application_config::add_startup_entry(), octopus::add_tentacle(), thread_cabinet::add_thread(), amorph< contents >::adjust(), amorph< contents >::amorph(), raw_socket::analyze_select_result(), any_item_applier(), amorph< contents >::append(), application_config::application_config(), portable::application_name(), hash_table< key_type, contents >::apply(), argument_list::apply(), life_maintainer::apply(), cromp_client::asynch_connect(), spocket::await_readable(), spocket::await_writable(), reader_writer_lock::begin_write(), query_handler::bind_columns(), blowfish_crypto::blowfish_crypto(), blowfish_decryption(), blowfish_encryption(), amorph< contents >::borrow(), heavy_file_operations::buffer_files(), radio_box::button_event(), message_box::button_event(), button::button_event(), byte_format::bytes_to_shifted_string(), file_info::calculate(), directory_tree::calculate(), thread_cabinet::cancel_all(), canvas::canvas(), cromp_common::chew_hostname(), thread_cabinet::clean_debris(), entity_data_bin::clean_out_deadwood(), cleaning_applier(), amorph< contents >::clear(), amorph< contents >::clear_all(), connection_table::clear_dead(), anchor_window::close_app_window(), shutdown_alerter::close_application(), compare(), directory_tree::compare_trees(), spocket::connect(), cromp_client::connect(), spocket::connected(), connection_table::connected(), login_tentacle::consume(), file_transfer_tentacle::consume(), encryption_tentacle::consume(), identity_tentacle::consume(), service_control::control_service(), tcpip_stack::convert(), heavy_file_operations::copy_file(), copy_hash_table(), recursive_file_copy::copy_hierarchy(), connection_table::count_users(), basic_window::create(), cromp_client::cromp_client(), cromp_common::cromp_common(), cromp_server::cromp_server(), blowfish_crypto::decrypt(), cromp_client::decrypt_package_as_needed(), secret_string::decrypt_string(), post_office::deliver_mail_on_route(), buffer::detailed_form(), internet_address::detokenize(), network_address::detokenize(), cromp_server::disable_servers(), spocket::disconnect(), buffer_manager::disengage(), tcpip_stack::dns_resolve(), cromp_server::drop_dead_clients(), post_office::drop_off(), buffer::dump(), hash_table< key_type, contents >::elements(), empty_service::empty_service(), cromp_client::enable_encryption(), cromp_server::enable_servers(), blowfish_crypto::encrypt(), secret_string::encrypt_string(), reader_writer_lock::end_write(), tcpip_stack::enumerate_adapters(), octopus::evaluate(), socket_minder::evaluate_interest(), example_rpc_client::example_rpc_client(), write_build_config::execute(), version_stamper::execute(), portable::exiting_child_signal_handler(), canvas::exposer(), octopus::expunge(), buffer_manager::extract(), encryption_infoton::extract_response(), infoton::fast_pack(), infoton::fast_unpack(), filter_actor_applier(), scheduler::filter_missing_actors(), command_line::find(), nodes::symbol_tree::find(), symbol_table< contents >::find(), hash_table< key_type, contents >::find(), amorph< contents >::find(), connection_table::find(), connection_table::find_destination(), connection_table::find_dupe(), amorph< contents >::find_empty(), cromp_server::find_entity(), connection_table::find_live_reals(), connection_table::find_low_level(), bookmark_tree::find_parent(), process_control::find_process_in_list(), connection_table::find_related_conns(), application_config::find_section(), connection_table::find_state(), cromp_transaction::flatten(), buffer::full_length(), tcpip_stack::full_resolve(), RSA_crypto::generate_key(), blowfish_crypto::generate_key(), deep_array< contents >::get(), amorph< contents >::get(), array< contents >::get(), example_rpc_client::get_all_points(), portable::get_cmdline_from_proc(), command_line::get_command_line(), connection_table::get_conn_state(), file_transfer_tentacle::get_differences(), cromp_server::get_from_client(), connection_table::get_low_level_id(), buffer::get_packet(), version_ini::get_record(), ini_configurator::get_section(), table_configurator::get_section(), entity_data_bin::get_sizes(), example_rpc_client::get_some_points(), command_line::get_value(), handle_break(), socket_minder::handle_pending_connecters(), timer_driver::handle_system_timer(), internet_address::has_ip_address(), symbol_table< contents >::hash_appropriately(), HOOPLE_GLOBALS(), tcpip_stack::hostname(), infoton::infoton(), service_root::initialize(), amorph< contents >::insert(), matrix< contents >::insert_column(), mat_morph< contents >::insert_column(), matrix< contents >::insert_row(), mat_morph< contents >::insert_row(), service_root::install(), internet_address::ip_appropriate_number(), istring::istring(), istring_sprintf_test(), wp_menu_item::item_selected_event(), ithread::ithread(), directory_tree::jump_to(), process_manager::launch_at_startup(), shutdown_alerter::launch_console(), process_manager::launch_now(), huge_file::length(), slider::less_arrow_callback(), list_box::list_box_callback(), connection_table::live(), key_repository::lock(), rendezvous::lock(), example_rpc_client::login(), cromp_client::login(), query_handler::login_to_database(), example_rpc_client::logout(), cromp_server::look_for_clients(), palette::lookup(), bookmark_tree::magic_category_comparison(), main(), scheduler::mark_dead(), slider::more_arrow_callback(), mouse::mouse_callback(), example_rpc_client::mouse_hit(), huge_file::move_to(), named_byte_transaction(), nodes::tree::iterator::next(), ini_roller::next_id(), amorph< contents >::next_valid(), memory_limiter::okay_allocation(), debugging_console_view::OnBeginPrinting(), tiny_shell::OnClose(), debugging_console_view::OnDraw(), debugging_console_view::OnEndPrinting(), debugging_console_view::OnPreparePrinting(), debugging_console_view::OnPrint(), cromp_common::open_common(), write_build_config::output_definition_macro(), deep_array< contents >::overwrite(), array< contents >::overwrite(), connection_table::owns_connection(), cromp_common::pack_and_ship(), buffer::packet_length(), tokenizer::parse(), list_parsing::parse_csv_line(), application_config::parse_startup_entry(), cromp_transaction::peek_header(), file_transfer_tentacle::periodic_actions(), octopus::periodic_cleaning(), nechung_oracle::pick_random(), post_office::pick_up(), zing_table::pop_event(), zing_table::pop_events(), encryption_infoton::prepare_blowfish_key(), query_handler::prepare_for_query(), radio_box::press(), query_handler::print_row(), RSA_crypto::private_decrypt(), RSA_crypto::private_encrypt(), RSA_crypto::private_key(), bookmark_tree::process_category(), example_rpc_server::process_client_request(), bookmark_tree::process_comment(), grid_processor::process_grid_files(), bookmark_tree::process_link(), process_manager::process_manager(), query_handler::process_query(), grid_processor::process_query_as_df(), tentacle::propel_arm(), nodes::symbol_tree::prune(), RSA_crypto::public_decrypt(), RSA_crypto::public_encrypt(), RSA_crypto::public_key(), cromp_common::push_outgoing(), socket_minder::push_receives(), socket_minder::push_sends(), process_manager::push_timed_activities(), ini_configurator::put(), deep_array< contents >::put(), amorph< contents >::put(), array< contents >::put(), table_configurator::put_section(), process_manager::query_application(), portable::query_for_process_info(), process_control::query_process(), huge_file::read(), manifest_chunk::read_a_string(), manifest_chunk::read_a_timestamp(), manifest_chunk::read_an_int(), manifest_chunk::read_an_obscured_int(), bookmark_tree::read_csv_file(), spocket::receive(), spocket::receive_from(), service_control::reconfigure_service(), connection_table::record_request(), directory::recursive_create(), process_manager::reenable_launching_services(), file_transfer_tentacle::refresh_now(), file_transfer_tentacle::register_file_transfer(), socket_minder::register_interest(), hash_table< key_type, contents >::rehash(), buffer::release(), removal_applier(), service_root::remove(), argument_list::remove(), scheduler::remove_by_actor(), scheduler::remove_by_id(), process_manager::remove_from_startup(), directory_tree::remove_path(), application_config::remove_program(), socket_minder::remove_socket_data(), application_config::remove_startup_entry(), octopus::remove_tentacle(), rendezvous::rendezvous(), database_login_info::replace_value(), directory::rescan(), file_time::reset(), hash_table< key_type, contents >::reset(), amorph< contents >::reset(), cromp_client::reset(), grid_processor::reset_data_fields(), connection_table::reset_time(), array< contents >::resize(), tcpip_stack::resolve_any(), octopus::restore(), deep_array< contents >::restore(), cromp_transaction::resynchronize(), array< contents >::retrain(), run_test_01(), run_test_02(), run_test_03(), run_test_04(), run_test_05(), run_test_06(), run_test_07(), run_test_08(), run_test_09(), run_test_10(), run_test_11(), run_test_12(), run_test_13(), run_test_14(), run_test_15(), run_test_16(), run_test_17(), run_test_18(), run_test_19(), run_test_20(), run_test_21(), run_test_22(), run_test_23(), run_test_24(), run_test_25(), run_test_26(), run_test_27(), run_test_28(), run_test_29(), run_test_30(), run_test_31(), run_test_32(), run_test_33(), run_test_34(), run_test_35(), run_test_36(), run_test_37(), run_test_38(), run_test_39(), run_test_40(), run_test_41(), SAFE_STATIC_CONST(), network_address::same_host(), network_address::same_port(), scramble_applier(), secret_string::secret_string(), huge_file::seek(), directory_tree::seek(), raw_socket::select(), list_box::selection_event(), spocket::send(), cromp_common::send_buffer(), smtp_client::send_email(), spocket::send_to(), cromp_server::send_to_client(), ice_key::set(), raw_socket::set_broadcast(), infoton::set_classifier(), connection_table::set_conn_state(), connection_table::set_conn_states(), raw_socket::set_keep_alive(), RSA_crypto::set_key(), blowfish_crypto::set_key(), raw_socket::set_nagle_algorithm(), raw_socket::set_non_blocking(), raw_socket::set_reuse_address(), timer_driver::set_timer(), smtp_client::setup_session(), shared_memory::shared_memory(), byte_format::shifted_string_to_bytes(), query_handler::show_column_structure(), query_handler::show_results(), service_control::show_system_error(), query_handler::show_this_row(), process_manager::shut_down_launching_services(), semaphore::signal(), slider::slider_callback(), slider::slider_moved_event(), socket_minder::snoozy_select(), connection_table::socket_to_real_transport(), spocket::spocket(), stamping_spider(), standard_sprintf_test(), ithread::start(), file_transfer_tentacle::status(), stdio_redirecter::std_thread_action(), thread_cabinet::stop_all(), deep_array< contents >::store(), buffer::store_packet(), tentacle::store_product(), deep_array< contents >::subarray(), cromp_client::submit(), istring::substring(), amorph< contents >::swap_contents(), sym_tab_finder_apply(), symbol_table_compare(), cromp_client::synchronous_request(), system_values::system_values(), test_bogon_amorph(), test_byte_array_amorph(), infoton::test_fast_unpack(), test_string_table(), nodes::symbol_tree::text_form(), timer_driver_private_handler(), internet_address::tokenize(), connection_table::transport_connected(), cromp_transaction::unflatten(), rendezvous::unlock(), network_address::unpack(), connection_table::update(), database_login_info::update_freetds_configuration(), deep_array< contents >::use(), array< contents >::use(), query_handler::use_database(), slider::value(), key_repository::whack(), nodes::tree::iterator::whack(), symbol_table< contents >::whack(), whacking_spider(), cromp_server::wrap_infoton(), stdio_redirecter::write(), huge_file::write(), version_ini::write_assembly(), grid_processor::write_bogus_row(), grid_processor::write_data_fields(), grid_processor::write_fields_for_row(), heavy_file_operations::write_file_chunk(), write_build_config::write_output_file(), scheduler::zap(), hash_table< key_type, contents >::zap(), amorph< contents >::zap(), connection_table::zap(), buffer_manager::zap(), buffer_manager::zap_all(), buffer_manager::zap_all_matches(), matrix< contents >::zap_column(), mat_morph< contents >::zap_column(), buffer_manager::zap_expired(), buffer_manager::zap_match(), process_manager::zap_process(), process_control::zap_process(), stdio_redirecter::zap_program(), matrix< contents >::zap_row(), mat_morph< contents >::zap_row(), timer_driver::zap_timer(), zing_table::zing_event(), amorph< contents >::~amorph(), cromp_client::~cromp_client(), cromp_common::~cromp_common(), empty_service::~empty_service(), hash_table< key_type, contents >::~hash_table(), octopus::~octopus(), process_manager::~process_manager(), query_handler::~query_handler(), rendezvous::~rendezvous(), scheduler::~scheduler(), spocket::~spocket(), and timer_driver::~timer_driver().

#define FUNCTION ( func   ) 

Value:

BASE_FUNCTION(func); \
  function_name += ": "; \
  update_current_stack_frame_line_number(__LINE__)
This macro sets up a descriptive variable called "function_name".

The variable includes the object's name (static_class_name() must be implemented for the current object) and the current function's name within that object (the macro "func" must be defined with that name).

Definition at line 174 of file function.h.

Referenced by connection_table::update().

#define GC_WHACK ( ptr   ) 

Value:

delete ptr; \
  ptr = NIL
managed c++ does not allow normal pointer reference behavior and needs a simpler version.

Definition at line 127 of file function.h.

#define high_byte (  )     ((byte)(uint16(w) >> 8))

high_byte operates on 16 bit integers by returning the high end byte.

Definition at line 137 of file function.h.

#define high_short (  )     ((u_short)(u_int(l) >> 16))

high_short operates on 32 bit integers by returning the high end short.

Definition at line 146 of file function.h.

#define INSTANCE_FUNCTION ( func   ) 

Value:

BASE_INSTANCE_FUNCTION(func); \
  function_name += ": "; \
  update_current_stack_frame_line_number(__LINE__)
A function macro that contains more information.

This macro is similar to FUNCTION but it uses the class's instance_name() method (see object_base). The instance function usually will provide more information about the class.

Definition at line 186 of file function.h.

#define low_byte (  )     ((byte)(w))

low_byte operates on 16 bit integers by returning the low end of the number.

Definition at line 133 of file function.h.

Referenced by portable::has_win95_style_shell().

#define low_short (  )     ((u_short)(l))

low_short operates on 32 bit integers by returning the low end short.

Definition at line 142 of file function.h.

Referenced by portable::has_win95_style_shell().


Function Documentation

template<class type>
type absolute_value ( type  a  )  [inline]

Returns a if a is non-negative, and returns -a otherwise.

Definition at line 34 of file function.h.

Referenced by geometric::ellipse::area(), array_tester(), deep_array_tester(), geometric::rectangle< numeric_type >::height(), is_floating_point(), huge_file::move_to(), geometric::point< numeric_type >::operator==(), portable::rolling_uptime(), run_test_34(), portable::system_uptime(), time_stamp::text_form(), and geometric::rectangle< numeric_type >::width().

template<class type>
type& bogonic (  ) 

Returns an object that is defined statically.

Thus the returned object will never be recreated once this function is called within the same scope of memory (within a dynamic library or application). This is useful for templates that want to have access to a bogus element whose contents don't matter. NOTE: bogonic is not thread safe!

Definition at line 212 of file function.h.

template<class type>
void flip_decreasing ( type &  a,
type &  b 
) [inline]

Makes sure that two values are in decreasing order (a > b).

Definition at line 72 of file function.h.

template<class type>
void flip_increasing ( type &  a,
type &  b 
) [inline]

Makes sure that two values are in increasing order (a < b).

Definition at line 68 of file function.h.

Referenced by array_tester(), deep_array_tester(), main(), geometric::rectangle< numeric_type >::order(), and run_test_32().

template<class type>
type last_packet_size ( type  message_size,
type  packet_size 
) [inline]

Tells how many bytes are used within last packet.

Definition at line 107 of file function.h.

Referenced by buffer::buffer().

template<class type>
type maximum ( type  a,
type  b 
) [inline]

minimum returns the lesser of two values.

Definition at line 27 of file function.h.

Referenced by geometric::polygon::inside(), geometric::rectangle< numeric_type >::intersection(), geometric::rectangle< numeric_type >::maximum_x(), and geometric::rectangle< numeric_type >::maximum_y().

template<class contents>
void memory_assign ( contents *  destination,
const contents *  source,
int  length 
)

A copy routine that provides some machine independence.

It is similar to an assignment operation, but the source and destination are pointers into memory. Note that this will fail disastrously if the source or destination aren't at least "length" bytes long.

Definition at line 195 of file function.h.

Referenced by basis::attach(), tcpip_stack::convert(), ice_key::encrypt(), fake_amorph_unpack(), fake_pack(), object_assign(), istring::operator+=(), and test_byte_array_amorph().

template<class type>
type minimum ( type  a,
type  b 
) [inline]

maximum returns the greater of two values.

Definition at line 30 of file function.h.

Referenced by array_tester(), heavy_file_operations::buffer_files(), file_info::calculate(), averager< contents >::check_for_compaction(), istring::copy(), deep_array_tester(), internet_address::fill(), bit_vector::find_first(), bit_vector::get(), string_hasher::hash(), geometric::polygon::inside(), palette::install_gray_colormap(), geometric::rectangle< numeric_type >::intersection(), wx_debugging_base::log(), debugging_base::log(), geometric::rectangle< numeric_type >::minimum_x(), geometric::rectangle< numeric_type >::minimum_y(), huge_file::move_to(), palette::palette(), matrix< contents >::redimension(), mat_morph< contents >::redimension(), array< contents >::resize(), cromp_common::send_buffer(), istring::slow_strncasecmp(), array< contents >::stuff(), and heavy_file_operations::write_file_chunk().

template<class type>
bool negative ( type  a  )  [inline]

negative returns true if "a" is less than zero.

Definition at line 42 of file function.h.

Referenced by hash_table< key_type, contents >::acquire(), ADD(), hash_table< key_type, contents >::add(), ADD2(), advance(), averager< contents >::averager(), bookmark_tree::break_name(), byte_format::bytes_to_string(), filename_list::calculate_progress(), list_manager::clone_object(), spocket::connect(), network_address::detokenize(), buffer_manager::disengage(), state_machine::duration_override(), bit_vector::empty(), filename::extension(), FIND(), hash_table< key_type, contents >::find(), cromp_server::find_entity(), application_config::find_program(), connection_table::find_state(), octopus_request_id::from_text(), static_memory_gremlin::get(), portable::get_cmdline_from_proc(), cromp_server::get_from_client(), internet_address::has_ip_address(), sequence_tracker::have_seen(), tcpip_stack::hostname(), istring::icompare(), service_root::install(), list_manager::is_listed(), main(), span_manager::make_missing_list(), span_manager::make_received_list(), transition_map::make_transition(), deep_array< contents >::overwrite(), array< contents >::overwrite(), byte_format::parse_dump(), nodes::symbol_tree::prune(), transition_map::pulse(), portable::query_for_process_info(), span_manager::received_sequence(), octopus::remove_tentacle(), istring::replace(), istring::replace_all(), grid_processor::reset_data_fields(), bit_vector::resize(), filename::rootname(), run_test_21(), run_test_32(), ini_configurator::sections(), command_line::separate_command_line(), raw_socket::set_broadcast(), raw_socket::set_keep_alive(), raw_socket::set_nagle_algorithm(), raw_socket::set_non_blocking(), raw_socket::set_reuse_address(), timer_driver::set_timer(), shared_memory::shared_memory(), string_manipulation::split_lines(), strain_out_html_codes(), parser_bits::substitute_env_vars(), time_stamp::text_form(), transition_map::time_slice(), list_manager::update(), version::version(), bit_vector::whole(), grid_processor::write_fields_for_row(), column_headers::zap(), list_manager::zap(), hash_table< key_type, contents >::zap(), buffer_manager::zap(), buffer_manager::zap_all_matches(), buffer_manager::zap_match(), and timer_driver::zap_timer().

template<class type>
bool non_negative ( type  a  )  [inline]

non_negative returns true if "a" is greater than or equal to zero.

Definition at line 44 of file function.h.

Referenced by transition_map::add_state(), command_line::get_command_line(), byte_filer::getline(), state_machine::override_timing(), smtp_client::prune_address(), static_memory_gremlin::put(), byte_filer::read(), smtp_client::validate_address(), version_ini::write_assembly(), critical_events::write_to_critical_events(), and buffer_manager::zap_all_matches().

template<class type>
bool non_positive ( type  a  )  [inline]

non_positive returns true if "a" is less than or equal to zero.

Definition at line 40 of file function.h.

Referenced by istring::istring(), palette::palette(), occurrence::valid(), smtp_client::validate_address(), and semaphore::wait().

template<class type>
type number_of_packets ( type  message_size,
type  packet_size 
) [inline]

Reports number of packets needed given a total size and the packet size.

This returns the number of packets needed to contain a contiguous array of characters with size "message_size" when the number of characters per packet is "packet_size".

Definition at line 100 of file function.h.

Referenced by bit_vector::bit_vector(), bit_vector::get(), and bit_vector::resize().

template<class contents>
void object_assign ( contents *  destination,
const contents *  source 
)

Similar to an assignment operator (destination = source).

Note that this only works for flat objects, which is to say, objects without any deep contents (such as pointers).

Definition at line 207 of file function.h.

References memory_assign().

Referenced by fake_amorph_unpack(), and fake_pack().

template<class type>
bool positive ( type  a  )  [inline]

positive returns true if "a" is greater than zero, or false otherwise.

Definition at line 38 of file function.h.

Referenced by istring::slow_strncasecmp().

template<class type>
bool range_check ( const type &  c,
const type &  low,
const type &  high 
) [inline]

Returns true if "c" is between "low" and "high" inclusive.

Definition at line 61 of file function.h.

Referenced by parser_bits::is_alphanumeric(), parser_bits::is_hexadecimal(), parser_bits::is_identifier(), and parser_bits::is_numeric().

template<class type>
void shuffle_list ( type *  list,
int  elems 
) [inline]

shuffles a list of objects by iterating on list and moving each element.

Definition at line 85 of file function.h.

References chaos::inclusive(), and rando.

template<class type>
type sign ( type  a  )  [inline]

Returns the numerical sign of a number "a".

Definition at line 80 of file function.h.

template<class type>
type square ( const type &  a  )  [inline]

Returns the square of the object (which is a * a).

Definition at line 65 of file function.h.

Referenced by geometric::circle::area(), geometric::point< numeric_type >::distance(), geometric::ellipse::location(), geometric::point< numeric_type >::magnitude(), geometric::ellipse::perimeter(), and geometric::point< numeric_type >::r().

template<class type>
void swap_values ( type &  a,
type &  b 
) [inline]

Exchanges the values held by "a" & "b".

Definition at line 76 of file function.h.

Referenced by array< contents >::swap_contents().

template<class contents>
void WHACK