#include <emobject.h>
Public Member Functions | |
Dict () | |
Dict (const string &key1, EMObject val1) | |
Construct a Dict object from 1 key/value pair It's probably more conventional to intialize key/value pairs using operator[], but either approach is fine. | |
Dict (const string &key1, EMObject val1, const string &key2, EMObject val2) | |
Construct a Dict object from 2 key/value pairs. | |
Dict (const string &key1, EMObject val1, const string &key2, EMObject val2, const string &key3, EMObject val3) | |
Construct a Dict object from 3 key/value pairs. | |
Dict (const string &key1, EMObject val1, const string &key2, EMObject val2, const string &key3, EMObject val3, const string &key4, EMObject val4) | |
Construct a Dict object from 4 key/value pairs. | |
Dict (const map< string, EMObject > &d) | |
Construct a Dict object from a map object Calls the generic algorithm "copy". | |
~Dict () | |
Destructor Performs no explicit action besides what the compiler automatically does. | |
Dict (const Dict &that) | |
Copy constructor Copies all elements in dict. | |
Dict & | operator= (const Dict &that) |
Assignment operator Copies all elements in dict. | |
vector< string > | keys () const |
Get a vector containing all of the (string) keys in this dictionary. | |
vector< EMObject > | values () const |
Get a vector containing copies of each of the EMObjects in this dictionary. | |
bool | has_key_ci (const string &key) const |
Ask the Dictionary if it as a particular key in a case insensitive way. | |
bool | has_key (const string &key) const |
Ask the Dictionary if it as a particular key. | |
size_t | size () const |
Ask the Dictionary for its size. | |
EMObject | get (const string &key) const |
Get the EMObject corresponding to the particular key Probably better to just use operator[]. | |
EMObject | get_ci (const string &key) const |
Get the EMObject corresponding to the particular key using case insensitivity. | |
void | put (const string &key, EMObject val) |
Put the value/key pair into the dictionary probably better to just use operator[]. | |
void | erase (const string &key) |
Remove a particular key. | |
void | clear () |
Clear all keys wraps map.clear(). | |
template<typename type> | |
type | set_default (const string &key, type val) |
Default setting behavior This can be achieved using a template - d.woolford Jan 2008 (before there was a function being written for every type). | |
Dict | copy_exclude_keys (const vector< string > &excluded_keys) const |
Dict | copy_exclusive_keys (const vector< string > &exclusive_keys) const |
Dict | copy_keys_in (const TypeDict &tdict) const |
EMObject & | operator[] (const string &key) |
EMObject | operator[] (const string &key) const |
iterator | begin (void) |
const_iterator | begin (void) const |
iterator | end (void) |
const_iterator | end (void) const |
iterator | find (const string &key) |
const_iterator | find (const string &key) const |
Private Attributes | |
map< string, EMObject > | dict |
Friends | |
bool | operator== (const Dict &d1, const Dict &d2) |
Friend declaration operator== namespace EMAN2 operator== accesses private variables. | |
bool | operator!= (const Dict &d1, const Dict &d2) |
Friend declaration operator!= namespace EMAN2 operator!= accesses private variables. | |
Classes | |
class | const_iterator |
Const iterator support for the Dict object This is just a wrapper, everything is inherited from the map<string,EMObject>::cons_iterator so the interface is the same as you would expect i.e for ( Dict::const_iterator it = params.begin(); it != params.end(); ++it ). More... | |
class | iterator |
Non const iterator support for the Dict object This is just a wrapper, everything is inherited from the map<string,EMObject>::iterator so the interface is the same as you would expect i.e for ( Dict::iterator it = params.begin(); it != params.end(); ++it ). More... |
Typical ways to construct a Dict:
Dict d; d["lowpass"] = 12.23; float lowpass1 = d["lowpass"];
Dict d2("lowpass", 12.23);
You can iterate through a dict: for ( Dict::const_iterator it = params.begin(); it != params.end(); ++it ) { //do things to it } And similary use the Dict iterator as arguments to the generic algorithms that are feasible, such as copy.
You can find things in the iterator style: if( d.find("lowpass") != d.end() ) cout << "D has a lowpass key" << endl;\ Or like this if( d.has_key("lowpass") ) ...
A Dict has copy and assignment operators.
See the testing code in rt/emdata/test_emobject.cpp for prewritten testing code
Definition at line 377 of file emobject.h.
|
Definition at line 380 of file emobject.h.
|
|
Construct a Dict object from 1 key/value pair It's probably more conventional to intialize key/value pairs using operator[], but either approach is fine.
Definition at line 388 of file emobject.h. References dict. 00389 { 00390 dict[key1] = val1; 00391 }
|
|
Construct a Dict object from 2 key/value pairs.
Definition at line 395 of file emobject.h. References dict.
|
|
Construct a Dict object from 3 key/value pairs.
Definition at line 404 of file emobject.h. References dict.
|
|
Construct a Dict object from 4 key/value pairs.
Definition at line 415 of file emobject.h. References dict. 00419 { 00420 dict[key1] = val1; 00421 dict[key2] = val2; 00422 dict[key3] = val3; 00423 dict[key4] = val4; 00424 }
|
|
Construct a Dict object from a map object Calls the generic algorithm "copy".
Definition at line 429 of file emobject.h. 00430 { 00431 copy(d.begin(), d.end(), inserter(dict, dict.begin())); 00432 // Or use 00433 // dict.insert(d.begin(), d.end()); 00434 }
|
|
Destructor Performs no explicit action besides what the compiler automatically does.
Definition at line 439 of file emobject.h.
|
|
Copy constructor Copies all elements in dict.
Definition at line 875 of file emobject.cpp.
|
|
Definition at line 919 of file emobject.cpp. References dict. 00920 { 00921 return const_iterator( (map < string, EMObject >::const_iterator) dict.begin() ); 00922 }
|
|
Definition at line 914 of file emobject.cpp. References dict. Referenced by EMAN::Transform::detect_problem_keys(), EMAN::FactoryBase::insert_params(), operator=(), and EMAN::Reconstructor::print_params(). 00915 { 00916 return iterator( dict.begin() ); 00917 }
|
|
Clear all keys wraps map.clear().
Definition at line 539 of file emobject.h. References dict. Referenced by EMAN::FactoryBase::set_params(). 00540 { 00541 dict.clear(); 00542 }
|
|
Definition at line 556 of file emobject.h. References erase(), and has_key(). 00557 { 00558 Dict ret(*this); 00559 00560 for ( vector<string>::const_iterator it = excluded_keys.begin(); it != excluded_keys.end(); ++it ) { 00561 if (ret.has_key(*it)) ret.erase(*it); 00562 } 00563 00564 return ret; 00565 }
|
|
Definition at line 567 of file emobject.h. References has_key(). Referenced by copy_keys_in(). 00568 { 00569 Dict ret; 00570 for ( vector<string>::const_iterator it = exclusive_keys.begin(); it != exclusive_keys.end(); ++it ) { 00571 if (has_key(*it)) ret[*it] = (*this)[*it]; 00572 } 00573 00574 return ret; 00575 }
|
|
Definition at line 577 of file emobject.h. References copy_exclusive_keys(), EMAN::TypeDict::keys(), and keys(). Referenced by EMAN::FactoryBase::copy_relevant_params(). 00577 { 00578 vector<string> keys = tdict.keys(); 00579 return copy_exclusive_keys(keys); 00580 }
|
|
Definition at line 935 of file emobject.cpp. References dict. 00936 { 00937 return const_iterator( (map < string, EMObject >::const_iterator)dict.end() ); 00938 }
|
|
Definition at line 930 of file emobject.cpp. References dict. Referenced by EMAN::Transform::detect_problem_keys(), EMAN::FactoryBase::insert_params(), operator=(), and EMAN::Reconstructor::print_params(). 00931 { 00932 return iterator( dict.end() ); 00933 }
|
|
Remove a particular key.
Definition at line 531 of file emobject.h. References dict. Referenced by copy_exclude_keys(), and EMAN::EMData::del_attr().
|
|
Definition at line 940 of file emobject.cpp. References dict. 00941 { 00942 return const_iterator( (map < string, EMObject >::const_iterator)dict.find(key) ); 00943 }
|
|
Definition at line 925 of file emobject.cpp. References dict.
|
|
Get the EMObject corresponding to the particular key Probably better to just use operator[].
Definition at line 506 of file emobject.h. References dict, has_key(), LOGERR, and NotExistingObjectException. Referenced by EMAN::file_store::add_image(), EMAN::MeanZeroEdgeProcessor::process_inplace(), EMAN::EMData::rotate_translate(), EMAN::SigmaProcessor::set_params(), EMAN::RangeThresholdProcessor::set_params(), EMAN::ExpProcessor::set_params(), and EMAN::LinearXformProcessor::set_params(). 00507 { 00508 if( has_key(key) ) { 00509 return dict[key]; 00510 } 00511 else { 00512 LOGERR("No such key exist in this Dict"); 00513 throw NotExistingObjectException("EMObject", "Nonexisting key (" + key + ") in Dict"); 00514 } 00515 }
|
|
Get the EMObject corresponding to the particular key using case insensitivity.
Definition at line 997 of file emobject.cpp. References dict, NotExistingObjectException, and EMAN::Util::str_to_lower(). Referenced by EMAN::Transform::set_params(), EMAN::Transform::set_params_inverse(), and EMAN::Transform::set_rotation(). 00998 { 00999 string lower_key = Util::str_to_lower(key); 01000 01001 for (map < string, EMObject >::const_iterator it = dict.begin(); it != dict.end(); ++it ) { 01002 string lower = Util::str_to_lower(it->first); 01003 if (lower == lower_key) return it->second; 01004 } 01005 01006 throw NotExistingObjectException("EMObject", "Nonexisting key (" + key + ") in Dict"); 01007 }
|
|
|
Ask the Dictionary if it as a particular key in a case insensitive way.
Definition at line 1009 of file emobject.cpp. References dict, and EMAN::Util::str_to_lower(). Referenced by EMAN::Transform::detect_problem_keys(), EMAN::Transform::set_params(), EMAN::Transform::set_params_inverse(), and EMAN::Transform::set_rotation(). 01010 { 01011 string lower_key = Util::str_to_lower(key); 01012 01013 for (map < string, EMObject >::const_iterator it = dict.begin(); it != dict.end(); ++it ) { 01014 string lower = Util::str_to_lower(it->first); 01015 if (lower == lower_key) return true; 01016 } 01017 return false; 01018 }
|
|
Get a vector containing all of the (string) keys in this dictionary.
Definition at line 453 of file emobject.h. References dict. Referenced by copy_keys_in(), EMAN::EMUtil::dump_dict(), EMAN::TestUtil::dump_emdata(), EMAN::EMData::rotate_translate(), EMAN::EMData::set_attr_dict(), and EMAN::TestUtil::test_dict(). 00454 { 00455 vector < string > result; 00456 00457 map < string, EMObject >::const_iterator p; 00458 for (p = dict.begin(); p != dict.end(); p++) { 00459 result.push_back(p->first); 00460 } 00461 00462 return result; 00463 }
|
|
Assignment operator Copies all elements in dict.
Definition at line 880 of file emobject.cpp. References begin(), copy(), dict, and end(). 00881 { 00882 if ( this != &that ) 00883 { 00884 dict.clear(); 00885 copy(that.begin(), that.end(), inserter(dict, dict.begin())); 00886 // or use this 00887 // dict.insert( that.begin(), that.end()); 00888 } 00889 else 00890 { 00891 cerr << "Warning - attempted to assign a Dict object to itself. No action taken" << endl; 00892 } 00893 00894 return *this; 00895 }
|
|
Definition at line 597 of file emobject.h. References dict. 00598 { 00599 // if( has_key(key) ) return dict[key]; 00600 // else return EMObject(); 00601 return dict[key]; 00602 00603 // else { 00604 // LOGERR("No such key exist in this Dict"); 00605 // throw NotExistingObjectException("EMObject", "Nonexisting key (" + key + ") in Dict"); 00606 // } 00607 }
|
|
Definition at line 582 of file emobject.h. References dict. 00583 { 00584 // static EMObject nullreturn; 00585 // if( has_key(key) ) return dict[key]; 00586 // else return nullreturn; 00587 00588 // if( has_key(key) ) { 00589 return dict[key]; 00590 // } 00591 // else { 00592 // LOGERR("No such key exist in this Dict"); 00593 // throw NotExistingObjectException("EMObject", "Nonexisting key (" + key + ") in Dict"); 00594 // } 00595 }
|
|
Put the value/key pair into the dictionary probably better to just use operator[].
Definition at line 524 of file emobject.h. References dict. Referenced by EMAN::MarchingCubes::get_isosurface(), and EMAN::SymSearchProcessor::process_inplace().
|
|
Default setting behavior This can be achieved using a template - d.woolford Jan 2008 (before there was a function being written for every type).
Definition at line 548 of file emobject.h. References dict, and has_key(). Referenced by EMAN::ImageAverager::add_image(), EMAN::OrientationGenerator::add_orientation(), EMAN::Refine3DAligner::align(), EMAN::RefineAligner::align(), EMAN::RTFSlowExhaustiveAligner::align(), EMAN::RTFExhaustiveAligner::align(), EMAN::RotateFlipAligner::align(), EMAN::RotateTranslateFlipAligner::align(), EMAN::RotateTranslateAligner::align(), EMAN::RotationalAligner::align(), EMAN::TranslationalAligner::align(), EMAN::FRCCmp::cmp(), EMAN::PhaseCmp::cmp(), EMAN::OptVarianceCmp::cmp(), EMAN::QuadMinDotCmp::cmp(), EMAN::TomoDotCmp::cmp(), EMAN::DotCmp::cmp(), EMAN::SqEuclideanCmp::cmp(), EMAN::CccCmp::cmp(), EMAN::LowpassAutoBProcessor::create_radial_func(), EMAN::FourierReconstructor::finish(), EMAN::OptimumOrientationGenerator::gen_orientations(), EMAN::SaffOrientationGenerator::gen_orientations(), EMAN::EvenOrientationGenerator::gen_orientations(), EMAN::RandomOrientationGenerator::gen_orientations(), EMAN::EmanOrientationGenerator::gen_orientations(), EMAN::HSym::get_asym_unit_points(), EMAN::DSym::get_asym_unit_points(), EMAN::CSym::get_asym_unit_points(), EMAN::DSym::get_asym_unit_triangles(), EMAN::CSym::get_asym_unit_triangles(), EMAN::HSym::get_delimiters(), EMAN::DSym::get_delimiters(), EMAN::CSym::get_delimiters(), EMAN::OptimumOrientationGenerator::get_orientations_tally(), EMAN::SaffOrientationGenerator::get_orientations_tally(), EMAN::EvenOrientationGenerator::get_orientations_tally(), EMAN::EmanOrientationGenerator::get_orientations_tally(), EMAN::HSym::get_sym(), EMAN::DSym::get_sym(), EMAN::CSym::get_sym(), EMAN::HSym::is_in_asym_unit(), EMAN::DSym::is_in_asym_unit(), EMAN::CSym::is_in_asym_unit(), EMAN::BinarySkeletonizerProcessor::process(), EMAN::ScaleTransformProcessor::process(), EMAN::IntTranslateProcessor::process(), EMAN::DirectionalSumProcessor::process(), EMAN::BooleanShrinkProcessor::process(), EMAN::MeanShrinkProcessor::process(), EMAN::FFTResampleProcessor::process(), EMAN::MedianShrinkProcessor::process(), EMAN::KmeansSegmentProcessor::process(), EMAN::NewHomomorphicTanhProcessor::process_inplace(), EMAN::NewHighpassTanhProcessor::process_inplace(), EMAN::NewLowpassTanhProcessor::process_inplace(), EMAN::ApplyPolynomialProfileToHelix::process_inplace(), EMAN::ModelEMCylinderProcessor::process_inplace(), EMAN::TomoTiltEdgeMaskProcessor::process_inplace(), EMAN::TomoTiltAngleWeightProcessor::process_inplace(), EMAN::ConvolutionProcessor::process_inplace(), EMAN::HistogramBin::process_inplace(), EMAN::NSigmaClampingProcessor::process_inplace(), EMAN::ClampingProcessor::process_inplace(), EMAN::ScaleTransformProcessor::process_inplace(), EMAN::IntTranslateProcessor::process_inplace(), EMAN::TestImageEllipse::process_inplace(), EMAN::TestImageHollowEllipse::process_inplace(), EMAN::TestImageCirclesphere::process_inplace(), EMAN::TestImageAxes::process_inplace(), EMAN::TestImageGradient::process_inplace(), EMAN::TestImageLineWave::process_inplace(), EMAN::CTFSNRWeightProcessor::process_inplace(), EMAN::TestImageFourierNoiseGaussian::process_inplace(), EMAN::AutoMask3D2Processor::process_inplace(), EMAN::PhaseToMassCenterProcessor::process_inplace(), EMAN::ToMassCenterProcessor::process_inplace(), EMAN::AutoMask2DProcessor::process_inplace(), EMAN::BinarizeFourierProcessor::process_inplace(), EMAN::NormalizeToLeastSquareProcessor::process_inplace(), EMAN::NormalizeByMassProcessor::process_inplace(), EMAN::FlattenBackgroundProcessor::process_inplace(), EMAN::BooleanShrinkProcessor::process_inplace(), EMAN::MeanShrinkProcessor::process_inplace(), EMAN::FFTResampleProcessor::process_inplace(), EMAN::MedianShrinkProcessor::process_inplace(), EMAN::BoxStatProcessor::process_inplace(), EMAN::ToMinvalProcessor::process_inplace(), EMAN::MaskSharpProcessor::set_params(), EMAN::InvertCarefullyProcessor::set_params(), EMAN::FourierReconstructor::setup(), EMAN::FourierReconstructorSimple2D::setup(), EMAN::FourierReconstructor::setup_seed(), EMAN::RT3DSphereAligner::xform_align_nbest(), and EMAN::RT3DGridAligner::xform_align_nbest().
|
|
Ask the Dictionary for its size.
Definition at line 498 of file emobject.h. References dict. Referenced by apmd(), apmq(), EMAN::PawelProjector::backproject3d(), EMAN::ChaoProjector::backproject3d(), EMAN::Util::Crosrng_e(), EMAN::Util::Crosrng_ew(), EMAN::Util::Crosrng_ms(), EMAN::Util::Crosrng_ms_delta(), EMAN::Util::Crosrng_ns(), EMAN::Util::Crosrng_psi_0_180(), EMAN::Util::Crosrng_sm_psi(), EMAN::Processor::EMFourierFilterFunc(), EMAN::Util::multiref_polar_ali_2d(), EMAN::Util::multiref_polar_ali_2d_delta(), EMAN::Util::multiref_polar_ali_2d_local(), EMAN::Util::multiref_polar_ali_2d_local_psi(), EMAN::Util::multiref_polar_ali_2d_nom(), EMAN::Util::multiref_polar_ali_helical(), EMAN::RadialProcessor::process_inplace(), EMAN::SymSearchProcessor::process_inplace(), EMAN::ChaoProjector::project3d(), EMAN::FourierGriddingProjector::project3d(), and EMAN::RealPixelProcessor::set_params(). 00499 { 00500 return dict.size(); 00501 }
|
|
Get a vector containing copies of each of the EMObjects in this dictionary.
Definition at line 467 of file emobject.h. References dict. Referenced by EMAN::EMUtil::dump_dict(), and EMAN::RealPixelProcessor::set_params(). 00468 { 00469 vector < EMObject > result; 00470 00471 map < string, EMObject >::const_iterator p; 00472 for (p = dict.begin(); p != dict.end(); p++) { 00473 result.push_back(p->second); 00474 } 00475 00476 return result; 00477 }
|
|
Friend declaration operator!= namespace EMAN2 operator!= accesses private variables.
Definition at line 903 of file emobject.cpp.
|
|
Friend declaration operator== namespace EMAN2 operator== accesses private variables.
Definition at line 897 of file emobject.cpp. 00898 { 00899 // Just make use of map's version of operator== 00900 return (d1.dict == d2.dict); 00901 }
|
|
Definition at line 620 of file emobject.h. Referenced by begin(), clear(), Dict(), end(), erase(), find(), get(), get_ci(), has_key(), has_key_ci(), keys(), operator=(), EMAN::operator==(), operator[](), put(), set_default(), size(), and values(). |