format 66
"src" // bbtk::packages::std::src
  revision 1
  modified_by 2 "davila"
  // class settings
  //class diagram settings
  draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
  //use case diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default class_drawing_mode default shadow default show_stereotype_properties default
  //sequence diagram settings
  show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
  //collaboration diagram settings
  show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
  //object diagram settings
   write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
  //component diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //deployment diagram settings
  package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //state diagram settings
  package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
  show_activities default region_horizontally default drawing_language default show_stereotype_properties default
  //activity diagram settings
  package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
  show_infonote default drawing_language default show_stereotype_properties default
  
  cpp_namespace "bbstd"
  classview 128898 "src"
    //class diagram settings
    draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
    //collaboration diagram settings
    show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
    //object diagram settings
     write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
    //sequence diagram settings
    show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
    //state diagram settings
    package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
    show_activities default region_horizontally default drawing_language default show_stereotype_properties default
    //class settings
    //activity diagram settings
    package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
    show_infonote default drawing_language default show_stereotype_properties default
    class 149762 "Tvector"
      visibility package stereotype "typedef" explicit_base_type "std::vector<T>"
      cpp_decl "${comment}typedef ${type} ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 149890 "MagicBoxSetFunctor"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "==================================================================
 We have to create a particular SetFunctor for MagicBox because
 its input is of type bbtk::Data (i.e. any) and :
 1) an any cannot store an any (construction with an any invokes the copy constr.)
 2) we cannot invoke the Set method with the content of the any because 
   it expects an any 
 hence the Set method of the functor **MUST NOT** extract the 
 content of the Data prior to invoking the set method of the box"
      classrelation 139394 // <generalisation>
	relation 139394 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139394 // <generalisation>
	  b parent class_ref 129282 // AtomicBlackBoxSetFunctor
      end

      class 150018 "SetMethodPointerType"
	visibility package stereotype "typedef" explicit_base_type "void"
	cpp_decl "${comment}typedef ${type}(MagicBox::* ${name})(bbtk::Data);
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
      end

      operation 193538 "MagicBoxSetFunctor"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "s" type class_ref 150018 // SetMethodPointerType
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} :
       mSetMethodPointer(s) 
       {
       };
"
	
	
	
	
	comment "/ Construction with the pointer on the Set method"
      end

      operation 193666 "Set"
	cpp_inline public explicit_return_type "void"
	nparams 2
	  param inout name "o" explicit_type "bbtk::AtomicBlackBox"
	  param in name "d" type class_ref 129410 // Data
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { 
      bbtkDebugMessage(\"data\",9,\"MagicBoxSetfunctor::Set(\"<<
		       bbtk::HumanTypeName(d.type())<<
		       \")\"<<std::endl);
      (((MagicBox*)o)->*mSetMethodPointer)(d);
    };
"
	
	
	
	
	comment "/ Concrete application of the Set method of object o"
      end

      operation 193794 "GetTypeInfo"
	const cpp_inline public return_type class_ref 128642 // TypeInfo
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return typeid(bbtk::Data); };
"
	
	
	
	
	comment "/ "
      end

      operation 193922 "GetTypeName"
	const cpp_inline public explicit_return_type "std::string"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return bbtk::TypeName<bbtk::Data>(); };
"
	
	
	
	
      end

      operation 194050 "GetHumanTypeName"
	const cpp_inline public explicit_return_type "std::string"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return bbtk::HumanTypeName<bbtk::Data>(); };
"
	
	
	
	
      end

      operation 194178 "IsPointerType"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return false; };
"
	
	
	
	
      end

      operation 194306 "BruteForceSetPointer"
	cpp_inline public explicit_return_type "void"
	nparams 2
	  param inout name "" explicit_type "bbtk::AtomicBlackBox"
	  param inout name "" explicit_type "void"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract} {};
"
	
	
	
	
      end

      classrelation 139522 // mSetMethodPointer (<directional composition>)
	relation 139522 *-->
	  a role_name "mSetMethodPointer" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 139522 // mSetMethodPointer (<directional composition>)
	  b parent class_ref 150018 // SetMethodPointerType
      end
    end
  end

  deploymentview 128898 "src"
    //deployment diagram settings
    package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
    draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
    artifact 134530 "bbstdGetVectorElement"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 149762 // Tvector
      end
    end

    artifact 134658 "bbstdMagicBox"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 149890 // MagicBoxSetFunctor
      end
    end
  end
end
