From 8d4f176b306c171b7a91cf1f5fdb275836c1103c Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 8 Nov 2022 11:53:40 +0000 Subject: [PATCH] MimeTypes: Speed up release-mode compilation --- .../juce_core/files/juce_common_MimeTypes.cpp | 1396 +++++++++-------- .../juce_core/files/juce_common_MimeTypes.h | 10 +- 2 files changed, 719 insertions(+), 687 deletions(-) diff --git a/modules/juce_core/files/juce_common_MimeTypes.cpp b/modules/juce_core/files/juce_common_MimeTypes.cpp index 07da1ecd5b..42e150e93e 100644 --- a/modules/juce_core/files/juce_common_MimeTypes.cpp +++ b/modules/juce_core/files/juce_common_MimeTypes.cpp @@ -26,706 +26,738 @@ namespace juce { -struct MimeTypeTableEntry +namespace { - String fileExtension, mimeType; - bool operator< (const struct MimeTypeTableEntry& o) const +struct Entry +{ + const char* fileExtension; + const char* mimeType; +}; + +class Table +{ +public: + void addEntry (const Entry& entry) { - return std::array({{fileExtension, mimeType}}) - < std::array({{o.fileExtension, o.mimeType}}); + typeForExtension.emplace (entry.fileExtension, entry.mimeType); + extensionForType.emplace (entry.mimeType, entry.fileExtension); } - static std::set& get(); -}; + StringArray getTypesForExtension (const String& extension) const + { + return getValuesForKey (typeForExtension, extension); + } -static StringArray getMatches (const String& toMatch, - String MimeTypeTableEntry::* matchField, - String MimeTypeTableEntry::* returnField) -{ - StringArray result; + StringArray getExtensionsForType (const String& type) const + { + return getValuesForKey (extensionForType, type); + } - for (auto type : MimeTypeTableEntry::get()) - if (toMatch == type.*matchField) - result.add (type.*returnField); + static Table& get() + { + static Table table; + return table; + } - return result; -} +private: + Table() = default; -namespace MimeTypeTable -{ + static StringArray getValuesForKey (const std::multimap& map, const String& key) + { + const auto [begin, end] = map.equal_range (key); -StringArray getMimeTypesForFileExtension (const String& fileExtension) -{ - return getMatches (fileExtension, &MimeTypeTableEntry::fileExtension, &MimeTypeTableEntry::mimeType); -} + StringArray result; + std::for_each (begin, end, [&] (const auto& pair) { result.add (pair.second); }); -StringArray getFileExtensionsForMimeType (const String& mimeType) -{ - return getMatches (mimeType, &MimeTypeTableEntry::mimeType, &MimeTypeTableEntry::fileExtension); -} + return result; + } -void registerCustomMimeTypeForFileExtension (const String& mimeType, const String& fileExtension) -{ - MimeTypeTableEntry pair {fileExtension, mimeType}; - auto& table = MimeTypeTableEntry::get(); + static inline constexpr Entry initialEntries[] + { + { "3dm", "x-world/x-3dmf" }, + { "3dmf", "x-world/x-3dmf" }, + { "a", "application/octet-stream" }, + { "aab", "application/x-authorware-bin" }, + { "aam", "application/x-authorware-map" }, + { "aas", "application/x-authorware-seg" }, + { "abc", "text/vnd.abc" }, + { "acgi", "text/html" }, + { "afl", "video/animaflex" }, + { "ai", "application/postscript" }, + { "aif", "audio/aiff" }, + { "aif", "audio/x-aiff" }, + { "aifc", "audio/aiff" }, + { "aifc", "audio/x-aiff" }, + { "aiff", "audio/aiff" }, + { "aiff", "audio/x-aiff" }, + { "aim", "application/x-aim" }, + { "aip", "text/x-audiosoft-intra" }, + { "ani", "application/x-navi-animation" }, + { "aos", "application/x-nokia-9000-communicator-add-on-software" }, + { "aps", "application/mime" }, + { "arc", "application/octet-stream" }, + { "arj", "application/arj" }, + { "arj", "application/octet-stream" }, + { "art", "image/x-jg" }, + { "asf", "video/x-ms-asf" }, + { "asm", "text/x-asm" }, + { "asp", "text/asp" }, + { "asx", "application/x-mplayer2" }, + { "asx", "video/x-ms-asf" }, + { "asx", "video/x-ms-asf-plugin" }, + { "au", "audio/basic" }, + { "au", "audio/x-au" }, + { "avi", "application/x-troff-msvideo" }, + { "avi", "video/avi" }, + { "avi", "video/msvideo" }, + { "avi", "video/x-msvideo" }, + { "avs", "video/avs-video" }, + { "bcpio", "application/x-bcpio" }, + { "bin", "application/mac-binary" }, + { "bin", "application/macbinary" }, + { "bin", "application/octet-stream" }, + { "bin", "application/x-binary" }, + { "bin", "application/x-macbinary" }, + { "bm", "image/bmp" }, + { "bmp", "image/bmp" }, + { "bmp", "image/x-windows-bmp" }, + { "boo", "application/book" }, + { "book", "application/book" }, + { "boz", "application/x-bzip2" }, + { "bsh", "application/x-bsh" }, + { "bz", "application/x-bzip" }, + { "bz2", "application/x-bzip2" }, + { "c", "text/plain" }, + { "c", "text/x-c" }, + { "c++", "text/plain" }, + { "cat", "application/vnd.ms-pki.seccat" }, + { "cc", "text/plain" }, + { "cc", "text/x-c" }, + { "ccad", "application/clariscad" }, + { "cco", "application/x-cocoa" }, + { "cdf", "application/cdf" }, + { "cdf", "application/x-cdf" }, + { "cdf", "application/x-netcdf" }, + { "cer", "application/pkix-cert" }, + { "cer", "application/x-x509-ca-cert" }, + { "cha", "application/x-chat" }, + { "chat", "application/x-chat" }, + { "class", "application/java" }, + { "class", "application/java-byte-code" }, + { "class", "application/x-java-class" }, + { "com", "application/octet-stream" }, + { "com", "text/plain" }, + { "conf", "text/plain" }, + { "cpio", "application/x-cpio" }, + { "cpp", "text/x-c" }, + { "cpt", "application/mac-compactpro" }, + { "cpt", "application/x-compactpro" }, + { "cpt", "application/x-cpt" }, + { "crl", "application/pkcs-crl" }, + { "crl", "application/pkix-crl" }, + { "crt", "application/pkix-cert" }, + { "crt", "application/x-x509-ca-cert" }, + { "crt", "application/x-x509-user-cert" }, + { "csh", "application/x-csh" }, + { "csh", "text/x-script.csh" }, + { "css", "application/x-pointplus" }, + { "css", "text/css" }, + { "cxx", "text/plain" }, + { "dcr", "application/x-director" }, + { "deepv", "application/x-deepv" }, + { "def", "text/plain" }, + { "der", "application/x-x509-ca-cert" }, + { "dif", "video/x-dv" }, + { "dir", "application/x-director" }, + { "dl", "video/dl" }, + { "dl", "video/x-dl" }, + { "doc", "application/msword" }, + { "dot", "application/msword" }, + { "dp", "application/commonground" }, + { "drw", "application/drafting" }, + { "dump", "application/octet-stream" }, + { "dv", "video/x-dv" }, + { "dvi", "application/x-dvi" }, + { "dwf", "drawing/x-dwf" }, + { "dwf", "model/vnd.dwf" }, + { "dwg", "application/acad" }, + { "dwg", "image/vnd.dwg" }, + { "dwg", "image/x-dwg" }, + { "dxf", "application/dxf" }, + { "dxf", "image/vnd.dwg" }, + { "dxf", "image/x-dwg" }, + { "dxr", "application/x-director" }, + { "el", "text/x-script.elisp" }, + { "elc", "application/x-bytecode.elisp" }, + { "elc", "application/x-elc" }, + { "env", "application/x-envoy" }, + { "eps", "application/postscript" }, + { "es", "application/x-esrehber" }, + { "etx", "text/x-setext" }, + { "evy", "application/envoy" }, + { "evy", "application/x-envoy" }, + { "exe", "application/octet-stream" }, + { "f", "text/plain" }, + { "f", "text/x-fortran" }, + { "f77", "text/x-fortran" }, + { "f90", "text/plain" }, + { "f90", "text/x-fortran" }, + { "fdf", "application/vnd.fdf" }, + { "fif", "application/fractals" }, + { "fif", "image/fif" }, + { "fli", "video/fli" }, + { "fli", "video/x-fli" }, + { "flo", "image/florian" }, + { "flx", "text/vnd.fmi.flexstor" }, + { "fmf", "video/x-atomic3d-feature" }, + { "for", "text/plain" }, + { "for", "text/x-fortran" }, + { "fpx", "image/vnd.fpx" }, + { "fpx", "image/vnd.net-fpx" }, + { "frl", "application/freeloader" }, + { "funk", "audio/make" }, + { "g", "text/plain" }, + { "g3", "image/g3fax" }, + { "gif", "image/gif" }, + { "gl", "video/gl" }, + { "gl", "video/x-gl" }, + { "gsd", "audio/x-gsm" }, + { "gsm", "audio/x-gsm" }, + { "gsp", "application/x-gsp" }, + { "gss", "application/x-gss" }, + { "gtar", "application/x-gtar" }, + { "gz", "application/x-compressed" }, + { "gz", "application/x-gzip" }, + { "gzip", "application/x-gzip" }, + { "gzip", "multipart/x-gzip" }, + { "h", "text/plain" }, + { "h", "text/x-h" }, + { "hdf", "application/x-hdf" }, + { "help", "application/x-helpfile" }, + { "hgl", "application/vnd.hp-hpgl" }, + { "hh", "text/plain" }, + { "hh", "text/x-h" }, + { "hlb", "text/x-script" }, + { "hlp", "application/hlp" }, + { "hlp", "application/x-helpfile" }, + { "hlp", "application/x-winhelp" }, + { "hpg", "application/vnd.hp-hpgl" }, + { "hpgl", "application/vnd.hp-hpgl" }, + { "hqx", "application/binhex" }, + { "hqx", "application/binhex4" }, + { "hqx", "application/mac-binhex" }, + { "hqx", "application/mac-binhex40" }, + { "hqx", "application/x-binhex40" }, + { "hqx", "application/x-mac-binhex40" }, + { "hta", "application/hta" }, + { "htc", "text/x-component" }, + { "htm", "text/html" }, + { "html", "text/html" }, + { "htmls", "text/html" }, + { "htt", "text/webviewhtml" }, + { "htx", "text/html" }, + { "ice", "x-conference/x-cooltalk" }, + { "ico", "image/x-icon" }, + { "idc", "text/plain" }, + { "ief", "image/ief" }, + { "iefs", "image/ief" }, + { "iges", "application/iges" }, + { "iges", "model/iges" }, + { "igs", "application/iges" }, + { "igs", "model/iges" }, + { "ima", "application/x-ima" }, + { "imap", "application/x-httpd-imap" }, + { "inf", "application/inf" }, + { "ins", "application/x-internett-signup" }, + { "ip", "application/x-ip2" }, + { "isu", "video/x-isvideo" }, + { "it", "audio/it" }, + { "iv", "application/x-inventor" }, + { "ivr", "i-world/i-vrml" }, + { "ivy", "application/x-livescreen" }, + { "jam", "audio/x-jam" }, + { "jav", "text/plain" }, + { "jav", "text/x-java-source" }, + { "java", "text/plain" }, + { "java", "text/x-java-source" }, + { "jcm", "application/x-java-commerce" }, + { "jfif", "image/jpeg" }, + { "jfif", "image/pjpeg" }, + { "jpe", "image/jpeg" }, + { "jpe", "image/pjpeg" }, + { "jpeg", "image/jpeg" }, + { "jpeg", "image/pjpeg" }, + { "jpg", "image/jpeg" }, + { "jpg", "image/pjpeg" }, + { "jps", "image/x-jps" }, + { "js", "application/x-javascript" }, + { "json", "application/json" }, + { "jut", "image/jutvision" }, + { "kar", "audio/midi" }, + { "kar", "music/x-karaoke" }, + { "ksh", "application/x-ksh" }, + { "ksh", "text/x-script.ksh" }, + { "la", "audio/nspaudio" }, + { "la", "audio/x-nspaudio" }, + { "lam", "audio/x-liveaudio" }, + { "latex", "application/x-latex" }, + { "lha", "application/lha" }, + { "lha", "application/octet-stream" }, + { "lha", "application/x-lha" }, + { "lhx", "application/octet-stream" }, + { "list", "text/plain" }, + { "lma", "audio/nspaudio" }, + { "lma", "audio/x-nspaudio" }, + { "log", "text/plain" }, + { "lsp", "application/x-lisp" }, + { "lsp", "text/x-script.lisp" }, + { "lst", "text/plain" }, + { "lsx", "text/x-la-asf" }, + { "ltx", "application/x-latex" }, + { "lzh", "application/octet-stream" }, + { "lzh", "application/x-lzh" }, + { "lzx", "application/lzx" }, + { "lzx", "application/octet-stream" }, + { "lzx", "application/x-lzx" }, + { "m", "text/plain" }, + { "m", "text/x-m" }, + { "m1v", "video/mpeg" }, + { "m2a", "audio/mpeg" }, + { "m2v", "video/mpeg" }, + { "m3u", "audio/x-mpequrl" }, + { "man", "application/x-troff-man" }, + { "map", "application/x-navimap" }, + { "mar", "text/plain" }, + { "mbd", "application/mbedlet" }, + { "mc$", "application/x-magic-cap-package-1.0" }, + { "mcd", "application/mcad" }, + { "mcd", "application/x-mathcad" }, + { "mcf", "image/vasa" }, + { "mcf", "text/mcf" }, + { "mcp", "application/netmc" }, + { "me", "application/x-troff-me" }, + { "mht", "message/rfc822" }, + { "mhtml", "message/rfc822" }, + { "mid", "application/x-midi" }, + { "mid", "audio/midi" }, + { "mid", "audio/x-mid" }, + { "mid", "audio/x-midi" }, + { "mid", "music/crescendo" }, + { "mid", "x-music/x-midi" }, + { "midi", "application/x-midi" }, + { "midi", "audio/midi" }, + { "midi", "audio/x-mid" }, + { "midi", "audio/x-midi" }, + { "midi", "music/crescendo" }, + { "midi", "x-music/x-midi" }, + { "mif", "application/x-frame" }, + { "mif", "application/x-mif" }, + { "mime", "message/rfc822" }, + { "mime", "www/mime" }, + { "mjf", "audio/x-vnd.audioexplosion.mjuicemediafile" }, + { "mjpg", "video/x-motion-jpeg" }, + { "mm", "application/base64" }, + { "mm", "application/x-meme" }, + { "mme", "application/base64" }, + { "mod", "audio/mod" }, + { "mod", "audio/x-mod" }, + { "moov", "video/quicktime" }, + { "mov", "video/quicktime" }, + { "movie", "video/x-sgi-movie" }, + { "mp2", "audio/mpeg" }, + { "mp2", "audio/x-mpeg" }, + { "mp2", "video/mpeg" }, + { "mp2", "video/x-mpeg" }, + { "mp2", "video/x-mpeq2a" }, + { "mp3", "audio/mpeg" }, + { "mp3", "audio/mpeg3" }, + { "mp3", "audio/x-mpeg-3" }, + { "mp3", "video/mpeg" }, + { "mp3", "video/x-mpeg" }, + { "mpa", "audio/mpeg" }, + { "mpa", "video/mpeg" }, + { "mpc", "application/x-project" }, + { "mpe", "video/mpeg" }, + { "mpeg", "video/mpeg" }, + { "mpg", "audio/mpeg" }, + { "mpg", "video/mpeg" }, + { "mpga", "audio/mpeg" }, + { "mpp", "application/vnd.ms-project" }, + { "mpt", "application/x-project" }, + { "mpv", "application/x-project" }, + { "mpx", "application/x-project" }, + { "mrc", "application/marc" }, + { "ms", "application/x-troff-ms" }, + { "mv", "video/x-sgi-movie" }, + { "my", "audio/make" }, + { "mzz", "application/x-vnd.audioexplosion.mzz" }, + { "nap", "image/naplps" }, + { "naplps", "image/naplps" }, + { "nc", "application/x-netcdf" }, + { "ncm", "application/vnd.nokia.configuration-message" }, + { "nif", "image/x-niff" }, + { "niff", "image/x-niff" }, + { "nix", "application/x-mix-transfer" }, + { "nsc", "application/x-conference" }, + { "nvd", "application/x-navidoc" }, + { "o", "application/octet-stream" }, + { "oda", "application/oda" }, + { "omc", "application/x-omc" }, + { "omcd", "application/x-omcdatamaker" }, + { "omcr", "application/x-omcregerator" }, + { "p", "text/x-pascal" }, + { "p10", "application/pkcs10" }, + { "p10", "application/x-pkcs10" }, + { "p12", "application/pkcs-12" }, + { "p12", "application/x-pkcs12" }, + { "p7a", "application/x-pkcs7-signature" }, + { "p7c", "application/pkcs7-mime" }, + { "p7c", "application/x-pkcs7-mime" }, + { "p7m", "application/pkcs7-mime" }, + { "p7m", "application/x-pkcs7-mime" }, + { "p7r", "application/x-pkcs7-certreqresp" }, + { "p7s", "application/pkcs7-signature" }, + { "part", "application/pro_eng" }, + { "pas", "text/pascal" }, + { "pbm", "image/x-portable-bitmap" }, + { "pcl", "application/vnd.hp-pcl" }, + { "pcl", "application/x-pcl" }, + { "pct", "image/x-pict" }, + { "pcx", "image/x-pcx" }, + { "pdb", "chemical/x-pdb" }, + { "pdf", "application/pdf" }, + { "pfunk", "audio/make" }, + { "pfunk", "audio/make.my.funk" }, + { "pgm", "image/x-portable-graymap" }, + { "pgm", "image/x-portable-greymap" }, + { "pic", "image/pict" }, + { "pict", "image/pict" }, + { "pkg", "application/x-newton-compatible-pkg" }, + { "pko", "application/vnd.ms-pki.pko" }, + { "pl", "text/plain" }, + { "pl", "text/x-script.perl" }, + { "plx", "application/x-pixclscript" }, + { "pm", "image/x-xpixmap" }, + { "pm", "text/x-script.perl-module" }, + { "pm4", "application/x-pagemaker" }, + { "pm5", "application/x-pagemaker" }, + { "png", "image/png" }, + { "pnm", "application/x-portable-anymap" }, + { "pnm", "image/x-portable-anymap" }, + { "pot", "application/mspowerpoint" }, + { "pot", "application/vnd.ms-powerpoint" }, + { "pov", "model/x-pov" }, + { "ppa", "application/vnd.ms-powerpoint" }, + { "ppm", "image/x-portable-pixmap" }, + { "pps", "application/mspowerpoint" }, + { "pps", "application/vnd.ms-powerpoint" }, + { "ppt", "application/mspowerpoint" }, + { "ppt", "application/powerpoint" }, + { "ppt", "application/vnd.ms-powerpoint" }, + { "ppt", "application/x-mspowerpoint" }, + { "ppz", "application/mspowerpoint" }, + { "pre", "application/x-freelance" }, + { "prt", "application/pro_eng" }, + { "ps", "application/postscript" }, + { "psd", "application/octet-stream" }, + { "pvu", "paleovu/x-pv" }, + { "pwz", "application/vnd.ms-powerpoint" }, + { "py", "text/x-script.python" }, + { "pyc", "application/x-bytecode.python" }, + { "qcp", "audio/vnd.qcelp" }, + { "qd3", "x-world/x-3dmf" }, + { "qd3d", "x-world/x-3dmf" }, + { "qif", "image/x-quicktime" }, + { "qt", "video/quicktime" }, + { "qtc", "video/x-qtc" }, + { "qti", "image/x-quicktime" }, + { "qtif", "image/x-quicktime" }, + { "ra", "audio/x-pn-realaudio" }, + { "ra", "audio/x-pn-realaudio-plugin" }, + { "ra", "audio/x-realaudio" }, + { "ram", "audio/x-pn-realaudio" }, + { "ras", "application/x-cmu-raster" }, + { "ras", "image/cmu-raster" }, + { "ras", "image/x-cmu-raster" }, + { "rast", "image/cmu-raster" }, + { "rexx", "text/x-script.rexx" }, + { "rf", "image/vnd.rn-realflash" }, + { "rgb", "image/x-rgb" }, + { "rm", "application/vnd.rn-realmedia" }, + { "rm", "audio/x-pn-realaudio" }, + { "rmi", "audio/mid" }, + { "rmm", "audio/x-pn-realaudio" }, + { "rmp", "audio/x-pn-realaudio" }, + { "rmp", "audio/x-pn-realaudio-plugin" }, + { "rng", "application/ringing-tones" }, + { "rng", "application/vnd.nokia.ringing-tone" }, + { "rnx", "application/vnd.rn-realplayer" }, + { "roff", "application/x-troff" }, + { "rp", "image/vnd.rn-realpix" }, + { "rpm", "audio/x-pn-realaudio-plugin" }, + { "rt", "text/richtext" }, + { "rt", "text/vnd.rn-realtext" }, + { "rtf", "application/rtf" }, + { "rtf", "application/x-rtf" }, + { "rtf", "text/richtext" }, + { "rtx", "application/rtf" }, + { "rtx", "text/richtext" }, + { "rv", "video/vnd.rn-realvideo" }, + { "s", "text/x-asm" }, + { "s3m", "audio/s3m" }, + { "saveme", "application/octet-stream" }, + { "sbk", "application/x-tbook" }, + { "scm", "application/x-lotusscreencam" }, + { "scm", "text/x-script.guile" }, + { "scm", "text/x-script.scheme" }, + { "scm", "video/x-scm" }, + { "sdml", "text/plain" }, + { "sdp", "application/sdp" }, + { "sdp", "application/x-sdp" }, + { "sdr", "application/sounder" }, + { "sea", "application/sea" }, + { "sea", "application/x-sea" }, + { "set", "application/set" }, + { "sgm", "text/sgml" }, + { "sgm", "text/x-sgml" }, + { "sgml", "text/sgml" }, + { "sgml", "text/x-sgml" }, + { "sh", "application/x-bsh" }, + { "sh", "application/x-sh" }, + { "sh", "application/x-shar" }, + { "sh", "text/x-script.sh" }, + { "shar", "application/x-bsh" }, + { "shar", "application/x-shar" }, + { "shtml", "text/html" }, + { "shtml", "text/x-server-parsed-html" }, + { "sid", "audio/x-psid" }, + { "sit", "application/x-sit" }, + { "sit", "application/x-stuffit" }, + { "skd", "application/x-koan" }, + { "skm", "application/x-koan" }, + { "skp", "application/x-koan" }, + { "skt", "application/x-koan" }, + { "sl", "application/x-seelogo" }, + { "smi", "application/smil" }, + { "smil", "application/smil" }, + { "snd", "audio/basic" }, + { "snd", "audio/x-adpcm" }, + { "sol", "application/solids" }, + { "spc", "application/x-pkcs7-certificates" }, + { "spc", "text/x-speech" }, + { "spl", "application/futuresplash" }, + { "spr", "application/x-sprite" }, + { "sprite", "application/x-sprite" }, + { "src", "application/x-wais-source" }, + { "ssi", "text/x-server-parsed-html" }, + { "ssm", "application/streamingmedia" }, + { "sst", "application/vnd.ms-pki.certstore" }, + { "step", "application/step" }, + { "stl", "application/sla" }, + { "stl", "application/vnd.ms-pki.stl" }, + { "stl", "application/x-navistyle" }, + { "stp", "application/step" }, + { "sv4cpio,", "application/x-sv4cpio" }, + { "sv4crc", "application/x-sv4crc" }, + { "svf", "image/vnd.dwg" }, + { "svf", "image/x-dwg" }, + { "svr", "application/x-world" }, + { "svr", "x-world/x-svr" }, + { "swf", "application/x-shockwave-flash" }, + { "t", "application/x-troff" }, + { "talk", "text/x-speech" }, + { "tar", "application/x-tar" }, + { "tbk", "application/toolbook" }, + { "tbk", "application/x-tbook" }, + { "tcl", "application/x-tcl" }, + { "tcl", "text/x-script.tcl" }, + { "tcsh", "text/x-script.tcsh" }, + { "tex", "application/x-tex" }, + { "texi", "application/x-texinfo" }, + { "texinfo,", "application/x-texinfo" }, + { "text", "application/plain" }, + { "text", "text/plain" }, + { "tgz", "application/gnutar" }, + { "tgz", "application/x-compressed" }, + { "tif", "image/tiff" }, + { "tif", "image/x-tiff" }, + { "tiff", "image/tiff" }, + { "tiff", "image/x-tiff" }, + { "tr", "application/x-troff" }, + { "tsi", "audio/tsp-audio" }, + { "tsp", "application/dsptype" }, + { "tsp", "audio/tsplayer" }, + { "tsv", "text/tab-separated-values" }, + { "turbot", "image/florian" }, + { "txt", "text/plain" }, + { "uil", "text/x-uil" }, + { "uni", "text/uri-list" }, + { "unis", "text/uri-list" }, + { "unv", "application/i-deas" }, + { "uri", "text/uri-list" }, + { "uris", "text/uri-list" }, + { "ustar", "application/x-ustar" }, + { "ustar", "multipart/x-ustar" }, + { "uu", "application/octet-stream" }, + { "uu", "text/x-uuencode" }, + { "uue", "text/x-uuencode" }, + { "vcd", "application/x-cdlink" }, + { "vcs", "text/x-vcalendar" }, + { "vda", "application/vda" }, + { "vdo", "video/vdo" }, + { "vew", "application/groupwise" }, + { "viv", "video/vivo" }, + { "viv", "video/vnd.vivo" }, + { "vivo", "video/vivo" }, + { "vivo", "video/vnd.vivo" }, + { "vmd", "application/vocaltec-media-desc" }, + { "vmf", "application/vocaltec-media-file" }, + { "voc", "audio/voc" }, + { "voc", "audio/x-voc" }, + { "vos", "video/vosaic" }, + { "vox", "audio/voxware" }, + { "vqe", "audio/x-twinvq-plugin" }, + { "vqf", "audio/x-twinvq" }, + { "vql", "audio/x-twinvq-plugin" }, + { "vrml", "application/x-vrml" }, + { "vrml", "model/vrml" }, + { "vrml", "x-world/x-vrml" }, + { "vrt", "x-world/x-vrt" }, + { "vsd", "application/x-visio" }, + { "vst", "application/x-visio" }, + { "vsw", "application/x-visio" }, + { "w60", "application/wordperfect6.0" }, + { "w61", "application/wordperfect6.1" }, + { "w6w", "application/msword" }, + { "wav", "audio/wav" }, + { "wav", "audio/x-wav" }, + { "wb1", "application/x-qpro" }, + { "wbmp", "image/vnd.wap.wbmp" }, + { "web", "application/vnd.xara" }, + { "wiz", "application/msword" }, + { "wk1", "application/x-123" }, + { "wmf", "windows/metafile" }, + { "wml", "text/vnd.wap.wml" }, + { "wmlc", "application/vnd.wap.wmlc" }, + { "wmls", "text/vnd.wap.wmlscript" }, + { "wmlsc", "application/vnd.wap.wmlscriptc" }, + { "word", "application/msword" }, + { "wp", "application/wordperfect" }, + { "wp5", "application/wordperfect" }, + { "wp5", "application/wordperfect6.0" }, + { "wp6", "application/wordperfect" }, + { "wpd", "application/wordperfect" }, + { "wpd", "application/x-wpwin" }, + { "wq1", "application/x-lotus" }, + { "wri", "application/mswrite" }, + { "wri", "application/x-wri" }, + { "wrl", "application/x-world" }, + { "wrl", "model/vrml" }, + { "wrl", "x-world/x-vrml" }, + { "wrz", "model/vrml" }, + { "wrz", "x-world/x-vrml" }, + { "wsc", "text/scriplet" }, + { "wsrc", "application/x-wais-source" }, + { "wtk", "application/x-wintalk" }, + { "xbm", "image/x-xbitmap" }, + { "xbm", "image/x-xbm" }, + { "xbm", "image/xbm" }, + { "xdr", "video/x-amt-demorun" }, + { "xgz", "xgl/drawing" }, + { "xif", "image/vnd.xiff" }, + { "xl", "application/excel" }, + { "xla", "application/excel" }, + { "xla", "application/x-excel" }, + { "xla", "application/x-msexcel" }, + { "xlb", "application/excel" }, + { "xlb", "application/vnd.ms-excel" }, + { "xlb", "application/x-excel" }, + { "xlc", "application/excel" }, + { "xlc", "application/vnd.ms-excel" }, + { "xlc", "application/x-excel" }, + { "xld", "application/excel" }, + { "xld", "application/x-excel" }, + { "xlk", "application/excel" }, + { "xlk", "application/x-excel" }, + { "xll", "application/excel" }, + { "xll", "application/vnd.ms-excel" }, + { "xll", "application/x-excel" }, + { "xlm", "application/excel" }, + { "xlm", "application/vnd.ms-excel" }, + { "xlm", "application/x-excel" }, + { "xls", "application/excel" }, + { "xls", "application/vnd.ms-excel" }, + { "xls", "application/x-excel" }, + { "xls", "application/x-msexcel" }, + { "xlt", "application/excel" }, + { "xlt", "application/x-excel" }, + { "xlv", "application/excel" }, + { "xlv", "application/x-excel" }, + { "xlw", "application/excel" }, + { "xlw", "application/vnd.ms-excel" }, + { "xlw", "application/x-excel" }, + { "xlw", "application/x-msexcel" }, + { "xm", "audio/xm" }, + { "xml", "application/xml" }, + { "xml", "text/xml" }, + { "xmz", "xgl/movie" }, + { "xpix", "application/x-vnd.ls-xpix" }, + { "xpm", "image/x-xpixmap" }, + { "xpm", "image/xpm" }, + { "x-png", "image/png" }, + { "xsr", "video/x-amt-showrun" }, + { "xwd", "image/x-xwd" }, + { "xwd", "image/x-xwindowdump" }, + { "xyz", "chemical/x-pdb" }, + { "z", "application/x-compress" }, + { "z", "application/x-compressed" }, + { "zip", "application/x-compressed" }, + { "zip", "application/x-zip-compressed" }, + { "zip", "application/zip" }, + { "zip", "multipart/x-zip" }, + { "zoo", "application/octet-stream" }, + }; - if (auto it = table.find (pair); it != table.end()) - table.erase (it); + template + static std::multimap createMultiMap (EntryToPair&& entryToPair) + { + std::pair transformed[std::size (initialEntries)]; + std::transform (std::begin (initialEntries), + std::end (initialEntries), + std::begin (transformed), + entryToPair); - table.emplace (std::move (pair)); -} + return { std::begin (transformed), + std::end (transformed) }; + } -} // namespace MimeTypeTable + std::multimap typeForExtension = createMultiMap ([] (auto e) + { + return std::make_pair (e.fileExtension, e.mimeType); + }); -//============================================================================== -std::set& MimeTypeTableEntry::get() + std::multimap extensionForType = createMultiMap ([] (auto e) + { + return std::make_pair (e.mimeType, e.fileExtension); + }); +}; + +} // namespace + +void MimeTypeTable::registerCustomMimeTypeForFileExtension (const String& mimeType, const String& fileExtension) +{ + Table::get().addEntry ({ fileExtension.toRawUTF8(), mimeType.toRawUTF8() }); +} + +StringArray MimeTypeTable::getMimeTypesForFileExtension (const String& fileExtension) { - static std::set result { - {"3dm", "x-world/x-3dmf"}, - {"3dmf", "x-world/x-3dmf"}, - {"a", "application/octet-stream"}, - {"aab", "application/x-authorware-bin"}, - {"aam", "application/x-authorware-map"}, - {"aas", "application/x-authorware-seg"}, - {"abc", "text/vnd.abc"}, - {"acgi", "text/html"}, - {"afl", "video/animaflex"}, - {"ai", "application/postscript"}, - {"aif", "audio/aiff"}, - {"aif", "audio/x-aiff"}, - {"aifc", "audio/aiff"}, - {"aifc", "audio/x-aiff"}, - {"aiff", "audio/aiff"}, - {"aiff", "audio/x-aiff"}, - {"aim", "application/x-aim"}, - {"aip", "text/x-audiosoft-intra"}, - {"ani", "application/x-navi-animation"}, - {"aos", "application/x-nokia-9000-communicator-add-on-software"}, - {"aps", "application/mime"}, - {"arc", "application/octet-stream"}, - {"arj", "application/arj"}, - {"arj", "application/octet-stream"}, - {"art", "image/x-jg"}, - {"asf", "video/x-ms-asf"}, - {"asm", "text/x-asm"}, - {"asp", "text/asp"}, - {"asx", "application/x-mplayer2"}, - {"asx", "video/x-ms-asf"}, - {"asx", "video/x-ms-asf-plugin"}, - {"au", "audio/basic"}, - {"au", "audio/x-au"}, - {"avi", "application/x-troff-msvideo"}, - {"avi", "video/avi"}, - {"avi", "video/msvideo"}, - {"avi", "video/x-msvideo"}, - {"avs", "video/avs-video"}, - {"bcpio", "application/x-bcpio"}, - {"bin", "application/mac-binary"}, - {"bin", "application/macbinary"}, - {"bin", "application/octet-stream"}, - {"bin", "application/x-binary"}, - {"bin", "application/x-macbinary"}, - {"bm", "image/bmp"}, - {"bmp", "image/bmp"}, - {"bmp", "image/x-windows-bmp"}, - {"boo", "application/book"}, - {"book", "application/book"}, - {"boz", "application/x-bzip2"}, - {"bsh", "application/x-bsh"}, - {"bz", "application/x-bzip"}, - {"bz2", "application/x-bzip2"}, - {"c", "text/plain"}, - {"c", "text/x-c"}, - {"c++", "text/plain"}, - {"cat", "application/vnd.ms-pki.seccat"}, - {"cc", "text/plain"}, - {"cc", "text/x-c"}, - {"ccad", "application/clariscad"}, - {"cco", "application/x-cocoa"}, - {"cdf", "application/cdf"}, - {"cdf", "application/x-cdf"}, - {"cdf", "application/x-netcdf"}, - {"cer", "application/pkix-cert"}, - {"cer", "application/x-x509-ca-cert"}, - {"cha", "application/x-chat"}, - {"chat", "application/x-chat"}, - {"class", "application/java"}, - {"class", "application/java-byte-code"}, - {"class", "application/x-java-class"}, - {"com", "application/octet-stream"}, - {"com", "text/plain"}, - {"conf", "text/plain"}, - {"cpio", "application/x-cpio"}, - {"cpp", "text/x-c"}, - {"cpt", "application/mac-compactpro"}, - {"cpt", "application/x-compactpro"}, - {"cpt", "application/x-cpt"}, - {"crl", "application/pkcs-crl"}, - {"crl", "application/pkix-crl"}, - {"crt", "application/pkix-cert"}, - {"crt", "application/x-x509-ca-cert"}, - {"crt", "application/x-x509-user-cert"}, - {"csh", "application/x-csh"}, - {"csh", "text/x-script.csh"}, - {"css", "application/x-pointplus"}, - {"css", "text/css"}, - {"cxx", "text/plain"}, - {"dcr", "application/x-director"}, - {"deepv", "application/x-deepv"}, - {"def", "text/plain"}, - {"der", "application/x-x509-ca-cert"}, - {"dif", "video/x-dv"}, - {"dir", "application/x-director"}, - {"dl", "video/dl"}, - {"dl", "video/x-dl"}, - {"doc", "application/msword"}, - {"dot", "application/msword"}, - {"dp", "application/commonground"}, - {"drw", "application/drafting"}, - {"dump", "application/octet-stream"}, - {"dv", "video/x-dv"}, - {"dvi", "application/x-dvi"}, - {"dwf", "drawing/x-dwf"}, - {"dwf", "model/vnd.dwf"}, - {"dwg", "application/acad"}, - {"dwg", "image/vnd.dwg"}, - {"dwg", "image/x-dwg"}, - {"dxf", "application/dxf"}, - {"dxf", "image/vnd.dwg"}, - {"dxf", "image/x-dwg"}, - {"dxr", "application/x-director"}, - {"el", "text/x-script.elisp"}, - {"elc", "application/x-bytecode.elisp"}, - {"elc", "application/x-elc"}, - {"env", "application/x-envoy"}, - {"eps", "application/postscript"}, - {"es", "application/x-esrehber"}, - {"etx", "text/x-setext"}, - {"evy", "application/envoy"}, - {"evy", "application/x-envoy"}, - {"exe", "application/octet-stream"}, - {"f", "text/plain"}, - {"f", "text/x-fortran"}, - {"f77", "text/x-fortran"}, - {"f90", "text/plain"}, - {"f90", "text/x-fortran"}, - {"fdf", "application/vnd.fdf"}, - {"fif", "application/fractals"}, - {"fif", "image/fif"}, - {"fli", "video/fli"}, - {"fli", "video/x-fli"}, - {"flo", "image/florian"}, - {"flx", "text/vnd.fmi.flexstor"}, - {"fmf", "video/x-atomic3d-feature"}, - {"for", "text/plain"}, - {"for", "text/x-fortran"}, - {"fpx", "image/vnd.fpx"}, - {"fpx", "image/vnd.net-fpx"}, - {"frl", "application/freeloader"}, - {"funk", "audio/make"}, - {"g", "text/plain"}, - {"g3", "image/g3fax"}, - {"gif", "image/gif"}, - {"gl", "video/gl"}, - {"gl", "video/x-gl"}, - {"gsd", "audio/x-gsm"}, - {"gsm", "audio/x-gsm"}, - {"gsp", "application/x-gsp"}, - {"gss", "application/x-gss"}, - {"gtar", "application/x-gtar"}, - {"gz", "application/x-compressed"}, - {"gz", "application/x-gzip"}, - {"gzip", "application/x-gzip"}, - {"gzip", "multipart/x-gzip"}, - {"h", "text/plain"}, - {"h", "text/x-h"}, - {"hdf", "application/x-hdf"}, - {"help", "application/x-helpfile"}, - {"hgl", "application/vnd.hp-hpgl"}, - {"hh", "text/plain"}, - {"hh", "text/x-h"}, - {"hlb", "text/x-script"}, - {"hlp", "application/hlp"}, - {"hlp", "application/x-helpfile"}, - {"hlp", "application/x-winhelp"}, - {"hpg", "application/vnd.hp-hpgl"}, - {"hpgl", "application/vnd.hp-hpgl"}, - {"hqx", "application/binhex"}, - {"hqx", "application/binhex4"}, - {"hqx", "application/mac-binhex"}, - {"hqx", "application/mac-binhex40"}, - {"hqx", "application/x-binhex40"}, - {"hqx", "application/x-mac-binhex40"}, - {"hta", "application/hta"}, - {"htc", "text/x-component"}, - {"htm", "text/html"}, - {"html", "text/html"}, - {"htmls", "text/html"}, - {"htt", "text/webviewhtml"}, - {"htx", "text/html"}, - {"ice", "x-conference/x-cooltalk"}, - {"ico", "image/x-icon"}, - {"idc", "text/plain"}, - {"ief", "image/ief"}, - {"iefs", "image/ief"}, - {"iges", "application/iges"}, - {"iges", "model/iges"}, - {"igs", "application/iges"}, - {"igs", "model/iges"}, - {"ima", "application/x-ima"}, - {"imap", "application/x-httpd-imap"}, - {"inf", "application/inf"}, - {"ins", "application/x-internett-signup"}, - {"ip", "application/x-ip2"}, - {"isu", "video/x-isvideo"}, - {"it", "audio/it"}, - {"iv", "application/x-inventor"}, - {"ivr", "i-world/i-vrml"}, - {"ivy", "application/x-livescreen"}, - {"jam", "audio/x-jam"}, - {"jav", "text/plain"}, - {"jav", "text/x-java-source"}, - {"java", "text/plain"}, - {"java", "text/x-java-source"}, - {"jcm", "application/x-java-commerce"}, - {"jfif", "image/jpeg"}, - {"jfif", "image/pjpeg"}, - {"jpe", "image/jpeg"}, - {"jpe", "image/pjpeg"}, - {"jpeg", "image/jpeg"}, - {"jpeg", "image/pjpeg"}, - {"jpg", "image/jpeg"}, - {"jpg", "image/pjpeg"}, - {"jps", "image/x-jps"}, - {"js", "application/x-javascript"}, - {"json", "application/json"}, - {"jut", "image/jutvision"}, - {"kar", "audio/midi"}, - {"kar", "music/x-karaoke"}, - {"ksh", "application/x-ksh"}, - {"ksh", "text/x-script.ksh"}, - {"la", "audio/nspaudio"}, - {"la", "audio/x-nspaudio"}, - {"lam", "audio/x-liveaudio"}, - {"latex", "application/x-latex"}, - {"lha", "application/lha"}, - {"lha", "application/octet-stream"}, - {"lha", "application/x-lha"}, - {"lhx", "application/octet-stream"}, - {"list", "text/plain"}, - {"lma", "audio/nspaudio"}, - {"lma", "audio/x-nspaudio"}, - {"log", "text/plain"}, - {"lsp", "application/x-lisp"}, - {"lsp", "text/x-script.lisp"}, - {"lst", "text/plain"}, - {"lsx", "text/x-la-asf"}, - {"ltx", "application/x-latex"}, - {"lzh", "application/octet-stream"}, - {"lzh", "application/x-lzh"}, - {"lzx", "application/lzx"}, - {"lzx", "application/octet-stream"}, - {"lzx", "application/x-lzx"}, - {"m", "text/plain"}, - {"m", "text/x-m"}, - {"m1v", "video/mpeg"}, - {"m2a", "audio/mpeg"}, - {"m2v", "video/mpeg"}, - {"m3u", "audio/x-mpequrl"}, - {"man", "application/x-troff-man"}, - {"map", "application/x-navimap"}, - {"mar", "text/plain"}, - {"mbd", "application/mbedlet"}, - {"mc$", "application/x-magic-cap-package-1.0"}, - {"mcd", "application/mcad"}, - {"mcd", "application/x-mathcad"}, - {"mcf", "image/vasa"}, - {"mcf", "text/mcf"}, - {"mcp", "application/netmc"}, - {"me", "application/x-troff-me"}, - {"mht", "message/rfc822"}, - {"mhtml", "message/rfc822"}, - {"mid", "application/x-midi"}, - {"mid", "audio/midi"}, - {"mid", "audio/x-mid"}, - {"mid", "audio/x-midi"}, - {"mid", "music/crescendo"}, - {"mid", "x-music/x-midi"}, - {"midi", "application/x-midi"}, - {"midi", "audio/midi"}, - {"midi", "audio/x-mid"}, - {"midi", "audio/x-midi"}, - {"midi", "music/crescendo"}, - {"midi", "x-music/x-midi"}, - {"mif", "application/x-frame"}, - {"mif", "application/x-mif"}, - {"mime", "message/rfc822"}, - {"mime", "www/mime"}, - {"mjf", "audio/x-vnd.audioexplosion.mjuicemediafile"}, - {"mjpg", "video/x-motion-jpeg"}, - {"mm", "application/base64"}, - {"mm", "application/x-meme"}, - {"mme", "application/base64"}, - {"mod", "audio/mod"}, - {"mod", "audio/x-mod"}, - {"moov", "video/quicktime"}, - {"mov", "video/quicktime"}, - {"movie", "video/x-sgi-movie"}, - {"mp2", "audio/mpeg"}, - {"mp2", "audio/x-mpeg"}, - {"mp2", "video/mpeg"}, - {"mp2", "video/x-mpeg"}, - {"mp2", "video/x-mpeq2a"}, - {"mp3", "audio/mpeg"}, - {"mp3", "audio/mpeg3"}, - {"mp3", "audio/x-mpeg-3"}, - {"mp3", "video/mpeg"}, - {"mp3", "video/x-mpeg"}, - {"mpa", "audio/mpeg"}, - {"mpa", "video/mpeg"}, - {"mpc", "application/x-project"}, - {"mpe", "video/mpeg"}, - {"mpeg", "video/mpeg"}, - {"mpg", "audio/mpeg"}, - {"mpg", "video/mpeg"}, - {"mpga", "audio/mpeg"}, - {"mpp", "application/vnd.ms-project"}, - {"mpt", "application/x-project"}, - {"mpv", "application/x-project"}, - {"mpx", "application/x-project"}, - {"mrc", "application/marc"}, - {"ms", "application/x-troff-ms"}, - {"mv", "video/x-sgi-movie"}, - {"my", "audio/make"}, - {"mzz", "application/x-vnd.audioexplosion.mzz"}, - {"nap", "image/naplps"}, - {"naplps", "image/naplps"}, - {"nc", "application/x-netcdf"}, - {"ncm", "application/vnd.nokia.configuration-message"}, - {"nif", "image/x-niff"}, - {"niff", "image/x-niff"}, - {"nix", "application/x-mix-transfer"}, - {"nsc", "application/x-conference"}, - {"nvd", "application/x-navidoc"}, - {"o", "application/octet-stream"}, - {"oda", "application/oda"}, - {"omc", "application/x-omc"}, - {"omcd", "application/x-omcdatamaker"}, - {"omcr", "application/x-omcregerator"}, - {"p", "text/x-pascal"}, - {"p10", "application/pkcs10"}, - {"p10", "application/x-pkcs10"}, - {"p12", "application/pkcs-12"}, - {"p12", "application/x-pkcs12"}, - {"p7a", "application/x-pkcs7-signature"}, - {"p7c", "application/pkcs7-mime"}, - {"p7c", "application/x-pkcs7-mime"}, - {"p7m", "application/pkcs7-mime"}, - {"p7m", "application/x-pkcs7-mime"}, - {"p7r", "application/x-pkcs7-certreqresp"}, - {"p7s", "application/pkcs7-signature"}, - {"part", "application/pro_eng"}, - {"pas", "text/pascal"}, - {"pbm", "image/x-portable-bitmap"}, - {"pcl", "application/vnd.hp-pcl"}, - {"pcl", "application/x-pcl"}, - {"pct", "image/x-pict"}, - {"pcx", "image/x-pcx"}, - {"pdb", "chemical/x-pdb"}, - {"pdf", "application/pdf"}, - {"pfunk", "audio/make"}, - {"pfunk", "audio/make.my.funk"}, - {"pgm", "image/x-portable-graymap"}, - {"pgm", "image/x-portable-greymap"}, - {"pic", "image/pict"}, - {"pict", "image/pict"}, - {"pkg", "application/x-newton-compatible-pkg"}, - {"pko", "application/vnd.ms-pki.pko"}, - {"pl", "text/plain"}, - {"pl", "text/x-script.perl"}, - {"plx", "application/x-pixclscript"}, - {"pm", "image/x-xpixmap"}, - {"pm", "text/x-script.perl-module"}, - {"pm4", "application/x-pagemaker"}, - {"pm5", "application/x-pagemaker"}, - {"png", "image/png"}, - {"pnm", "application/x-portable-anymap"}, - {"pnm", "image/x-portable-anymap"}, - {"pot", "application/mspowerpoint"}, - {"pot", "application/vnd.ms-powerpoint"}, - {"pov", "model/x-pov"}, - {"ppa", "application/vnd.ms-powerpoint"}, - {"ppm", "image/x-portable-pixmap"}, - {"pps", "application/mspowerpoint"}, - {"pps", "application/vnd.ms-powerpoint"}, - {"ppt", "application/mspowerpoint"}, - {"ppt", "application/powerpoint"}, - {"ppt", "application/vnd.ms-powerpoint"}, - {"ppt", "application/x-mspowerpoint"}, - {"ppz", "application/mspowerpoint"}, - {"pre", "application/x-freelance"}, - {"prt", "application/pro_eng"}, - {"ps", "application/postscript"}, - {"psd", "application/octet-stream"}, - {"pvu", "paleovu/x-pv"}, - {"pwz", "application/vnd.ms-powerpoint"}, - {"py", "text/x-script.python"}, - {"pyc", "application/x-bytecode.python"}, - {"qcp", "audio/vnd.qcelp"}, - {"qd3", "x-world/x-3dmf"}, - {"qd3d", "x-world/x-3dmf"}, - {"qif", "image/x-quicktime"}, - {"qt", "video/quicktime"}, - {"qtc", "video/x-qtc"}, - {"qti", "image/x-quicktime"}, - {"qtif", "image/x-quicktime"}, - {"ra", "audio/x-pn-realaudio"}, - {"ra", "audio/x-pn-realaudio-plugin"}, - {"ra", "audio/x-realaudio"}, - {"ram", "audio/x-pn-realaudio"}, - {"ras", "application/x-cmu-raster"}, - {"ras", "image/cmu-raster"}, - {"ras", "image/x-cmu-raster"}, - {"rast", "image/cmu-raster"}, - {"rexx", "text/x-script.rexx"}, - {"rf", "image/vnd.rn-realflash"}, - {"rgb", "image/x-rgb"}, - {"rm", "application/vnd.rn-realmedia"}, - {"rm", "audio/x-pn-realaudio"}, - {"rmi", "audio/mid"}, - {"rmm", "audio/x-pn-realaudio"}, - {"rmp", "audio/x-pn-realaudio"}, - {"rmp", "audio/x-pn-realaudio-plugin"}, - {"rng", "application/ringing-tones"}, - {"rng", "application/vnd.nokia.ringing-tone"}, - {"rnx", "application/vnd.rn-realplayer"}, - {"roff", "application/x-troff"}, - {"rp", "image/vnd.rn-realpix"}, - {"rpm", "audio/x-pn-realaudio-plugin"}, - {"rt", "text/richtext"}, - {"rt", "text/vnd.rn-realtext"}, - {"rtf", "application/rtf"}, - {"rtf", "application/x-rtf"}, - {"rtf", "text/richtext"}, - {"rtx", "application/rtf"}, - {"rtx", "text/richtext"}, - {"rv", "video/vnd.rn-realvideo"}, - {"s", "text/x-asm"}, - {"s3m", "audio/s3m"}, - {"saveme", "application/octet-stream"}, - {"sbk", "application/x-tbook"}, - {"scm", "application/x-lotusscreencam"}, - {"scm", "text/x-script.guile"}, - {"scm", "text/x-script.scheme"}, - {"scm", "video/x-scm"}, - {"sdml", "text/plain"}, - {"sdp", "application/sdp"}, - {"sdp", "application/x-sdp"}, - {"sdr", "application/sounder"}, - {"sea", "application/sea"}, - {"sea", "application/x-sea"}, - {"set", "application/set"}, - {"sgm", "text/sgml"}, - {"sgm", "text/x-sgml"}, - {"sgml", "text/sgml"}, - {"sgml", "text/x-sgml"}, - {"sh", "application/x-bsh"}, - {"sh", "application/x-sh"}, - {"sh", "application/x-shar"}, - {"sh", "text/x-script.sh"}, - {"shar", "application/x-bsh"}, - {"shar", "application/x-shar"}, - {"shtml", "text/html"}, - {"shtml", "text/x-server-parsed-html"}, - {"sid", "audio/x-psid"}, - {"sit", "application/x-sit"}, - {"sit", "application/x-stuffit"}, - {"skd", "application/x-koan"}, - {"skm", "application/x-koan"}, - {"skp", "application/x-koan"}, - {"skt", "application/x-koan"}, - {"sl", "application/x-seelogo"}, - {"smi", "application/smil"}, - {"smil", "application/smil"}, - {"snd", "audio/basic"}, - {"snd", "audio/x-adpcm"}, - {"sol", "application/solids"}, - {"spc", "application/x-pkcs7-certificates"}, - {"spc", "text/x-speech"}, - {"spl", "application/futuresplash"}, - {"spr", "application/x-sprite"}, - {"sprite", "application/x-sprite"}, - {"src", "application/x-wais-source"}, - {"ssi", "text/x-server-parsed-html"}, - {"ssm", "application/streamingmedia"}, - {"sst", "application/vnd.ms-pki.certstore"}, - {"step", "application/step"}, - {"stl", "application/sla"}, - {"stl", "application/vnd.ms-pki.stl"}, - {"stl", "application/x-navistyle"}, - {"stp", "application/step"}, - {"sv4cpio,", "application/x-sv4cpio"}, - {"sv4crc", "application/x-sv4crc"}, - {"svf", "image/vnd.dwg"}, - {"svf", "image/x-dwg"}, - {"svr", "application/x-world"}, - {"svr", "x-world/x-svr"}, - {"swf", "application/x-shockwave-flash"}, - {"t", "application/x-troff"}, - {"talk", "text/x-speech"}, - {"tar", "application/x-tar"}, - {"tbk", "application/toolbook"}, - {"tbk", "application/x-tbook"}, - {"tcl", "application/x-tcl"}, - {"tcl", "text/x-script.tcl"}, - {"tcsh", "text/x-script.tcsh"}, - {"tex", "application/x-tex"}, - {"texi", "application/x-texinfo"}, - {"texinfo,", "application/x-texinfo"}, - {"text", "application/plain"}, - {"text", "text/plain"}, - {"tgz", "application/gnutar"}, - {"tgz", "application/x-compressed"}, - {"tif", "image/tiff"}, - {"tif", "image/x-tiff"}, - {"tiff", "image/tiff"}, - {"tiff", "image/x-tiff"}, - {"tr", "application/x-troff"}, - {"tsi", "audio/tsp-audio"}, - {"tsp", "application/dsptype"}, - {"tsp", "audio/tsplayer"}, - {"tsv", "text/tab-separated-values"}, - {"turbot", "image/florian"}, - {"txt", "text/plain"}, - {"uil", "text/x-uil"}, - {"uni", "text/uri-list"}, - {"unis", "text/uri-list"}, - {"unv", "application/i-deas"}, - {"uri", "text/uri-list"}, - {"uris", "text/uri-list"}, - {"ustar", "application/x-ustar"}, - {"ustar", "multipart/x-ustar"}, - {"uu", "application/octet-stream"}, - {"uu", "text/x-uuencode"}, - {"uue", "text/x-uuencode"}, - {"vcd", "application/x-cdlink"}, - {"vcs", "text/x-vcalendar"}, - {"vda", "application/vda"}, - {"vdo", "video/vdo"}, - {"vew", "application/groupwise"}, - {"viv", "video/vivo"}, - {"viv", "video/vnd.vivo"}, - {"vivo", "video/vivo"}, - {"vivo", "video/vnd.vivo"}, - {"vmd", "application/vocaltec-media-desc"}, - {"vmf", "application/vocaltec-media-file"}, - {"voc", "audio/voc"}, - {"voc", "audio/x-voc"}, - {"vos", "video/vosaic"}, - {"vox", "audio/voxware"}, - {"vqe", "audio/x-twinvq-plugin"}, - {"vqf", "audio/x-twinvq"}, - {"vql", "audio/x-twinvq-plugin"}, - {"vrml", "application/x-vrml"}, - {"vrml", "model/vrml"}, - {"vrml", "x-world/x-vrml"}, - {"vrt", "x-world/x-vrt"}, - {"vsd", "application/x-visio"}, - {"vst", "application/x-visio"}, - {"vsw", "application/x-visio"}, - {"w60", "application/wordperfect6.0"}, - {"w61", "application/wordperfect6.1"}, - {"w6w", "application/msword"}, - {"wav", "audio/wav"}, - {"wav", "audio/x-wav"}, - {"wb1", "application/x-qpro"}, - {"wbmp", "image/vnd.wap.wbmp"}, - {"web", "application/vnd.xara"}, - {"wiz", "application/msword"}, - {"wk1", "application/x-123"}, - {"wmf", "windows/metafile"}, - {"wml", "text/vnd.wap.wml"}, - {"wmlc", "application/vnd.wap.wmlc"}, - {"wmls", "text/vnd.wap.wmlscript"}, - {"wmlsc", "application/vnd.wap.wmlscriptc"}, - {"word", "application/msword"}, - {"wp", "application/wordperfect"}, - {"wp5", "application/wordperfect"}, - {"wp5", "application/wordperfect6.0"}, - {"wp6", "application/wordperfect"}, - {"wpd", "application/wordperfect"}, - {"wpd", "application/x-wpwin"}, - {"wq1", "application/x-lotus"}, - {"wri", "application/mswrite"}, - {"wri", "application/x-wri"}, - {"wrl", "application/x-world"}, - {"wrl", "model/vrml"}, - {"wrl", "x-world/x-vrml"}, - {"wrz", "model/vrml"}, - {"wrz", "x-world/x-vrml"}, - {"wsc", "text/scriplet"}, - {"wsrc", "application/x-wais-source"}, - {"wtk", "application/x-wintalk"}, - {"xbm", "image/x-xbitmap"}, - {"xbm", "image/x-xbm"}, - {"xbm", "image/xbm"}, - {"xdr", "video/x-amt-demorun"}, - {"xgz", "xgl/drawing"}, - {"xif", "image/vnd.xiff"}, - {"xl", "application/excel"}, - {"xla", "application/excel"}, - {"xla", "application/x-excel"}, - {"xla", "application/x-msexcel"}, - {"xlb", "application/excel"}, - {"xlb", "application/vnd.ms-excel"}, - {"xlb", "application/x-excel"}, - {"xlc", "application/excel"}, - {"xlc", "application/vnd.ms-excel"}, - {"xlc", "application/x-excel"}, - {"xld", "application/excel"}, - {"xld", "application/x-excel"}, - {"xlk", "application/excel"}, - {"xlk", "application/x-excel"}, - {"xll", "application/excel"}, - {"xll", "application/vnd.ms-excel"}, - {"xll", "application/x-excel"}, - {"xlm", "application/excel"}, - {"xlm", "application/vnd.ms-excel"}, - {"xlm", "application/x-excel"}, - {"xls", "application/excel"}, - {"xls", "application/vnd.ms-excel"}, - {"xls", "application/x-excel"}, - {"xls", "application/x-msexcel"}, - {"xlt", "application/excel"}, - {"xlt", "application/x-excel"}, - {"xlv", "application/excel"}, - {"xlv", "application/x-excel"}, - {"xlw", "application/excel"}, - {"xlw", "application/vnd.ms-excel"}, - {"xlw", "application/x-excel"}, - {"xlw", "application/x-msexcel"}, - {"xm", "audio/xm"}, - {"xml", "application/xml"}, - {"xml", "text/xml"}, - {"xmz", "xgl/movie"}, - {"xpix", "application/x-vnd.ls-xpix"}, - {"xpm", "image/x-xpixmap"}, - {"xpm", "image/xpm"}, - {"x-png", "image/png"}, - {"xsr", "video/x-amt-showrun"}, - {"xwd", "image/x-xwd"}, - {"xwd", "image/x-xwindowdump"}, - {"xyz", "chemical/x-pdb"}, - {"z", "application/x-compress"}, - {"z", "application/x-compressed"}, - {"zip", "application/x-compressed"}, - {"zip", "application/x-zip-compressed"}, - {"zip", "application/zip"}, - {"zip", "multipart/x-zip"}, - {"zoo", "application/octet-stream"}}; + return Table::get().getTypesForExtension (fileExtension); +} - return result; +StringArray MimeTypeTable::getFileExtensionsForMimeType (const String& mimeType) +{ + return Table::get().getExtensionsForType (mimeType); } } // namespace juce diff --git a/modules/juce_core/files/juce_common_MimeTypes.h b/modules/juce_core/files/juce_common_MimeTypes.h index 9b3cda570c..d3b3e7be9c 100644 --- a/modules/juce_core/files/juce_common_MimeTypes.h +++ b/modules/juce_core/files/juce_common_MimeTypes.h @@ -28,18 +28,18 @@ namespace juce { -namespace MimeTypeTable +struct MimeTypeTable { /* @internal */ -void registerCustomMimeTypeForFileExtension (const String& mimeType, const String& fileExtension); +static void registerCustomMimeTypeForFileExtension (const String& mimeType, const String& fileExtension); /* @internal */ -StringArray getMimeTypesForFileExtension (const String& fileExtension); +static StringArray getMimeTypesForFileExtension (const String& fileExtension); /* @internal */ -StringArray getFileExtensionsForMimeType (const String& mimeType); +static StringArray getFileExtensionsForMimeType (const String& mimeType); -} // namespace MimeTypeTable +}; } // namespace juce