#ifndef _HTMLENTITY_H #define _HTMLENTITY_H #include "extensions.h" #include "StringMap.h" #include "Streams.h" #include using namespace std; //http://htmlhelp.com/reference/html40/entities/ class HTMLEntity: protected Character { static StringMapCI m_entities; const char *m_text; //e.g. "nbsp" unsigned int m_codepoint; //unicode decimal code point const char *m_description; public: HTMLEntity(const char *_text, unsigned int _codepoint, const char *_description = ""); static HTMLEntity //in order of appearance in tables //special chars entity_quot, entity_amp, entity_lt, entity_gt, entity_OElig, entity_oelig, entity_Scaron, entity_scaron, entity_Yuml, entity_circ, entity_tilde, entity_ensp, entity_emsp, entity_thinsp, entity_zwnj, entity_zwj, entity_lrm, entity_rlm, entity_ndash, entity_mdash, entity_lsquo, entity_rsquo, entity_sbquo, entity_ldquo, entity_rdquo, entity_bdquo, entity_dagger, entity_Dagger, entity_permil, entity_lsaquo, entity_rsaquo, entity_euro, //Latin-1 Entities entity_nbsp, entity_iexcl, entity_cent, entity_pound, entity_curren, entity_yen, entity_brvbar, entity_sect, entity_uml, entity_copy, entity_ordf, entity_laquo, entity_not, entity_shy, entity_reg, entity_macr, entity_deg, entity_plusmn, entity_sup2, entity_sup3, entity_acute, entity_micro, entity_para, entity_middot, entity_cedil, entity_sup1, entity_ordm, entity_raquo, entity_frac14, entity_frac12, entity_frac34, entity_iquest, entity_Agrave, entity_Aacute, entity_Acirc, entity_Atilde, entity_Auml, entity_Aring, entity_AElig, entity_Ccedil, entity_Egrave, entity_Eacute, entity_Ecirc, entity_Euml, entity_Igrave, entity_Iacute, entity_Icirc, entity_Iuml, entity_ETH, entity_Ntilde, entity_Ograve, entity_Oacute, entity_Ocirc, entity_Otilde, entity_Ouml, entity_times, entity_Oslash, entity_Ugrave, entity_Uacute, entity_Ucirc, entity_Uuml, entity_Yacute, entity_THORN, entity_szlig, entity_agrave, entity_aacute, entity_acirc, entity_atilde, entity_auml, entity_aring, entity_aelig, entity_ccedil, entity_egrave, entity_eacute, entity_ecirc, entity_euml, entity_igrave, entity_iacute, entity_icirc, entity_iuml, entity_eth, entity_ntilde, entity_ograve, entity_oacute, entity_ocirc, entity_otilde, entity_ouml, entity_divide, entity_oslash, entity_ugrave, entity_uacute, entity_ucirc, entity_uuml, entity_yacute, entity_thorn, entity_yuml, //Symbols and Greek Letters entity_fnof, entity_Alpha, entity_Beta, entity_Gamma, entity_Delta, entity_Epsilon, entity_Zeta, entity_Eta, entity_Theta, entity_Iota, entity_Kappa, entity_Lambda, entity_Mu, entity_Nu, entity_Xi, entity_Omicron, entity_Pi, entity_Rho, entity_Sigma, entity_Tau, entity_Upsilon, entity_Phi, entity_Chi, entity_Psi, entity_Omega, entity_alpha, entity_beta, entity_gamma, entity_delta, entity_epsilon, entity_zeta, entity_eta, entity_theta, entity_iota, entity_kappa, entity_lambda, entity_mu, entity_nu, entity_xi, entity_omicron, entity_pi, entity_rho, entity_sigmaf, entity_sigma, entity_tau, entity_upsilon, entity_phi, entity_chi, entity_psi, entity_omega, entity_thetasym, entity_upsih, entity_piv, entity_bull, entity_hellip, entity_prime, entity_Prime, entity_oline, entity_frasl, entity_weierp, entity_image, entity_real, entity_trade, entity_alefsym, entity_larr, entity_uarr, entity_rarr, entity_darr, entity_harr, entity_crarr, entity_lArr, entity_uArr, entity_rArr, entity_dArr, entity_hArr, entity_forall, entity_part, entity_exist, entity_empty, entity_nabla, entity_isin, entity_notin, entity_ni, entity_prod, entity_sum, entity_minus, entity_lowast, entity_radic, entity_prop, entity_infin, entity_ang, entity_and, entity_or, entity_cap, entity_cup, entity_int, entity_there4, entity_sim, entity_cong, entity_asymp, entity_ne, entity_equiv, entity_le, entity_ge, entity_sub, entity_sup, entity_nsub, entity_sube, entity_supe, entity_oplus, entity_otimes, entity_perp, entity_sdot, entity_lceil, entity_rceil, entity_lfloor, entity_rfloor, entity_lang, entity_rang, entity_loz, entity_spades, entity_clubs, entity_hearts, entity_diams; //special operators used primarily for comparing heading levels h1 > h6 const bool operator== (HTMLEntity *t) {return this == t;} //compare address as these are singletons const bool operator!= (HTMLEntity *t) {return !(this->operator==(t));} //accessors const char *text() {return m_text;} const char *description() {return m_description;} //lookup static HTMLEntity *getentity( const char *textstart); static HTMLEntity *entity(const char *text); static HTMLEntity *entity(const char *textstart, const char *textfinish); }; #endif