Samchon Framework for CPP  1.0.0
samchon::example::packer::Packer Class Reference

A packer planning the best packaging. More...

#include <Packer.hpp>

Collaboration diagram for samchon::example::packer::Packer:

Public Member Functions

 Packer ()
 Default Constructor. More...
 
 Packer (shared_ptr< ProductArray > productArray)
 Construct from products and wrapper. More...
 
 Packer (const Packer &packer)
 Copy Constructor. More...
 
auto productSize () const -> size_t
 Get number of products to package. More...
 
auto calcPrice () const -> int
 Calculate price of the wrappers. More...
 
void optimize (size_t start=0, size_t size=-1)
 Find the best packaging method. More...
 
virtual auto TAG () const -> string override
 A tag name when represented by XML. More...
 
virtual auto CHILD_TAG () const -> string override
 A tag name of children. More...
 
virtual auto toXML () const -> shared_ptr< XML > override
 Get an XML object represents the EntityGroup. More...
 
auto toString () const -> string
 Return a string represents an packaging method. More...
 
- Public Member Functions inherited from samchon::protocol::EntityGroup< _Container, _ETy, T >
 EntityGroup ()
 Default Constructor. More...
 
virtual void construct (std::shared_ptr< library::XML > xml)
 Construct data of the Entity from an XML object. More...
 
auto has (const std::string &key) const -> bool
 Indicates whether a container has an object having the specified identifier. More...
 
auto get (const std::string &key) -> value_type &
 Access the element by specified identifier(key). More...
 
auto get (const std::string &key) const -> const value_type &
 Access the const element by specified identifier(key). More...
 
- Public Member Functions inherited from samchon::protocol::Entity
 Entity ()
 Default Constructor. More...
 
virtual auto key () const -> std::string
 Get a key that can identify the Entity uniquely. More...
 
- Public Member Functions inherited from samchon::protocol::IEntityGroup
 IEntityGroup ()
 Default Constructor. More...
 

Protected Attributes

shared_ptr< ProductArrayproductArray
 Prodcut(s) to package in some Wrapper(s) More...
 

Additional Inherited Members

- Protected Member Functions inherited from samchon::protocol::EntityGroup< _Container, _ETy, T >
virtual auto createChild (std::shared_ptr< library::XML >) -> entity_type *=0
 Factory method of a child Entity. More...
 

Detailed Description

A packer planning the best packaging.

example_packer.png

Retrieves the solution of packaging by combination permuation and factorial case.

Warning

Be careful about number of products and wrappers.

The time complexity of Packer overs O(m^n). Elapsed time of calculation increases enourmously. Do not use Packer if the digits of number of products or wrappers overs 2.

Author
Jeongho Nam http://samchon.org

Definition at line 36 of file Packer.hpp.

Constructor & Destructor Documentation

samchon::example::packer::Packer::Packer ( )
inline

Default Constructor.

Definition at line 55 of file Packer.hpp.

samchon::example::packer::Packer::Packer ( shared_ptr< ProductArray productArray)
inline

Construct from products and wrapper.

Parameters
productArrayProduct(s) to input some Wrapper
wrapperArrayType of Wrapper(s) to be used

Definition at line 67 of file Packer.hpp.

samchon::example::packer::Packer::Packer ( const Packer packer)
inline

Copy Constructor.

Copy constructor of Packer does not copy children items.

Only copies member variables(productArray, wrapperArray) of Packer's.

Definition at line 80 of file Packer.hpp.

Member Function Documentation

auto samchon::example::packer::Packer::productSize ( ) const -> size_t
inline

Get number of products to package.

Definition at line 109 of file Packer.hpp.

auto samchon::example::packer::Packer::calcPrice ( ) const -> int
inline

Calculate price of the wrappers.

Definition at line 117 of file Packer.hpp.

void samchon::example::packer::Packer::optimize ( size_t  start = 0,
size_t  size = -1 
)
inline

Find the best packaging method.

Definition at line 132 of file Packer.hpp.

References samchon::library::CaseGenerator::size().

Referenced by samchon::example::interaction::PackerSlave::optimize(), and toString().

Here is the call graph for this function:

Here is the caller graph for this function:

virtual auto samchon::example::packer::Packer::TAG ( ) const -> string
inlineoverridevirtual

A tag name when represented by XML.

Returns
A tag name

Implements samchon::protocol::Entity.

Definition at line 183 of file Packer.hpp.

virtual auto samchon::example::packer::Packer::CHILD_TAG ( ) const -> string
inlineoverridevirtual

A tag name of children.

< TAG>
     <CHILD_TAG />
     <CHILD_TAG />
</TAG>

Implements samchon::protocol::IEntityGroup.

Definition at line 187 of file Packer.hpp.

virtual auto samchon::example::packer::Packer::toXML ( ) const -> shared_ptr<XML>
inlineoverridevirtual

Get an XML object represents the EntityGroup.

Archives the EntityGroup's own member variables only to the returned XML object.

Do not consider about archiving children Entity objects' data in EntityGroup::toXML(). Those children Entity objects will converted to XML object by their own toXML() method. The insertion of XML objects representing children are done by abstract method of EntityGroup::toXML().

Archives only data of EntityGroup's own.

[Inherited]
Get an XML object represents the Entity.

Returns an XML object that can represents the Entity containing member variables into properties.

A member variable (not object, but atomic value like number, string or date) is categorized as a property within the framework of entity side. Thus, when overriding a toXML() method and archiving member variables to an XML object to return, puts each variable to be a property belongs to only an XML object.

Don't archive the member variable of atomic value to XML::value causing enormouse creation of XML objects to number of member variables. An Entity must be represented by only an XML instance (tag).

Standard Usage Non-standard usage abusing value
<memberList>
     <member id='jhnam88' name='Jeongho+Nam' birthdate='1988-03-11' />
     <member id='master' name='Administartor' birthdate='2011-07-28' />
</memberList>
<member>
     <id>jhnam88</id>
     <name>Jeongho+Nam</name>
     <birthdate>1988-03-11</birthdate>
</member>
Returns
An XML object representing the Entity.

Reimplemented from samchon::protocol::EntityGroup< _Container, _ETy, T >.

Definition at line 192 of file Packer.hpp.

Referenced by samchon::example::interaction::Chief::callPacker(), and samchon::example::interaction::PackerSlave::optimize().

Here is the caller graph for this function:

auto samchon::example::packer::Packer::toString ( ) const -> string
inline

Return a string represents an packaging method.

Definition at line 203 of file Packer.hpp.

References optimize(), and toString().

Referenced by samchon::example::interaction::PackerSlave::optimize(), samchon::example::interaction::Reporter::printPacker(), and toString().

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

shared_ptr<ProductArray> samchon::example::packer::Packer::productArray
protected

Prodcut(s) to package in some Wrapper(s)

Definition at line 46 of file Packer.hpp.


The documentation for this class was generated from the following file: