home *** CD-ROM | disk | FTP | other *** search
- <code _ELEMENT_TDE_>
- --
- -- Define the class skeleton for Element type
- --
- <include e_user.tde>
- --
- --
- <code DEFINE_ELEMENT>
- --
- $E_NAME_DEFS$\<>
- --
-
- class $ELEMENT_CLASS$
- {
- //-----------------------------------------------------------------------------
- // Required members for element type
- //-----------------------------------------------------------------------------
- public:
- <if ($DEFAULT_CONSTRUCTOR$)>
- //------------------------------------------------------------------------
- // Default constructor
- //------------------------------------------------------------------------
- $ELEMENT_CLASS$()
- < >$E_DEF_CONSTR_BODY$
- </if>
- <if ($COPY_CONSTRUCTOR$)>
- //------------------------------------------------------------------------
- // Copy constructor
- //------------------------------------------------------------------------
- $ELEMENT_CLASS$($ELEMENT_CLASS$ const& a$ELEMENT_CLASS$)
- < >$E_COPY_CONSTR_BODY$
- </if>
- <if ($ASSIGNMENT$)>
- //------------------------------------------------------------------------
- // Assignment operator
- //------------------------------------------------------------------------
- $ELEMENT_CLASS$& operator = ($ELEMENT_CLASS$ const& a$ELEMENT_CLASS$)
- < >$E_ASSIGN_BODY$
- </if>
- <if ($EQUALITY$)>
- //------------------------------------------------------------------------
- // Equality test
- //------------------------------------------------------------------------
- IBoolean operator== ($ELEMENT_CLASS$ const& a$ELEMENT_CLASS$) const
- < >$E_EQUAL_BODY$
- </if>
- <if ($ORDERING$)>
- //------------------------------------------------------------------------
- // Ordering relation between $ELEMENT_CLASS$ objects.
- //------------------------------------------------------------------------
- IBoolean operator< ($ELEMENT_CLASS$ const& a$ELEMENT_CLASS$) const
- < >$E_ORDER_BODY$
- </if>
- //-----------------------------------------------------------------------------
- // Additional members (customization)
- //-----------------------------------------------------------------------------
- $E_CUSTOMIZATION$\<>
-
- }; // End of class $ELEMENT_CLASS$
- <if ($HASH_FUNCTION$)>
-
- $DEFINE_E_HASH$\<>
- </if>
- <if (($ELEMENT_PTR$) & ($ORDERING$)) >
-
- //-----------------------------------------------------------------------------
- // Define a comparison function
- //-----------------------------------------------------------------------------
- inline long compare($ELEMENT_TYPE$ const& e1, $ELEMENT_TYPE$ const& e2)
- {
- if (*e1 < *e2) return -1;
- else if (*e2 < *e1) return 1;
- else return 0;
- }
- </if>
- <if (($ELEMENT_PTR$) & ($EQUALITY$)) >
-
- //-----------------------------------------------------------------------------
- // Need an equality function
- //-----------------------------------------------------------------------------
- inline IBoolean equal($ELEMENT_TYPE$ const& e1, $ELEMENT_TYPE$ const& e2)
- {
- return (*e1 == *e2);
- }
- </if>
- </code DEFINE_ELEMENT>
-
-
- <code DEFINE_E_HASH>
- //-----------------------------------------------------------------------------
- // Need a hash function for the element type
- //-----------------------------------------------------------------------------
- inline unsigned long hash($ELEMENT_TYPE$ const& a$ELEMENT_CLASS$, unsigned long hashInput)
- <if ($USER_DEFINED_ELEMENT$)>
- $HASH_BODY$
- <else>\<if ($ELEMENT_PTR$)>
- -- When element type is pointer to predefined type,
- -- do hashing on the actual value
- {
- \<if ($NUMERIC_TYPE$)>
- return hash(*a$ELEMENT_CLASS$, hashInput);
- \<else>
- return hash((char const*)*a$ELEMENT_CLASS$, hashInput);
- \</if>
- }
- </if>\</if>
- </code DEFINE_E_HASH>
-
-
- <code DEFINE_COLLECTION_CLASS>
- <if ($KEY_ACCESS_COLLECTION$)>
-
- //-----------------------------------------------------------------------------
- // Define the Key access function. This function must be defined outside
- // the element class. It has one argument, whose type is the element type.
- // The return value of this function must be a const reference.
- //-----------------------------------------------------------------------------
- inline $KEY_TYPE$ const& key($ELEMENT_TYPE$ const& t)
- <if ($USER_DEFINED_ELEMENT$) >
- < >$E_KEY_BODY_1$
- <else>\<if ($KEY_TYPE$ == $ELEMENT_TYPE$) >
- < >$E_KEY_BODY_2$
- <else>
- < >$E_KEY_BODY_3$
- </if>\</if>
- --
- --
- </if>
-
- //-----------------------------------------------------------------------------
- // Collection Class declaration
- //-----------------------------------------------------------------------------
- <if ($KEY_ACCESS_COLLECTION$)>
- typedef $CLTN_TYPE$<$ELEMENT_TYPE$, $KEY_TYPE$> $CLTN_NAME$;
- <else>
- typedef $CLTN_TYPE$<$ELEMENT_TYPE$> $CLTN_NAME$;
- </if>
- </code DEFINE_COLLECTION_CLASS>
-
- </code _ELEMENT_TDE_>