liborcus-0.9.2/0000755000175000017500000000000012540654317012017 5ustar renereneliborcus-0.9.2/ChangeLog0000644000175000017500000102035012540654317013572 0ustar renerene2015-06-09 Kohei Yoshida [001bbd869add8f5b63f8efb562749f20bfb231bb] Set the next 0.9 release to 0.9.2. 2015-06-08 David Tardon [2cee53197e98793aee318339efd25529fe883148] correctly implement assignment of CSS properties This fixes unit test failure on some platforms, e.g., ppc64. Sigh, if the union were not anonymous, it would be possible to use std::swap on it... 2015-06-07 Kohei Yoshida [28c34415a4422611b24ad6c051843682a3852bd6] Fix wrapper scripts. 2015-06-05 David Tardon [063941c6034f586b894a90f40b9d61a6ffb27d1e] disable opt. in debug build 2015-06-04 David Tardon [26d33d7cfd93b22e2fa13e6a3e28d133619948cf] these functions are implemented in liborcus 2015-06-03 David Tardon [9bd36bfb207b5edced90c4e4f5e8fb4fa08ebb19] __ORCUS_BUILDING_DLL is set conditionally 2015-06-03 David Tardon [718b1adfe9c327e06b1ab796c5cd9805db63c9b3] mark more symbols as public 2015-06-02 David Tardon [3e08d2264984b8d5227e22c7089f00f8f2e36513] fix dllexport decls 2015-05-17 Kohei Yoshida [572a14285bdac90d51e1033d314713333e9734bf] Add heading for older releases. 2015-05-17 Kohei Yoshida [e560c45921fd3897f4256698cc60e52f10393b1b] Better formatting. 2015-05-17 Kohei Yoshida [d8dfcb519339fc300a5ecd518ab71b4fce56c570] Add 0.9.1 to the download section. 2015-05-17 Kohei Yoshida [a305e88024d54a5d02d596694618cb05bb69bb08] Up the version to 0.9.1. 2015-05-04 David Tardon [da5d99c57ecdf54b40c248a109969021b70f5a38] do not let main() throw 2015-05-01 Kohei Yoshida [cb515746761b909052d0d2473f96a3f3570dd3cf] Here too. 2015-05-01 Kohei Yoshida [5f88a7a772d792306e7adb45efa44944a5951d41] Define these macros to please MSVC. Only relevant on Windows, apparently. 2015-04-30 Kohei Yoshida [5c3078a9d5d78e6d747ddab9625f12d7e4996343] These zip related classes are now in orcus-parser. 2015-04-26 Kohei Yoshida [72aa9320317a50fe0a336cf6e10e7f28da4e1285] Remove MDDS_CFLAGS from Makefile.am; it is now defined in configure.ac. 2015-04-26 Markus Mohrhard [002f8278fe44988be4701623d0467874f28ec4a8] we need MDDS_CFLAGS as well in the CXXFLAGS 2015-04-26 Kohei Yoshida [7ad405e7438a6f62b4e1f93520c9a493756a8504] cell_buffer is now in the orcus-parser. 2015-04-23 Kohei Yoshida [b40624ea24a2b3fe7a09471ae211fde0b78df248] Add mdds cflags for the parser for use of mdds/sorted_string_map.hpp. 2015-04-18 Kohei Yoshida [ad2c11d03cb41c8a74f71fadcff65476403e9915] Add download URL to 0.9.0. 2015-04-18 Kohei Yoshida [e46ee01f3e03d660de914397e73f2c48acb28c58] These test files are not in the repository. 2015-04-18 Kohei Yoshida [d438b16dcafd066626b0d31daeca6e6b2709602f] Fix all Makefile.am to get 'make distcheck' to pass. 2015-04-11 Kohei Yoshida [e57d8a860cbd07438cc6fc0653c5fd7b0f35e69a] Write test for sax_token_parser's handling of raw element names. 2015-04-10 Kohei Yoshida [53a2b2673b6ab432ee6a5d747901f594d49223f8] Rename to sax_token_handler_wrapper_base. 2015-04-10 Kohei Yoshida [e7fa0d8c02cdce11eacb47639fbb11bb5c42fe43] No need to keep reference to ns_cxt in the token parser. 2015-04-10 Kohei Yoshida [0e96d65cc7cca308cb559b383dbd61168b9b71b9] Remove the _Token template parameter and move some stuff out of template. 2015-04-09 Kohei Yoshida [847501f3d3ec54538a2252ab92e3f747f72314fa] Set up test framework for sax_token_parser. 2015-04-09 Kohei Yoshida [312554a4b97602bb8d40bdbe54652fb356a307de] Move tokens.cpp in the slickedit project file. 2015-04-09 Markus Mohrhard [b73f777a45dfe0dc8601016145932c8c4bddf907] use c++11 for orcus This allows us to use some simple C++11 features. 2015-04-09 Kohei Yoshida [1f3adc69145e47348d9a6a90239f28f1e5123193] Now all sax parser family belongs to orcus-parser. This makes more sense. 2015-04-09 Kohei Yoshida [ae4906773e2b3729236e358d7e04d7f00e8ca631] Move tokens.cpp from liborcus to parser. 2015-04-09 Kohei Yoshida [b205d8c8334241c988f179e495e9c6ef0dcee7a5] These belong to orcus-parser. 2015-04-09 Kohei Yoshida [9301016cebb58cc4212744fa832fd482226d18fe] Store raw element/attribute string pointer along with the token. Useful in presence of elements or attributes that are not on the master token list. 2015-04-08 Kohei Yoshida [08ff1da6575d9c9d07c5f3a0db76198ce7680faa] It's not 2015-04-07 Kohei Yoshida [8d3f0f8f5cf8ea7aa3344b57c2e2fbc2c602d0ca] Annotate the skeleton handler for sax_token_parser. 2015-04-07 Kohei Yoshida [7dca7894bddcb721d8560d7911f868763d8e0e67] Annotate the sax skeleton handler methods. 2015-04-07 Kohei Yoshida [aa7ede2c6995c9458dfe1c9f5eda6cef092954d7] Add skeleton handler for sax_ns_parser. 2015-04-07 Kohei Yoshida [9e740396e74804abb0474c4a5443291ad8a3ae7f] Add Download section to README. 2015-04-06 Kohei Yoshida [dc758344d79685a4a60d08875aed7dd079a7755c] Add skeleton handler for sax_token_parser. 2015-04-06 Kohei Yoshida [910670f6dd9be9083d27eb1478faf893a69f6bbd] Take these example handlers out of orcus namespace. Since they are for external code, they shouldn't be in orcus namespace. 2015-04-06 Kohei Yoshida [4abcca164bdfc2f48346162b2835ff6cc47d87cd] Add skeleton handler for sax_parser. 2015-04-04 Kohei Yoshida [e9517a147cb7bf9b768561c47175d4797f1dd0e3] Add a csv_parser handler skeleton too (and a test for it). 2015-04-04 Kohei Yoshida [6605f84f9e09a8cbdd02e7e2d571f62ce072b5f3] Add css_parser handler skeleton code to copy from. This is for the user of css_parser to copy this handler class to use as the starting point for his/her own handler. The test ensures that the handler skeleton is correct and useable. This skeleton code is intentionally released under the MIT/X11 license. 2015-04-02 Kohei Yoshida [fc5d99a02e20e4eb43e25d9318fdd8af207aa44a] Update AUTHORS. 2015-04-02 Kohei Yoshida [6e139be58619476890fe1af347ae838eb0dfd6aa] Mention about the low-level parsers. 2015-04-02 Kohei Yoshida [b4e61f50356a75a67f7f18b1242f90019dd42ce6] Add markup. 2015-04-02 Kohei Yoshida [365c38ba6d95cfbeaa22ffb2ca6c02bf07b6e4e7] Rename README to add .md extension. 2015-04-02 Kohei Yoshida [4c8af0a142a2f35bfff0f6de318dd01ffcd8510d] Disable debug statements. 2015-04-02 Kohei Yoshida [afe23f3920791d708212448f9ab99c39816b65c0] Add test case for HSLA value & fix a related bug. 2015-04-02 Kohei Yoshida [fd0721688839625bacaade1ea11ae521cadc8d45] Run the test for real. 2015-04-02 Kohei Yoshida [e3b611fe4e2604b33b18bdd9a10ab706f66e19b5] Handle HSL and HSLA color values & test for HSL values. 2015-04-01 Kohei Yoshida [5ec26ec444e1a0bd1c3a6045296c43c6645a8393] Handle single quoted or unquoted URL values. 2015-04-01 Kohei Yoshida [63625f6d266613bb2da2ec66aa6614d30cbc071e] Prepare for handling single quoted values as well as double quoted ones. 2015-03-31 Kohei Yoshida [e7a04374a816c59e01dac37f29bdc381095850ab] Add test case for url property value type. Once again, quoted URL value only for now. CSS also support URL value that's not quoted, which is yet to be handled. 2015-03-31 Kohei Yoshida [a2c00e388cbb29e685c91cfebc854d07d656ebcd] Handle and store url property value. Quoted URL only for now. 2015-03-30 Kohei Yoshida [06dce2de90a228af3b0f7ad181596d0acf5d3bc8] Fix parse failure on literal of length 0 & test case for it. 2015-03-30 Kohei Yoshida [804c74bed072e724d2748c7a90e1a827a940584e] Move these into 'complex' directory. These are not to be confused with those that are unit-tested. 2015-03-30 Kohei Yoshida [863e3fae47c7bb2499ea9737f675e011defe166a] Write test case for rgb property values. 2015-03-30 Kohei Yoshida [2f4ab44d64da604977c9960394c290797b140b39] Store property value as css_property_value_t instead of pstring. 2015-03-30 Kohei Yoshida [3efb76502843599d1be6f68ce84789205dd31d03] Add copy ctor, assignment operator and swap() method. 2015-03-29 Kohei Yoshida [652ae63cbfaf3b060ba28a8b5679723e12d04f6e] Alpha value ranges from 0.0 to 1.0 and is not an integer. 2015-03-29 Kohei Yoshida [2fe55a205607676972e14f8e48a461e0a53be374] Set up a structure for storing a CSS property value. Not used yet. 2015-03-25 Kohei Yoshida [3e8d725e53fe5fdc38c42c6e442b24c5f2287497] Clip the value to max value when exceeding it. 2015-03-25 Kohei Yoshida [383b4b7775beeb927e69909ebd5a86f6aa59c1fd] New basic test case. Not tested yet. 2015-03-25 Kohei Yoshida [f387de630ef9a22b3d20d847b96ca70971d0fbb0] Parse 'rgb' and 'rgba' color functions. More to come. The color values are not stored in the document tree yet. 2015-03-25 Kohei Yoshida [e63acf3681556eb85751136766fa14420e896442] CSS file that the parser currently fails to parse. 2015-03-24 Kohei Yoshida [e5959a34cdc9558599183b442583e81460a92d57] Another test case for chained selector plus bug fix for it. 2015-03-24 Kohei Yoshida [d75066163c0ed121dc836dc9e0ae29b7a79707c4] Don't forget to descend to the next level when iterating on the chain. Plus some scope reduction opportunity up above. 2015-03-24 Kohei Yoshida [d140c53978bb8cbdbeaf418b3f3492665b446391] Add test for first chained selector. 2015-03-24 Kohei Yoshida [e487aba7179523de1d500a288f092c548acc56e0] Dump properties of chained simple selectors. 2015-03-24 Kohei Yoshida [43b97ed1b49b6385f8d30646ff5580ea39e01780] Print chained simple selectors and combinators. 2015-03-24 Kohei Yoshida [a3c019aab1c2825144ecc7bfcb8b1d6f778fc04f] Have the handler store combinators and add insertion_error exception. 2015-03-24 Kohei Yoshida [c85176a2eb43181cb4e6fc697d972bd5640df736] Re-use orcus::general_error for exception with message. 2015-03-24 Kohei Yoshida [10a4115576f7ee28dccce561c40295641e0afa8a] Parse and push combinators to the handler. Also use common function to throw exceptions to reduce templatized code. 2015-03-24 Kohei Yoshida [6ef7a4c00384d68e16ea93615a8145f8bb569116] Finally store properties with pseudo class correctly. And write test case for it. 2015-03-24 Kohei Yoshida [fe5f05821be3cc38b5fa5f3dc1b55081f45d6b65] More on handling pseudo classes. Not done yet. 2015-03-24 Kohei Yoshida [10d0279dce509ffba0215872da88851febeb5fbf] pstring actually belongs to orcus-parser. 2015-03-24 Kohei Yoshida [0317d817ba6f793701d539d531865e09bb13d55d] Add pseudo class types and a function to convert them. 2015-03-24 Kohei Yoshida [c264203488f2d5238d2a533370e6aaaa0f8b3788] I forgot to add this file. 2015-03-24 Kohei Yoshida [aabefd6789e0856694453f874f1cd49bba4c1b42] Add a new method to fetch all property sets for given selector. This is more efficient in case the caller needs to pull all properties for all pseudo element values for a given selector. 2015-03-24 Kohei Yoshida [cf1efec2c489367567ce055970d67fb92b4bf10a] Test for multiple pseudo elements in single selector. 2015-03-24 Kohei Yoshida [a2c44b63be78249e77b05c7cfaa4aa71053774b8] Add test case for handling pseudo elements. 2015-03-24 Kohei Yoshida [baa3a4c0bc43af05c3f5e4ed482a1cfcdc2ea12c] Parse and store pseudo elements. I still need to write a test for this. 2015-03-24 Kohei Yoshida [f025abe48bb496fe07a8bd8dd9df87810ab44f10] Put primitive css types under css namespace. No idea what's wrong with slickedit wanting to mess with own project file this bad.... 2015-03-24 Kohei Yoshida [4d66d03a70affd2e18aa74981ac9234f73f5ac82] Handle pseudo element and class separators in css_parser. And separate the css selector structures from css primitive types. The css primitive types will be used directly in the parser itself. 2015-03-24 Kohei Yoshida [a667f7b2524691a65b2264b560fc73c2cc778cb1] Implement is_in() and remove duplication. 2015-03-24 Kohei Yoshida [83bc48d8201db2491295b20394117a16b9a41f37] Prepare for storing properties for different pseudo element flags. 2015-03-24 Kohei Yoshida [bfc0b43d2f3c9105c3ec22c9751f5216e6bf7311] Let's not store this here... 2015-03-24 Kohei Yoshida [61d6a8aab3d4e59a6dda1a8ef0f6fe488d68a8c1] Implement hash function for real. 2015-03-24 Kohei Yoshida [5eba99af03781dff7021d656fcbc90168b736bf3] Mention that this is a bitfield. 2015-03-24 Kohei Yoshida [b1aee6d5c3e2d0e3f2ac578a562b4d954d017e04] Add CSS pseudo element types. They are not used yet. 2015-03-24 Kohei Yoshida [8b148f0667a2f6c2549edadc49f55aa6fa0a3a46] Handle selectors with just ID. 2015-03-24 Kohei Yoshida [cf8c1cd19de3dd99782e5c77898f7c738977e164] Support selector with multiple classes. 2015-03-24 Kohei Yoshida [99395ec9ffbce23d0a38387676b707b1252970ff] Move more code out of the template. 2015-03-24 Kohei Yoshida [e8bcfc5dce27924942e2770f24c954a13c7b286e] Re-use identifier() for this. 2015-03-24 Kohei Yoshida [36e08473bb2e80c62980e93621894189caa22429] Move some code out of the template by creating css::parser_base. css::parser_base is a non-template base class that stores code that doesn't need to be templatized. 2015-03-24 Kohei Yoshida [837f35a77ca2d5688494dc9d47f7a40e3f21cc1c] Clean this up a bit. 2015-03-24 Kohei Yoshida [33aa19cf661ed72fee78bae2acb6ffef111293fd] Handle CSS ID's. 2015-03-24 Kohei Yoshida [8ad18bdaf69bdf257f7fd5bc42fc06d1194f1233] Add test for handling of comments and fix the parser while at it. 2015-03-24 Kohei Yoshida [d68f5a4a1bc2cd8294f85449d08a9bc5f008f4fd] Add another test case and fix the bug uncovered by it. 2015-03-24 Kohei Yoshida [0435c6ad3cab24bcda9b7d4e293758f563960a28] Add comment at the top of each test css files. 2015-03-24 Kohei Yoshida [a3fcc58851979a95b01382ad4e0638c8906c6a7a] Handle inline comments in more locations. 2015-03-24 Kohei Yoshida [ed5327d09b25163abb08c2d8ae09455b89a3d8a2] Handle inline comments in some locations. Not all locations are covered yet. 2015-03-24 Kohei Yoshida [d829bc845968fb450734260c7e67f6d49dd77556] Another test case, and fix one bug in css_parser. '%' may appear in a property value e.g. 'height: 100%'. 2015-03-24 Kohei Yoshida [36674d0de5ea3d098b45a97ebad0fe1cee260ec0] Add test for global class selector. 2015-03-24 Kohei Yoshida [3e992f9fdf4712dce5f462f61f771b35198fa507] Add this new file to the slickedit project. 2015-03-24 Kohei Yoshida [829eda079b2142a6c94ce2c2ecd77c7b97f150a0] Test for a property whose value consists of multiple strings. 2015-03-24 Kohei Yoshida [a6fc2f6f820bc11f3795015b65b35a3c787cec32] Correctly handle property value that consists of multiple values. e.g. 'border: solid 1px;' where the value of 'border' consists of 'solid' and '1px'. 2015-03-24 Kohei Yoshida [ce291d1806d124ed6758404c528ef98075b8061c] Check the size of returned property container in unit test. 2015-03-24 Kohei Yoshida [da678fd2cd9545e006a14368c97c76141cf3d459] Check property values in unit test. 2015-03-24 Kohei Yoshida [7fe8bef237025cdc055f8d9008ff9f60052eee54] Rename to disambiguate these two const and non-const functions. Apparently mp_impl->m_root doesn't automatically become const even when mp_impl is a const pointer. 2015-03-24 Kohei Yoshida [c4c87c4093174a5ed1dd590676029828a4183382] Add script to execute test binary independently. This will makes it easier to debug in case a test fails. 2015-03-24 Kohei Yoshida [7feb8595f7ab6c9e12357620886b13d12f3734e8] Test something for real. This currently fails. 2015-03-24 Kohei Yoshida [3c9aabbf37cb6866fe2fda69c52c6f9912dd6eb3] Set up the basis for testing css parsing. 2015-03-24 Kohei Yoshida [cfe008b0e58c7e3140d29bd202a60263e853ec74] Header cleanup. 2015-03-24 Kohei Yoshida [00e2b3f69fb368317aafb9452f63345ffccec546] Move css_parse_error to css::parse_error with non-inlined methods. 2015-03-24 Kohei Yoshida [1ab6015e71eb04d02384311913775c947d465112] Move the css loading code to css_document_tree. 2015-03-24 Kohei Yoshida [8ab05ab9dcdd3534ad78085b5e4361dd2269ff30] Implement css_document_tree::get_properties(). This method is not yet used, but will be used from unit tests later. 2015-03-24 Kohei Yoshida [3239443686b272cfb536df74ac5656104fdc09ff] Print selector name only when the property set is not empty. 2015-03-24 Kohei Yoshida [379f27383f3f4dcc2604fde07fc9197fdc5e4d85] Dump all properties afterwards. Properties for chained selectors are not dumped yet. 2015-03-24 Kohei Yoshida [b0c5a2d9477c790961616babced91cb2a5b58bb4] Store properties for real. 2015-03-24 Kohei Yoshida [beb328f9e87c8237d0c5eefa6cb410ff2450094c] Push CSS rules to the document tree instance. They are not yet stored for real. 2015-03-24 Kohei Yoshida [9687529eac23fb7e07748ef1334a6e69349cb391] Set up skeleton CSS tree class and some associated CSS data types. 2015-03-23 Kohei Yoshida [eba40c57149edbfe34fe2a9c32c31deca5d7582e] Change the wording and punctuation a bit. 2015-03-23 Kohei Yoshida [1d60ff3f44d0611c737a860e62b1eafadcbd9a73] ORCUS_ASCII->MDDS_ASCII 2015-03-23 Markus Mohrhard [5c4ad45b64a576683d96a59b49e2465cd463aab8] add missing interface methods for iconset import 2015-03-23 Markus Mohrhard [e014e0bd8e2992d902459dbbc8e788b63d2b6116] add more databar import interface methods 2015-03-23 Markus Mohrhard [2716332a3cfb595cc85331238a080ce46052b4c5] add more interface methods for conditional formatting 2015-03-23 Markus Mohrhard [5762ce3b432bac9f10bd33f4764b708ab6c0f0a6] gcc complains despite handling all possible values in the switch 2015-03-23 Markus Mohrhard [7bbefd72f20be004210161802b0cb45b8d1e9795] make sure that colorScale entries don't appear in the unhandled list 2015-03-23 Markus Mohrhard [e340c8b3d2b62ba5e684dfbcc9cc5b645f508066] import icon name 2015-03-23 Markus Mohrhard [15b0969de46d830864a1ebfdc52ffa747510670d] handle cfvo and color for colorScale, iconSet and dataBar 2015-03-23 Markus Mohrhard [a62acfce324988ae1afb4b6f138c31b5d3e1f268] store colors also in container for later consumption 2015-03-23 Markus Mohrhard [5d5f14d79f75e469c13b67dac48040c16bc252f2] import icon set attributes 2015-03-23 Markus Mohrhard [1880d41b28b3ba70d97ff3bf8833418ff1af49c4] import databar attributes 2015-03-23 Markus Mohrhard [148748694f6224ea11443701524db73e976cffc1] store cfvo to map to colors imported later 2015-03-23 Markus Mohrhard [1e9cff839f566a345d8f1ee92fc9c7b5893b06d3] parse cfvo attributes in xlsx conditional format import 2015-03-23 Markus Mohrhard [d45f22b23ac4870d0c1a8be6097ed3cf810d5c02] import rank for xlsx conditional format import 2015-03-23 Markus Mohrhard [1d895599d7db34733111233e0622a5da374f997e] first part for stdDev import in xlsx conditional format import 2015-03-23 Markus Mohrhard [4f35344386c961078b462a7e68e91ac1ebe001b2] first part for dxf id import in xlsx conditional format import We still need to import dxf records and translate between dxf and xf ids. 2015-03-23 Markus Mohrhard [b61d4754900ab00181dccaf8cd833bc4e6fec253] import text for xlsx conditional format import 2015-03-23 Markus Mohrhard [7fd379ea8ae6eb6f0f60d3c2c91f9378f8c8677e] import range for xlsx conditional format import 2015-03-23 Markus Mohrhard [65d438ad9b635a2a31f06eecaecca325a7e8af9b] import date period for xlsx conditional format import 2015-03-23 Markus Mohrhard [f83603365aa81c2f008a164307b0e8ddb985e059] import operator for cellIs in xlsx conditional format import 2015-03-23 Markus Mohrhard [7cff80490caf102b3a9eb1da6ccf9c7681b44042] more work for conditional format import for xlsx 2015-03-23 Markus Mohrhard [d0c4ce628a78445cf067966df33aa786546b1217] add one more condition operator to the enum 2015-03-23 Markus Mohrhard [cc28a9a4bc17c461cb72ee1d6314c426723aa005] first step for implementing conditional formatting for xlsx 2015-03-23 Markus Mohrhard [77b55e7d230df0507e41811c9bc97215a6b1f9b6] extract useful function into own helper file 2015-03-23 Markus Mohrhard [c8a759f898e8f257c2f635f20959ca59e4f00e88] that should have been above_equal_average 2015-03-23 Markus Mohrhard [4f80dcbefbb5be2f83cd1f198dc03049a8b6ae29] prevent hiding virtual method from base class 2015-03-23 Markus Mohrhard [4637310868250ae447292dc49c309d743f3dc95c] import dxf records from xlsx 2015-03-23 Markus Mohrhard [00bb6782a3f635038ee0e824703fffd33cdf91d7] add interface methods for dxf import 2015-02-28 Kohei Yoshida [741bd9454474eba76c2be7928c382db53b26a973] Remove this file as it no longer exists. 2015-02-28 Kohei Yoshida [eddd91c119411f9be18a0837940674f470c3819f] Create orcus-css-dump utility for debugging & testing the css parser. 2015-02-24 Kohei Yoshida [cc8887655b49ab93b364c9e23c138e4b3cfdade0] These are in fact all bash scripts. 2015-02-24 Kohei Yoshida [efe3b05a8d55922e4373a8c144d76f80c724a006] Have css_parser use parser_global functions. Rather than rolling its own. 2015-02-24 Kohei Yoshida [da65dfbf6bd099b91c0149687edd0067db40bce6] Next version up will be 0.9.0. 2015-02-24 Kohei Yoshida [a0d4159e4f3cf7e232485d80e3721663ec9437e7] sorted_string_map.hpp is no longer in orcus. 2015-02-24 Kohei Yoshida [e47d724812596f4e84ab6f53f60b0bcde30e52be] Fix test_data. 2015-02-23 Kohei Yoshida [97185665fab60572779596361842ff0a5cc0f6e7] main dosn't belong here. 2015-02-09 David Tardon [9b8a788334eec08f15c10246a7a504bac51a7ede] add compile to .gitignore 2015-02-09 David Tardon [a1736425b79689b35bbc4aba450377afa25e1cfe] update boost.m4 The old one breaks on detecting boost version when used with gcc 5. 2015-02-07 Kohei Yoshida [f5f55b1a8f31bb621c924c50431aeb68ed248674] Update slickedit project files for the ixion update. 2015-02-07 Kohei Yoshida [0c9cb1b690fd89c2c63cd1343013cfe82b0fa048] Add more file extensions to ignore. 2015-02-07 Kohei Yoshida [72ddbe088709166d425326dc6392fedb352dfa48] orcus now requires libixion-0.10. And get it to build. 2015-01-30 David Tardon [0eb23341e9a921cac7e97894d31c885896ea4867] add missing include 2015-01-28 Kohei Yoshida [9809a9d0f5ccce3d52f056b8e9477db7cb2fe04c] Rename condition_date_type -> condition_date_t. 2015-01-28 Markus Mohrhard [0cebed695e2821105ad44dc46687a9a20af87803] implement conditional format import for gnumeric import 2015-01-28 Markus Mohrhard [7bd52259491f0e660b2da50f44c7b1938fd2f4cb] no need to store that in the region data 2015-01-28 Markus Mohrhard [68e3680e310205524c2ac0586413b0886864898c] first part for conditional formatting interface The interface is still incomplete but already contains the basic concepts with format, entry, condition split. 2015-01-27 Kohei Yoshida [fe3d6ae6e2da24d5a3aaafcca6ad9bb093e86f1b] Fixed link errors when building on Ubuntu 14.04. 2015-01-12 Kohei Yoshida [5c5d7f00ec1f64b79830f3a4ea813c0bd2e16763] Rename set_format_range -> set_format. Other interface methods whose names are set_*_range() all tend to take a string value that represents a cell range address. Because of this, the name set_format_range may give the impression that it too expects a range address string. Hence the rename. 2015-01-12 Markus Mohrhard [32e092ead98d76e7f5151ebb48ec605cd8887a92] gnumeric: foreground color is also the text color 2015-01-12 Markus Mohrhard [6df38c8ec49f74635cdf9be4f51c4489ef613505] add test for gnumeric color conversion 2015-01-12 Markus Mohrhard [c689f78806cf8e081420fef56fa60bc27777c505] fix color conversion for gnumeric 2015-01-12 Markus Mohrhard [921b3cd98b08bb586954cd631ae6d1cc8f6af898] use new interface method for gnumeric style import 2015-01-12 Markus Mohrhard [f6ced059faa4e5fdcfc454f841f63e349ed5eee6] add interface method to import cell format for several cells at once 2015-01-12 Markus Mohrhard [ea7bd5e3ad607455dead301115a03147a3d97576] actually import the cell format in gnumeric 2015-01-12 Kohei Yoshida [9ec5ff5aa5fe103b075104145136fa458741ce82] sorted_string_map is now in mdds. 2014-11-12 Kohei Yoshida [8fb916a4ccfcfa0f2b2087e756f03995888033e9] Split visibility macros for different shared objects. 2014-10-27 Dmitry Roshchin [34706da0bd20b9872d352e51c74fcaff2f49d3de] Fix build with boost 1.56 2014-09-25 Caolán McNamara [3ba9bbfe69ce0b66cc0f2689d94224b7e12d5b0d] coverity#54449 Uninitialized scalar field 2014-09-25 Caolán McNamara [6968ef1a13101375230b390589771953bee96b97] coverity#54451 Uninitialized scalar field 2014-09-25 Caolán McNamara [8e4727ca850912c5606d7b70321c3b9b986c2c08] coverity#54450 Uninitialized scalar field 2014-09-25 Caolán McNamara [9ef8ed8bdbe2c9756115c7d3e98c7180bb63fd0f] coverity#54448 Uninitialized scalar field 2014-09-09 Markus Mohrhard [35a7291d93507abe941769f32c23f8d3177eb298] coverity#54439 store pointer to local variable after it has been destructed 2014-09-09 Markus Mohrhard [e3b01b6d864b3634640caf2dfbf7d1a9150e05d0] coverity#54426 missing break in switch statement 2014-09-09 Markus Mohrhard [98342d1d0ff0c7584efa856af10823c688f174fc] coverity#54427 missing break in switch statement 2014-09-09 Markus Mohrhard [24c2fa2247f8a65920fd01ca6ef260ef1b0960d2] coverity#54428, missing break in switch statement 2014-09-09 Markus Mohrhard [bc494f3cc0538b662065183e039a0fbb9dcdf282] coverity#54429, missing break in switch statement 2014-09-06 Kohei Yoshida [aee4af3ca04e70004af156c79c9f8fe8a3a849e9] Increment row position for skipping header row, not decrement it. 2014-09-06 Kohei Yoshida [69b3e2b95b75435c14157389adbf7d97cdaa752e] Add test xlsx document that has table reference with column range. 2014-09-06 Kohei Yoshida [80476580493ec61e99d092200224bf657335807d] Handle column ranges in table reference as well. 2014-09-06 Kohei Yoshida [25bbbf2f8dea989335a9131194d9ecf50ffb1e3e] Implement ixion::table_handler interface to handle table references. 2014-08-29 Kohei Yoshida [01bb1eb0cdfbb46fde7650f663ca8c965874f542] Pick up subtotal attribute from dataField element. This defines the function for data field inside pivot table. 2014-08-21 Kohei Yoshida [ddc9c03fbc81dd4081e696c0273d224692bd3265] New test xlsx document containing 2 pivot caches. 2014-08-21 Kohei Yoshida [1ed93c2f2d921a928fb0551ee7b46787edcb10e6] Tweaking the output. 2014-08-21 Kohei Yoshida [9445348559914663f9cd54f9fb2c2f2972a448cf] Note about the undocumented value of -2 as pivot field index. 2014-08-20 Kohei Yoshida [bbbab33fb44fb0439f6d60ba43cef50ae52638a6] Direct string entry in pivot cache record. 2014-08-20 Kohei Yoshida [e379c11376b9ea41811bdb5c06b8e14b0133ba77] More tweaking of the dump output for pivot table data. 2014-08-20 Kohei Yoshida [193d83b9377bce118952cb8a16a473f5fece2638] Pick up pageField elements and their attributes. 2014-08-20 Kohei Yoshida [ae15790d8d91f8620e57514261b04f36705717f1] More on parsing pivotTable[n].xml parts. 2014-08-20 Kohei Yoshida [55fcbb36200191ccbeb65282a458c01ed4d41022] More attributes to pick up. 2014-08-20 Kohei Yoshida [b818917670905d6691cce33ed5f2e47fa55cf7ea] Another xlsx document with pivot table with many fields. Just to see what sort of pivotTable content it generates... 2014-08-20 Kohei Yoshida [e77aa61c36fe27e2edd080df7595a63ee947f15f] Some comments. Pivot table structure is really complex... And reading the spec adds more confusion. 2014-08-20 Kohei Yoshida [24719150cbf2deb31cc967020c28f3cdfd73b5d9] element has 'dataField' boolean attribute. 2014-08-20 Kohei Yoshida [d5402243bae27931d464c6cbc70bfea9643f139d] Parse pivotTable[n].xml parts fully. 2014-08-19 Kohei Yoshida [47784398fd1885de3fa131188ae089ed06578ccf] Parse the attributes of pivotTableDefinition in the pivot table part. 2014-08-19 Kohei Yoshida [b881b6fa33a2062c38bde0fdf2fc2a7975bf8e15] Class descriptions. 2014-08-19 Kohei Yoshida [efdba74623b7aebeff3daea0acc6a8d29a36fe28] Parse pivot cache record parts & dump content to stdout for now. 2014-08-19 Kohei Yoshida [237564a72b18ec21b425312ad44e89e1de086001] Comment unused method arguments. 2014-08-19 Kohei Yoshida [318b0db68ce7a91933e9411a9165e1e31e5078db] Add test xlsx document that has pivot tables in it. 2014-08-19 Kohei Yoshida [8a7451d4e725ed18d3a5e682491c482d5915ce8b] Parse the pivot cache definition parts for real. For now, I'll dump the data to stdout. Later I'll work on designing a public interface for this. 2014-08-19 Kohei Yoshida [c9c563c9d1fb61eede332e84473802eca099c234] Add skeleton code for pivot cache record parts. 2014-08-19 Kohei Yoshida [eafae1d3fc0386b85bc4cc17526de0d9d283f73b] No output when the debug flag is not set. 2014-08-19 Kohei Yoshida [132792f3f37bae96ad0eb99fbbbb8760f5cc2f87] Store handled part paths to avoid reading the same part twice. And follow the relations of pivot cache and pivot table parts. 2014-08-19 Kohei Yoshida [8d547b1a9eff589a22122e8da50da1d733b010ab] Add skeleton handler for pivot cache definition parts. One thing to note is that the same pivot cache definition part is referenced multiple times: once from the workbook.xml and twice or more times from the pivotTable#.xml parts. One way to handle this is to have the OPC code to keep track of which parts have already been read, and skip any attempts to read the same part twice. 2014-08-19 Kohei Yoshida [008ee5e014e01462bc81875a82a2a5bd26a7d822] Set up skeleton pivot table xml parts handler. 2014-08-19 Kohei Yoshida [0bc1de66495f586d110a2446c1c7d98448fbde13] Set up paths for pivot cache and table parts in the OPC handler. They are empty for now. 2014-08-19 Kohei Yoshida [e2a27ed0abb17d0c37ed72a0c4b346d437a1c612] Add new schema types for pivot cache and pivot table relations. 2014-08-19 Kohei Yoshida [1fee3b0a2e13bf43bc7ce27a08a62255361b4355] Add new files to slickedit projects & fix header guard. 2014-08-19 Kohei Yoshida [1422ce461c6d061f97ef702b7c858448b5657e39] Fix the control file to adjust for a bug fix in ixion. Ixion's name resolver would previously print all range references as relative i.e. without the $ signs. That was fixed and we need to change the control file to reflect it. 2014-08-18 Markus Mohrhard [24c014b962f3944e8804771e838436f933ed6671] allow standalone table import from xlsx This allows to use the table import for small parts of an import process without the need to bring in the whole orcus in one big step. 2014-08-18 Markus Mohrhard [4b0fe6827eb5a44cd559094c0520dc74a0665fe4] by default don't use Werror 2014-08-13 Kohei Yoshida [6816142a974da1fc5f6bef159bbd87542165fe3d] This is no longer needed. 2014-08-13 Kohei Yoshida [ae843d439e8396740e16c155f05066d00fb27bb5] Fix buffer overflow in sorted_string_map by specifying key length. This also (in theory) lifts the restriction that the key must be null-terminated. 2014-08-13 Kohei Yoshida [709e6e49d4e885ba99f18a2497f9cf3533362788] Avoid potential buffer overflow with 'input'. 2014-08-13 Markus Mohrhard [0bdeb971d905abf71020c198215361a92d75d2b3] fix invalid memory access in base64 functions Boost expects the input to be a multiple of 3 bytes for the encoding and a multiple of 4 bytes for the decoding. Otherwise it accesses past the end of the input array. Therefore we now pad with '\0' and replace the generated 'A' with '='. 2014-08-09 Kohei Yoshida [29ebb131b3caa6771dff4feed28dbaf27607749b] Hide these debug statements as well. 2014-08-09 Kohei Yoshida [c5d64acb3f43a79b65309ba9868bd34439f4f125] Import style info for table. 2014-08-09 Kohei Yoshida [3d6fb5180c696b526df9cf0d3b3c451f904f87a8] Turn off debug statement for table context when --debug is not given. 2014-08-08 Kohei Yoshida [0bbf9cab6580ba2961f658bd194f5cfdec5fec65] Make it a real swap. 2014-08-08 Kohei Yoshida [2476d9380ee82f4b46f2fc09447a0f3e10f2beb5] Extract common code blocks into a shared method. 2014-08-08 Kohei Yoshida [cffcfbc7a250da1b0dc9098ef1324da9cbb1aac9] Implement import_auto_filter interface for table, and enable the test. 2014-08-08 Kohei Yoshida [6026f2d00c347eb1db081ee6ccac83e299094dc5] Check the contents of table columns in the test code. 2014-08-07 Kohei Yoshida [24085ffc91811e78c632d3d4a3506dd11f7672f7] Start writing test for table import. Some parts still fail. 2014-08-06 Kohei Yoshida [ac194ea45f2f9b526e1737f63ba86235ba3e7251] Store table data to the document model for real. 2014-08-05 Kohei Yoshida [e710bae2b93a9e889ce6cfbb8caf8edb64ac9d58] Add note about spreadsheet's types.hpp header. 2014-08-05 Kohei Yoshida [e2a8af3aead3686392ec5011878fc91517f0ff9d] Calling get_auto_filter() should reset its internal state. The same with any other getter methods that return a feature interface. Let's make this a rule. With this rule, the filter code needs to call the getter at the beginning only once since calling it will initialize the state of its internal feature data. 2014-08-05 Kohei Yoshida [655d76767c1649742e19c0d4e00eec37cbbca1b5] Pass picked-up table data to the table interface. 2014-08-05 Kohei Yoshida [aa1efe7d4680c05051d682e85abbffd417be5657] Common method to push auto filter data to the model via interface. 2014-08-05 Kohei Yoshida [64249d1223a9f4d498962dfdb722ddc765e00158] Pass the table interface as reference, not as pointer. The pointer has already been checked for NULL-ness earlier in read_table() call. 2014-08-05 Kohei Yoshida [88044a0431db8f53e4bf4e0d970e4486608ead67] Parse tableStyleInfo element inside table. 2014-08-05 Kohei Yoshida [ffdff6d9736aab6ba945c4bd056abe11bb89e9e2] Parse tableColumn elements in the table part. 2014-08-04 Kohei Yoshida [6c1a6ca2b4dd54a1b550ce78aa03617f1b9f8c73] Work on picking up table data. Not done yet. 2014-08-04 Kohei Yoshida [98d3df7137faedac2089960caf302f1503303757] Initial data structure set for storing table data. I put them in the same place with the autofilter data, since the two are quite similar in nature and usage. 2014-08-04 Kohei Yoshida [1ec974b9d963d56a8272f3b958113326dbc4b974] Note about ixion dependency in public header files. 2014-08-04 Kohei Yoshida [f06695995995611f8a54837bf5df67a4df77ce90] Move table.hpp from public directory to private one. 2014-08-03 Kohei Yoshida [8282d8380046b950c72d8a27de0c4d6af806435c] Add class descriptions. 2014-08-03 Kohei Yoshida [5e3a5502773ae4e19133a9e4d745ee45dbee9327] Update slickedit project files. 2014-08-03 Kohei Yoshida [ddbdd4b93d84af212b3821a4c57592378e84cd6f] Move this from a public header directory. We don't need to expose the implementation of an interface. 2014-08-02 Kohei Yoshida [389bd496efa1b48db6c0a62a0b179270576792b3] Test the import of sheet auto filter data for real. 2014-08-02 Kohei Yoshida [54d5225d5aaf2da65a6d6cdbdbad65a71aa8f6c7] Implement auto filter sheet storage. This is for auto filter stored directly in the sheet only. 2014-07-19 Kohei Yoshida [29781fb04718e8d4ec958d0e950f054db7fbfa06] Pass the config and namespace context objects to child contexts. Let's not forget this. 2014-07-19 Kohei Yoshida [e0c5b0a4b30043e20668b1400357c6d6fcde59b3] Set up autofilter test code. No actual test yet. I need to first store autofilter content into the document first. 2014-07-19 Kohei Yoshida [69ce0e632473ae64d9344602328d1d6ed3a3e7eb] Another debug statement I overlooked. 2014-07-19 Kohei Yoshida [f97f067d637d78c19e8fd1928038d2a8c8759944] Add documentation of the config options. 2014-07-19 Kohei Yoshida [f59024b44f60c35049f1e8358cfe6e92a40a8d95] Add structure check config option to replace its compiler macro counterpart. 2014-07-19 Kohei Yoshida [7996e40b0dde1539836a2ab61997d7b4e0747de0] More on turning off debug output. 2014-07-19 Kohei Yoshida [06db6b3ab2b5b299d48b4798ae2b994795588abd] Move config out of iface namespace, since it's not really an interface. 2014-07-19 Kohei Yoshida [35d99e24cb32f5f8ea431bf5c75b9dff6a9529b2] xml_stream_parser now requires config object to be passed. 2014-07-19 Kohei Yoshida [1108e6b79087b3f26bb3de6082a2bb657ebb3c85] Stream name parameter is not used. Let's remove it. 2014-07-19 Kohei Yoshida [53c4eb6c2bb9bed568439a6f0a617d0d3363df10] Turn on/off debug output in orcus_xlsx. 2014-07-19 Kohei Yoshida [8184dc9b805168569b396bad83ba125e56d0e1dc] Use the debug flag to turn on/off debug output in opc_reader. 2014-07-19 Kohei Yoshida [df0aa43bfc4324011457cdb6d9e2d01516b0de44] Pass config option to opc_reader. 2014-07-19 Kohei Yoshida [1c816f6d852909bf359f1f92308b9a23d01a3146] Add a debug option to turn on / off run-time debug output. Not used yet. 2014-07-19 Kohei Yoshida [2375dab0f97241abdcbe19a16727ffad74ad2f44] Output directory should not be needed when specifying "none" format type. Because the format type of "none" does not create any output files. 2014-07-15 Kohei Yoshida [819a60658a9d53b455589968661fd07a3461610c] Cleanup. 2014-07-15 Kohei Yoshida [f9e0b84e2e9e071d1efd24675c4cd776bedc655d] Print namespace alias values for unhandled element warnings. Aliases look easier on the eye than full namespace URI's. 2014-07-15 Kohei Yoshida [8710cf96ebe9c2c9e3a5396769bc5bb7d6027667] Better output. 2014-07-15 Kohei Yoshida [28e441f3a84340b62154fb82df8dd57417e20d23] These elements can occur under 'oc' or 'nc'. 2014-07-15 Kohei Yoshida [6e04fedd93dc2511ed92cae3d00309410ad0846d] Use xlsx_cell_t for the sheet cells as well. 2014-07-15 Kohei Yoshida [ccea9843e01f4f508520543bb321d6867988a8d9] Pick up row column insert delete revisions. 2014-07-15 Kohei Yoshida [fa8db6bce5b8246b71f326c1125a1563922bf6a1] Parse cell change revisions. 2014-07-15 Kohei Yoshida [4c36d302761c8cb3c63e0337ac7c94ccf2838d4c] Get all revision types. 2014-07-15 Kohei Yoshida [321c893b9412e8c5a0a58c76233cc2e250f58592] Parse revision header XML part. 2014-07-14 Kohei Yoshida [37dd03d124fd78e7f75dcd152ed2d261570bde2c] Empty context handler for revision log parts. Likewise, it doesn't pick up anything yet. 2014-07-14 Kohei Yoshida [f95fc792cad8b25eb62ffc7b2a042b89199e502c] xlsx_revheaders_context.* -> xlsx_revision_context.* 2014-07-14 Kohei Yoshida [f866dc375fb1efb40224c6df1e88baf7240187be] Add skeleton handler for revision headers part. It doesn't pick up anything yet. 2014-07-14 Kohei Yoshida [1157c42d9c71715cfb7563dbc5e1d482a5f98022] Two more MCE-related schema values. 2014-07-14 Kohei Yoshida [932068afc78e8bd2db4b51d7a3c7d65ce4d3644f] Add missing schema types. 2014-07-14 Kohei Yoshida [5cef3bdf41831372dd36bc5f976f7eb7318b02cd] These elements can occur under customSheetView element. 2014-07-14 Kohei Yoshida [0f9ba39235cb2cc1c227c587858df6fc7c7ec278] Add new content type values needed to parse revision data. 2014-07-14 Kohei Yoshida [efa7aae7c60a517563203b20214fdc74b943a5df] New document to test importing of revision logs. 2014-07-06 Kohei Yoshida [bcc9a408855221572b15b922be076df8af34b5cf] Add skeleton implementation for table import interface. 2014-07-06 Kohei Yoshida [2780d754b38fe6236f2144864595cd5032240a61] Build fix. 2014-07-06 Kohei Yoshida [ed45c182010781cb4a7e87f0acf3db7832adcae4] Pass the sheet interface to read_table() to fetch table interface from it. 2014-07-06 Kohei Yoshida [d5465ef16d6dd78cbfb7a5b028b92c83a1f4cb22] There is a function object for this. 2014-07-06 Kohei Yoshida [6790a876fee0823e6e1eb22b48c2c52ada1bce9b] Throw an exception when appending a sheet instance fails. 2014-07-06 Kohei Yoshida [781ec3be0a049bfb8dce81f45782c011dd105b40] Populate the table interface to import basic table data. We may add more methods later as needed. 2014-07-05 Kohei Yoshida [bd3915390f7812e21adb92e1de8f4a0ee97b3216] import_table interface to import table data. Empty for now. Also fix some spell error. 2014-07-05 Kohei Yoshida [cc6be7eafbf13c7f7b0530ed3f9fd388e11106dd] Fix the description. 2014-07-05 Kohei Yoshida [5689b5e25d075f928f3e4a1df009b3db2ea25bb0] Pick up autofilter data from table stream. 2014-07-05 Kohei Yoshida [244299a428f2cab644208b52809504ad782d18ad] Fix build breakage. 2014-07-05 Kohei Yoshida [ee0ca2e2a8a44a626690ee09f29593b7d6f0b39b] Use xlsx_autofilter_context to parse autoFilter in the sheet stream. 2014-07-05 Kohei Yoshida [79444376514c29708be3022730e468d1dd044274] We need to get the ref range too. 2014-07-05 Kohei Yoshida [f962a1c0ff9f1bf9016e3aa38ddb4aeac5143f9d] Write separate context for autoFilter scope. 2014-07-05 Kohei Yoshida [b241f0ece5dd904809dc6ede9633f3eb62315783] Set up an empty context for handling 'table' parts. 2014-07-04 Kohei Yoshida [fd74fd462f341a5f27886b411581537eb8dab6e2] Make this non-copyable for now. 2014-07-04 Kohei Yoshida [de8cdc2c24b0ac9864ccfcb155f046c73496d285] Make these interface methods non-abstract. So that if the client doesn't want to implement them they can just do nothing. 2014-07-04 Kohei Yoshida [fc49b22d8f78e94e70658042fa697fc2b5849d7b] Fix memory leak. 2014-07-04 Kohei Yoshida [b787951bd6bef675bb23ad7997d6bc15a8a9f131] Do the same for the sheet handlers. 2014-07-04 Kohei Yoshida [e6c67585e6923c18c243f662086e78c4f0c61b8d] Now we can delete the workbook handler & context before moving on. Since all xml parts in an opc package are parsed recursively, it's better to explicitly do cleanup when we finish parsing each part. Otherwise none of these allocated objects would get cleared until the very end of the whole import process. 2014-07-04 Kohei Yoshida [deec0ffa38fdfdfc0235f552f2d13d880cb4c9b1] Have opc_rel_extras_t directly manage the life cycles of opc_rel_extra. 2014-07-03 Kohei Yoshida [7c7a76f6a51af87576aca7ee7c6de29213891955] Resolve path containing "..". 2014-07-03 Kohei Yoshida [d65ff070e68c3be8c199b77a067d1dd2653f7a6a] Add read_table() method and call it as necessary. For now, the zip stream retrieval fails because the path contains unresolved "..". 2014-07-03 Kohei Yoshida [5da8397af3b470840707b3e38d826f68c3a712a8] Add table schema type. 2014-06-19 Kohei Yoshida [c997d334c6929bac7cf49f354a25153c04041689] New test file that contains Excel's Table. A Table also contains an autofilter definition. 2014-06-16 Kohei Yoshida [289ab37c253e3f566c6103a0ed370b4c7930df79] Use to_long here. 2014-06-16 Kohei Yoshida [6561798cbd1daf2265022fd92af585d8f8a0ecb2] "used" sounds better than "selected". 2014-06-16 Kohei Yoshida [d8b63f105072f1ade379893da2d2c226596f3c8d] Make dump-check handling a separate function. 2014-06-16 Kohei Yoshida [8fd10365bf4fde250326a97ba2f5d45a5f82eb58] Add --dump-check option. Useful when adding new test files to test suite. 2014-06-15 Kohei Yoshida [85baece7d6470c4f3de448bb8bfdf024022f3ec4] Test formula import for ods. 2014-06-13 Kohei Yoshida [1bd7235eeeed48ca465a3b7bb8dd43c6f948ee7b] Write test for sorted_string_map. 2014-06-13 Kohei Yoshida [fc93b69f441cba2497758eeef4eed7b4b50eb710] Use sorted_string_map here. This makes ods import slightly faster. 2014-06-12 Kohei Yoshida [df1ef73333daf25a4b372969a28ca359dbc1ba67] Class description. 2014-06-12 Kohei Yoshida [4b3184df34e73097dcc085771959815565f4fe79] Add sorted_string_map template class for fast string to integer mapping. This is useful when we have a known set of string keys to map to a known set of integer values (or enums). It's 8 times faster than doing the mapping using boost::unordered_map. 2014-06-11 Kohei Yoshida [9b60ec29dc93bec185c69825a47fba906cdcbba4] Buffer formula cells and push them after sheet data has been imported. Else sheet name resolution would fail during formula parsing. 2014-06-11 Kohei Yoshida [be65ba793785ba6f0c8db4472da0c5500f53c7f5] Add skeleton ods session data. This will be used to later store formula cell data. 2014-06-11 Kohei Yoshida [04f9126883b2bfcf9e71aaf52a83621b62b49da1] Restore the original grammar once the import is done. 2014-06-11 Kohei Yoshida [e233c0e0f0e77c5c735ac2038ccd347a8495616a] This doesn't have to be created on the heap. 2014-06-08 Kohei Yoshida [2ab4cfaa52973eda117f331eedeef6463c96dbb1] Provide a name resolver instance when setting formulas to ixion model. 2014-06-08 Kohei Yoshida [184be55b6f79d530622a4cf5716c53f9cb25999d] Set default grammar to ods at the beginning of load. 2014-06-08 Kohei Yoshida [2e6350e50963d47f65ba24f3beb4d06794e1b5f3] Adjust for change in ixion. The document now stores formula name resolver instance which is responsible for handling different reference types. 2014-06-07 Kohei Yoshida [7f59acf19741ea64a29320f63cd20936d4294550] Move import_global_settings instance from document to factory. Only used by the import filters. Makes no sense to store it in the document. 2014-06-07 Kohei Yoshida [6857ed25928e21b3dd561f9dcea767c8e02a94d8] Allow app to set or get default formula grammar type. This will be used when e.g. parsing range strings. 2014-06-07 Kohei Yoshida [a1ab6f3ed616e35ef891174cbdfc0febd2228cb3] We don't need this now. 2014-06-07 Kohei Yoshida [9b0810be6fb3b61f2ea9d8bdb51c6a75fa821bd0] Do the same with export_factory. 2014-06-07 Kohei Yoshida [16c377dff6dc06e31cd25731309234050ef721c7] import_factory to take a reference to the document instance. 2014-06-07 Kohei Yoshida [28b70ceaaa30d34f2453e9aad7ec921428e1a048] No need to use boost::scoped_ptr for these. 2014-06-07 Kohei Yoshida [84873ab565dd1daeda34db03f68689b7ba3158b7] Fix memory leak. orcus_foo doesn't delete the factory instance. 2014-06-07 Kohei Yoshida [be47298e952877d0c8318e9ff7170e5d6b900e41] Use pimpl for import_factory. 2014-06-07 Kohei Yoshida [f8cb16b5aceaed2350ab37b5f6d5e225e2b4d2ec] Prefix formula_grammar_t values with formula_grammar_. Just to be consistent. 2014-06-07 Kohei Yoshida [cd8a3eb7af83f8e1e23866f32ec0e8c04920313e] Document set_origin_date(). 2014-06-07 Kohei Yoshida [d2aac2554319ad342de541375bf72adbef185fff] Don't forget to return a real global settings instance here. 2014-06-06 Kohei Yoshida [fe342b4f0798f43053bf6e2288c34686780e9cdd] Pass cached formula results & remove '=' from formula. set_formula() interface expects formula expression without a '=' prefix. 2014-06-06 Kohei Yoshida [dd15fdc468b3d1005279332ee8ada1063d7fc149] Pick up formula expressions from ods. Still work in progress. 2014-06-06 Kohei Yoshida [65dfa023b181b6ef5390496004d1cc773bb86b9a] Rename this file for consistency. 2014-05-06 David Tardon [868a8fe0b53c5d93d3993e6455da132fce1c1e95] add support for ppc64le 2014-04-21 Markus Mohrhard [79f06c21a9c94643e49b6cdd9ea6cbf246c858f6] improved filters import from gnumeric 2014-04-21 Markus Mohrhard [b01db7845019634ffa5540b39fdcceeb6b961d66] that forward declaration is not needed anymore 2014-04-21 Markus Mohrhard [ea12957781328aa6c0cd6919659b38b0072ca7a9] import the remaining alignment properties 2014-04-19 Markus Mohrhard [56d5dba2a359001ac0a994a1153dbe3fb69925fc] fix test failure in gnumeric test 2014-04-19 Markus Mohrhard [f8fc5e46aadc6a614d000a3527b25892f894a38a] initial work on gnumeric vertical and horizontal alignment import 2014-04-19 Markus Mohrhard [5ea98c810ea860a21b33a7bbe583fb7425e9fcad] add initial support for auto filter in gnumeric import 2014-01-22 David Tardon [0a73f3d6400c1878cb02f2b6e655bcced3e29c8e] add build support for aarch64 2013-12-14 Kohei Yoshida [40dd6d86cafb26cb964f9807177d2545087f7c61] Update the Visual Studio solution files & get it to build with MSVC. 2013-12-13 Kohei Yoshida [85310451bcf001a6485212faf83b6f6a082bec32] Make sure the stream instance is alive during the test. Else pstring may be accessing invalid memory location. 2013-12-13 Kohei Yoshida [e9481933deb09c2e085c2892f5564af26132be73] Typo. It needs to be _LIBS, not _LIB. 2013-12-13 Kohei Yoshida [0b07334884efec15b2b228f4919bceac646e1bce] Add missing header. 2013-12-13 Kohei Yoshida [4883a40a70be6e77d5fee25c96b841cf423ddb65] We need to include iostream header here. 2013-12-13 Kohei Yoshida [4c46a1b5304ddf63c297df0d714cdb5f1247cba3] Updated extra file list. 2013-12-13 Kohei Yoshida [8f970b70fab21719457211f65392045617416f50] We don't need this anymore. We use 'make dist' these days. 2013-11-14 Kohei Yoshida [8c7ebf5e36ceed6acb25f8effa237e104be7612c] Some work toward importing number formats from xlsx. Still WIP. 2013-11-06 Kohei Yoshida [1262e5404c4296847341c27405e60ee28568a599] Define auto filter interface, and use it to import auto filter data. 2013-11-05 Kohei Yoshida [1df6eed749f0f1a55234f88cc1b0b2ce801ede80] We don't use this any more. 2013-11-05 Kohei Yoshida [78810b225f65a2c2a605d17d6c04780a1cc70eae] Use different interface for importing data tables. 2013-11-02 Kohei Yoshida [59a76c4f1c074e74640097837ebb91ae3f36c0c8] Started parsing the autoFilter data. Not finished yet. 2013-11-02 Kohei Yoshida [603e901469f873e9e797056381081a3dba252e0a] A little cleanup. 2013-11-02 Kohei Yoshida [200d8e39d896fc4daa1a9786865f2a02654c9e41] Remove old debug outputs. 2013-11-02 Kohei Yoshida [768a8da0f6bef4bad01c4e34150438202d0e46cc] New xlsx test file for importing autofilters. 2013-11-02 Kohei Yoshida [c1c1d5f910eacf9ce82b4f0a2f7328b857b6eefc] Move set_data_table() interface to import_sheet. It makes more sense to keep it together with the rest of the formula import methods. 2013-11-01 Kohei Yoshida [88d6c9995af0dcdb2a5c0e8d4dc47b0f5e73992b] Fix the one-var data tables. The column and row input cell references were flipped. 2013-11-01 Kohei Yoshida [cbdbc73a84779e4583d9344863257d50b3fbd350] Add test xlsx file for importing single-variable data tables. Both column and row-oriented tables. 2013-10-31 Kohei Yoshida [289772ea1d80279dfbb769cdbe070d7c5a7d829c] Parse and import data tables from xlsx. Data table not yet stored in the spreadsheet model. 2013-10-31 Kohei Yoshida [24bb41e1c39c919722cdbfc2d7229524021080a7] Add xlsx test file for importing 2-variable data table. 2013-10-27 Kohei Yoshida [7a0614043a6f75137d676918eaf7ea9ccf7d4f89] Add output format type 'none' which disables writing output files. This is useful for benchmarking. 2013-10-27 Kohei Yoshida [19172fc0ceb4736a4491479acdcb94c504e6fdcc] Let's use 'middle' instead of 'center' for vertical alignment. Stick with CSS's wording when in doubt. 2013-10-27 Kohei Yoshida [52a480fe1ae345b58b7209a023a6bca083e0f403] Import 'top', 'center', 'bottom' vertical alignment from xlsx. And use it in html output. We still need to handle other vertical alignment types. 2013-10-27 Kohei Yoshida [aafa2f526f8eb0c6ca7848e5cd3231683dbddc33] Fix syntax error. 2013-10-25 Kohei Yoshida [32d69dc569919090082b1d8f6b19a0922e8113fd] Import horizontal text alignments from xlsx and use them in html output. 2013-10-24 Kohei Yoshida [709a6cd5a48203e7d9e2485d25cee6f26e5d6da7] Prevent potential memory leak. 2013-10-24 Kohei Yoshida [27f15785ce9de7f12a162224b9f2f82cee9c9317] Skip cells that are overlapped by merged cells in html output. 2013-10-22 Kohei Yoshida [9d76110aff86031985b52d4780d75b34c12cdb49] Get 'make check' buildable again. 2013-10-21 Kohei Yoshida [a52a5efa7454f773e0e905c47f27f8be97608382] Map merge cell info to html's colspan and rowspan. TODO : skip cells that are overlapped. 2013-10-21 Kohei Yoshida [8eb7476297c7ba8920af62f1946551ba37d97f2e] Import merged cell ranges from xlsx. 2013-10-21 Kohei Yoshida [22825152472d7db223119190e17ce78fd85d3dbc] Test file for importing standard colors from xlsx. 2013-10-21 Kohei Yoshida [2f280e04959817deb970be7ade7a4985d2b9b8ad] Output background colors in html output. 2013-10-21 Kohei Yoshida [666843bd4a37427dc0fb0f9ef8af9d8e4eae9d11] The color attribute can occur under 'mruColors' element. 2013-10-21 Kohei Yoshida [e97c7be5761f86dc87a285d6e76350e89c8e6de8] This actually breaks cells that don't have borders all around them. 2013-10-15 Kohei Yoshida [80ef5bec76d83fb213b2cb68d742f8121e076307] Handle shared formula cells correctly when dumping. 2013-10-15 Kohei Yoshida [2ad306bd18aed428479e6059b43eb47ec29d8240] Move this to a separate method. 2013-10-15 Kohei Yoshida [e189d68d9b8e5ba553f4c89b1a54f7cd0718cc46] Defer formula cell insertion after the parsing is done. So that formula cells get inserted after the shared string table is imported. Tokenization of formulas may add new shared string instances to the table, which may mess up the string ID's if that happens before the string table is imported. 2013-10-14 Kohei Yoshida [9b56e5c73d72dde1000557e7f8a2b8853c8879e0] Reallly append strings when importing shared string table from xlsx. Sometimes we encounter strings that are identical character-wise but different in terms of format runs. 2013-10-14 Kohei Yoshida [886b3b3608e4f38e17257789f6ffe4d77c2ee417] Allow session_context to store custom data. And have the xlsx import session make use of it. Right now its session data is empty, but I'll start filling it. 2013-10-13 Kohei Yoshida [ad17d1583b90be0580b68dee02f5f56852d9371f] Import font colors and use it in html output. 2013-10-13 Kohei Yoshida [50d7bdb2f5785f952677ebf6039ba455cb808ca8] Rename spreadsheet data structures to append _t. To be consistent with other data structures in orcus. 2013-10-13 Kohei Yoshida [0f647fe6be0769d693ddbe080a79de31a1ab2ff7] New test file to import colored texts from xlsx. 2013-10-13 Kohei Yoshida [128baf9d7ef185803db14939296f05adc422f078] Handle transient string values correctly. 2013-10-12 Kohei Yoshida [fe1db279986d3f1cb17900ee78d19c5c180aaf42] Switch back to 'collapse', and remove default gray borders. 2013-10-12 Kohei Yoshida [fe90f9fceda8a56ac595e7aa2ac909d31a2603eb] Remove debug statement. 2013-10-12 Kohei Yoshida [1410f0d431792e65edfbe21a8b46641d6f6646c6] More complete border mapping from xlsx to html. 2013-10-07 Kohei Yoshida [b39a34d58cf325467c8c09b7e7aac383c9aa6dfb] Import border colors and honor them in html output. 2013-10-07 Kohei Yoshida [20963a91012dcad8156c766f41da24e98aa2d9b8] Display some border types in html output. think, medium and thick border types only for now. 2013-10-07 Kohei Yoshida [e4ddea30cd73620e2ab5e38c89b6d6bd423989d4] Avoid strto* system calls. Because they are slow on Windows. 2013-10-07 Kohei Yoshida [29e0658da6cbef8c89efff8b48d1b3d3833a91d1] More test files for border imports. 2013-10-06 Kohei Yoshida [d72200cb18916f56ab77fba982bf8199eee49c58] Set custom row height to html output as well. 2013-10-06 Kohei Yoshida [d92f23d51e8b201147e8b68c42f95b7b11d9b059] Some cleanup. 2013-10-06 Kohei Yoshida [2245542560ddf3445c52813b61321d9a27c99e2a] Use CSS to define styles rather than hard-coded styles for each cell. 2013-10-05 Kohei Yoshida [205e2f66bfbe772dfb61d09018b5d9cf07988555] Apply column widths when dumping in html format. 2013-10-05 Kohei Yoshida [c0c6baae528343a44a87d59ec8c4e19e0eb65b4b] New test file for importing borders from xlsx. 2013-10-05 Kohei Yoshida [bc6f31223a5ef0d2597f791fcb5331a7e789217d] Change the license from MIT to MPL 2.0. 2013-09-24 Kohei Yoshida [69d83847ef596434f65763f8e38a7d957e49cf19] Forgot to add this new header. 2013-09-23 Kohei Yoshida [3e013204792d50c9fc103d69ae602688759628ef] Do the same for csv, xls-xml and gnumeric command line tools as well. 2013-09-23 Kohei Yoshida [a76bf86d57585b93963d6f309fbc41858dc10f36] Use the arg parser for orcus-xlsx. 2013-09-23 Kohei Yoshida [ac81b7bd9758110abb85392f056f63f0351a227a] Make the arg parser more generic, by removing the ODS-ness. 2013-09-23 Kohei Yoshida [de0f7dead0483d0e006960b462d0b86384e7b8f8] Move command line arg parsing to its own function. 2013-09-21 Kohei Yoshida [3be2f8288300c29a1824650c15ed32a71703c04f] Redirect flat dump output to files, one per sheet. 2013-09-21 Kohei Yoshida [ee2b9a629ac0a6a7f4535563ba78c1bfca933ea8] Check the output directory presence. 2013-09-21 Kohei Yoshida [44eab74ec432c9dc6f83d9be644c930d86ab41f9] boost::program_options required only --with-tools. 2013-09-21 Kohei Yoshida [6a3475ac65b66cf8e17b33eaf63eb95a0af00ae9] We don't need this file. 2013-09-21 Kohei Yoshida [3ed0ce110a57bb51b159f36a77e5a79abb1542c0] Check the input values, and honer output directory path. 2013-09-21 Kohei Yoshida [cfb1595eb0ceb430e12390b7e89804dcde5930c2] Use boost::program_options to handle inputs for orcus-ods. Options are not being handled yet. 2013-09-02 Kohei Yoshida [7f413eeabead88869e5967d83c95065e055d9f41] Class description. 2013-09-02 Kohei Yoshida [d891873eb1fce192865dae7d151e65b298462539] Add test for gnumeric file format detection. 2013-09-02 Kohei Yoshida [6db06cff35a9f27918e3021687b8b2761759ce23] Detect gnumeric file type. 2013-09-02 Kohei Yoshida [509ed74ca1fccffd7b4715bdf0892e9f8c1fae8e] Set up detection handler skeleton for orcus-gnumeric. 2013-09-02 Kohei Yoshida [1a6b368673767b4a3cc36604f5d772d01e595fed] We don't need this. 2013-09-02 Kohei Yoshida [23f41f806e38adca24e0c55d1215784b33bbb852] Remove unused header includes. 2013-09-02 Kohei Yoshida [b3c0e6a295ebd5cb5ed858f634906012a479c16c] Use common function to decompress gzipped stream for gnumeric files. 2013-09-02 Kohei Yoshida [3606f0bb396628a2b492ca042458e37999e0201e] Use boost::iostreams to decompress gzipped stream in memory. 2013-09-02 Kohei Yoshida [c5e3b74bc36e7f60c99824a9ac1ecc273997091b] Use boost.m4 to simplify boost library detection during configure. 2013-09-02 Kohei Yoshida [9e4db7758abef3bb49a76441af3f0aff403744ff] Note on using boost iostreams to do in-memory gzip decompression. 2013-09-02 Kohei Yoshida [915e1ff5f1156a03e57189c99c81dc05e57d84a7] Notes on how to implement in-memory gzip handling. 2013-09-01 Kohei Yoshida [01181e16807858baa21a511d68d81ad6536b768d] Detect Excel XML format for real. 2013-09-01 Kohei Yoshida [b554e16c154b6bf9e64ecc883e134cf5c2301b6f] Prevent infinite loop in case the magic number is not found. 2013-09-01 Kohei Yoshida [8d72817ab9c6a6fbe4f6fa276efb104d6478c669] Add skeleton code for xls xml detection. It still doesn't detect anything yet. 2013-08-09 Kohei Yoshida [4955af1fd41583200befc433c625b502ef397dc2] Add detect method to orcus_gnumeric, and use scope object for gzfile. The detection code will come later. Decompressing a gzip in memory needs a bit more work. 2013-08-09 Kohei Yoshida [a45d443dab9028ffea3d6379e1a5c573e270ec3d] Mistake in the comment. 2013-08-08 Kohei Yoshida [9892202225dd7a15b5eb0d36a454ddc7eb2db85e] Detect xlsx file type. 2013-08-08 Kohei Yoshida [b991c2e4a72135e5731318741e04aae3246597a7] Detect ods type for real. 2013-08-08 Kohei Yoshida [1223ba4947f59661e35b596752ea12a7c96241bd] Implement zip_archive_stream_blob. 2013-08-08 Kohei Yoshida [b75e5f9dd9d5e0b473c16eeb922c1f238ddc81de] Set up skeleton for orcus-detect. 2013-08-04 Kohei Yoshida [8ac64c5d38a48e245e7b14baead3fe1731d38a75] Set up testing for detecting ods format. Right now, it doesn't really detect anything. 2013-08-04 Kohei Yoshida [f5a065ca3cd7df3fbe85ac08ee718e1f1e638ebd] Add xlsx, xls-xml and gnumeric there as well. 2013-08-03 Kohei Yoshida [e723a36a778c6e090dc020c11f0d430bed067ed9] Start working on format detection code. It's just a skeleton for now. 2013-08-01 Kohei Yoshida [c50c13255e1c0f1dfbe6be92a053238fdee146a8] Don't forget to specify mdds flag & fix the build. 2013-07-28 Kohei Yoshida [3efe6aef22cdbb5501b21a2470d5be75e24c60cf] Add test for cell formats for ods import. Also, rename struct xf to cell_format. It is more intuitive that way. 2013-07-21 Kohei Yoshida [2afe66133d0427e50fdca035d21ad86d9ad4e584] Add test for text format import. Not done yet. 2013-07-21 Kohei Yoshida [0de6d50f8f3cf30b34c16cbfde8801054b21f77d] Fix HTML dumping code. 2013-07-21 Kohei Yoshida [6837b6219a55a1e49cfac65964aab76e4914684b] Set font for each formatted segment. 2013-07-21 Kohei Yoshida [8bfbc92a711c3ae2d3545cbc2cd2c83f7753d4d4] Update copyright years. 2013-07-21 Kohei Yoshida [f649b43c39176dceed328ac123e2be384a71f355] Append each segment separately rather all all at once at the end. 2013-07-20 Kohei Yoshida [a0a25089c1ac00f40c5338f69c904600dec72959] Handle stack inside scope. 2013-07-20 Kohei Yoshida [c5fe9fe300e6f8c2cc4a56aa46cd8d4963f7b485] Move single_attr_getter to a global location. 2013-07-20 Kohei Yoshida [8fd1c4c558f702fd75644f5ad971c15f7d633341] More on handling transient attribute values. 2013-07-20 Kohei Yoshida [30e1a28c3fb00a9b3862adde144d25d89e23ae56] Pass the transient state of an attribute value to the callback. 2013-07-20 Kohei Yoshida [6904388f8ec93a512f33b4d3dc9356d596c0e1a7] Intern values of transient text contents. 2013-07-20 Kohei Yoshida [71bb2007101a6c85d41a0ff001af51262c867da4] Print font ID for text style properties (for debugging). 2013-07-05 Kohei Yoshida [90c3fb3db6ad4ec3634b809ba154aa41a6fcd231] Make this a separate method. 2013-07-05 Kohei Yoshida [3c3b7ce815e3b7b0a650c8b9ceb2b96c6c2dd1a3] font-size is under fo namespace not style namespace. 2013-07-05 Kohei Yoshida [aebf3b67d4fc315ad4830330c8856b0ec5662d72] New test document for importing font styles. 2013-07-05 Kohei Yoshida [e47a5080dfedd2904207eb4c848df79b841df685] Set default styles first before importing real styles. 2013-07-05 Kohei Yoshida [77bccd3c1d2558f5f922aac27c8b799273bc6b77] Try to pick up font styles for cells during ods import. 2013-07-04 Kohei Yoshida [99326d20fa69696c76a52d5cc46afc35c9c89d99] Fix a bug in cell format import. 2013-07-04 Kohei Yoshida [c757be84b499e58e77f8c5a60ef00478b8778db4] This doesn't have to be a template. 2013-07-04 Kohei Yoshida [5e2893a4ea0ba4ad04ff36448955b01358cfc499] Let's not include headers that the project doesn't use. 2013-07-04 Kohei Yoshida [dcdfde13d18af39bfe4f957193a18dbda9864703] Switch from mdds::mixed_type_matrix to mdds::multi_type_matrix. The former type is deprecated. 2013-07-04 Kohei Yoshida [e03a645476b5a8f4b6ae92e85bf162ffae255d8f] Another test for parsing text delimiter inside quotes. 2013-07-04 Kohei Yoshida [3b72f291159f389dff8049a70604ac2321bbd109] I didn't really need this. 2013-07-04 Kohei Yoshida [97e487f11d5903ecb1075f492c6c7802d428970b] Add test for parsing literal double-quotes in csv. And fix one bug associated with it. 2013-07-04 Kohei Yoshida [1cfa6d22b68ee6218ebccef9e281d33e933dbb27] Convert normal-quotes test. 2013-07-04 Kohei Yoshida [ea6145d6a9d8a102c3d82f6c893acd974a2551af] Escape double quote characters when dumping check content. 2013-07-04 Kohei Yoshida [3bb2a3ead763c3f1ee180cd226dc775543b8d09e] Make the csv tests consistent with tests for the other format types. 2013-07-04 Kohei Yoshida [523a7586e7f7e601e66e7cd9aedd3532934e67d4] Add test for xls-xml on basic content import. 2013-06-30 Kohei Yoshida [405ef42742d1c5c17da511d44cd8be380c439e12] Pass to the handler whether or not a content string is transient. It's the same logic as with attribute values. 2013-06-30 Kohei Yoshida [0452816377fd3ae62cf0f780a9dac2dbd6a59d1c] Pass to the caller whether or not attribute value is transient. When the attribute value is transient, its value is stored in a temporary buffer and is not expected to survive beyond the scope of the callback. 2013-06-30 Kohei Yoshida [9b7a697020c76f655fa27c191a3651fadb1de787] Import cell data from Excel XML. 2013-06-30 Kohei Yoshida [768a3c628f67d522053e5bbfe3df31dabaab9d2c] Add test for parsing multiple attributes with encoded characters. 2013-06-30 Kohei Yoshida [ea7d058d8e21c80b60bd9c29b007fd05e44447c3] Allow sax parser to have more than one cell buffer. This is to ensure that when multiple attributes of the same element have encoded values the newer value won't overwrite the older one in the temporary buffer. This is needed for sax_token_parser as it stores all attributes in std::vector before sending them to the handler. 2013-06-30 Kohei Yoshida [712bed871814abdecff8942f052dd13789d2efb1] Pick up sheet names. 2013-06-30 Kohei Yoshida [e66f5b2253d7c3b8b4915a83962962e29e72da65] Parse it down to cell data. 2013-06-30 Kohei Yoshida [7211ca4baa14346898fd265798f0ad4308bbb790] Add predefined namespaces for xls xml. 2013-06-30 Kohei Yoshida [b3285b80e90f622ea6f66da362272256b5120f76] Set up context stacks for xls xml. 2013-06-29 Kohei Yoshida [189852c9835103657e62777695c736b12fe6ec8a] Add csv::parser_base to move non-templatized code for size reduction. 2013-06-29 Kohei Yoshida [e4dd386196bbd20a717987d9204ae5bb21cef1fe] Add csv base to move code that doesn't have to be inline. 2013-06-29 Kohei Yoshida [655d838d08d27306bb58ca9bc86361d2af5160c5] Move these generic functions to parser global. 2013-06-29 Kohei Yoshida [c0c1259d65fddd63f6325888f70d37a36aec9236] Rename sax_parser_global to sax_parser_base. 2013-06-29 Kohei Yoshida [f0f43cbb4fa12779f06ff1bb1bc8a45267fd7b18] Move this to base. 2013-06-29 Kohei Yoshida [8c361e0059957a42716d671fab1cfabd5d78afbe] Move this to base too. 2013-06-29 Kohei Yoshida [d614bbcafe0f4b7b954d4192fda6c200930cab22] Simply this a bit. 2013-06-29 Kohei Yoshida [522744de1e53942543c60290b65a46d3b658bc4b] We can move this to global too. 2013-06-29 Kohei Yoshida [76fca2d4893918faf75d2002bbc726442a6a95f6] Move sax_parser_element to global. 2013-06-29 Kohei Yoshida [fad3ecf5666390312b011bb1e7089f3b36d41d99] Move parts of sax_parser out of its template part. To keep the size of template instances smaller. 2013-06-28 Kohei Yoshida [27c83579e2b96e6c4a3c3c86147facf4c3fffcaa] Move this to sax_parser_global. 2013-06-28 Kohei Yoshida [3bb6f01846f7513834fc38539891dd3c63276104] Add a test case to catch this. 2013-06-28 Kohei Yoshida [6f06d7b09e5be271159b788fecc1325f26f07d10] Remove these incorrect assertions. For instance, ';' is a valid content that can trigger these assertions. 2013-06-16 Kohei Yoshida [59614b60552b3d9334e5f37109467d9f5309ba32] A bit more on xls-xml, but not much. 2013-06-16 Kohei Yoshida [0f7bde6b047f3d843a9ade8806cf62d9f3a49f39] Bootstrap for orcus-xls-xml. 2013-06-16 Kohei Yoshida [5569c0512222beddda831dadf24be76fa4b698c3] Generate token files for Excel XML format. 2013-06-16 Kohei Yoshida [105cbf9072e955e28ac466a186042a94e463f256] Add namespace parsing mode. It's still rough around the edges, but it's good enough for now. 2013-06-16 Kohei Yoshida [d1dd367fdc2f590e5277decc5ff4fc005d3135a6] Re-organize the python token generator scripts. 2013-06-16 Kohei Yoshida [1139259951736c525b7141ea6ad93235220f3139] General-purpose XML Schema key dumper. 2013-06-16 Kohei Yoshida [f23ccdea36406e54aec2c715c175c19082328eed] Move these token generator python scripts from bin to misc. They are rarely used anyway. They don't deserve to be in the bin directory. 2013-06-15 Kohei Yoshida [9a0c1a5e1f8183d547a070db4fbb52e0c1a29689] Change content of this XML file. 2013-06-15 Kohei Yoshida [45d7d23335d57ceb8a9df215c3c22ffc516f8d8d] Rename xls2003 to xls-xml. This format is not specific to Excel 2003. 2013-06-15 Kohei Yoshida [0392d6db4a60807112f3e767353b7d4952b03ec2] Remove obsolete forward declarations. 2013-06-11 Kohei Yoshida [11b98ee394192cd92bd28dfb7ad17305a42d6b4d] Add a method to simplify check for a sequence of characters. 2013-06-11 Kohei Yoshida [277ab911eeaa2bd92bb5a1241dcbd4f9fe00d04e] Prevent possible buffer overflow. 2013-06-11 Kohei Yoshida [8d40f2d7a384cc68530dfdf26f3391be8236c0bb] Make sax_parser more secure against buffer overflow. 2013-06-10 Kohei Yoshida [d6c385c9307b42dbfa867b3e4475d412c829cbdc] Make it easier to add new dtd tests. 2013-06-10 Kohei Yoshida [66fc6181f460b0154ba324b1b123e032ee2f1457] Add test for parsing . 2013-06-10 Kohei Yoshida [fcf1fb5af875eba637ea219b8e7b22069dace79a] We don't need this. 2013-06-10 Kohei Yoshida [9a1edd96b8009fa85326f11e611caf566404df7c] Parse in sax_parser. 2013-06-09 Kohei Yoshida [60706724653013dc882e75188f1230fb8d856ede] Test case for parsing CDATA. 2013-06-09 Kohei Yoshida [f3388144fcb939de394d7a25e9ffb7ee4a46bd80] On 2nd thought, let's not keep the characters and cdata separate. They should both be handled as character data, with the same callback method. Simpler the better. 2013-06-09 Kohei Yoshida [ec4d03cad4f96b9181366bbbd877391b8443861d] Add parse only test for sax_parser. No content check for this file. 2013-06-09 Kohei Yoshida [a77ff705890f7b93374f31efd727348024c0e434] Treat cdata and characters identically for tests, skip tabs as blanks. Maybe it's okay to route cdata as characters in all cases. But they are separate calls for now. 2013-06-09 Kohei Yoshida [714645bcaa12155868ea33c55e917ca8e80d60f6] Add support for CDATA in sax_parser. 2013-06-09 Kohei Yoshida [3e2701ece5d4cc4ac6d58688b7585061ece1c456] Tab character is also a blank character. 2013-06-09 Kohei Yoshida [c39d49c65ccbcee4a860ffd3a65f0e1acdac9bf1] Add a bit more debug outputs for sax_parser. 2013-06-09 Kohei Yoshida [895cfed521e4d604c905477dd0faba33122e95e2] Test RSS file taken from my own website: http://kohei.us/feed/. 2013-06-09 Kohei Yoshida [c5b017fce8624806e766fe98c19fc8c0c58fe6a5] I forgot to remove this. 2013-06-09 Kohei Yoshida [8f46f9231da41a7cd4a6d677c96131e3e0753f27] Share the xml parsing part. 2013-06-09 Kohei Yoshida [bb6fbda483d2981dd353f0561b82245c17aac81a] Add unit test for parsing the xml declarations. 2013-06-09 Kohei Yoshida [d3c04c3333d4fd58e0c4ad8ba66f6e408c8a245e] Have dom_tree store multiple declaration attributes with names as keys. 2013-06-08 Kohei Yoshida [6ba3916ca4366f5943de9e63794bcad3f13dfe62] Add test for parsing custom declarations. The test file is a simple Excel 2003 XML document. 2013-06-08 Kohei Yoshida [f2d3c7c91f4742caf0930c09806336691df87a2e] Make sax_parser configurable. The first item toggles whether the parser requires every xml stream begins with or not. 2013-06-08 Kohei Yoshida [69f7412f6bce5e017175a7a8bf4efa69b923d99b] No more declaration() handler callback. The declaration is also handled by the start_ and end_declaration() callback pair. 2013-06-08 Kohei Yoshida [a91346a442b8ddacb790a356e4b3a3cfa0ecdc68] Declaration may have multiple attributes. 2013-06-08 Kohei Yoshida [09b90f1952f7d01bece00eec26b3db0f0fc15828] Add mechanism to parse arbitrary xml declarations. With this, we can correctly parse tags. 2013-06-08 Kohei Yoshida [1fbaf3fa79aaeafd3e8cff10e0e45f72bf1f1db8] This method is unused. 2013-06-08 Kohei Yoshida [ea4dff2dd746ce0011d2083a5c9065741a6545cf] Put these global sax functions inside sax namespace. 2013-06-08 Kohei Yoshida [54af9b740719630d2ab2a50b58df5d3441b04246] These functions don't have to be part of the template. 2013-06-08 Kohei Yoshida [73aeac52b8402f1f5e08e78b782f753a39b63dc8] First Excel 2003 XML file to play with. Currently, parsing this file throws an exception, but we need to at least be able to parse this format without throwing exceptions. 2013-06-08 Kohei Yoshida [7da44ea1e56ca89fe1709ae3827a67dc504e9b7b] Let's not silently exit when exception is thrown. That's not very helpful. 2013-06-08 Markus Mohrhard [ba43e43600660681c072941d9af350f7fe3c636b] use an exception to signal invalid xml files, fdo#63844 2013-06-08 Markus Mohrhard [49da4b0c745b22318589048a59c5a3133b35fc9a] column width is an optional attribute 2013-06-08 Markus Mohrhard [f1e523e7ab33fcc265905d8b934e1f32dfdc5fd3] add test for xlsx hidden row/column import 2013-06-08 Markus Mohrhard [7b2857db802bb11c4f23b23d480bee2773c0962a] add hidden col/row import from XLSX 2013-06-08 Markus Mohrhard [774eca5e029944d929f0df2f581f0c85af2bacc7] add support for hidden col/row import from gnumeric 2013-06-08 Markus Mohrhard [83dd743f136b979694a05723be9097d5e9fd9903] add mock implementation for import_sheet_properties 2013-06-08 Markus Mohrhard [e2907363d91149cb71bc4f58ea0c55d4b16c2d61] add test case for gnumeric col width/row height import 2013-06-01 Kohei Yoshida [1661335a85bead5ff79a54d281bc35956a015c89] Export these structs. 2013-06-01 Kohei Yoshida [ac6a9ac26aa09f01b769cb65c490e2c85773efee] Move these structs out of import_styles scope. 2013-06-01 Kohei Yoshida [d4038cd9b530a52433452fdf13ef6b9544d63e11] Export this struct. 2013-06-01 Kohei Yoshida [3771ee2c93da4d3098361b118d0aab5254b44cf1] Make cell format storage column major. 2013-06-01 Kohei Yoshida [2f953961f24e1654ffbde575e50e18817b5d7c8c] Make format_run struct a top level item. 2013-06-01 Kohei Yoshida [2a62185bac0de30dca3e993e5b0f8df25db8749a] New xlsx document for importing formatted text content. Bold and italic text only for now. 2013-06-01 Kohei Yoshida [ee22a06d46afe3433252359299a3c19395fcac63] Add unit test for column width and row height import from ods. 2013-05-30 Markus Mohrhard [c81da4317b297ccc4acb27d30d77f1b17b167d19] r is an optional attribute in row and c 2013-05-30 Markus Mohrhard [0ea76ebc78080dfb4f462f9ee2cdec3b9fbe82a4] import col and row height/width from gnumeric 2013-05-30 Kohei Yoshida [960156ec673a7a2e91ca103dd3cad6fa88fe63e3] Add test case for XML byte order mark (BOM). 2013-05-29 Markus Mohrhard [71d4efba781af4ddb8c5e4e2589ebdac22ff87df] skip byte order mark for xml streams We only handle UTF-8 streams right now so we can bail out already when we read a wrong byte order mark. 2013-05-29 Fridrich Štrba [2ba8c2407be26a7a6c6f0b681567311d5bf15c74] Some cleanup of pkg-config file 2013-05-23 Fridrich Štrba [833caa16d7c5662217f9789f901952f20bf1dca8] Fix distcheck errors and allow tests run from build directory 2013-05-19 Kohei Yoshida [0930ef22a9f17db09d3f2cbb6a0b6f5b0cdd770f] Add swap() to document. 2013-05-19 Kohei Yoshida [e02676394e2cca319ac3c9df4425a6f0e9943a4e] Add sheet_size() to document to return the number of sheets. 2013-05-19 Kohei Yoshida [51c3616cb2cef20674c6f4a96d76a1fba15f0929] Sheet now returns its actual row and column sizes via these methods. 2013-05-19 Kohei Yoshida [debe48461edbde7f8484e45381792dc12a5d536b] Have the factory implementation store the default column and row sizes. 2013-05-19 Kohei Yoshida [c3058828ff212618e43275586f74f1ea54826cd9] Let the caller specify the default row and column sizes for sheets. 2013-05-17 Kohei Yoshida [bf0b31d923ed50c15831b26146d73e3f5987102e] Import row heights from xlsx documents. 2013-05-16 Kohei Yoshida [fad8ea5c291bfd9f8ca549947ece034098b7864c] Import Excel's column widths. But the conversion may not be correct. Find a better way to convert them. 2013-05-14 Kohei Yoshida [5da5b5558c6a786dd4f3d60f8466c12bd16a0c95] Parse column widths in xlsx. 2013-05-14 Kohei Yoshida [17cd3795042d4de1dc6ebe8c65fceda11aa804da] Calculate formula cells during finalize() phase. 2013-05-13 Kohei Yoshida [3a5b274e5c25a6f9af68e9f729a801a35403e156] Remove these debug statements. 2013-05-09 David Tardon [db809c970400142d477f969ced247ce77d91435e] catch exception in main 2013-05-09 David Tardon [05066b918d31c3e8b4811fe1c42a6c75615225cf] drop unused variable 2013-05-09 David Tardon [c71a7358d8d5760ca560c0d45d700f1f42dc4561] coverity: do not return contents of a local object 2013-05-09 David Tardon [786a6a5ff22b9f94bb755936a4be9c8a12276b19] coverity: uninitialized members 2013-05-09 David Tardon [c644d8793bc5309a798667d4fc07e657c6e2c2ca] coverity: missing break 2013-05-09 David Tardon [dd8c40155672905f651ce83fb050e7aa58ff080b] coverity: add missing throw 2013-05-08 Kohei Yoshida [12a347acf8f340d49c28b91a8c68be0f604730ae] Support convertion from cm to twips. 2013-05-05 Kohei Yoshida [1dcc9c1e47c4bcd13a067ab8c01cc028a79c15b3] Allow fetching sheet object by index. 2013-05-05 Kohei Yoshida [6750976a35b10ff88d0616cbeacb873afaf4c12a] Two new constants for default column width and row height. 2013-05-05 Kohei Yoshida [9aa213e81b45990f493bdd0c51377735ed9334d7] Adopt to API change in mdds 0.8.0. 2013-05-05 Kohei Yoshida [df6432ba9a27cd7ac7de6a225a2747a21eb5041b] Require mdds 0.8.0 (yet to be released, the lateast on the master branch). 2013-05-05 Kohei Yoshida [eaaa0ffba5183f80fb9b021a9b8f7f0be49b92c5] Add getters for column widths and row heights. 2013-05-05 Kohei Yoshida [2647d1ad9126249b09d239f14164158767dc95e6] Return the real column and row sizes. 2013-05-05 Kohei Yoshida [14aa0909edab7505cdc3fdf1179ee9a562847054] Build tree for column width and row height containers at the end. 2013-05-04 Kohei Yoshida [e69f33a4abd360c459550785c09f560b7ed63c8d] Convert row heights and column widths to twips on import. 2013-05-02 Kohei Yoshida [59f75039672165d205475ff14b896e2359e166f7] Add methods to set column widths and row heights. Not used yet. 2013-05-02 Kohei Yoshida [40c5f632a9d67053e943370a3c4323d29e29a2d4] Some comments. 2013-05-02 Markus Mohrhard [669598c2378873cdd76bba501b00dfcd428af3e0] activate the missing two tests 2013-05-02 Markus Mohrhard [c8ac4f888455fdfe2fe06c8300af0da5f4388b24] this should be an equality check 2013-05-02 Fridrich Štrba [11f559cb7de6ab84cbb33ec1cbf3075ca2a8581b] Sanitize a bit. 2013-05-01 Kohei Yoshida [59a72df2cd50c9da62441925f407a0b88999361f] In ptr_map::insert(), the 1st arg must be non-const reference. when the 2nd argument is a raw pointer. There is also a variant that takes a const ref as the 1st arg and a auto_ptr wrapped pointer as the 2nd arg. 2013-05-01 Kohei Yoshida [3ffce11e638ef2a3f1cbcb1faa0fb4b1329e0b9b] Remove warning. 2013-05-01 Kohei Yoshida [61625786a4cb510330903ee751603365e11043bc] comment 2013-05-01 Kohei Yoshida [b9db29da1ab2d8448618b97e07baa161c37b3b09] Pass row heights to sheet properties as well. 2013-05-01 Kohei Yoshida [d8ce5e4fe3b57ff687b4fb0b76b91c36bd30c6dd] Pass column widths to the sheet properties interface. 2013-05-01 Kohei Yoshida [aa5ae47e1aef51cdf8c379729a0ab8ed86082a5f] A littl cleanup. 2013-05-01 Kohei Yoshida [cf1440d4ea48744167af133ea722b97b86c5dfa4] Implement sheet_properties to import & store column widths and row heights. For now it's just an empty implementation. 2013-05-01 Kohei Yoshida [6920d14eb8fc3bb81732025af15ffce9f2a408bb] New import interface to import column widths and row heights. 2013-05-01 Kohei Yoshida [06ed5c944cfb8883563d44c29812d5af7f48daed] A bit better printout of style data. 2013-05-01 Kohei Yoshida [577728cfa443bd93a4868d690ee0b2115ab2cd78] Initialize data with NULL pointer. 2013-05-01 Kohei Yoshida [17d0402e80d69fad9df4e49723c06ad396a7eeea] Print styles picked up at the end of the automatic-styles context. 2013-04-30 Kohei Yoshida [c919260e29f2d77e94a6f4eff108666792e30286] Insert some asserts (just to be sure...) 2013-04-30 Kohei Yoshida [6d43aa139123caadbe617edee4e0cdd59ec09ca1] Pick up column widths and row heights as I parse automatics-styles. 2013-04-30 Kohei Yoshida [94b7f645f21f6ff7fd03613e461b3492bacd4c37] Add odf_style struct. Still pretty much empty & not even used. 2013-04-30 Kohei Yoshida [423adb86d57683b1cf9ac0410d8a420c0a339734] Test document for import of column widths and row height values. 2013-04-29 Kohei Yoshida [80bf4ea23cd5dd9beae2c7ff81a65c062b3d6de5] Simple stream handler needs to have its own element handlers. To prevent the only context from being popped from the stack. 2013-04-29 Kohei Yoshida [e87a267c556f299a7d714143a051181968cc3cf7] Fix for werror. 2013-04-28 Kohei Yoshida [05f3048c9ffeb560b33da560de882444da47e409] Make ixion's model_context accessor public. 2013-04-28 Kohei Yoshida [9e39d0ed1311bc1c47a8aa0bc05256b0fce38324] Require libixion-0.8. 2013-04-28 Kohei Yoshida [15d8931f07cef9ec7420fa00bb2b2dad14aa89a3] Fix this whitespace error. 2013-04-27 Kohei Yoshida [36bfc73bb7a3df1c84f6b84c08ac0006163c00ca] Add method clear() to document. 2013-04-27 Kohei Yoshida [f165610acb8f21d660425d89848e591052943a7d] Typo. 2013-04-27 Kohei Yoshida [d5df9acef4257a6ceedc35d65b477c93d1bf34d4] Move the spreadsheet headers to public place. 2013-04-26 Kohei Yoshida [e7830fe7c57fbc8eb31c113cdcc2f3c94103fc56] Use mdds's pkg-config file to detect it. Much simpler this way. 2013-04-24 Tomas Chvatal [6d6aeb7d11057b5df774f1425bb49837f13c80c2] Better to use AC_CONFIG_HEADERS here. 2013-04-24 Tomas Chvatal [fb81582e3a0366620306efba93741437c049d67c] liborcus-parser needs to link to boost. 2013-04-21 Kohei Yoshida [025430a1cf765c9f66e0c352a2d0c0c0fbd9cf22] Convert column widths and row heights in ods styles parsing. 2013-04-21 Kohei Yoshida [e350451ddfcb0da0e1a2256f9170cee12bd96ada] Add to_double function to convert string to double. In the future we'll be using this in lieu of stdtod, which is very slow on Windows. 2013-04-21 Kohei Yoshida [0d423f1dedc33969fe6fccff501ce72540be6a07] Test for 'cm' parsing & fix the decimals handling in the test code. 2013-04-21 Kohei Yoshida [969ad1c22c7aaad124b0bcab7acd729abf2c7901] Test for parsing 'in' for inches. 2013-04-21 Kohei Yoshida [7cc9bbc8881c0335c87c427f8d089a7236bc667a] Manually convert numeric string into a double. 2013-04-20 Kohei Yoshida [a34c43e9820743d9201de22ceebf096e03bdd04c] Just use boost::unordered_map for this, to keep it simple. 2013-04-17 Kohei Yoshida [273694f4d9a567b9c86a57781021b7701cc0bf08] Function to convert style family textural value into an enum. But I should probably turn this into a more generalized function. 2013-04-16 Kohei Yoshida [fa31d5502a0b731fa2998c71d66d4e6c3b7a17eb] More on parsing automatic styles context. 2013-04-16 Kohei Yoshida [edc4de335634933c7f4bf6b253d8acce178ec0a8] ORCUS_ header guard prefix. 2013-04-16 Kohei Yoshida [ca726bad0f052c87da27d58a4061119f2e1c5913] Minor formatting oddity. Auto-generated from SlickEdit. Apparently the compiler parses it fine... 2013-04-16 Kohei Yoshida [ceab79d45e5e671f640ef72ade50de82e83811bf] Skeleton implementation for handling automatic styles in ods. 2013-04-16 Kohei Yoshida [6618de4dd6792972eddd2db1de3bd13cf0645854] New test file with custom column widths and row heights applied. 2013-04-16 Kohei Yoshida [021854d0abdc80d70f33cc902e57d7515574f5fc] Make it a concrete data member. 2013-04-16 Kohei Yoshida [aff7bfc51499355d50760626a38ea36be02350ce] Re-use the same para_text_context instance, for better efficiency. 2013-04-16 Kohei Yoshida [43453d70e923e6fcf415f201bf97ae04d8d4f6df] Move the context stack handling part up to xml_stream_handler. It was just a bunch of copy-n-pasted block code blocks. 2013-04-16 Kohei Yoshida [126348551dff4e1e0a54ce71947b9840fe9a8b52] Fix memory leak in orcus-gnumeric. 2013-04-16 Kohei Yoshida [5bea4103aace7ba24bfbec9a5c5d00858ec3743d] Have immediate parent context manage the life cycle of its own child contexts. The top level context handler now only deletes the root xml context instance. Each individual context class is now responsible for managing the life cycles of its own child contexts that it returns. With this, a context can re-use the same instance repeatedly as a child context instead of creating each child context on the heap. 2013-04-16 Kohei Yoshida [6c495a08fba6d28027ea18c5d4b59b1c08433078] Fix memory leak. 2013-04-16 Kohei Yoshida [2bfc90e09d8734de6bc8fce4935646454f106241] Disable this. 2013-04-16 Kohei Yoshida [c25a006ed2f7f226f515d66150c44f3eca1a63f8] Get liborcus-spreadsheet-model to build when --enable-static. 2013-04-16 Kohei Yoshida [8d59bf1321aa7ccca6cdb8cad95265657192aae7] Add --without-tools configure to skip building of binary tools. 2013-04-16 Kohei Yoshida [20cf0da0e4dce431c4705e043c9a11a046117048] Keep it consistent in configure.ac & test files updated. 2013-04-16 Kohei Yoshida [d09d7b61b28dcd18495ec8e7cc9a8c2dc3030baf] Add documentation on how xlsx and ods handle column widths and row heights. 2013-04-14 Kohei Yoshida [84175ac8aa8e52577dfaf0bd9ed6e1f7b7ddb3b1] Up the version to 0.7.0 and the API version to 0.8. pstring's exported symbols have changed due to the removal of static intern methods. 2013-04-14 Kohei Yoshida [0647853c30ac3c54201a0d0fb4e0cfcef1954945] No more global pstring intern pool, to make orcus filters re-entrant. Now, each orcus_* class stores string_pool instance, and the document has its own string pool. 2013-04-14 Kohei Yoshida [6c6e4a9b95e7464ed8dafb97b98efbad2f112821] Add session_context which stores data shared in each import session. 2013-04-14 Kohei Yoshida [b38bfa1c511da7d98c1a79dfbe41d86dc1e714e8] We don't need to do this. 2013-04-12 Kohei Yoshida [363241399191418d057c036cfcc1b11cb2cde677] Up the version to 0.5.1 since I need to release a newer version. 2013-04-12 Kohei Yoshida [0b4a9fa900200fc42d5bbc0355e4df4804e34a2e] Add BOOST_ALL_NO_LIB compiler macro. 2013-04-12 Kohei Yoshida [05d61a55bd33249e5c5a09c16bf02220f0e0821d] Don't forget to list this windows only header file. 2013-04-11 Kohei Yoshida [7ee792804ab45f448058973cb7b03fcc4629d4c9] Let's not include these manual test files. They'd make the package too big. 2013-04-11 Kohei Yoshida [926026ce350d161b52f782a25dfd7d4c37ae41a0] make dist was still broken. Hopefully fixed it this time. 2013-04-11 Kohei Yoshida [b986729f576ad01b4663c0a47deffcbc0a401e95] Rename package name from orcus to liborcus. 2013-04-11 Kohei Yoshida [077d8bbc7581b9d23687280471e902ea78e6492b] Up the version number, with a new API version. 2013-04-11 Kohei Yoshida [e4738f083542eb237c3c514643b3648b605bff2b] Fix 'make dist'. 2013-04-11 Kohei Yoshida [22f2be74a9fb389c884743c3c3d36d0f251d8ec0] Update Visual Studio solution. 2013-04-10 Kohei Yoshida [fc648b4b8688c5cb53f4eaef272a0d5d79af2e02] I forgot to add these files. 2013-04-10 Kohei Yoshida [f025ef4f386954d71cdacfbb2db7ddd9ee41bc4a] Pick up and set the "origin date" aka epoch during ods import. For now, we don't use this information. But later we will. 2013-04-10 Kohei Yoshida [dba063dbe21ad3a6e3190bec1d405f7bb986c7c5] I'll convert date values into string values for now. 2013-04-10 Kohei Yoshida [5a8de96af52e7bdf802ddc9607e639288332f474] Found and fixed a bug in to_date_time. Added another test. 2013-04-10 Kohei Yoshida [4e29297c9801a2a169afe7c332f69f1b6dad508a] Run the test for real, which fails miserably... 2013-04-10 Kohei Yoshida [a92bc4ba1b501d3dbb27a9b9d32a08b853fdff8b] Add framework for common test in liborcus. I'll use this to test the date-time conversion function. 2013-04-10 Kohei Yoshida [9662b62f10f7fc698c4175230c07df6b944e83a4] License header. 2013-04-09 Kohei Yoshida [f01f585941fd680529a3694a12d99cb3cbe13375] Add set_date to the sheet import interface. ODS needs this. ODS treats date values separately whereas xlsx imports them as numeric values. 2013-04-09 Kohei Yoshida [a42a3e4d0f8bb9e5015494618f05302b787911d0] Add finalize() to the import_factory and call it at the end of import. This is to give the implementor a chance to do post-processing at the end of each import session. 2013-04-09 Kohei Yoshida [cfc9950c61d36c3975046fdc5d637171ee2d2754] Check whether the client code supports style import. And if not, abort reading of styles. 2013-03-25 Kohei Yoshida [f736b278e566df92a4ea05ac993fd47913e02716] These forward declarations are no longer needed. 2013-03-24 Kohei Yoshida [25a99aa68364a1c47843fea746cd95a0eeba399e] Open file stream in binary mode, else zip archive fails on Windows. Windows file stream calls apparently differentiates binary mode and non-binary mode. On Linux the two don't cause little noticeable differences. 2013-03-24 Kohei Yoshida [7e700b93afadb5e3fe8c2a334d6c17e9df3b2319] Fix project dependency for orcus-xml. 2013-03-24 Kohei Yoshida [e05d04d8d4a7ffe9c9e1400d4a3860601517b0b2] Add liborcus-static project to Visual Studio Solution. liborcus-static depends on liborcus-parser-static. 2013-03-24 Kohei Yoshida [6119e0ef1409f89c48ba8da513b687d56b495083] Get liborcus to build in Visual Studio 2008. On Windows, liborcus also includes the libparser part, instead of keeping liborcus and liborcus-parser as two separate libraries. This is the only way to build this on Windows, else we would have to define a new set of DLL macros for each separate library. 2013-03-24 Kohei Yoshida [c103556d448c53b26f8f25cacd44027e91ce1c56] Some re-organization... 2013-03-24 Kohei Yoshida [58d3b85cc896fa71fa4e5f5887803c2ef2f5ff44] Hide global constant values. 2013-03-24 Kohei Yoshida [8076f58963f8c9b9f77242ed03264b4be757c7da] Remove the libzip dependency bits from vs project files. 2013-03-24 Kohei Yoshida [94174040b8061ce59c97054d385c39e4b4a9f8df] Update the copyright years. 2013-03-24 Kohei Yoshida [c9d67f836c36dbdff1b4cccbe474ea9894f08fc2] Don't take a reference from for_each. Because, by the time for_each call ends, the object that is referenced has been destroyed, and the reference is pointing to a non-existing object. 2013-03-24 Kohei Yoshida [2c42c37fc82a15444e0b6c3b2b1f1fe005910779] Add new test for xlsx. To make sure we parse empty shared string xml stream correctly. 2013-03-24 Kohei Yoshida [83225d62da38b05949752f54f70dad75758c13a2] Don't call characters() unless we are in xml hierarchy. For instance, when we are still in the xml declaration (before the opening root element), we shouldn't call characters. 2013-03-23 Kohei Yoshida [2ff31d015ce5c59177d37d1af1cfadb0ef2776ca] Add new test xlsx file that currently crashes orcus-xlsx. It has a sharedStrings.xml stream but the list is empty. 2013-03-23 Kohei Yoshida [145a129670d70dac59165eb47da8849e8986f8b5] Remove the libzip bits. Now orcus no longer depends on libzip. 2013-03-23 Kohei Yoshida [ade634f3e4ca7864a50bc5d23dae3e1d4962f2c2] Switch orcus::opc_reader from libzip to using zip_archive. 2013-03-21 Markus Mohrhard [63b5a2182f07b0b80426a0fbfe360eb955b2f14e] fix some linking errors on windows 2013-03-21 Markus Mohrhard [63f4dbbbb42f2ac08ca8bbec83857973a96f68f6] license header 2013-03-21 Markus Mohrhard [f559085b2483be8400ea8a9951174c52dd360239] liborcus project compiles again with visual studio still some linker problems 2013-03-21 Markus Mohrhard [8530fae41358c5a7c45b7e6d9d8f7dd97e9c5b74] use environment variables also for libzip 2013-03-21 Markus Mohrhard [7cb6e4210f80fd0d82869d8abc4d73f729d42157] get the parser projects working again 2013-03-21 Markus Mohrhard [a3694c0941c7137241e8e160ed7839d64c8f1534] visual studio before 2010 does not support stdint.h abstract the handling of stdint.h on windows to differentiate between versions supporting C99 and ones that don't 2013-03-21 Markus Mohrhard [8b86ed0d148752eaadd6eaeae3f7cdff22236221] MSVC does not know fseeko and ftello map these functions to the corresponding windows functions on windows 2013-03-21 Markus Mohrhard [7dc83bfc43aa8a939a978b57651cb3cd442c0e25] fix liborcus-parser* on windows 2013-03-17 Kohei Yoshida [9e34b91627f1d17bd2d48f7a679ab79a5638d49f] A bit more cleaning. 2013-03-17 Kohei Yoshida [afc6d1b1ef0b07640419b9fb12e52ba35e4d4493] orcus-ods to use our own zip_archive instead of libzip. 2013-03-17 Kohei Yoshida [5954e3044cb4ab7f4e6e3d63122f7b6f2c9c7e45] Rename class stream to zip_stream_parser. 2013-03-17 Kohei Yoshida [a0855792f3b791afa5af7d9ebfddcec32b8aa972] Add method documentation. 2013-03-17 Kohei Yoshida [74a685b8fbaf37ccc77cf418882f0dad692da828] Support dumping by file entry name. 2013-03-17 Kohei Yoshida [70dcea9a487fc3797f96cf614f1357cf7407a3da] Turn off debug mode for zip_archive. 2013-03-17 Kohei Yoshida [508bf3b1d7fd95cec23a4d084d8bc89e019afe28] A little more cleanup. 2013-03-17 Kohei Yoshida [f2b8f29c374831fe424cb9243b4eedd076e77ed1] Clean up read_file_entries wrt debug statements. 2013-03-17 Kohei Yoshida [828e690ca90436796c588f33c253a56733cb23ae] Clean up zip_archive_impl::read_central_dir_end(). 2013-03-16 Kohei Yoshida [330704d2ea6ece23300012e6efde12d089697595] Remove duplicate code. 2013-03-16 Kohei Yoshida [edffd5d5857f94db02973bbaa2bbce096646179e] Read zip file entry content by the entry name. 2013-03-10 Kohei Yoshida [6dfc13c8e99d7789d09e6ea88ba49652f1dac3f1] Method description. 2013-03-10 Kohei Yoshida [38d7f74c942264691975eca20c6c4a79fba74e2b] Reading the file entries should be part of load(). 2013-03-09 Kohei Yoshida [f12328d1e173a5d9d2f3a34ec1cfb97281987840] Use the abstracted stream access to unzip a stream. 2013-03-09 Kohei Yoshida [1dcb817141b31bc76e5c59210dde08f8aab66e20] First step toward abstracting the stream access. This change includes file stream on disk via file descriptor. 2013-03-09 Kohei Yoshida [5d37a9c3479906564ed81d139a2488f93a3748ba] Add this file to the slickedit project. 2013-03-09 Kohei Yoshida [1d246ade3fde211ceebbafe51b64f82d04f8d612] Do the z_stream initialization in zip_inflater. Looks cleaner that way. 2013-03-09 Kohei Yoshida [897a7ff5c6c3dc9470c460c6c998b30b48d6a968] Implement lightweight zip archive support directly in orcus. This will eventually replace the use of libzip within orcus, and to remove dependency on libzip. With this change, zlib is now a hard requirement. Previously, zlib was required only when the gnumeric filter was enabled. 2013-02-16 Stephan Bergmann [f60d6eecee72349993a392a9a63ddf3383d3b8c8] Missing include (at least when compiling against Boost 1.53.0) 2013-02-16 Stephan Bergmann [b09150fd4374d9f1198c3c843260729cebbd9be5] Missing dependency on boost_system lib (for boost::system::generic_category(), boost::system::system_category(), at least when building against boost-devel-1.50.0-4.fc18.x86_64) 2013-01-28 Markus Mohrhard [beabb3349ee5dd3ea1019fbb207da3e1976e8c65] move the xlsx test too 2013-01-28 Markus Mohrhard [74764e3889cc43e9b601a63d01bbbc455bc9a5f4] fix some problems around gnumeric style import 2013-01-28 Markus Mohrhard [08747f360db6805ac5ea5f760847995594a6c6a9] add number format import from gnumeric 2013-01-28 Markus Mohrhard [51f87949aaea342205c3cb576a4475b41de1e346] support number format import 2013-01-28 Markus Mohrhard [23c91ec14f0c424d2852bba24e65cf9563a2ef8e] add boolean cell import from XLSX 2013-01-28 Markus Mohrhard [1c80404ce2d515603b7142c274ce74b34f5c623d] add bool cell import from gnumeric 2013-01-28 Markus Mohrhard [38921e6f2efa25d9535095ae293931c324976d6f] add boolean cell import 2013-01-28 Markus Mohrhard [99b7f4e1a9e7d1bc12da4a69cdcd710534b10c3b] make these names more orcus-like 2013-01-28 Markus Mohrhard [b456713d31c697fe5044088b99aa4bdcab775032] add test for xlsx array formula import 2013-01-28 Markus Mohrhard [9ebc22a10eaddb8215575afc29a9075d42699058] add intial test for xlsx_sheet_context 2013-01-28 Markus Mohrhard [266f66c2b57ee88a5ff4d2caa330b0a83944095d] import array formulas from OOXML 2013-01-28 Markus Mohrhard [f18e0ed1c77dea3df71eec40fba31ebdcb3c6c4d] import array formulas from gnumeric 2013-01-28 Markus Mohrhard [67646f6cb57f3f6d32b9c5f0ff218875aa569172] initial support for array formula import However we still need to decide how we want to handle the cells in the range of the array formula. ODF and OOXML write only the top left cell into the document as a formula cell, all other cells are written as normal value cells. We have two ways to handle this: * Leave this problem to the implementer of the interface * Store internally all array ranges and decide there whether a value cell is a real value cell or the value represents a formula result. The second approach breaks a bit the concept of orcus because we no longer can easily import the content without knowing what has been imported already. The first one however means that we move some of the import problems to the implementer and the mentioned concepts are only found in ODF and OOXML. 2013-01-28 Markus Mohrhard [3dc5cd2bb2019704bbd6dee2d833438b7fc4d4e0] add tests for gnumeric shared formula import 2013-01-23 Kohei Yoshida [cb66fab7e473a37e011c002f29f72d07ef681c3e] Add the new files to slickedit, and remove the mock classes from iface. The iface namespace is reserved for the pure interface classes that need to be exported to the external code. Let's keep these mock interface implementations outside this namespace. 2013-01-23 Kohei Yoshida [34d2ac9af76600d01cebb11613881922fe4ac68b] Move the test files into liborcus directory. To keep the test file alongside the source file it tests, and its name being the source file name + _test. 2013-01-23 Markus Mohrhard [1771dfdb034769a4ba938f954f4473a7e9440892] proof of concept for tests 2013-01-02 Kohei Yoshida [f53ff7a4e0ff0ac613e2f4c1cdc1b773a7f8c807] Fix header guard. 2012-12-26 Kohei Yoshida [17fe108ba9787465a9f99f0c570cd0f67dd296fa] Appropriate copyright holder lines. 2012-12-26 Markus Mohrhard [2bb52a736d3d9269abc605ba56794af2c013e43e] set_auto is not a good idea if you know the content type Edited by Kohei: some formatting consistency. 2012-12-26 Markus Mohrhard [57c58c90b976dbcffa78e9ebca0e505db6ac9428] remove unused include 2012-12-21 Kohei Yoshida [7deffe5a4d1940f15a61a01737d9669b3c29754a] Sniff the rest of the encryption info data. 2012-12-21 Kohei Yoshida [0c213ca7402dcc8377911c945d7347f477278959] These handlers will not be used for this. 2012-12-21 Kohei Yoshida [96109d7aca098e44c6dc4a3ddb313e9d854c580d] Sniff key data from encryption info stream. 2012-12-21 Kohei Yoshida [a307626a62283f5a61eb91274c7c5bbd8d700211] liborcus-mso should only against liborcus-parser. 2012-12-21 Kohei Yoshida [4eacef9e61fb93d258098f2f5a3c8df0a5b27164] More on bootstrapping orcus-mso-encryption. Moved pstring, string_pool and xml_namespace all to liborcus-parser. 2012-12-21 Kohei Yoshida [7990025b32ecbd7b57122d45a88b8284844a910a] Bootstrap orcus-mso-encryption executable. In this change, moved load_file_content() from liborcus' global.hpp to parser's stream.hpp, since I need to call it from liborcus-mso which doesn't depend on liborcus proper. 2012-12-21 Kohei Yoshida [41dfaae47e31048ec66c0b2eecab3732245515b2] Wrong header was included. I need string, not ostream. 2012-12-21 Kohei Yoshida [a57ea6cd30f526f37a1e899ab91dcd6311f24d73] Formatting consistency. 2012-12-21 Kohei Yoshida [0549ce47877661050b5897b92fbdbf50aaed7b0b] Add base64 encoder and decoder functions. 2012-12-20 Kohei Yoshida [011cacf1c03a36abe67895ec9c8032ce1d9920a3] Skeleton for parsing MS Office's xml-based encryption info header. This will create another library liborcus-mso, which will provide self-contained various msoffice utilities. 2012-12-19 Kohei Yoshida [6b8a56001950edd8f56eddaa73cc8252aeaf4653] Destructors shouldn't throw. Let's use assert() here. 2012-12-18 Kohei Yoshida [3dfc99c59c07d105cc1030d5f3c25f915573c775] Test parsing encoded character immediately followed by ';'. 2012-12-18 Kohei Yoshida [6b5f7e821534980baf1955874148873b102f49e4] Make it easier to run callgrind. 2012-12-18 Kohei Yoshida [27682800170224433ac03ca10e5060454ef1c7b9] A ';' after an encoded character can happen and is still valid. Example: "B"; -> "B"; 2012-12-18 Kohei Yoshida [822b2c8f133f0c1205f0274fea6ca8e55102d738] Use FNV-1 string hash algorithm. It's supposed to be efficient. 2012-12-18 Kohei Yoshida [2c9cee0f1cf7f318b3e67eccadb1d0b0eb56233d] Slightly more efficient string interning. This improves the performance just a tiny bit. Not as much as I'd hoped but it's still an improvement. 2012-12-18 Kohei Yoshida [7042909bc5b6cac95a67e70890ba6087f87ed806] Debug statement. 2012-12-18 Kohei Yoshida [6f9d53a960cd20c0d8410fbc2f5d749ad62652b4] Fix invalid memory access. xmlns_context instance relies on the xml stream being alive for the duration of its life time. We need to hold the stream in memory to avoid invalid memory access. 2012-12-18 Kohei Yoshida [7a01ec377033a8b6e4bc2083fa8343ac0b42b852] Wrapper to execute orcus-test-xml-mapped test alone. 2012-12-17 Kohei Yoshida [ea8282b051aabd8cc9a66b54730bc0bc91b89cdd] Removed all traces of xmlns_token_t. We won't be needing this anymore. From now on we'll be using xmlns_id_t in its place. 2012-12-17 Kohei Yoshida [e9ee867ac9c0d50b6e310e9667941cdad96bec7c] Let's be consistent in naming a file. 2012-12-17 Kohei Yoshida [84a25bf121c6288bb6fd8338d4afc919ad2118ac] Fix header guard. 2012-12-17 Kohei Yoshida [7c7f309740b81de869a2205f90505a50f24ba5f5] Follow-up changes to get the test to pass again. 2012-12-17 Kohei Yoshida [1bbff9670fe9bdfdaf85e514344d33c73f4aad47] Big change on replacing all uses of xmlns_token_t with xmlns_id_t. It compiles but the test fails. 2012-12-17 Kohei Yoshida [8b8f091548c738ae2bec02b0bd57cf97a7405bbe] Add predefined namespace values for orcus_ods, _xlsx and _gnumeric. 2012-12-17 Kohei Yoshida [53d5139563c2e0811c6ca37954823a4ccf8a4ed6] Add gnumeric namespace set. The list may not be exhaustive. Add new ones as needed. 2012-12-17 Kohei Yoshida [02b6ba3a36c54e40035888b20eaf7a1b0d8a80db] Add test for ODF predefined namespaces. 2012-12-17 Kohei Yoshida [1c1baf1be1629111b8165eefef1869e530f13504] Wrong namespacing braces. 2012-12-17 Kohei Yoshida [b1f87ebf8befcd0bd4ed1454f52451df503eff2b] Add ODF namespace values. Values are auto-generated by script. 2012-12-17 Kohei Yoshida [e681c51bdacbe3833e5cb360e53f69a4edc8eeac] Update token generator script to auto-generate ODF namespace values. 2012-12-17 Kohei Yoshida [a43d7878c2b3dab098c5663d16ddc82dd18ba3dd] Use the official v1.2 Relax NG schema file. 2012-12-17 Kohei Yoshida [b1bbc28c45d54f62c54ec529a88b07e4ad7f9852] Let's make sure we get the right namespace value.... 2012-12-17 Kohei Yoshida [2eafa5ca988da15370edf71631748c209c9bde69] A little more test. 2012-12-17 Kohei Yoshida [217f9839fe608eb62376273ad88bf6796ae09be9] Support adding predefined namespace values to the repository. 2012-12-17 Kohei Yoshida [d47de10f478c4f9f360d9d063d6d92a78ec20b2b] Started working on passing predefined namespace values to the repository. Not done yet. 2012-12-17 Kohei Yoshida [99ea480ee7d634294b12a7407cf891c97f9894c2] Pass the xml namespace context to the sax token parser. 2012-12-17 Kohei Yoshida [45604205d1cc8e9bda33a3a1e1b8fdab92d07a5b] xml_stream_parser to take xmlns_repository to create ns context. 2012-12-17 Kohei Yoshida [561bd91a243839d5b878fddf77ae410e582f07ad] Test XML content for Agile-style EncryptionInfo stream. This format is typically used in encrypted Excel 2010 documents. 2012-12-16 David Tardon [1b7e06c0f08f42f49c5d817a53cfd7946d1cd584] coverity: uninitialized member(s) 2012-12-16 David Tardon [d92bc459f218d873947c1747f386d1465114e126] coverity: uninitialized member(s) 2012-12-16 David Tardon [0055fa5e4f1debe8d1ddf1ea0ebc791519b7b0ef] coverity: uninitialized member(s) 2012-12-16 David Tardon [831b598b039aa0c8c58333d705bf94feace1427b] coverity: uninitialized member 2012-12-16 David Tardon [5fa50940d9d135593e73f63e09ed8329d99eacee] coverity: catch all exceptions 2012-12-16 David Tardon [c5f77a570eaadb48c4bf0f69d2a4d9b25538b73c] coverity: catch all exceptions 2012-12-14 Kohei Yoshida [b38d2ba78a817518b8602158c95872b9de18fc6a] Test code for ods import. 2012-12-14 Kohei Yoshida [69fae02dd5f441b834b837056b3c0d791be864b4] orcus-ods: import numeric values as numeric values, not as strings. 2012-12-13 Kohei Yoshida [560e99824b2ab8a0525dc3a3b75205de0ff0a6cb] Reworking ods filter's cell attribute handling. Still work in progress. 2012-12-13 Kohei Yoshida [83a0777df7f0fabce473f1995896244f0eed8b28] New raw value test document for ods import. This is basically the same content as xlsx counterpart. 2012-12-13 Kohei Yoshida [345ac364695e9a8f01bb9f669038f70359061291] Finish up the test code for xlsx import. 2012-12-11 Kohei Yoshida [4e9eb9f113ec4c23e02033e853cd560c0a11b3d7] Working on setting up a test for xlsx import. I'm not done yet. 2012-12-11 Kohei Yoshida [9c8078f370a4c915a44c1c311df17ed7e8a3fcc9] Extra blank line we don't need. 2012-12-11 Kohei Yoshida [cb98b54d94693eb72654a5502251e2969e87cf10] Did some debugging in class sheet due to incorrect string cell import. Turns out that the problem was on the ixion side. The string ID of 0 was reserved for an empty string, which obviously doesn't work with xlsx import. 2012-12-11 Kohei Yoshida [fda0ae31807e53da320d1e925da044a69ab78652] New test file for xlsx import. Unfortunately orcus imports this incorrectly. 2012-12-11 Kohei Yoshida [c161a31edd460a28b8e18fff6a481b702b0a88e9] make dist to package tar.bz2 as well. 2012-12-11 Kohei Yoshida [d8847708c7969bf3b50218bc58e76d4e997af22a] liborcus-parser to build .dll, and liborcus-parser-static to build .lib. 2012-12-11 Kohei Yoshida [c55d51c2b6e48bdfbaa944ca72d42cb78e7dec1a] Fix the liborcus-static-nozip project as well (for MSVS). 2012-12-11 Kohei Yoshida [f9b8ae77061b30613dd8e44b7707035a819f1d02] Updated liborcus project in MSVS solution. We have yet to fix the -nozip project for the new file organization. 2012-12-11 Kohei Yoshida [5218c1b875eaf1fc627a6bda665dbba47e76a0b7] Add parser lib directory to get the wrapper scripts to run. 2012-12-11 Kohei Yoshida [c7da7a6c422116fd3ed812821fa9e64bca152730] Finally, move all the ooxml headers into liborcus. 2012-12-11 Kohei Yoshida [361855da7bf26b1cfe21d4d6951346ee643581bd] Move odf related headers into liborcus, to avoid public eyes. 2012-12-10 Kohei Yoshida [61b115698cfecf42a13dcc77c0d4d93ea4cfa563] Move gnumeric stream handler files into liborcus. 2012-12-10 Kohei Yoshida [98b36c060d0748dc3d66152622a2fe7cb1d5f368] Hide and rename xml_context.* too. 2012-12-10 Kohei Yoshida [380a3da76c6750210b87ce7cc7ec57431fde83f2] Rename files to fit their respective class names. 2012-12-10 Kohei Yoshida [a2a907bc5d773d371eeed67591b92169a556ac2e] Moved several non-exported headers into liborcus internal. For better encapsulation. 2012-12-10 Kohei Yoshida [5de884eb02c36a0a989ebdedaafeebca52b43cad] Add opc namespace values too. 2012-12-10 Kohei Yoshida [6a386b08cf3d860d55b4ac530276796111c0def1] Add stock ooxml namespace types. 2012-12-10 Kohei Yoshida [118be886d64966fde4e026e9ea2f3149cd1ceee5] Stock content types should be const. 2012-12-09 Markus Mohrhard [b9d29ee2b8847dd3b53baf1f1560eee408dca757] adapt librorcus-parser build on win to latest changes 2012-12-08 Kohei Yoshida [e3019f42ef925b9da842cc6eb17b5b819a9afd2c] Link to liborcus-parser in pkgconfig. 2012-12-08 Kohei Yoshida [d0707a6f03cd75421df57db131376966adacb55b] Explain that '\0' is returned on failure. 2012-12-08 Kohei Yoshida [de01f469198caf2e900a67b4a5ad5e000b89dfec] Move XML encoded character decoding code to liborcus-parser. 2012-12-08 Markus Mohrhard [5c4838bf2bd420b44d62d82a7dbd7ea76c34b7c4] adapt windows build to liborcus-parser lib 2012-12-08 Markus Mohrhard [6118da82748240c59b4b666db3bc0e5c563831ce] fix orcus-gnumeric build on windows 2012-12-08 Markus Mohrhard [3229ae71a644ff833a3c1439e0bed44cb5dac46a] warning C4099: mix of struct and class 2012-12-08 Kohei Yoshida [c6b8fefe80353cf7e3343fe58af9de59d4fc483b] liborcus-parser shouldn't link against libixion. That was just a simple copy-n-paste mistake. 2012-12-06 Kohei Yoshida [26c112898484716d5f840c5dc1fce66a0cec1e44] Another library instance for low-level parser code. From now on, using the low-level parser templates do require linking to liborcus-parser library. This is done to reduce the size of binaries. 2012-11-28 Markus Mohrhard [03338097294cb6e667060fa87bfe176f1db90f8c] xlsx: import cell protection attributes 2012-11-27 Kohei Yoshida [792c8f4c6dc8c81c12ea1fc7ecf67447c32dee89] Remove execution bits from these files too. 2012-11-27 Kohei Yoshida [19a7218b63b154fc74c0326560dd446fcda3078a] Remove the execution bit. 2012-11-27 Markus Mohrhard [551da550bd5b9854184708ceefa141f278c4465a] add the new source files to vsproj files 2012-11-27 Markus Mohrhard [367f560220018bbed627f1d8276a19f961bfe496] gnumeric: we need to commit and set style entries 2012-11-27 Markus Mohrhard [69a82188a4ab2c73ac5446fd6c9151873758ca05] gnumeric: import cell hidden and cell locked attributes 2012-11-27 Markus Mohrhard [ba0ebdec19c96f0577501709cf5e29e8dcdbd062] cell protection support 2012-11-27 Markus Mohrhard [bd472644bfb6b090fcf77e899887cec5db15c93a] support cell color in gnumeric import 2012-11-27 Kohei Yoshida [3a7fd7ca0c23d77e7a2f928aea592e632503d92a] Remove MSVC warnings. It doesn't like implicit int to bool conversion. 2012-11-27 Kohei Yoshida [586c6c768c182fc6903d0b17dd83eea807071429] More editing of MSVS project files. 2012-11-26 Kohei Yoshida [e0ebf9fa480d74e420dbf369d33a6fdfeac1f1ce] Fix coding style and indentation. 2012-11-26 Kohei Yoshida [6c860d7d8a99fd05b4c40fc9bd3030c26befd3d1] This won't build without ORCUS_DEBUG_XML_NAMESPACE set to 1. 2012-11-26 Kohei Yoshida [e61a143535ea83dfb96075e1b2a424ce0a54451b] Add gnumeric files to static-nozip MSVS project. 2012-11-26 Kohei Yoshida [5c1ca7c832395a395e33a335131778702609a01a] Update MSVS project file for liborcus-static-nozip. 2012-11-26 Kohei Yoshida [936a96d7ca3502ade661fbce0c45abbdb1f7a811] Fixed 'make dist'. 2012-11-21 Kohei Yoshida [392ff85f2aff1ea8760cb63c06b7346b5f2dd4f1] Add a means to obtain the short version of an xml namespace name from the walker. 2012-11-21 Kohei Yoshida [8c3f8b1e3c10cd1f47db0bd815e5cece4633d221] Quote all string values in the "dump check" format. To avoid ambiguity in case the string value contains ':'. 2012-11-21 Kohei Yoshida [ff1832700e60db050c8326d51ec8a4778184a25f] Header label should only the short version of xml namespace name. This breaks several tests. I need to adjust those failing test cases. 2012-11-21 Kohei Yoshida [aeeff94a7755c5174cb9d31db06123a08e1fb23a] Be sure to intern the namespace alias strings in xml map tree. Because xmlns_context itself doesn't intern the aliases. 2012-11-21 Kohei Yoshida [a2560876103a79a5e7e1397bca735532e7f653c2] Print aliases in the context for debugging. 2012-11-21 Kohei Yoshida [9a54506fbdac4aad0ed34a96f791b6138c690fa0] More debug statements. 2012-11-21 Kohei Yoshida [59e7f513f1f17d1a688365dee3fd0b0948249b5b] Let's have xml_map_tree to take the ns repo, and keep its context internal. 2012-11-21 Kohei Yoshida [6e53d70703af67abc9dc819d4b9e0a6998732e74] More debug statement. 2012-11-21 Kohei Yoshida [cccd1c6c1f5f76d216c910c96219d8b7017e240d] Add method to get xmlns identififer from its numerical index. 2012-11-21 Kohei Yoshida [f5b81963a94e2559ca4acaef3a28c1417dfa6bd1] Add get_xmlns_index() method to the tree walker. This is for convenience. 2012-11-21 Kohei Yoshida [ccddd488859bd535c37ece6934ce87b571836cac] Add another test case to test namespaced linked attributes. 2012-11-20 Kohei Yoshida [4875a787ebf3736aa5fba0aede4c6a826d2b4ff1] Intentionally change the namespace aliases in the map file. And the test should still pass. 2012-11-20 Kohei Yoshida [7980ac64fc56e5ead16c09e1251b20561ee18ae6] New test case for namespaced xml content for round-tripping. 2012-11-20 Kohei Yoshida [9d50cdcf59ec8137ab27a9c3fb8f5f59dca101b7] Set the namespace alias on field-linked elements as well. And adjust the test code to allow cases where the input and output xml contents don't match. That can happen when the range linked sub-structure contain foreign element(s) which will not be included in the output content. 2012-11-20 Kohei Yoshida [b27e68aec1e6d6aaf0eb59ca58b0c9b7e3caddcb] Let's not forget to intern these namespace alias strings. They need to survive even after the import content stream is destroyed. 2012-11-20 Kohei Yoshida [64a0ab1e735992ccc9c0703402f4a1c4aed41518] Store in the map tree the actual namespace aliases used in the content stream. We need this when writing transformed xml content to file. 2012-11-20 Kohei Yoshida [93d35d3d5d4ea4084c2fd60cb29629ffab26505c] More targetted namespace trimming scheme. 2012-11-20 Kohei Yoshida [f42391d21d58fe71a1939363c8b0c002171c99eb] Let's not use this in_parse flag. I find it a bit hacky. This will make get_all_namespaces() call a little more expensive, but only the test code should call that method anyways... 2012-11-20 Kohei Yoshida [6d2bc9787f760107b81443722bcd1dccc5388f38] Don't forget to call parse()! 2012-11-20 Kohei Yoshida [0464810b61941f7fcc788684b1d6038a1afe933e] Correctly keep track of unlinked element stack while traversing the map tree. 2012-11-20 Kohei Yoshida [76ef20cac8b68cede013418460b82d5eaedcd86e] Rename xml_attr_t to xml_token_attr_t. 2012-11-20 Kohei Yoshida [3a2327c7eeb1361226b9aaff42bb288a0641265a] More debugging and assertions. 2012-11-20 Kohei Yoshida [29b6999c66cd936207d493fb5cbcb0d9044d03dd] Added new test for traversing a xml map tree. This currently fails. 2012-11-19 Kohei Yoshida [12bf185249d480062789c5109ff8469f94910b71] New test files for handling namespaces during mapped xml import. It's disabled as the export is not yet working. 2012-11-19 Kohei Yoshida [6cde6360ecb31febf46dbc13bc46bf38d4cad18f] Turn off debug outputs for orcus_xml. 2012-11-19 Kohei Yoshida [77803d74266ede855a7185a51e3f952620c874fd] Finally, handle xml namespaces correctly when parsing the data xml. 2012-11-19 Kohei Yoshida [dc77d35a27b8afc7add1ae2fea8f4462b9b6de89] Correctly handle namespaces while building xml map tree. 2012-11-19 Kohei Yoshida [bcb1ebd5eaf056f9e1e822c01201187b93314729] Properly process namespaces when parsing mapped xpaths. 2012-11-19 Kohei Yoshida [b23733e1c32d2b02393990c1ecbe13cbf7815301] I don't think we'll need this. 2012-11-19 Kohei Yoshida [ca061603398ff4c9d648c33bfefb49d5445694e6] orcus_xml to take additional xmlns_context parameter. 2012-11-19 Kohei Yoshida [0a175395901e8b75b5015096978df4914587807f] Test for nested default namespaces. 2012-11-19 Kohei Yoshida [f2e8aacbb11fab44d4dc23dda8e62ef2d03533dc] New test case for custom namespace handling. 2012-11-19 Kohei Yoshida [23a8c634430cfe44fa7b32d29febc22b97fcd63f] Adjusted test files for xml parsing & new test for default namespace handling. 2012-11-19 Kohei Yoshida [7c54dce88eb5d9efec3e8819a1792c47d4240b53] get_namespaces() to return namespace list sorted by order of occurrences. 2012-11-19 Kohei Yoshida [212bfe617b9b320cdd16094732dbb36349b57f49] Print namespaces aliases instead of namespace values when dumping. 2012-11-19 Kohei Yoshida [462e1f10e40253fea504d0bf38d12b3f82fc6ee8] XML structure dumper to use proper namespace management. 2012-11-19 Kohei Yoshida [fbd0e87ada85fa615e1a028c002f271e2f04e4e5] Adapt dom_tree to make proper use of xml namespace management. 2012-11-19 Kohei Yoshida [642d5e1fdab355327e1af028d547e6c8109ab7e2] Make sure the ns indices represent their order of first occurrences. 2012-11-19 Kohei Yoshida [0b3abc94a364ca23a1c6c2071cea359ef1a8ac85] Check the return value of push(). 2012-11-16 Kohei Yoshida [ecf118c39b298f51abfdfd62b0a45b7fb5a490c0] Correctly dump namespaces, and add check for it. 2012-11-16 Kohei Yoshida [d72f1da6379c18d20595fb55329da922351e86ff] Fix the crash in the new test. 2012-11-16 Kohei Yoshida [5a77f10fe793d8cd36b788879c842b232f5893fe] I forgot to add these too. 2012-11-16 Kohei Yoshida [4adce0038f7c4e95d5c410a40d4a2fbca1de7847] Add new header to the automake file. 2012-11-16 Kohei Yoshida [7b3866863874dfcd074f089dc24edd5da5df765e] Add this script too. 2012-11-16 Kohei Yoshida [fc33d6b64d306c3cabadf2050b212bf652d928a8] Somehow I forgot to add this header. 2012-11-16 Kohei Yoshida [44e7d1586f8885cf33b99588fe6ae47092bac648] Retrieve all used namespaces instead of keys during dump(). Disable the test as this crashes at the moment. 2012-11-16 Kohei Yoshida [6a2335d56f15c7295e020af7bca3a2da9ca90102] Handle XML namespaces properly at the parser level. And use it from xml_structure_tree. 2012-11-15 Kohei Yoshida [8cb9c4801f696d79b7a1611234ca9b684574c513] Support numerical indices for namespace IDs. Useful when displaying namespaces canonically. 2012-11-15 Kohei Yoshida [85d065f7713625d491df3b4caf06cc4ad1799d52] Unit test for string_pool. For now it only tests a very basic thing. 2012-11-15 Kohei Yoshida [c29b38ec3618c4715aa5a5c4160b47bace51aea0] string_pool::intern() now returns a pair. The first is the interned pstring instance and the second is a boolean parameter indicating whether or not the string is a new instance or a re-use of an existing instance. True for the former, and false for the latter. 2012-11-14 Kohei Yoshida [3c02946f50b88709b3696aeb5702b6d4d8035315] Let's handle cases where the temp cell buffer is empty. 2012-11-14 Kohei Yoshida [7b61576ae0d6f42078a30b900cf1681b6157d4bd] Check single character case also. 2012-11-14 Kohei Yoshida [982ab62ffd13f94eb3022bca114f04b768bd7aa1] Don't forget to delete the root element, else we'd leak. 2012-11-14 Kohei Yoshida [d3b3eb3a9dd2fcc27c52be36332600d7e91158e1] Test the same thing for content. 2012-11-14 Kohei Yoshida [0bdd3ea490d0a42bf1bd1ba7d161424275cb216e] More correct handling of attribute value with encoded chars. 2012-11-14 Kohei Yoshida [79d92b834a31660cf13e013ae14cb8db335a42e2] Handle cases correctly where a string value ends with an encoded char. 2012-11-14 Kohei Yoshida [924a89f1cc27905537a4ef8d7c00910efcf76dde] More descriptive exception message. 2012-11-14 Kohei Yoshida [8013b39592f5f29195303580f75dab6dfeaead2c] Turn off sax parser debug. 2012-11-14 Kohei Yoshida [199d678e4f0c2b3aff0935512044ff0a9c069bbe] Escape certain characters when dumping dom content. 2012-11-14 Kohei Yoshida [3fb2d140119c37dd1e06fa64af7fc01243b6d3fe] Convert encoded chars in the attribute values too. 2012-11-14 Kohei Yoshida [0141711f69fbe40b6a6e7ad6c24ced7c26f35707] Less indentation is preferred. 2012-11-14 Kohei Yoshida [77300457584d4bf62a6f22ae904d49cb3fe5a69e] We don't need to reinterpret_cast anymore. This was there when the char type was a template parameter. 2012-11-14 Kohei Yoshida [eb3f5c76d506208c76fd3bf0e02839f48e68fbad] Make sure these strings become persistent before storing them. 2012-11-14 Kohei Yoshida [2888e72181b13c23c5ae9120eeba70cca6f1d38f] Use the pimpl idiom for dom_tree. Mainly to move the member declarations to the source file to have access to the internal only string_pool class. 2012-11-14 Kohei Yoshida [ab812e7be73d0bc014027406969da2f835923e7a] Detect and convert encoded characters during xml parsing. 2012-11-14 Kohei Yoshida [0775135f2da2734d59100b9b81a2fa54e2e4157f] Extracted temporary cell buffer code from csv_parser to make it reusable. And added new xml test case for encoded characters. This currently fails since we don't handle encoded characters in sax_parser yet. 2012-11-14 Kohei Yoshida [93db2ba1de2380ed7453ad6c2e622ae2216792d5] Relocate test files for xml parser. 2012-11-09 Kohei Yoshida [bfc3624490ac47b8fb3ccb67498dc8d3aa6bea2e] Don't forget to make the sheet name persistent for start_range() too. 2012-10-20 Markus Mohrhard [4e80be4b18e88187457338e2f7d77d956976dc1a] implement underline support for xlsx 2012-10-20 Markus Mohrhard [c03f477349e1e722851de8b01b5e00f8690e3719] implement the font underline for gnumeric 2012-10-20 Markus Mohrhard [ff7df79f86b4c942eac590e95cd61be20b654dff] add support for underlined text 2012-10-20 Markus Mohrhard [414024c02c6a3d71c13d75437ab8282b3fd26fc4] implement basic style import for gnumeric 2012-10-20 Kohei Yoshida [b1ae7ac68a8f9e388e4014416eb079f9f7f0ce65] Method description. 2012-10-08 David Tardon [4bb99bff6941d72ccf6705ce647c685808c34139] link with Boost.System if needed 2012-10-06 Kohei Yoshida [84fd5273a593460a2b5793d2219bba8c0b235f1d] More compact dump-check format. One cell value per line. 2012-10-06 Kohei Yoshida [89f317a54f06a1bca2fdd7a94d17986d720d6730] Don't take a reference of a deleted object. Make a copy. The original pstring value object is gone by the time the for_each scope ends. 2012-10-06 Kohei Yoshida [033bd08b91dd18afafcf67f86f9eea0ee9803153] Remove extra ']' which would show up in the help text. 2012-10-06 Kohei Yoshida [af67c614d6ae6bc30a936080fa7429baffebfed2] Fix the makefiles for headers. Otherwise the header files won't get installed correctly. 2012-10-05 Kohei Yoshida [63c771c1aaf42b671c8369a697f08be6503fcc79] Another test case to check nested repeat element states. 2012-10-05 Kohei Yoshida [833611cd4d78f1db98e6fad126af75908d75e5ea] Set the repeat flag only when the element occurs multiple times in the same scope. 2012-10-05 Kohei Yoshida [3d141d3a8866dc817da2249aa3f8a2a07f3c26f7] Sort child elements and attributes in order of appearance, not by name. 2012-10-05 Kohei Yoshida [a46ecebe550bf25534f0d7e0a72081bfc03de54f] Put the ods-filter and xlsx-filter bits in the right place. 2012-10-05 Kohei Yoshida [d21fa00bf86b336550f74500b25c5b7d6c4e12c6] Get numeric-filter to really build without libzip. 2012-10-05 Kohei Yoshida [a14a1f9a6c2c8eb7694bfc4630ad2f2dad6c9401] New test case for traversing attributes from the walker instance. 2012-10-05 Kohei Yoshida [6c38ddf19cac78fec52e052bbb2e94b0fe397f80] Remove duplicate typedef. 2012-10-05 Kohei Yoshida [4466024ff73e9cf0370a63f14b5659ef73a88f1e] Test attribute detection. 2012-10-05 Kohei Yoshida [2acfab69f94e61807a0490fbdf9d9f0240e25eae] Reorganized test files. 2012-10-05 Kohei Yoshida [d0cbfb6416bdcb0a64942c0ab01e29f70e02a146] Detect attributes during xml structure detection. 2012-10-05 Kohei Yoshida [f8a479be9b491d220709d324db659f3612f162ad] Remove unnecessary copying of entity_name objects. 2012-10-05 Kohei Yoshida [72686f95d5614d13e82b2c045f30424f257934b2] Remove the internal elem_name struct and use entity_name instead. They were structurally identical. 2012-10-05 Kohei Yoshida [2b2b502d9441d341fdc66749a5759c8cee9dfe52] Add attribute structure. 2012-10-05 Kohei Yoshida [489732f9c0e9ebffde14405e6ab7039caaa58546] Rename element_name to entity_name so that I could use for attributes. 2012-10-05 Markus Mohrhard [a3738fb8b3dcfdc38944faf3048bddef5637d5f6] gnumeric import only depends on zlib, not on libzip 2012-10-05 Markus Mohrhard [d576da5ffc18e3eec8d9c9b821edf42f9f31258f] make ods and ooxml filter configurable New configure options: --without-xlsx-filter --without-ods-filter 2012-10-05 Kohei Yoshida [553e904220176a5c7f3eb7fdd1af01d43caa62fa] Write self-closing elements inside linked ranges correctly. Write instead of 2012-10-04 Kohei Yoshida [05e4c585826e6225fb552ab8eb61644b2792550c] Another test case and found & fixed bugs and wrong assertions. 2012-10-04 Kohei Yoshida [89b536bc8fb1facd0250f54f07c28edb7ff90594] Another test file with single-element case. This time the only element has a non-linked content. The round-tripping shouldn't remove the content. 2012-10-04 Kohei Yoshida [61d3a2dfb9b981b54c15d15dc973ecddcd1bc3e4] Write self-closing elements correctly & new test file set. 2012-10-04 Kohei Yoshida [662e68941d138d55257ea7f2671eab674da0e0e4] Test the xml export part of orcus-xml. For the purpose of this test, the output xml should be structurally identical to the input xml. 2012-10-04 Kohei Yoshida [9d4829b14724ea42c526b82fc2d3167ccae66bc9] Separate the sax handler for dom tree into its own files. 2012-10-04 Kohei Yoshida [0a54445e29309ccd67850b82e7feb6033125c7f0] Also write linked attributes anchored to linked elements. 2012-10-04 Kohei Yoshida [6854433228ec9ea4c250d61db2e309d2a018e6ff] Write linked attribute values fresh from the document. 2012-10-04 Kohei Yoshida [08d31e959ee38d58080ae70f5f1e962914161114] It makes more sense to store element's stream positions with element. Now that I also need to handle unlinked elements when linked attributes are present. 2012-10-04 Kohei Yoshida [bf59ac2a4c50cbf54ddf8a2d6bd80f2282a1132c] Add test for linked attribute xml import. 2012-10-04 Kohei Yoshida [62e2c0bc3c4d4f70e1dd36d7b32930d84623fbe7] Allow output mode to be specified for orcus-xml. In the future we should use boost::program_options for consistent command-line option parsing. 2012-10-04 Kohei Yoshida [6e4ca7677c1958e8ece49e98960676c2c902d94d] Reorganize test file structure for mapped xml import. 2012-10-04 Kohei Yoshida [30a3edf54cf92437ba495c8f32329504eace80b3] Write linked attribute content fresh from the document model. Round-tripping now works. Yay! 2012-10-04 Kohei Yoshida [bcf938081312ea8c99c27b94870f108f000feb8d] Fix the wrong assertion. An element in a scope may be linked, and that's not an error. 2012-10-04 Kohei Yoshida [f21be9ce7204c1e0144b3e3ba6e7c5e387c4a965] Test for late linking of element. 2012-10-04 Kohei Yoshida [9b1d77f1439835402aad1116f642e86ab404906a] New test files for linked attribute import. 2012-10-04 Kohei Yoshida [65d2b5a70db8427dbd7dd8628a9ae8150f5d7681] Set values for linked attributes into document for real. Now the linked attribute values are correctly imported. 2012-10-04 Kohei Yoshida [83838171766179f1bf943715ba2b44ad3fb67d7a] Range reference now stores a list of linkables instead of just elements. 2012-10-03 Kohei Yoshida [10591f2dbbdb0ca5fa00d47231b5ed978fe18b53] More fix for linked attribute nodes. Still import fails. 2012-10-03 Kohei Yoshida [79ff3a5b45c3f5fd735927f9c6118fec68b7aa59] Rename element_leaf to element_linked, element_non_leaf to element_unlinked. Because sometimes a leaf element may be unlinked when linked attributes exist in that element. 2012-10-03 Kohei Yoshida [e992c892ae4996d5a9384ced4361aecdec7adac5] Allow existing element to get linked when the conditions are met. 2012-10-03 Kohei Yoshida [43daa0a85a0a5bcd50d0deddb80983bdff551f7c] Correctly insert and retrieve linked attributes. The test now passes. 2012-10-03 Kohei Yoshida [48e722c6b584de8cbf4e00a618b31e9617453e73] Spell out 'reference'. 2012-10-03 Kohei Yoshida [ea40c1eebea9a8a6b0b676b27871af6a4364067a] Reorganize the element and attribute structures. Especially their type flags. 2012-10-03 Kohei Yoshida [57fd20d1931f09eab4435351ea4ccebc39c5b900] XPath parser now returns a state token instead of just an element name. 2012-10-03 Kohei Yoshida [c1eba9423a5e1b125dcce1f2fbd93bc9a13545d9] Pass xml namespace context to the xpath parser. It's not used yet. 2012-10-03 Kohei Yoshida [b0e9ad368704ffe3c8973bbdbb97c8be2ba76d51] Pass xml namespace context to the map tree in order to handle namespace correctly. 2012-10-03 Kohei Yoshida [f48f96b0462fdfe34905ef106da624888e6a266a] Add linkable attribute structure to xml map tree. 2012-10-03 Kohei Yoshida [a5454a05f4001c7b4ba19f328fb4ad619314ed36] Rename basic.* test files to content.*. To make room for test file set for testing attribute mapping. 2012-10-03 Kohei Yoshida [05290c2c08b016747ac224dd6b9e4a26bee83de1] Fix the naming clashes in pstring. 2012-10-02 Kohei Yoshida [2e1f62a2e3588552c87a0c8e6dc389b8b57e204e] Hide the implementations of public classes. 2012-10-02 Kohei Yoshida [2c0b19c00fa824c8ad24f5a8d77ec7a5345cc5dd] Reduce header dependency in public header. 2012-10-02 Kohei Yoshida [8f7f4bbeedd2f69e1e1583a6a91fe44abf4efb39] Updated slickedit project file. 2012-10-02 Kohei Yoshida [52f2b7dde427fdfaa41315e77cc0f5cf341fc9e5] Add a wrapper script for gnumeric (useful for development). 2012-10-02 Kohei Yoshida [eb391a976b345ad045b598153e48e4b162936823] We don't need this forward declaration. 2012-10-02 Kohei Yoshida [b46907a804a43e61d6a151269c9c2218c247d84c] Fix the coding style to make it consistent. 2012-10-02 Markus Mohrhard [7c21a41cc3eaf0d93310eece164939a5fe043347] Test file for gnumeric import. 2012-10-02 Markus Mohrhard [9896e61d3efde09b50f66d087afc682430e0db40] finally support all kinds of formulas 2012-10-02 Markus Mohrhard [627973974cb2f252aa2ffab83dc99edae41e4fb9] add way to insert shared formula without attached range 2012-10-02 Markus Mohrhard [59cccd259bff296f5852cc433afc634c39c589cd] also dump the shared formulas 2012-10-02 Kohei Yoshida [a8e5f13f8b2ec2ec61bd538e858ee0983b412e58] Program name should use '-' instead of '_'. 2012-10-02 Markus Mohrhard [1a275e1288664b241e247372685da51b508d1e9f] add configure option for gnumeric import filter --without-gnumeric-filter will disable building the gnumeric filter 2012-10-02 Kohei Yoshida [876114fa199b98ef8c3e3fcf50add3255f06cc8a] Just adding a ';' in the default case should suffice. 2012-10-02 Markus Mohrhard [4f290fa19341950b967eaf1967f05d5308c6beeb] fix some warnings with gcc in the gnumeric import 2012-10-02 Markus Mohrhard [92f123c2e8223d7f8f8cc68a26e6a286a4a66f11] also add the inline files for gnumeric 2012-10-02 Markus Mohrhard [db799a1fd44c486b729a5128e1c4fa7e0e480104] CRLF to LF 2012-10-02 Markus Mohrhard [752e845580f55047f5dd24f5a81875942d5feaa3] adapt to changed shared orcus code 2012-10-02 Markus Mohrhard [1003dfd6f86a80ef3309858f90986e9b7172c10b] first step into gnumeric formula handling 2012-10-02 Markus Mohrhard [3c95ff05738c9f8ec5466ab86abda61898b38aae] tabs to spaces 2012-10-02 Markus Mohrhard [6f2308780758ad7f1ee3fd7d69a3a796e3fcde79] add gnumeric files to liborcus project file 2012-10-02 Markus Mohrhard [3880eadca31317703d4f6ca484402126ea85a5a7] add files for gnumeric parser 2012-10-02 Markus Mohrhard [47fd025a51a2ca4ed59e7042ad44057257e231ac] add orcus-gnumeric project 2012-10-02 Markus Mohrhard [22474f4179e4fe5c541210fb3e297be5b53cbf98] script for generating gnumeric tokens 2012-10-02 Kohei Yoshida [506ad567f28ce2c38abab2caeea1187c56c9a268] Converting LF-CR line endings to LF only. 2012-10-02 Kohei Yoshida [3a7adf427884d642ca395cffe6083643dbe26306] Converting tabs to spaces. 2012-10-02 Markus Mohrhard [1e8b5f9c165c1cfef130575232838831381d5631] add zLib as dependency to liborcus 2012-10-02 Markus Mohrhard [760d4b8ec009044b55da6637e0b39080d5abe135] add xml_context_base::get_parent_element 2012-10-02 Markus Mohrhard [3cf3951a9bc1907ae5bc1bca0691120f2fd1427e] add gnumeric schema file 2012-09-26 Kohei Yoshida [f0be9d81039bed37dfa1198742b0a6e44e2f6438] Merge branch 'xml-structure-detection' 2012-09-19 Kohei Yoshida [85c58d590598d10d12a1af95b4374406bdc564aa] Implement xml_structure_tree::walker correctly. This at least passes the very first unit test. 2012-09-18 Kohei Yoshida [fe25ad08bb441160fd96dd7ab22d5b4b25c53725] Implement walker::descend(). 2012-09-18 Kohei Yoshida [96b1256a06464feda9d83c1a6830b4e764231719] More on implementing the walker. 2012-09-18 Kohei Yoshida [45e11d9c00824a2eaa3caf0ccf898a4b60cc6c77] Let's use elem_name here. 2012-09-18 Kohei Yoshida [95a0ffde0f65a5533c3dcbef984386c2338796bf] Set the basic interfaces for tree walker. Most of its methods are still empty. 2012-09-11 Kohei Yoshida [294514ebe1b8a04399d989f285130f4d5dc73ff3] Let's hide these structures. 2012-09-11 Kohei Yoshida [adb32938cb24ab84055e5a43a89f261209453eb4] Another test case. 2012-09-11 Kohei Yoshida [bac1022db99c2f5458909b148bd5c3cfca73d61c] Test for parsing comment with a single hyphen. 2012-09-11 Kohei Yoshida [82a973ee31e71bd4b182f15ff82a950c58c1b18f] Fixed a bug in XML comment parsing in a presence of a hyphen in comment. 2012-09-11 Kohei Yoshida [9834c686e6c3ffa872777e66af4fa25d9c2dea3d] Fixed a bug in XML comment parsing in a presence of a hyphen in comment. 2012-09-11 Kohei Yoshida [c4a62b6231b193386826e3999ae0020cb678627b] Another basic test case for XML structure detection. 2012-09-11 Kohei Yoshida [c11f0f9fc170da96a3c51dcd6b4163c83c364363] Dedicated test file set for xml_structure_tree. 2012-09-11 Kohei Yoshida [fc86674a270775ef627c8b1f57da45e744a37458] Next version will be 0.3.0 due to incompatible API change. The API version will up from 0.2 to 0.4. 2012-09-11 Markus Mohrhard [ee6d56e26d49089c808e34ee2f41abc1e32f51b8] commit stlye methods should return index for later usage 2012-09-11 Kohei Yoshida [00af1ff5254f4a3ba814344d049057c41972b363] Removed the pre directory. 2012-09-11 Kohei Yoshida [41c49f04ece444dce9ce500dcaab253adac0c70d] Let's check in these inline files. Dynamically generating them causes issues with vcproj files as well as automake based build. These files are not re-generated too often, so it's probably better to just check them in. 2012-09-11 Kohei Yoshida [bd72b3d493562c90f0f07f298518906fc78b4be4] Set executable bit. 2012-09-11 Kohei Yoshida [9071e67571aec733af9f7cb5fcd5f2064c5c09c5] Let's use '[*]' to mark repeated base elements. 2012-09-11 Kohei Yoshida [152a65931a95d21ea6ff8350189f357c67cde351] Only set the repeat flag with the base element of repeated structures. 2012-09-11 Kohei Yoshida [c2c6e6e990b02292f61aa99bfa5848a56c4692de] Implement dump_compact() for xml_structure_tree. 2012-09-11 Kohei Yoshida [11f0f115c7ed81bb775f0a28086df848cf689612] Hide the root element definition. 2012-09-11 Kohei Yoshida [c83d153f4acbde79c4683c2272d5a4e8943bb076] Parse xml content and build a structure tree. Not tested yet. 2012-09-10 Kohei Yoshida [0e933d663b783ff241238b38f73c45ba4390ec7f] More work on xml element structure class. 2012-09-10 Kohei Yoshida [6bc730dae8bbe077f916a9ae538a9196a416299b] Use namespace ID's instead of raw namespace keys. But to get it to do the right thing will need a little more coding. 2012-09-10 Kohei Yoshida [47f3d33a88dde8ee2ebe0c1b50ca06a8c3fcc84d] Make this method available only for xmlns_context. 2012-09-10 Kohei Yoshida [601bf82650189ac8f2ab69485047d001b58d1c38] Basic test for XML namespace management code. 2012-09-10 Kohei Yoshida [7511bd0dc2daa6336c687bee341b647ab74cb625] Initial draft implementation of xml namespace management. 2012-09-10 Kohei Yoshida [a3fdb386fbf9234e173ca72df8dd42a70291af44] Started working on xml_structure_tree. This tree will be used to detect canonical structure of elements in an arbitrary XML content. In this tree, duplicate elements under the same parent are represented by a single element entry. 2012-09-10 Kohei Yoshida [941b8ff85f73be941f0dfa98aa9e7ec5bd0317fd] Class description. 2012-09-10 Kohei Yoshida [046b43542dd2f2656dbb8e1a0473cb8beeedbd8f] Fill package description. 2012-09-10 Kohei Yoshida [7cc9639eeb319bc24f2a850db1bfd75ed4ce9947] Revert "Revert "No need to create gen file."" This reverts commit df63dac42210d92a16c0c37bcdbf569a39d4f5f7. Even with the gen file, the script gets run on every re-build. No idea what's going on here. 2012-09-10 Kohei Yoshida [df63dac42210d92a16c0c37bcdbf569a39d4f5f7] Revert "No need to create gen file." This reverts commit 858c81477289966b535fe0fd17870abc4f674322. Without gen file, it causes re-compilation of non-modified source files. 2012-09-10 David Tardon [1b39351b33b49d833c90b5881c8a28c5d3f0ad37] fix mingw build 2012-09-10 Tomas Chvatal [64d46e779ea123853e2331f9497571458c2ce81c] Update the pc files and add also pc file for spreadsheet-model 2012-09-10 Tomas Chvatal [858c81477289966b535fe0fd17870abc4f674322] No need to create gen file. 2012-09-10 Tomas Chvatal [d2ddb9f7c7169694225e4c148ce387b45fe8576c] Add missing files to the make dist generated tarball 2012-09-10 Tomas Chvatal [fbf69b8393930784a1dc3393a1a26d564aaf3083] Fix out-of sourcedir build. 2012-09-10 Tomas Chvatal [f720329ca7efc4c4534540432f19a7f57caff1ba] Add missing license file. 2012-09-07 Kohei Yoshida [a9b7ac05b3d07ecd342fd91b1bd1ed7c60d42d84] Make --enable/disable-debug to actually work. Previously, debug symbols were enabled regardless. 2012-09-07 Kohei Yoshida [6541759abea6b8d1f233932a3812f5cd085a13de] Update the slickedit project file. 2012-09-07 Kohei Yoshida [13b6fc647dd775c46f8fa478c8b8be12876040d9] Rename orcus-format-xml to orcus-xml-dump. Let's have all xml-related programs begin with orcus-xml- for consistency. 2012-09-07 Kohei Yoshida [f8056cbbea31319672af12609b5dc2942b0f0bd5] Typo. 2012-09-07 Kohei Yoshida [c7765c62679d70d8ef71a9f49180c151e75de032] Removed unnecessary linkages to libixion and libzip. 2012-09-07 Kohei Yoshida [0a2bc46d2d164fd82cca421f4df329086583fcc6] Hide the implementation of class sheet too. 2012-09-07 Kohei Yoshida [b10646e5a5da9f171919d7c55d93c76b53fca331] Hide more implementation details. 2012-09-07 Kohei Yoshida [1e5768ba7b2490c9db78cf23cda9affada8a1692] Only friends of document should access these. 2012-09-07 Kohei Yoshida [cf1bcaf6ef9454f08462c577e4a973fcf555c12f] Move ixion headers out of here. 2012-09-07 Kohei Yoshida [f0b3fbbe065f230d4c858103d67484c734ed3ba6] Unused methods. 2012-09-07 Kohei Yoshida [5b4ebe81494962b32c737f2360d6a2e9f95d4f98] Is this how to disable boost's autolink? 2012-09-07 Kohei Yoshida [88139456a50bf82cd163078b47b4423ce26014aa] Misc build fix due to the API version change in ixion. 2012-09-07 Stephan Bergmann [0101150e04f7e8dde9a32d40085b506ad1f09bd9] Fix various compiler warnings. 2012-09-07 Kohei Yoshida [a5d1ad87f27d5167fe496c3124cd3dcd26347138] Run make dist when creating a package. 2012-09-06 Kohei Yoshida [ab284e1ef09b3c939f8066ee4980aa92ae6596c7] Revert "Modified package script. I don't think we need to pack m4 files." This reverts commit 8a86c221a8db1392f4526d5dd1ee604950df0a0f. Actually we do need those m4 files. 2012-09-06 Kohei Yoshida [8a86c221a8db1392f4526d5dd1ee604950df0a0f] Modified package script. I don't think we need to pack m4 files. 2012-09-06 Kohei Yoshida [5ce8e8cb1e8ad435fcd6cea2db37adfbc7b753de] Stop parsing when the root element is closed. 2012-09-06 Kohei Yoshida [e65bd8af9b102d02a916376cb65500e4aae9ae5a] Underscore (_) is also a valid character in xml names. 2012-09-06 Kohei Yoshida [a8cb2e0db01d14cc55a7b76e8abe718a77c93c98] Meaningless duplicates. Removed. 2012-09-06 Kohei Yoshida [936177a96666ac528e622852efa1c9d69efed1bc] Filled NEWS and README. 2012-09-06 Kohei Yoshida [80326cce838599c1cfe93a4f9d8dcb138e317de5] List of authors (from git log). 2012-09-06 Kohei Yoshida [6747b0fd7952e1cc9035e9f884be4d2e83e82f8b] Disable assignments too on non-copyable classes. 2012-09-06 Kohei Yoshida [76018dbc96a04e431afed79fdef905d596ae4e5f] liborcus-static-nozip project uses DefaultConfig for boost location. 2012-09-06 Kohei Yoshida [3839c76cfbe508018e6cb588c4850eae7132485b] Split BOOST_DIR into BOOST_INCLUDE_DIR and BOOST_LIB_DIR. LibreOffice build needs this in order to have orcus build internally. Also fix the build with MSVC. 2012-09-06 Kohei Yoshida [6772f28499153467b45aa3559a48ec9257bea2d1] Pass sax_token_parser_element struct to handler. To future-proof the API. I may extend this later to support passing of non-tokenized elements. 2012-09-06 Kohei Yoshida [004fcf17433e6ea4c2b72c7f6b0839b798555b15] Deleted obsolete files. 2012-09-06 Kohei Yoshida [f6c895afa6b13780cbec5909d54da3e0d6ef62a0] Fix the script for a case where no argument is given. 2012-09-05 Markus Mohrhard [2afd3ac7c1827db080701f49874e159ae1b767c7] all paths can be set through user macros now 2012-09-05 Kohei Yoshida [3ae449992984de3c1f24bcc7ba8b3a0f0dbe54a5] Move them into ods directory. 2012-09-05 Kohei Yoshida [a35d85028a6d31139f8bb1f2fa35551c3789e43d] Isolate large test files and don't package them. 2012-09-05 Kohei Yoshida [d147c8db43dc64263f454260c8b5dd7bd61f5313] --enable-libzip is now --with-libzip. Make that option work. 2012-09-05 Kohei Yoshida [f6323faf70fbc5e05c8c8990fc954b3bcd9b9ffe] Forgot to change this. 2012-09-05 Markus Mohrhard [ed41dbdf59aa353ffe111424b1fba756f38502e6] all new project files can share the additional libs settings 2012-09-04 Markus Mohrhard [7b93e34a7b06aeb99d5fbfd36d3f0e6e9115c101] use shared property files in new project files 2012-09-04 Kohei Yoshida [25a44baed0da9e90cf9d5aa8c05002a530e5bfb4] No debug info in Release config. 2012-09-04 Kohei Yoshida [d2807cfc4cbd6f4901b03a01e7dcb8b76eda0cf1] Add missing vs project files. 2012-09-04 Kohei Yoshida [797b74418c600115e89ca4171c337db2ccadec82] Don't ignore these. 2012-09-04 Markus Mohrhard [b79758b35e7941f54a4b764084bd0c7b1b3206ab] extract boost dir and make it a user macro is vs project files 2012-09-04 Kohei Yoshida [e822334e7cb8453d903348ab72218f8a0b1ad919] Fixed mdds configure check test. 2012-09-04 Kohei Yoshida [a9ccf90cf5acdcbad012219ef2e40fb6135fee50] autogen.sh should automatically run configure at the end. 2012-09-04 Tomas Chvatal [9a1c4bd842f4a036792f0f78be1366825eeb740c] Fix default cflags line. Copy/pasto. 2012-09-04 Tomas Chvatal [a012ef59cd698e013bb2d7b4149f3cb31c4226e9] Update Makefile stuff to include libs and headers where needed properly. 2012-09-04 Tomas Chvatal [d05a89b17bceb46627e3657f6453a7bba9f5212b] Update configure.ac to be up par with libvisio/etc libraries. 2012-09-04 Tomas Chvatal [d31db139d3c1cb4f6fcdf3899dd00c123c5e2d66] Update gitignore. 2012-09-04 Tomas Chvatal [2699272c0d8ec8cbae85ecf777a48315d876fa0a] Update autogen.sh script. 2012-09-04 Tomas Chvatal [94c499d9e9302662827b198fa961d746a5a5114e] Simplify the changelog creation 2012-09-04 Kohei Yoshida [017f3c303d4f9716550277fc793e0355d12e3d73] Remove orcus-csv-static project. It doesn't even build. 2012-09-04 Markus Mohrhard [6c1ce741439fd9ba1e090c18989200483dd81789] extract common inclued paths into own property files 2012-09-03 Markus Mohrhard [aa9ba8d71d561d526e3db8541950d7c12c1079e6] more absolute path to relative path in vs project files 2012-09-02 Kohei Yoshida [8d41d4a2d4e8a3befa3c947521981bfeda5b9f67] Avoid potentially passing NULL pointer to std::string even when len = 0. Apparently std::string doesn't like that. 2012-09-02 Kohei Yoshida [a22d099361b2b1caa213334e6f4fa6d1d7158eeb] More Visutal Studio bits. 2012-09-02 Markus Mohrhard [438324a17d9e88df8f2581f6604775e8db543409] use relative path where possible in vs project file 2012-09-01 Kohei Yoshida [a0c97c22b3fc040e15ae5b21afd5b1938c172ba3] Building and linking a static library shouldn't use declspec at all. 2012-08-31 Kohei Yoshida [9b33aa3551f0887dfb7ecca5915f2688c1675303] More programs to check in configure. 2012-08-31 Kohei Yoshida [1f0600a01f0fa9f60344d76727e1a1c96137c399] Set the output library to orcus.lib. 2012-08-31 Kohei Yoshida [e5030bfaf71c8af1a3f8925e2aef60b7636da908] More fix in vs project files. 2012-08-31 Kohei Yoshida [f30da77e72ca0a8509cdbc2c28becc1848b68637] More VS project bits. 2012-08-31 Kohei Yoshida [74f15d570ae5c502825775f6503d45d047650ee7] New VS project, to build liborcus without libzip support. 2012-08-31 Kohei Yoshida [7ec27dda2ed31bc45751caeb935768080b2774e9] No manual -fPIC flag. We can use --with-pic configure option. 2012-08-31 Kohei Yoshida [c2668c38d7743d12ecf16c571f9a61334463e5de] Improved package script a bit. 2012-08-31 Kohei Yoshida [06e17c019073188f57ab1ace897ca32cc7eb10e9] Don't forget -fPIC when compiling shared objects. 2012-08-31 Kohei Yoshida [32ec4e26f2e3becb5c1a6b80e25c73b8b8b90296] This is wrong. 2012-08-31 Kohei Yoshida [b41d98e0bed8a3fe7aec7f880f997ebdfa4f229f] Cleaned up configure a bit, esp around CXXFLAGS and CPPFLAGS. 2012-08-30 Kohei Yoshida [0921e4431f073c4bff6a437d13735a4696ba057c] Package script now optionally supports adding md5sum to its name. 2012-08-30 Kohei Yoshida [2cb3b3d14b97b00d57de83f6fa54bf773f84dff8] Move this up a bit. 2012-08-30 Kohei Yoshida [0a52fcd088e4ce07bca7a23cd1df292e37f6ca1a] Don't deliver headers for ods and xlsx when libzip is disabled. 2012-08-30 Kohei Yoshida [89107141de61fb3e5a7005d872255259680ad344] More vsprojects bits... 2012-08-30 Kohei Yoshida [f0412fa219d32d94910a411d33bdd827ca3a8ef7] Add orcus-csv orcus-xml and orcus-xlsx as projects. 2012-08-30 Kohei Yoshida [855de63e551b307cde365129edd2a8a62fab2217] Add two more projects, and get orcus-ods.exe to build. And it works! 2012-08-29 Kohei Yoshida [ef95538eea5c2e6a44bc10078a439293590c38fa] Make it buildable in Release configuration too. 2012-08-29 Kohei Yoshida [5c41e35b5248b1056ed6e022487725b541c47efa] Visual Studio solution file for orcus. 2012-08-29 Kohei Yoshida [15c8e88365f6a1debd82fcf8d67d097124a4c7be] Misc Windows build bits, to fix errors and warnings. 2012-08-29 Kohei Yoshida [b6bbbd54f79e2c68c0dea501190a05d52a13bf5e] Shell script to manually run token generators. This is useful on Windows where we can't run pre-build scripts as part of the build process. 2012-08-29 Kohei Yoshida [58d7e40bcbfc5cb566640e8f82287d960544c6dd] Add --disable-libzip as a configure option. Disabling libzip will disable all zip-archive based formats, such as ods and xlsx. 2012-08-29 Kohei Yoshida [50279f4e571d92222185cc32d60397d5d2ba65e5] Common and XML tests don't depend on the spreadsheet model. 2012-08-29 Kohei Yoshida [9751f80eb1405b478ee42b51587e118c66d73e6c] Move orcus-format-xml out of BUILD_SPREADSHEET_MODEL. orcus-format-xml doesn't require the spreadsheet model part to function. 2012-08-29 Kohei Yoshida [938fe4d25003f76773aae54324448c11d63a9bca] Rename --disable-spreadsheet to --disable-spreadsheet-model. In the future we will use --disable-spreadsheet to disable the spreadsheet-related parts of liborcus. The spreadsheet model implementation lives in a separate shared library (liborcus-spreadsheet-model). 2012-08-29 Fridrich Štrba [26fd490abe60d664b905642eb572583b015418fc] Define __ORCUS_BUILDING_DLL when buildig the DLL 2012-08-29 Fridrich Štrba [961525e9dd95fb60f235ffa50d4606dda0f5d896] Don't fail configure when cross-compiling 2012-08-28 Kohei Yoshida [5c3ab9d38165d38a803ece14a5841d8ce0491248] Add or fix inline comments. 2012-08-28 Kohei Yoshida [226954a5a11a8bc6d6274a6de8cf954ed9a59f3a] A little cleanup. 2012-08-28 Kohei Yoshida [7b43f928aa7cbeff66638277ea6228b0bdd083b7] Get the cell values from the document, and repeat the loop for each record. Now we can finally export a series of rows to XML. 2012-08-28 Kohei Yoshida [fd382527482c3a0e2fb2e2766e0f7cb09e5ba654] Write a sub-structure comprising the range reference from the xml map tree. Now I need to repeat this for the number of records. 2012-08-28 Kohei Yoshida [18a8596e60d7f84f033e1058e8059ef07d9ff91a] Rename m_root to mp_root since it's a pointer. 2012-08-28 Kohei Yoshida [1778b3e964289662305309e31691c11d8409c5ed] Get range data from the sheet. 1st cut. 2012-08-27 Kohei Yoshida [b9410c9742ac8cd90fb4fc2cf1430f23affd963d] Check for export_factory instance just in case... 2012-08-27 Kohei Yoshida [58a07d1a1544da7873ac97c5e2bbbf16311ab40c] Get single cell link values from the document model. String and numeric values only for now. 2012-08-27 Kohei Yoshida [64836b0c30866f4a7fb9e5972c55c13c1d52c819] Rename import_factory.* back to factory.*. 2012-08-27 Kohei Yoshida [a0fbc2367f757d18ecc52111dbbde57305600ec7] Removing unused code. 2012-08-27 Kohei Yoshida [3bacddde598126961f1d66d95a78fc0ed024f10a] Prefix all import interface implementations with import_. 2012-08-27 Kohei Yoshida [f998ae0e81851a67ac000853b3b75fefa0e43002] Rename header guards too. 2012-08-27 Kohei Yoshida [65d9fe4b00887268150eb7dbbcf07c751b0c2502] Rename interface.hpp to import_interface.hpp. 2012-08-27 Kohei Yoshida [d24eb53dc0d487f45cd88cf47f6678c67b0c148c] Rename factory to import_factory, to make room for export_factory. 2012-08-27 Kohei Yoshida [5300fafdc56322a2cad537dabe21053e04983374] Remaining model_ to spreadsheet_ name change. 2012-08-27 Kohei Yoshida [0ff85e3ca3231d9e24f343b0e9076c92a5f6f0dd] Preparing for replacing the linked content. But first, I need to work on expanding the interface for export. 2012-08-27 Kohei Yoshida [60e897d41924733af29a0696492cf383bf4039bc] Fix this wrapper script. 2012-08-27 Kohei Yoshida [1bfc23ca878fa160c7cf8cc23c9d6ddf681d2cd8] Re-construct the XML file using stream position data. Next step is to replace the linked segments with content from the document model. 2012-08-27 Kohei Yoshida [d47a070605ff0e733d7becb052227186a4efd4c7] Let's use field links of different depths just to test the logic in my code. 2012-08-27 Kohei Yoshida [b705143a63e9e754e4516143e71d37cced91c309] Use the element one level up as the parent element of a range. Its immediate child element (it should only have one child element) is to be used to group each record entry. 2012-08-27 Kohei Yoshida [5b11b8746d712aab53172a924ae88a5a18f44210] Pick up the stream positions of range refenreces too. But this one has a bug. I need to re-think the logic again. 2012-08-27 Kohei Yoshida [bddb0894a525422974d44da437e95542d8281287] Rename ref to pos. 2012-08-27 Kohei Yoshida [df7d5d98aa39b2695092b8e067c62caaf461d7df] range_ref to ref. Short and sweet. 2012-08-27 Kohei Yoshida [73de9ee2988cb014306fd174b91fc778baa2ec46] Let's store the cell position just once in range_reference. Instead of duplicating it in each field_in_range. This saves memory. 2012-08-27 Kohei Yoshida [bf0c16d243efd10da937e4d18b2344b5f4fbb0eb] Determine the parent element of each range reference. Parent element of a range reference is the deepest element that is common among all the field link elements in that range reference. 2012-08-27 Kohei Yoshida [13f8608d342ce887d97e0e356edd56efcb72fb6e] get_element() to get_element_stack(). I need a full stack for range links in order to determine the common parent element for all range field links. 2012-08-27 Kohei Yoshida [720e7a3119f9e87ea824b0d069816749c6d003d7] Re-organized typedef's and class description. 2012-08-25 Kohei Yoshida [8d45c1b4b71a23695ecaef4730200b2f7b1ab59e] Same logic, slightly simpler. 2012-08-25 Kohei Yoshida [03e070e4cfafb7715b7c8902af3b1f9bd927840c] Record positions of single linked elements. This information will be used during export, to replace them with new data from the linked cells in the document. 2012-08-25 Kohei Yoshida [4d24ddc48c2e134b30ebfef34f64f41f516c44d9] Back to xml. More on writing out transformed xml stream. 2012-08-24 Kohei Yoshida [d9c7277b631077081b57f1a0fda5d54858cf13c3] Let's call this open_zip_stream. This pairs better with close_zip_stream. 2012-08-24 Kohei Yoshida [2c802e70414bec3e33f06c9d2f1dbb77176c59dd] Some javadoc comments. 2012-08-24 Kohei Yoshida [6a410f7251d5f0045bcf9707f578a426c7bfa343] A little cleanup. 2012-08-24 Kohei Yoshida [397858f23a10862a42004a7b6d43fec15f0be6b9] Move opc_reader header file under ooxml. 2012-08-24 Kohei Yoshida [e31b0d12fca904470e3a70c1501395248874b444] I need to fix it here too. 2012-08-24 Kohei Yoshida [68d719fa23fb1e7587262bb344106f1daf1a61cf] Have orcus_xlsx use opc_reader. 2012-08-24 Kohei Yoshida [c32ba3d2473facb0968fb5648b853f21277c5112] Oops this is a bad style. 2012-08-24 Kohei Yoshida [6d78ed6cf6cd56321cd6f294e219f9d31cdff672] Add opc_reader class which takes care of parsing the opc structure. This class is not yet used. 2012-08-24 Kohei Yoshida [0240264c3afeee0476749904e3589104d1dca657] More on renaming model -> spreadsheet. 2012-08-24 Kohei Yoshida [1d0ec7bfe5cebfbfacadd9fb69c6e197d53163b5] Rename header guard names appropriately. 2012-08-24 Kohei Yoshida [0dd61aee8c4d11cc8a4fff2fad62d83598cd5553] Rename directory model -> spreadsheet. 2012-08-24 Kohei Yoshida [7aa4abc991c2d6683f094bf4fbe7f7217813e920] Rename namespce 'model' to 'spreadsheet'. 2012-08-24 Kohei Yoshida [755736b5ac18dd6fdb1a311b13620f9585238036] Fix orcus-xlsx.sh and orcus-ods.sh scripts. 2012-08-24 Kohei Yoshida [0844bce541ae99de051100a76d58f72b81d067c4] Store the open close element positions for single-linked elements. For single-linked elements, storing the positions of their immediate parent element pair is sufficient. 2012-08-24 Kohei Yoshida [0def57a8dd92a621acb1cc7c2a4c5188d479ed2d] cell_reference to store cell_position as its member. 2012-08-24 Kohei Yoshida [bb9c7e429197fbb7bc39a91979d0b2e68df14a8a] Rename cell_reference to cell_position. 2012-08-23 Kohei Yoshida [23fe265cb87f2b0529720b7b38f8fe641ccca3cd] Store begin and end positions of each element and pass them to handler. 2012-08-23 Kohei Yoshida [7be1e2c3605d369948a906d08c4360469b0d0d8c] Pass element properties in a struct instead of individually. This makes it easier to later add more properties if I so decide. 2012-08-23 Kohei Yoshida [0b843a4827ebe4604220ce86196000bfec41f408] Started working on writing transformed xml content. 2012-08-22 Kohei Yoshida [078621c0242a774be45487da6fcc6824369a2d63] Rename row_offset to row_size. I can re-use this during export to figure out the vertical size of each range reference. 2012-08-22 Kohei Yoshida [6db706a12aa8adf7df27cbe00f6f92c159faefd9] Dump document content after load, and cross-check it against known datum. 2012-08-21 Kohei Yoshida [57ea7a99d7ed7584fa0de3251646717b12991e0f] Get the test code for mapped xml to parse the map and data xml files. 2012-08-21 Kohei Yoshida [f88bd1d5dd2f8d1a8fb20f0ee85ad12d5aec074a] Added empty unit test framework for mapped XML import. 2012-08-21 Kohei Yoshida [496b7f12c415f14bff32992c054bf9afbfc293fe] When calling set_auto(), try to detect numeric value strings. 2012-08-21 Kohei Yoshida [9745212b21f062e619af9d771aa345553877b2ba] Add dump_check() method to dump content for use in unit test. 2012-08-20 Kohei Yoshida [138f0f80477c4e76420b263248a1bacddd6f0115] Fixed memory leak. 2012-08-20 Kohei Yoshida [247db5ba59c6e3feb28da577bb23988c722460f5] Finally, parse and insert linked range data. 2012-08-20 Kohei Yoshida [8815e26185af0e1a935b4241846ccc19d267ba26] Insert range header names before parsing the data xml. 2012-08-20 Kohei Yoshida [28ce2aa01be472e12566d85a9119203eb8f39fee] Let's make the column position implicit. This makes it easier to handle range field references. 2012-08-20 Kohei Yoshida [2eaca4b2df431c48ba75dc20c384016ab9b1819e] A little bit of this and that. 2012-08-20 Kohei Yoshida [dcbbee3f6d1e1bf586fdbdc7cb561b51fef36505] Make sure to intern sheet name strings. 2012-08-20 Kohei Yoshida [ea7a70ac856deae31cd6cc47328efcbb832405a7] Import just the single cell links. Sheet names are corrupted. I need to debug that. 2012-08-20 Kohei Yoshida [778015bbdb937c8ab52209065a6bbf5c518d5ea8] Also test the descending direction. 2012-08-20 Kohei Yoshida [c4a3cb78a475f99a6e4809454ae57f754553a04b] Unit test, and found the bug. Yay! 2012-08-20 Kohei Yoshida [9e5527b349531f88d532a72220b461248f3ea3a6] Try to detect content elements, but it's not working. I need to debug. 2012-08-20 Kohei Yoshida [b95738feb694413c7c15e3daa4fdc446869a0e8f] Fully implement xml tree walker. 2012-08-20 Kohei Yoshida [0d0c65c0d6c3be1f577cab596fdfa2e375f61748] Tree walker to traverse the xml map tree structure. Also, for now I ignore namespaces, but in the future I need to write a separate xml namespace manager to correctly handle namespaces in xpath. 2012-08-17 Kohei Yoshida [cc8a2f70d726496283da91e0cb386ba8383e3ced] Move the xml-map parsing code outside of orcus_xml. 2012-08-17 Kohei Yoshida [0deac50efe04421b44613a79dd49af4cb7edffd6] Map file needs to explicitly specify sheet names to insert. 2012-08-17 Kohei Yoshida [a2362698a636d1af231cc1038f94b4af142eec9e] Remove debug statements. 2012-08-17 Kohei Yoshida [2068d6ab63b6dba6eea02ded6e2537296a6b49db] Test for range field link insertion. 2012-08-17 Kohei Yoshida [69f4e5db70dcf945110c9ebe33146e8ff75ba6be] Test multiple link insertions. 2012-08-17 Kohei Yoshida [ee66fcc79cc7c1921cbf18e741a4195604065a83] Rewrite get_element() to use xpath_parser for simplification. 2012-08-17 Kohei Yoshida [cd23097b35608f95fb89672c58f683d6ddecb462] Really fixed the scripts. The test executables must be run in their respective working directory. 2012-08-17 Kohei Yoshida [0a1fbe69a697df1fa375ee83c451b53f14cac5c8] Fixed the script. 2012-08-17 Kohei Yoshida [18b4eb776e8978d827ba3be634b53ec260496c6c] Test for link insertion. 2012-08-17 Kohei Yoshida [eb3806569638d6cc6cf45d38c614b072e7ce89b2] Add construct to unit-test xml_map_tree. 2012-08-17 Kohei Yoshida [631e4b30ff2f0d407ef1673e7cc9fad7d9440127] I need to intern name strings, since they must survive after the parsing. 2012-08-17 Kohei Yoshida [afdbf8a5981fc0d611abf347a846b9a01863b25a] Finished parsing and constructing the xpath tree. 2012-08-16 Kohei Yoshida [c841d574cfdc1826e69a02db451e19cefb44dabf] Get the root element when one doesn't exist yet. 2012-08-16 Kohei Yoshida [ffeaa409dd5555f8535981f6471e3c090cac82d8] Parse xpath and split it into names separated by '/'s. 2012-08-16 Kohei Yoshida [b9bf3ab6ca17c21a1783e8bb820885e028829af5] element's constructor... 2012-08-16 Kohei Yoshida [3381d05c4150cd7bb1b5c52c9fff9232627a059a] A bit more work. 2012-08-16 Kohei Yoshida [2eb675c785e21698b76c9c88e787b05008e60f60] Moved internal-only headers out of public include directory. 2012-08-16 Kohei Yoshida [0fe725a3b2088626cb843fff989e35fab28eea53] Route the map link calls to xml_map_tree. 2012-08-16 Kohei Yoshida [436a9ca1ad6c6a9fcc6a45b70290e5a08e840b39] Added string_pool and xml_map_tree. string_pool is the interned string storage part of pstring becoming independent on its own. 2012-08-16 Kohei Yoshida [2a78afb59f31dc34d6bd673c7d5fe22c9d4bb370] Share common bits among launch scripts. 2012-08-14 Kohei Yoshida [0111bec4b7c412c7a76b5904f71ae2a6c9378cd2] Parse the map xml file and register the links. The filter side is still empty. I'll work on that. 2012-08-13 Kohei Yoshida [43f70e5369fb9644653caa9e01c43b887124139a] Running make check in a prestine state should also run the pre scripts. Previously, make check -j would fail unless you've already run make prior to it. This should fix it. 2012-08-13 Kohei Yoshida [845cf29ae40bd009ee73d3a19c8874cd86d89427] A little more progress. Still a bunch of skeletons without meat. 2012-08-13 Kohei Yoshida [b358f37110d413addda5f650231ce0bcdf216ce5] Added data xml and its map file (also xml) to use for xml import. 2012-08-10 Kohei Yoshida [c76224b6578c400813a20bff621e7924738e72bd] Skeleton files for orcus-xml. 2012-08-10 Kohei Yoshida [97cda21b1492b3a5b4361cf10f77e7c930cfac80] Generalize sax parser testing. Now I can specify multiple files to test at will. 2012-08-10 Kohei Yoshida [36b80887c2fa28c884e70f6d7653776af343c96d] Added --disable-debug, which defines NDEBUG during the build. 2012-08-10 Kohei Yoshida [14d059bddf293c3f7ef90cda36ce0f4fc3dda98b] Cross-check the xml content against known static content. 2012-08-10 Kohei Yoshida [1ddfa92caea271ab5e6e00061ba58d7288662d08] Clean up. 2012-08-10 Kohei Yoshida [6be1847b24113a3094eadc6746812894270ee458] -O2 seems faster than -Os overall. 2012-08-10 Kohei Yoshida [d66cfd769f7f8f2dfeb33bfc7ae2816dc38d793d] New command line tool orcus-format-xml. 2012-08-10 Kohei Yoshida [dfdbec4ed935db5022347d6d0ea666c50835832a] Add more patterns. 2012-08-10 Kohei Yoshida [a9b3be192d566f8456e9182aa7bb60153a4d8c97] Add test for pstring::trim(). 2012-08-10 Kohei Yoshida [ad52531d608ae03ab7ce90ad2e2757f9c7622216] Wrapper script for xml testing. 2012-08-10 Kohei Yoshida [7789ffdbd4337d5ac1e071e00bb553e8992c3faf] Test file for shared stuff. 2012-08-10 Kohei Yoshida [ec3e43c3e61b9b1f41fd1acabf993f5bc8bd1350] Rename orcus-*-test to orcus-test-*. 2012-08-10 Kohei Yoshida [55cbda7d6bcbe3aa735a348f9c6d6995e6376f95] Print the attributes too. Now the dump method is complete. 2012-08-10 Kohei Yoshida [ed7183f462ec9b3dd26679b531ca50950f8ad84b] Cleaner way to print node contents. 2012-08-10 Kohei Yoshida [180f28d032bb69818ee37646fa4927aeeea2aba3] A little cleanup etc. 2012-08-10 Kohei Yoshida [0ddf39c60df3e1d8a6eba6dc79f722fd93cb527c] Print content values in the correct position. 2012-08-10 Kohei Yoshida [36c0f8b69d0b1f73555a6b80d227dc1cc2ccfb0c] Fixed pstring::trim() method and correctly push trimmed content. 2012-08-10 Kohei Yoshida [070d54a9abc09a206b3988e864e0747272d2e54c] Dump the tree content. Elements only for now. 2012-08-10 Kohei Yoshida [82c5206469dc184b24d868d3f82fa9139ed401a7] Trim content string before storing it. 2012-08-10 Kohei Yoshida [f4e76b976b956f2bf89760a0eb3fb741b8a372e2] Added dom tree structure. 2012-08-09 Kohei Yoshida [03e89f6f4ab855b7aead146df51290e487d226f7] We don't need this now. 2012-08-09 Kohei Yoshida [60c2237ba47214e5082bb0beaef9b9fee9a1380f] Rename sax.hpp -> sax_token_parser.hpp 2012-08-09 Kohei Yoshida [a60055a5494353d5d7c9c15d8e7a099b0c053c49] Class description. 2012-08-09 Kohei Yoshida [5def92d11c917e68262ef8bff4ec0de6d3178cd5] Have sax_token_parser use sax_parser internally. This finally removes the duplicated parser code. 2012-08-09 Kohei Yoshida [b9c706b79b9c340743d72f13ea4353d11541ff1c] Parse xml comments. 2012-08-08 Kohei Yoshida [576ac1b5f7f9bc147c807be7bbab6fc31be3a14c] XML comment currently fails. 2012-08-08 Kohei Yoshida [98fb33549c68eb2ffc37a3f1c0e8962c2921eb94] Correct name is xmlns. 2012-08-08 Kohei Yoshida [513e958702e9ef21532a705a3779aae0a67a8863] Add test xml document to start parsing. 2012-08-08 Kohei Yoshida [9239f2114687e5bfac011af3d41acbbf27ceac5f] Started working on a generic sax xml parser. This is necessary when you don't know the token names beforehand. 2012-08-08 Kohei Yoshida [689d3a8c24005745d8bdd94fd8defec988df4d7b] Rename sax_parser to sax_token_parser. 2012-08-08 Kohei Yoshida [b6ed0b79a7154741694b27dfededd5eabfbc1f50] Remove the libxml related pieces. 2012-08-01 Kohei Yoshida [033df4a7c1a2ce97ca58113f22cf6b10c893c31d] Updated copyright years. 2012-08-01 Kohei Yoshida [f2332196ae741ce54f9cff2fe242beb5b9c50b78] Move exception classes into own files. 2012-07-31 Kohei Yoshida [7827df650d34b1e80f5fa26309f2c814ffb1ef33] Update copyright years. 2012-07-31 Kohei Yoshida [5a61f56b180f0de3c47da48442600340922a343e] Non-inline the destructors of the base interface classes. 2012-07-31 Kohei Yoshida [c46bfba770c82fe54f9bcaebfb92561f1443a9dc] Have the client code manage the life cycle of factory. 2012-07-31 Kohei Yoshida [3624ba6f8f9882cea75ebbff97583d22c57741ac] Forgot to add this header file. 2012-07-31 Kohei Yoshida [b7101fec89097e82a6114dd3efd4b2645e7fdbc0] Add script file for creating a source package. 2012-07-31 Kohei Yoshida [b6f7fb28372eecec45de7c398ce6db362ef9d160] Put the pre-build scripts in own subdirectory. Parallel build seems to run more reliably with this scheme. 2012-07-31 Kohei Yoshida [f72f412b0aba74ac41c95bd9918835a48c299b9e] Add a VERSION file, which will be used by a package script. 2012-07-31 Kohei Yoshida [426ea0ebc40f327f2d8e0bfdb015b4cd9d6e48aa] Limit symbol visibility of shared objects. 2012-07-31 Kohei Yoshida [b0fb169cee60b23bdfa4355725f299c087a08bf5] A bit more re-organization. 2012-07-31 Kohei Yoshida [b2fefd067cbfc054144edb1dc65dc2ad5958f935] Unindent test code. 2012-07-31 Kohei Yoshida [909654a29e8e85b3e00ae4884425675502f61cd1] Add --enable-symbols configure option. 2012-07-31 Kohei Yoshida [b4574d1e43afc4248a6120ecf55799c2ee969723] Config option for whether to build the model implementation. When this is disabled, orcus won't have link dependency on ixion. 2012-07-30 Kohei Yoshida [3e0dc6b730f74bb73c7e98bf341ef9632b0b2ec4] Split the ixion and libzip dependencies. 2012-07-30 Kohei Yoshida [c3c4c955f75707f02cdafb53182d75a381907f7f] Removed dependency on C++11. I think we are a bit too early on requiring C++11. 2012-07-30 Kohei Yoshida [04af44bf2866ce440b8caf73690638e7f863728b] Renamed global.hpp -> types.hpp 2012-07-30 Kohei Yoshida [2253a734f7963d1aa51f5e3791dc5232c8ce5f53] Remove global dependency on ixion. 2012-07-30 Kohei Yoshida [c2a6d5c626b401fd15259fbb8bcf8de47b962d7c] Separated the orcus document model implementation from liborcus. 2012-07-23 Kohei Yoshida [b0eea99a178f09d9b998ef2f9d187c09adf52faf] Add skeleton for csv file load testing framework. 2012-07-23 Markus Mohrhard [018b079252a9b290eaa7a5ce85d9517ec6e884a9] Don't trim whitespaces in csv parser if not requested. Signed-off-by: Kohei Yoshida 2012-05-22 Kohei Yoshida [8b300d7e6ed77832df4f60139d984326a2f16980] Disabled debug statement. 2012-05-14 Kohei Yoshida [ea8c4157cf6bd089522e3fc393a400aa3a9074d7] Append sheet container to ixion::model_context at start of each sheet. 2012-05-13 Kohei Yoshida [d30398fb842c908e31e83b8d69db347e0051ff80] Use ixion::model_context for shared formula token storage. 2012-05-13 Kohei Yoshida [b1f4b0cf972889d10cad6ad697b82fafdebef392] Regular formula tokens are now stored in ixion::model_context. 2012-05-12 Kohei Yoshida [729268e3d8cbbad7fe23cf2c0081b0b3e0adcdce] I don't need this file either. 2012-05-12 Kohei Yoshida [fd4b39c7a6602914f3e224458f2c1e1c26e4c6be] Shell script wrappers for orcus-*. Useful during development. 2012-05-12 Kohei Yoshida [1053af7c54a2f8e6322ea6ec04bbba4ff97e5587] Build without libxml-devel installed. 2012-05-12 Kohei Yoshida [8469682e7d8ac878370363b926f937c818cc9c60] Disable these once again. 2012-05-12 Kohei Yoshida [3f16368dd483eee72416beafb244180585129ea1] Store shared strings to ixion::model_context. 2012-05-12 Kohei Yoshida [ab05976286b57291a32c5c3cc81691f791bdb7d9] Re-implemented sheet::dump_html(). 2012-05-12 Kohei Yoshida [5517eec9ed4ddda6a4df22d1f07ebe5d63a18942] Removed unused methods. 2012-05-12 Kohei Yoshida [e3fa82276c794d79eb308b32e81ae1d7291cf5de] I don't need formula_context here any more. I use ixion::model_context implementation directly. 2012-05-12 Kohei Yoshida [4676e9d105f3474e491b300083a3fd41d5bee587] Dump the formula cells too. 2012-05-12 Kohei Yoshida [a69e397ee5b802225f9d15c393c71e20ab9fb398] Dump sheet content, except for the formula cells. 2012-05-12 Kohei Yoshida [7f6a8e7c0412f30a8bc75760fbf6c4ac6cf7a829] Slowly working toward re-implementing sheet::dump(). 2012-05-12 Kohei Yoshida [73c8da0c5ddec2a3118458f8eb08c17da67bf517] Managed to get it to compile. 2012-05-12 Kohei Yoshida [cefc74d6eb566b379a17d209f72eeab6ff302ba5] Started cleaning up the old ixion constructs. 2012-05-12 Kohei Yoshida [f317250751802228694375e745b2dd4cffd7cbde] I don't need these slickedit project files. All slickedit project files are now under the slickedit directory. 2012-04-16 Eike Rathke [953d65d4df1f15404b65793aded0417fb1ca4045] fix orcus to not fiddle with literal strings 2012-04-16 Kohei Yoshida [ebf6cfe21625117944eebcfb89e2320ad6c3e938] csv parser: by default, we shouldn't trim cell values. 2012-04-04 Kohei Yoshida [310cad3e3568ddf5e57c331f381349fa709bed5b] Check mdds header usability & in some environments lib64 is used. 2012-04-04 Kohei Yoshida [73d5fdee9d4fa1d1f76ab47f97277bec7bf8b0f1] Moved slickedit workspace files. 2012-04-04 Kohei Yoshida [49dd40c4c399236c343c5daac7bead24818c1115] Makefiles for headers. 2012-04-04 Kohei Yoshida [ec1954eb7edbd8e9737f553f3820c79c253d0681] make clean to remove pre-build-script-generated files. 2012-04-04 Kohei Yoshida [74b9ac44144862b35997131f4022e0f4a79bbe68] Converted to automake based build system. 2012-03-10 Kohei Yoshida [42a01082dfd3438e5aa21979dcccd2fa6dc5221e] Get orcus to compile again using the latest ixion. 2011-11-10 Kohei Yoshida [419e6c00d00ea45de493f58e3d309290e006d73e] Renamed namespace interface to iface. 'interface' is a keyword with MSVC++ compiler. 2011-11-10 Kohei Yoshida [a987af05a00a292ca647729cb0ae3c300bdf9917] ixion-0.4 to libixion-0.4. 2011-10-19 Kohei Yoshida [47cc2b2f034604d7f70ee3e5823505a6ff3ebd54] More cleanup, added triple literal quote cell. 2011-10-19 Kohei Yoshida [2ce52716404fff69bd9ff5ee680892ee6d6602d7] Cleaned up a bit. 2011-10-19 Kohei Yoshida [f64ba871a18e8094d3340254b80a4f83071125b2] Now the csv parser handles double quotes correctly. 2011-10-19 Kohei Yoshida [3c47bfed17ea5b03cfc6de7c0682b9e08b479fde] More debugging. Something is not quite working. 2011-10-19 Kohei Yoshida [b824dcbd3396801e332627374f6ef3f41c298e8e] Forgot to use endl. 2011-10-19 Kohei Yoshida [d48bca0be96983055c9a59798589846d5b862c1a] Resizing std::string invalidates pointer to the old char array. We need to obtain a new pointer to the char array after resizing. 2011-10-19 Kohei Yoshida [b9ec7175b2b2bc0e73c8b42d2d0a872da3c29a20] Initial work on supporting temp cell buffer for literal quotes. It's still work in progress; it doesn't do what it's expected to do. 2011-10-13 Kohei Yoshida [4630620b27a05ac5d182b5bd2a7f3a2ba8dcdd15] Added CSV RFC as a reference. 2011-10-09 Kohei Yoshida [0a704a313a1f370dd529d7186c6557bd44d18d7f] Print formula cells correctly when dumping to html output. This is a copy and paste from the dump to stdout code. Clean this up later. 2011-10-09 Kohei Yoshida [8a9d8fe7011ebb879b0684eeb1f5fa822d2cb6cd] No debug statement for csv_parser. 2011-10-09 Kohei Yoshida [c2150293577920a3560c7fc6bce672dac5d15c94] Dump to html output once again. 2011-10-06 Kohei Yoshida [713505e2c0429740096a91c32d69a80fbaa2b59d] Mark value cells as such when dumping to stdout (to make debugging easier). 2011-10-06 Kohei Yoshida [71f219fdd3de3258ecbced6fd26c2844b8e71dbe] Fixing out-of-range assignment of values to matrix. 2011-10-05 Kohei Yoshida [635e6e082682ac2d933bf22ff96b2f21fff84f45] Don't forget to pass the context pointer to the resolver. Or else the sheet parsing will fail. 2011-10-05 Kohei Yoshida [b3246feeed4f13d193d175c5ce434030b1716471] Implemented interface methods in formula_context for handling sheet names. 2011-09-27 Kohei Yoshida [0daa348ba7e938b9df92c72c0da7e86b1c39ac5c] Handle shared formula cells correctly during the dump. 2011-09-27 Kohei Yoshida [5413b47d7b1e38e62535d10c43ff37bf418a9ef6] Make use of the passed shared index number. 2011-09-27 Kohei Yoshida [9e6217cef5f335bfb92b1ed9fb384a05875f0d7a] Store slave shared formula cells. 2011-09-27 Kohei Yoshida [60dc6cf138bee6c0c455cfa02394ed40fbd0389e] Parse and store master shared formula cells. 2011-09-27 Kohei Yoshida [773c077ea0920a17d78d3eb270871077c8c08abb] Pass shared formula range. 2011-09-27 Kohei Yoshida [cd9cbf75c74c92e3f094954edf2b5e2424efbfa0] Initial work on storing shared formulas. 2011-09-26 Kohei Yoshida [6bbebaca2db0eb665a9a1d657098b8d352ce18ab] New test document for importing shared formulas. 2011-09-26 Kohei Yoshida [9603371e90defacc1c22e22a9a6281b3b5988e1e] Added more non-shared formulas. 2011-09-26 Kohei Yoshida [8bf07a9d8e95df24c4bc75de7f55cdae96d0fbd7] Show what named expression is being passed in the error message. 2011-09-25 Kohei Yoshida [10be9e965fd73d681bce1ea372c906195a39ce07] Properly implemented get_range_value() in formula_context. 2011-09-25 Kohei Yoshida [b5aef4e091d29b820c13aaf466377a95e198e2b4] Properly implemented cells_in_range and its const sibling. 2011-09-25 Kohei Yoshida [043c4a489dd374fc73bb6c7c6fab668edd020d2c] Extracted a common code block into a method. 2011-09-25 Kohei Yoshida [6b2120ff04cdb7fcf6fc32e3182286f759ee6977] Dump the formula results if available. The formula results should be available when called after calc_formulas() is called. 2011-09-25 Kohei Yoshida [baa371e8e6bf05567fd4875244081821351c81e4] Properly implemented get_cell_name in formula_context. Now document::calc_formulas() completes without throwing exceptions. 2011-09-25 Kohei Yoshida [26620589ec2332d95036ea100763124fec161a98] Properly implemented get_cell() methods in formula_context. 2011-09-25 Kohei Yoshida [80b88c06634cb4935dd75c03b81f4e10d2afc9df] Properly implemented get_cell_position(). 2011-09-25 Kohei Yoshida [44015989da9e3d546dcc3b7f61e09ac8cc5ddbea] Throw an exception on unimplemented context methods. 2011-09-25 Kohei Yoshida [d4888a5492e7f25e125585279b03a63f647cd1c6] Properly implemented get_formula_tokens() for the context. 2011-09-25 Kohei Yoshida [a6e20a991aed6805d120ebae8f019910caf78a13] Updated interface for formula_context. 2011-09-24 Kohei Yoshida [4d0945a1fd761cacc892cc60c52c97dc8c82701f] Collect all formula cells during import and calculate them all at the end. 2011-09-23 Kohei Yoshida [347012e0a56776f367140ef98b919bed67f33bba] Oops. abs_address_t ctor takes, sheet, row and column in this order. I got the order wrong. 2011-09-22 Kohei Yoshida [95cb799248ea486937f638167fbf31a1b2bfdc4e] Started working on doing full calculation of formula cells at the end of the import. 2011-09-22 Kohei Yoshida [f4550b39dfd95a460fdf9fe37e51613f571dc0d3] Store sheet ID with each sheet object. 2011-09-21 Kohei Yoshida [be01d3b898773f671aa9e32d0dd87e41e0cf3583] Use ixion's cell classes instead of rolling our own. 2011-09-21 Kohei Yoshida [1dc6dffb3d3e359c238b82007e39caad174a7a98] sheet_type -> rows_type. 2011-09-21 Kohei Yoshida [9980cde6494aa14e11aebf538b2edbfd5918a8cd] Formula tokens are now stored per sheet in ixion. 2011-09-20 Kohei Yoshida [a1a31084a52198767429f5d6cfd99c56f13e2b37] Tokenize formula strings using ixion. (Finally!!!) 2011-09-20 Kohei Yoshida [d23a18bda1f4fb83a14cfc40afd026c54f9a1d2e] Updated formula_context to match the latest interface from ixion. 2011-09-20 Kohei Yoshida [f69d27e228fe3b986875b52bd39df676fc63f95d] formula_context should be under the model namespace. 2011-09-20 Kohei Yoshida [7e3d3240e9f167cb2a7ded02fa4b1cb752f7d9eb] Forgot to add this file to the slickedit project. 2011-09-17 Kohei Yoshida [baa280b9ea6fd15c38bdb0d1c12b8f2aafdc1f06] Forgot to add break. 2011-09-17 Kohei Yoshida [f7cd11a2288207fbd70aa1a9a2135bc87d50ec9a] Extra check to make sure the ixion headers are usable. Also a note about sourcing setenv before running make. 2011-09-13 Kohei Yoshida [98e480faa35c92a6ca45170c1d5ab06573fc7abf] Skip whitespace before and after the quoted contents. 2011-09-07 Kohei Yoshida [bec5f51672a59d7d20f3cc456f1ac18f8d4bb690] Forgot to add ixion-headers project file for slickedit. 2011-09-05 Kohei Yoshida [cf8d2e9d224bac05f93551402f402b36c49b57f9] Added skeleton for formula_context. This is the context instance used in the ixion engine. 2011-09-05 Kohei Yoshida [df0af77f7444c9041701bea52c11193050b86258] Initial work on importing formula cells. This is being done in parallel with adding useful public functions to ixion. 2011-09-04 Kohei Yoshida [554cd09197c05b7420792c09b814ca73f7d6177d] Moved xlsx_workbook_context into its own files. 2011-09-04 Kohei Yoshida [b86e5b5fa51f52f64d0090f8c3ec2073a376f0de] Move compile-time dependent env variables into setenv.in. 2011-09-04 Kohei Yoshida [becb530233ef994182c179b56a484b0f89eeb3b6] Some cosmetics. 2011-09-03 Kohei Yoshida [10a507f932ed2900a52e1b52141f50ce516883bd] Separate xlsx_sheet_context into its own files. 2011-09-03 Kohei Yoshida [2d46a09ac3ee25d66de0d7720f5f41216c237c44] Very simple document to test formula import. 2011-09-03 Kohei Yoshida [4207e1b310a519ff1d380ec26ab1e89bdd6eadbc] Prepare for importing formula expressions to the model. 2011-09-03 Kohei Yoshida [82d88e2c8fe0315cd2d18d8de482bb692acec7fe] Including ostream header is just fine. 2011-09-03 Kohei Yoshida [2ccc4e9baf907913994e1342bd99b44e29c23f0f] Set LD_RUN_PATH to ensure the executables know where to find libixion. 2011-09-03 Kohei Yoshida [342d17a92f00600e12324132f7a7779ef594322b] Specify path to ixion library & fixed a build breakage. 2011-09-03 Kohei Yoshida [579ef7e378548b836562d50e8c58f2f1adc02fdb] Parse formula contents. 2011-08-30 Kohei Yoshida [b2193eb16eed17f7b3dc0396ec8a5ac83fa42084] New test file to test importing formula expressions. 2011-08-28 Kohei Yoshida [af8f5664e80421aec31bfad3a8b2412e4d08208f] There is no reason to keep the last context instance. 2011-08-28 Kohei Yoshida [a2e9470b8a4521b1c9f3446e4688a16e2e6f42ca] Organized test files. 2011-08-28 Kohei Yoshida [c29d53c44f4485aa710fd4c014731cdb103e6e97] Separated the main function of orcus-xlsx into own file. 2011-08-28 Kohei Yoshida [bc55b9274eaa5a85347c914cdda8baa100544ea4] No need to increment after parsing of each rule. 2011-08-28 Kohei Yoshida [07e2172be4326385abd1d0a0e6f34f51b5d0bf8f] Separated the main function of orcus_ods into its own file. 2011-08-28 Kohei Yoshida [b0e75826e086aadc18a06ee32425abd93fba3ae6] Clean up. Not more output path needed; I dump content from the document. 2011-08-27 Kohei Yoshida [321ccfa97d189f46db6e3bb4af6d61e34d80fcfd] Clean up. 2011-08-27 Kohei Yoshida [575c96675f1b4767f611dc6acfc1f912ac002d56] Separated the main part of orcus_csv. 2011-08-27 Kohei Yoshida [014826469db2ec83bef78df2585ef614c7451305] Conditionally trim cell values before pushing to the handler. 2011-08-27 Kohei Yoshida [cb2c1523b56a7d6d83653a59dbd023b968e69090] Quoted value must be followed by a delimiter without blanks. 2011-08-27 Kohei Yoshida [2aef9ab9e07c8fde3b7b35218fa4e9a843bb38d9] Added back the trailing whitespace. 2011-08-27 Kohei Yoshida [e038a9edf536799e69bd956c1064076bd57459c5] Handle quoted cell contents. 2011-08-27 Kohei Yoshida [6ea07e98f972b9058397e6274c89daeee518f93e] Handle and import data from csv into document. 2011-08-27 Kohei Yoshida [33909d1b078aba5a3a7e5062b7b1d80f766f5d92] Dump imported content into ./obj. (For now nothing gets dumped.) 2011-08-27 Kohei Yoshida [9e5f3ed3c4207833d3afb1b3c19fb79155ae0854] options -> config 2011-08-27 Kohei Yoshida [b0bde99dd7e953624a1f6cb386c10f5a852a77a5] More on parsing CSV stream. 2011-08-21 Kohei Yoshida [9a4dd833e83a8679d9ec0ff5e6617b3d0be03fae] I don't use boost::thread in orcus (yet). 2011-08-21 Kohei Yoshida [e94d4413dbbe990e3c1b439ba23efd03ee4178e6] Pass document instance to the CSV parser. 2011-08-21 Kohei Yoshida [13661736290db29ff88555338ba8eec61f82df5a] Use interface:: instead of _base naming conventions. 2011-08-21 Kohei Yoshida [9ec28b05b6bdd6f12b0a7da5c371ac4702fbded5] Pass CSV options to the parser. 2011-08-21 Kohei Yoshida [91378c5610f84c737ea83975b394f69d9e9809b4] CSV, not CSS. 2011-08-21 Kohei Yoshida [4d39588b3f53e6f8afde23c5e93153aef969202b] Simple test case. 2011-08-21 Kohei Yoshida [36e2fb3fe68e8892605ad9df670bcea0f18e6d27] Set it up to start working on CSV parser implementation. 2011-08-21 Kohei Yoshida [e1be28cd18a852c246687432233b15946cfa92ec] ODF to ODS where appropriate. 2011-08-21 Kohei Yoshida [755b3a8d86a0c13fc7fae815250e03ebaef0afc6] Separated orcus_ods declaration into its own header. 2011-08-21 Kohei Yoshida [820bf389ae4243b2f9ee2ea8bce7bb066de8cf55] Prefer forward declaration over including header. 2011-08-21 Kohei Yoshida [3335f7680237a17046f293f8ee9c491d84ddf959] Separated orcus_xlsx declaration into its own header. 2011-08-21 Kohei Yoshida [9d2551a9848a11fca65cfb1f6f8745105d1173f5] Added autogen.sh script. 2011-08-19 Kohei Yoshida [182c2a0461279a530ca3b5b699872477534ed330] Now, remove the dependency on libgsf for real. 2011-08-19 Kohei Yoshida [51eb85b04fda13a7785ec68236dac8175d1fa5b8] Remove the unused code. 2011-08-19 Kohei Yoshida [107d6f16d6cddd7951835bd018579be1949a76f2] Read the rest of the streams I previously read. 2011-08-19 Kohei Yoshida [2134ec6ebc570113584e680f50a0d1fc23b88ce8] Method for reading zipped stream from archive. 2011-08-19 Kohei Yoshida [c2e6e6f75ef52266cf6b68e6e550bf966e179676] Converted more code to using libzip. 2011-08-18 Kohei Yoshida [646c01f202232857cb937236bbf2bc48e535bd46] Read relation files. 2011-08-18 Kohei Yoshida [b8c5a2eb3037ed25db91160b9f5a0d971b055c1b] Started migrating orcus_xlsx to using libzip instead of libgsf. 2011-08-18 Kohei Yoshida [2b88fdbd4b15e0ff6881967fe24ca7083b35892b] Let's not use mmap. 2011-08-14 Kohei Yoshida [e53d60339a8ad4b570f4141209aa2be8dfb02f87] Let's use uint8_t array instead of char array for xml buffer. 2011-08-14 Kohei Yoshida [65a612c676d0e4550d7e291c3c2376b9dad8a841] Removed calls to libgsf from orcus-ods. 2011-08-14 Kohei Yoshida [5ad2495c66af7a372df814aeb3cc9711de85b309] Added configure.ac script, to use autoconf. 2011-08-14 Kohei Yoshida [9703404892b9d42e3bb1fafc88bce9d021103c3d] Better in-line comments about syntax rules. 2011-08-14 Kohei Yoshida [3a19b75532d210843d844615b48c8182ed8ec9c9] Test code to read zip archives using libzip instead of libgsf. 2011-08-02 Kohei Yoshida [3c8f25299b0f78583818760ee57f7f581d9159b6] I don't need to append an extra char for the CSS parser. 2011-08-02 Kohei Yoshida [2f0996dfda981f70d71249dc6c5238a264ad0418] Differentiate the element and class names in a selector. 2011-08-02 Kohei Yoshida [c126c518437f290b3678d878d84765e063a77b09] Separate handler for at-rule names. 2011-08-02 Kohei Yoshida [fbce4ad01614985d585f5aa6226e42e0966fc662] Differentiate at-rule names from regular selector names. 2011-08-02 Kohei Yoshida [ff32fb60fe5434e00547cc4bd9561d317bab4d1c] Extracted method for parsing identifiers. 2011-08-02 Kohei Yoshida [c44ac37931e03a8f459c3122d153a267b94f2f1a] Properties -> block, and detect at-rule names. 2011-08-02 Kohei Yoshida [d710fcaebe4cdc1be69ce2a75c41389b580067f1] Correct terminology per CSS spec. 2011-08-02 Kohei Yoshida [9a53442dec2aa7538a16728502411e1850c3204a] Provide callbacks for the begin / end of each property item. 2011-08-02 Kohei Yoshida [d39606371e42401771cbe4f79ad22028b177436e] Separate property names from class names. 2011-08-02 Kohei Yoshida [669ab00231b0ef3302030c28cad3984b5a885cd7] Real world example CSS content from Excel-generated html. 2011-08-02 Kohei Yoshida [66f56f403d38abf076fa582898f4a396a01e5e79] classname is apparently a valid name. Print multiple values on the same line. 2011-08-02 Kohei Yoshida [3bee3c8ab46389efdfb9e532b80f00a8159af225] Call handler's methods for callbacks. 2011-08-02 Kohei Yoshida [714963a5895d87848cb4f83dbacb298ce42e56d7] Safeguard against unclosed quoted values. 2011-08-02 Kohei Yoshida [5b7679534a93aa18505c21658d758850937b60e5] More on CSS parser. Now the test file gets parsed correctly. 2011-08-02 Kohei Yoshida [722298a91207adfcc95727d8d99666f18154cea0] More on CSS parser. 2011-08-02 Kohei Yoshida [a2ea1c2fbef73aa87f4092998c9fd83368324acd] More on CSS parser implementation. 2011-08-02 Kohei Yoshida [a57b56b310b5b7f802cbf5c21ff04eedbc46e9c1] Extracted methods to share common blocks. 2011-08-02 Kohei Yoshida [a1a07e5b84814c649f0fd441dffce1a5f62080eb] Load file content and start parsing CSS stream. Skip any leading and trailing blanks and comment braces if any. 2011-08-01 Kohei Yoshida [6fd6cf3100a2a543425e4006447fd3e0230b521d] Don't forget the test CSS file. 2011-08-01 Kohei Yoshida [b8567dbb411831685572bddbdc122df674e0112f] Added skeleton for implementing CSS parser. 2011-02-01 Kohei Yoshida [10c959f9f36117e004e4e51423af084d10ce2b85] Assume that we may get more than one paragraph segments even for the unformatted. 2011-02-01 Kohei Yoshida [415d69316f341dd3cb1195dcb118874e9c9cf45a] Disable dumping of contents. 2011-01-28 Kohei Yoshida [1e1df9710853ee04bf2a6f75ead8136d8839aff6] Added a new sheet to import formula cells. 2011-01-28 Kohei Yoshida [e2ec65cbd4d717d0092c8c47d1128e36b99f2911] Finally process RGB colors for fill attributes correctly. 2011-01-28 Kohei Yoshida [f71b077551471fe92ebffbf4d40feef2b5754006] Pick up fill colors and apply them to html output. The colors are still hard-coded. I still need to convert RGB text into values properly. 2011-01-28 Kohei Yoshida [854a79ec125349b65d068de5a26a7bae784e6a34] A little cleanup & append style text instead of replacing it. 2011-01-28 Kohei Yoshida [0afb5192ae486879f001cf27614ecaf5a634e780] Finally apply correct font attributes to cells. 2011-01-28 Kohei Yoshida [4ae7f921d520e51a7dad752fdf4155edec05fc4c] Apply cell formats. Turn the text green for now. 2011-01-28 Kohei Yoshida [db692b0bfafcfcd92f02316802ab532c54525e9c] I need to use sorted map to store cell values. 2011-01-27 Kohei Yoshida [23292982092d035c65a95b509029b45c69883dd2] Store the cell formats with the sheet object for real. 2011-01-27 Kohei Yoshida [c0095f3168c85acdf4ffe25a70e9178596d49dd8] Added printer settings schema type, though I don't handle this yet. Also, changed the way how the directory is unwinded, to support moving up directories via "..". 2011-01-27 Kohei Yoshida [ff521f59b251bf6a1cd0fa4326262760d3cc2f8c] Generalize the check for .rels parts, and read the .rels parts associated with the sheet parts. 2011-01-27 Kohei Yoshida [1bb37d54067a6699d2266542030841fe0d6bcc8a] The client code should manage the factory object life time, not the filter code. 2011-01-27 Kohei Yoshida [2187c37d61a15ccd5a3778adeaf1a28e3c24934c] Removed unused output file path. 2011-01-27 Kohei Yoshida [b93db69555af831a210bb6723cffd8e85729e640] Pick up cell format (xf) index from the c element. 2011-01-27 Kohei Yoshida [1e7d26fbd9649a8ffe34ec1ff573ce2fc371f140] Renamed xlsx_sheet_xml_context to xlsx_sheet_context. We all know that this code is for XML, so let's just skip that in the name. 2011-01-27 Kohei Yoshida [ac2985af65925619c747fad03eff8e00fddcc83b] Added set_format to sheet & removed unused methods. 2011-01-27 Kohei Yoshida [47b2bc1a61d1adbbb7acb5680783fc1ed7c05611] More annotations. 2011-01-27 Kohei Yoshida [f67f9741931e79279ec2b2347646d8fbc2e67c14] Some annotations. 2011-01-27 Kohei Yoshida [ae79af2c762d612a845b82248a839ee1c022c115] Let's not separate the API for cell format storage. 2011-01-27 Kohei Yoshida [6ab9bf473c50b10ed2d9f07f5770b5e3b750dad0] More on parsing cell format attributes. 2011-01-27 Kohei Yoshida [e633ae180197d064dba666b5dad89d8a6637ce93] More on parsing cell styles and formats. 2011-01-27 Kohei Yoshida [1a124835190ea74ef4643f1402a767f57d1f4694] Use default ctor to reset member values. 2011-01-27 Kohei Yoshida [194c1a0d0cdd0c6ddf12a1ba6ab5737d65cf684e] Added skeleton methods for picking up cell format records. 2011-01-27 Kohei Yoshida [505f657cf13b21baf273f1a8c2e77155b63d3f3b] Parse extra elements in styles.xml. 2011-01-27 Kohei Yoshida [39410d5652d903d953045f6786a33fc296a2dcca] Forgot to commit the borders. 2011-01-27 Kohei Yoshida [fd90a7c74d8cef314afd3c052c95375a841c326f] Pick up and store border styles. 2011-01-27 Kohei Yoshida [1ccc5b4839047e742b3a9baf8b09c43cbf2ddbd1] Cleanup 2011-01-27 Kohei Yoshida [066f03cfe7e379ed5cbea680633470e7fd29ce81] Pick up and store fill pattern attributes. 2011-01-27 Kohei Yoshida [fce901db6cb75c038b8ca0e3fcd933fbdd55bd62] Fixed a build breakage. 2011-01-27 Kohei Yoshida [988d1837f9a77a7cad2e9226d131cdcdb5e06872] Store the font attributes for real. 2011-01-27 Kohei Yoshida [3b26cd3888dd129e4a9a8e4e42207484c48d5af9] Pick up more font attributes for the styles. 2011-01-27 Kohei Yoshida [cc59506a47a2c79549f4ce2e0ceb56dd11d8bba9] Pass the styles object to the styles context. 2011-01-27 Kohei Yoshida [d99da7ab941805a13d02effce7316515763f8a59] Let the document instance manage the styles container. 2011-01-27 Kohei Yoshida [1ce36920743ab3377e6c820cd7b4120e66db5295] More on parsing the styles.xml part. Also added styles storage impl skeleton. 2011-01-27 Kohei Yoshida [224330602e29d69960fdc709c736f4593e6d57eb] Wrong template declaration. 2011-01-27 Kohei Yoshida [0e55197c04e352c65721f1438567dcfb903ac0a9] Moved useful func object to ooxml/global. 2011-01-26 Kohei Yoshida [d2d76f0a447e0d9c2c5f609cb43f48a165b607d3] Initial skeleton for parsing xl/styles.xml part. 2011-01-26 Kohei Yoshida [739c744b0a935387d8329a6970859bb58f550606] Removed commented line. 2011-01-26 Kohei Yoshida [89ae412851f8d48e2c49f1c8e5c8984a2fee1501] Removed debug code. 2011-01-26 Kohei Yoshida [5c33d35c3376f1961706fd80f04dee860b1aa914] Pick up font names too. 2011-01-26 Kohei Yoshida [4b0d8ce73bb25ca877449f5286a66d51c15cf1dd] Pick up font size. 2011-01-26 Kohei Yoshida [c82387587f9319973344a89745078e4d267a3311] Let's use element to apply format to text segments. 2011-01-26 Kohei Yoshida [ead1100931da2ca7923ab7156ca27dc5bbd01486] Dump document content to html files, one per sheet. 2011-01-26 Kohei Yoshida [3247fd4399fd092c2bdb390f9e3591e1df07993b] New method to retrieve format runs by string IDs. 2011-01-26 Kohei Yoshida [0e42a26ffa530e8bb46a26c8779cba3a8a155fad] Renamed segment_format to format_run, to be consistent. 2011-01-26 Kohei Yoshida [a80e320e1f0e9cbf42f5188957e02b0a643aa2bb] Store format runs for the shared strings. 2011-01-26 Kohei Yoshida [c2cc1c3ea5edd71df9f5f8c2006370107c096645] Intern the sheet name or else it becomes invalid during the dump. 2011-01-26 Kohei Yoshida [99fbd8b3b97a52d8abbbdbfc23326444b729917b] Use for_each instead of manual looping. 2011-01-25 Kohei Yoshida [c3e1569255066d23c794daf9c4ef206eefe99604] Initial work on picking up the rich text format properties. 2011-01-25 Kohei Yoshida [517e23ebf442ed5dd87c8387f1c7b6a0e042e6f0] XML structure check. 2011-01-25 Kohei Yoshida [11878cb2d690d741363e72aa092c5609ea29dd0f] Hide the libgsf calls inside orcus_foo. 2011-01-25 Kohei Yoshida [be628ee20098365fb0168fcf248d6ba2106db904] Forgot to dispose of all the interned strings. 2011-01-25 Kohei Yoshida [7b0d9f9ede5c45c86c275559eb26cf1610a53004] Fixed a bug wrt repeated columns. 2011-01-25 Kohei Yoshida [7984ac18f18b838a372ddb75341548ed47c3065b] Little cleanup. 2011-01-25 Kohei Yoshida [5cfe8b055700f0fcf26a7939e5066f0fd9f10290] ods: Handle formatted paragraphs correctly. 2011-01-25 Kohei Yoshida [0b3d43eeb88be245573b6941e97404d7a9e855c5] Add string to the shared string record inside the para context. 2011-01-25 Kohei Yoshida [beadb2fafb6818af32da9058465e7c055dde0f94] String index was off by one in error. 2011-01-25 Kohei Yoshida [2bb89f2845c8e9d8df3bebddc5e7a3c6790fee18] Removed comment that's no longer true. 2011-01-25 Kohei Yoshida [75cf0f76612e02ae7e354b60f37c6388dbfe61f4] Now orcus-ods builds and runs once again. It also uses the shared string facility to share the same API as the xlsx parser counterpart. 2011-01-25 Kohei Yoshida [8bbf99369ae1fc37aa661c336013131d97aa1325] Correct mdds path. 2011-01-25 Kohei Yoshida [279d999a3ca1401f307b7b7d760aa7c16223f59d] Reflected the file name change. 2011-01-25 Kohei Yoshida [0fd54941e9ab96cf5b443ca51db832e3bb483289] Renamed a bunch of files. 2011-01-25 Kohei Yoshida [c328b82bf4f3f9531904f69d7a9e2e358f5e9b21] Store factory instance inside orcus_ods. 2011-01-25 Kohei Yoshida [31a3471ccb26d7afe02671783b07536217b80e9e] Handle format runs in shared string record. For now I'll ignore the format attributes. I'll take care of that later. 2011-01-25 Kohei Yoshida [e1130b5721a3a9a1e52023ab99f09a5b7f6927e6] Properly format the sheet grid when printing to stdout. 2011-01-25 Kohei Yoshida [7cae0f5fb88d6196f91446e9e7a10a86745f6758] Print sheet content to stdout. 2011-01-25 Kohei Yoshida [b21d85caa3f6bd23e8cbf52784f22e63b4c00d20] unary_function template takes return type as the second argument. 2011-01-25 Kohei Yoshida [c7a0d2921111ac9d54133fd62f3f367192953949] Refactored sheet internal a bit. 2011-01-25 Kohei Yoshida [7eae3ade9f293afd5db8e776a8d4d1b7871d37a9] Pick up the value cells too. 2011-01-25 Kohei Yoshida [6562e28af9b33b6e36251114014600a2eb95a530] Parse the sheet xml parts enough to insert string cells. 2011-01-24 Kohei Yoshida [c602cc971a34dcc792b84a046a4fc705f858d922] Initial work on printing sheet's content to stdout. 2011-01-24 Kohei Yoshida [c57d75b036fbcb136b930a53ba0044fd41baa9ef] Instantiate sheet objects from the factory & pass sheet name. 2011-01-24 Kohei Yoshida [13903b25951e9c0cfb5e0e3fa40aefb3a0484533] More on shared strings. Two methods of inserting strings: one for appending without checking for a duplicate, and another for checking for a duplicate before each insertion. 2011-01-24 Kohei Yoshida [a14486d76ed754fbd4dcd45b1d26fbd107535f84] Embed a document object inside the factory class. 2011-01-24 Kohei Yoshida [a51f551af6da6d4d518ae173f0b41994f280c81f] Now I can finally remove the dummy sheet name. 2011-01-24 Kohei Yoshida [380e851aaf6410d133c61fcde7b37fa5614084d4] New files for document concrete implementation. 2011-01-24 Kohei Yoshida [0582f3913e0636ab98e876c44712cff859c6087f] Class document_base to allow filters to instantiate concrete class objects. 2011-01-24 Kohei Yoshida [cc3c41a48a341883a6216fb3cde9d6c3bdf2359e] The sheet instance shouldn't store the sheet name. 2011-01-24 Kohei Yoshida [7a410e475697cd4a40ad5822ab98eb50e6ff08e1] Started working on creating interface classes. The idea is to allow external document models to be constructed via polymorphism. 2011-01-24 Kohei Yoshida [a69a13963a50eb23ffa20c4e464ded7a2c576b27] Started re-working the ods parser to make use of shared strings. 2011-01-24 Kohei Yoshida [b41c29aa4a4d5a802ad7530c727e292d554e4148] Pick up and append strings from sharedStrings.xml part to the internal storage. 2011-01-24 Kohei Yoshida [8d90f63126e75ec461f7829a8d54c1c0d17c620c] The main class now stored document model data members. And pass the shared string instance to the ss handler. 2011-01-24 Kohei Yoshida [ae4600235ec726a93e4ef5f1a97b55c6deb9c2be] Added new files for shared string storage in the model. 2011-01-02 Kohei Yoshida [2d8d32567d2c0b9e006bceaeacfa016586f481ae] Let's not print shared string content. 2011-01-02 Kohei Yoshida [1887b602a864b5a9868ff4d066ddc39eaa9908ab] Some code to create and destroy mmapped buffer. 2011-01-01 Kohei Yoshida [2a4c7acf93d473932c068ee2e2fe11fe784fea9e] Added new schema type. 2011-01-01 Kohei Yoshida [ea95f7198f59c36df75b014e5ab27a1149f9b35f] Don't add relationships of unknown types. 2011-01-01 Kohei Yoshida [8d690583aacd5e18c74ab5eb93d32630510db044] Added .gitignore. 2011-01-01 Kohei Yoshida [202a91823a88203ce5c1166542e4fcf960ebcf04] Apparently I didn't add the include directory when I renamed it (?) 2010-12-30 Kohei Yoshida [bcfc44a9edaeb8bb33b7ffaeb5d39d6a44a138d0] Added back the .inl files accidentally removed. 2010-12-30 Kohei Yoshida [7e90cf1141687a6e3e0ebb79ebbe0ef0ef4e7676] Put all orcus headers into orcus directory. 2010-12-30 Kohei Yoshida [f7512a148a8795a7c20790281847ca17b710dca7] Renamed inc to include. 2010-12-30 Kohei Yoshida [2762f9fdd4d7b2b65ab40c1ec882e55cfd0b533a] opc_rel_t::extra -> opc_rel_extra. 2010-12-30 Kohei Yoshida [a85551ab8414cb1d0c56ae37ded80c915f9f45f5] Let's not store extra relationship data with opc_rel_t struct. 2010-12-30 Kohei Yoshida [bfc29b6c07d306e23ce81c6f42b1b75eedb59df2] Managed to pass sheet metadata from workbook.xml to worksheets/sheet*.xml parts. 2010-12-30 Kohei Yoshida [5655252f48d9fe588adc85d39d03cd49b12f0d08] Initial cut on parsing sharedStrings.xml part. 2010-12-28 Kohei Yoshida [f9cf94a8394f2cf7f1e54787f556f3aa01e0ed4e] Read the sheet xml parts from the workbook.xml.rels. 2010-12-28 Kohei Yoshida [74883080dfdf6200c8484423fde0d17c3d45150a] Added more schema types and renamed some. 2010-12-28 Kohei Yoshida [2262bb48f477d8e327aea4e3f5fd3673caec4179] Read the relationship file associated with xl/workbook.xml. 2010-12-27 Kohei Yoshida [d088e18b935c6c1a579d61372ee177eca7de549f] Pick up sheet info from workbook.xml and print them out to stdout. 2010-12-27 Kohei Yoshida [a960eec4e4e7e6e5ac920ff699099cf0b8a1fcac] Re-organized a bit for workbool.xml parsing. Re-named ooxml/types.hpp to ooxml/ooxml_types.hpp to avoid header naming clash. 2010-12-27 Kohei Yoshida [f69a61e17783912f7a44a17e5ad3cbfea3d5ccea] Removed opc_handler.* files as they are no longer used. 2010-12-27 Kohei Yoshida [44fb242995e233d02daf7f4341f2698b60d64a59] Simple simple xml handler to handle content types. 2010-12-27 Kohei Yoshida [a86d5d379c5a3de5fdc212764b6dfdfd6a9affab] Use simple xml handler to handle relationship parts. 2010-12-27 Kohei Yoshida [9f558990ac6bd03aea6412b9202d83dfaca45f1b] Added new xml handler class for simple parsing needs. 2010-12-27 Kohei Yoshida [086c647f56c94cce594cf0bfb4961fe6b3d41ab4] Renamed xmlfoo.* to xml_foo.* 2010-12-27 Kohei Yoshida [404e602fd9285f7f0e144a4acd9122a0d2ad34c3] Handler doesn't use tokens. 2010-12-27 Kohei Yoshida [7f0c1da2d0c9b8134e8fd1aafb6dcb96c5b2746f] Added hook for workbook.xml parser bootstrapping. 2010-12-27 Kohei Yoshida [e62d3d08008d54bbd11a378c79cc0ed43b5df302] More on using directory stack to manage package paths. 2010-12-27 Kohei Yoshida [84a885dc8f38e45f8afc06d8760721857d641d39] Counter for each dumped interned string. 2010-12-27 Kohei Yoshida [8a93cdfe20a7c01a968d7ea1fab05b4e3bf07631] opc_relations_handler now a data member to allow re-use. 2010-12-27 Kohei Yoshida [4eab4c6b9b117a2602c4ff9ab59108f8fa1a0cfb] parts and ext_defaults are now data members. 2010-12-27 Kohei Yoshida [3130b774aafdd59e5eb9ad107a702514c54b3fc7] Put all top-level functions into orcus_xlsx class. 2010-12-27 Kohei Yoshida [1b3b1f2203a580c5581306c3b957c697b332a85b] Add method to dump interned strings for debugging. 2010-12-27 Kohei Yoshida [b25fe979573e6de527ff7814ef865149a8b0ca8d] Added global files for ooxml, and fixed relationship attribute parsing. 2010-12-26 Kohei Yoshida [406fde6c5a284967678eeeb9f024d836e72943cf] Pick up relationships from the context. 2010-12-26 Kohei Yoshida [c954c9c6ddd53207abc5321b7ae93697099a1139] Method comments. 2010-12-26 Kohei Yoshida [3ed17fc8c0af7cf57db7770c764cb486e76e20ae] Moved some methods into src file. 2010-12-26 Kohei Yoshida [26d63f4c9d2e158c30038bbe080e57ca5557ffe1] Moved ooxml types into ooxml/types.hpp. 2010-12-25 Kohei Yoshida [502db6530f581e6a485e40c408df3ee0fd29fd29] Intern part names and extensions to make them persist in memory. 2010-12-25 Kohei Yoshida [2f43425094a02f18ce073ed714a0bf73c8cbf4f2] More on interning of pstrings. 2010-12-25 Kohei Yoshida [9768bd39d03b6db9a67be8ecf30d32442dcb2ff8] Add assert statements to the test code. 2010-12-25 Kohei Yoshida [22846daeafbb78dceb956e1cdadd977748568f4f] Removed unused class. 2010-12-25 Kohei Yoshida [cc04470574215b7a57527a935458991db24965ee] Fixed pstring test build. 2010-12-25 Kohei Yoshida [0b9656ac01cf2114242bc3226fba6869af586dfa] More testing... 2010-12-25 Kohei Yoshida [3d63a1c6c320371defc86869fec6307dd2a2158a] More on pstring intern, with a test code. 2010-12-25 Kohei Yoshida [8f4acc3f7522b02eeeb18af6f44fd3546bf1c6b3] Added empty methods for interning strings. 2010-12-25 Kohei Yoshida [dc3c99a313ab105dac9086a8a825196f81c1e24d] Moved pstring::hash into src file. 2010-12-25 Kohei Yoshida [8069ca28021a15e88b64c8377caf243a467740c3] Added pstring source file and organized Makefile. 2010-12-24 Kohei Yoshida [db765482939e5b49cb00bd6becf779681e08a7f8] More on schema types. 2010-12-24 Kohei Yoshida [57d821bfc047e696794e405b6ed306b829011b9e] Start using schema constants. 2010-12-24 Kohei Yoshida [c59a609dbbbbf6f40bb5a2fd6c22003e46ffe69c] New files for pre-defined schema types. 2010-12-24 Kohei Yoshida [fa2d5485e915174c87f446dfbc93146d8b8def9f] Parse Relationship elements. 2010-12-24 Kohei Yoshida [3ea5d80265a0454a5a243b94cb824fa617af44ee] Parse xmlns from Relationships and set the default namespace. 2010-12-24 Kohei Yoshida [b3043daa4b04faf19b18be6a401412efbd7d6ff0] Handlers don't need to store the token set. 2010-12-24 Kohei Yoshida [f85a319869b10c6c868f1148dd2e41ee6576804b] Set up skeleton context and handler for relations parts. 2010-12-12 Kohei Yoshida [643d2f1f2c7dd28fcbe2bb2786d5121a2c53f0fd] More content types discovered. 2010-12-12 Kohei Yoshida [cbf162a4c1105572ce454cef96ca119afb734f32] Print unknown content types. 2010-12-12 Kohei Yoshida [93845689ddc06be56b97675291cc39dc3dfc4f6d] More content types added. 2010-12-12 Kohei Yoshida [4d6a5cc2294ec3281a283a208fed639c0d141185] Preparing to parse the .rels parts. 2010-12-12 Kohei Yoshida [f92cc57fef52babeb5f030869dca05d8238b9ea4] More helpful error message containing the name of the stream. 2010-12-12 Kohei Yoshida [aecf58e796a73f878c5c0a161e3625147bb04567] A little cleanup. 2010-12-12 Kohei Yoshida [2cda55281f87811ccbfb77d56367edf0c0b5a2e9] Error checking in guard's constructor. 2010-12-12 Kohei Yoshida [41022afa16b4a2783f7778aa6a98dd61b74f46e2] Use infile context guard for safer infile object handling. 2010-12-12 Kohei Yoshida [f816743db945a087441c24c303b1ebac513edc32] Print partitions. 2010-12-12 Kohei Yoshida [f9ddeba678abe14b7a398048a055b816a04abec9] Added new content type for spreadsheet's printer settings. 2010-12-12 Kohei Yoshida [641c1c9a7afbcc36f6eeec05b02880cd91e533b4] Pick up extension default content types from [Content_Types].xml. 2010-12-11 Kohei Yoshida [bfece0ea2ce16e64051bcb473d3a2cb0cf73d5b9] Added comments. 2010-12-11 Kohei Yoshida [737ac8747978b9cbf129dc03eb96665ebadf9cb8] Put everything but main() in anonymous namespace. 2010-12-11 Kohei Yoshida [44c5b2a19461778a2854e0c3522096c019918e9a] Added two new content types. Also re-arranged content type definitions to make it easier to add new ones in the future. 2010-12-11 Kohei Yoshida [d3bb8e2d2df886edeedf020c7e2fea530047ba5e] Don't print content type when it's NULL. 2010-12-11 Kohei Yoshida [6290a38a1be3b678e2e9d9ac9ab5c6e8ef0ea1ab] This should be content_type_t. 2010-12-11 Kohei Yoshida [36921572338c365324f342317df29a72beabf08a] Better output for part names. 2010-12-11 Kohei Yoshida [f3f0b4900182a05261720faa9ff05750e1380077] Pop the part info out of the handler and print them. 2010-12-11 Kohei Yoshida [f24442f5ce8b43a1d655a5397d8002671a6cdd47] Parse and store the xml parts info from the [Content_Types].xml. 2010-12-11 Kohei Yoshida [6aa6f0b43792a116a8c38861836ed4d769a74780] Moreon content type parsing & moved hash code for pstring. 2010-12-11 Kohei Yoshida [f5fb3c55b950e10afaf05f5f0ea12fa4f1ad8380] Added content types files to the project. 2010-12-11 Kohei Yoshida [9275862a4d9d05eb53b1b2c447de5bd6240a2cf0] Added content types constants for (mostly) ooxml parsing. 2010-12-11 Kohei Yoshida [05b5b59b67569f5ba0c89bc09f8ea6bbb3f54e24] Typo 2010-12-11 Kohei Yoshida [b2ccd2aa9702e8a09aa5a3642e394f118db1bda0] More on parsing [Content_Types].xml part. 2010-12-11 Kohei Yoshida [35b9464eac2bca18a753a2caec5addd215610b9c] Moved the handling of default namespace up to xml_context_base. 2010-12-11 Kohei Yoshida [c0610429cf66d0c3f4e2deb1da518fe04cfe9401] Two more namespaces for opc content types and opc relations. 2010-12-11 Kohei Yoshida [84bb4eb42c6ad2cccd68ed7771e66c61f2d898aa] Removed - no longer used. 2010-12-09 Kohei Yoshida [4da3a6a4eafa9afba7acab1fe4a7c33c78e6ec89] Added main context class for the OPC content types part. 2010-12-09 Kohei Yoshida [871f4a9b84c670840d11e2059a490ced723a72b3] Removed 'xml' from opc_content_types_xml_handler; it's redundant. 2010-12-09 Kohei Yoshida [85c1fd2a74dfe90589eade6bb2d8cbd531e8455d] Finally start parsing [Content_Types].xml part. 2010-12-09 Kohei Yoshida [a352861d2715b0569bd95c316b10c19a3c840c64] Renamed tokens_base.* files to tokens.*. 2010-12-09 Kohei Yoshida [c097fa7612186f4664d3d3a511d39443d2045587] Renamed tokens_base -> tokens. 2010-12-09 Kohei Yoshida [bbaf110baaad72853c98f38148893734708ef2a3] Removed them from the project also. 2010-12-09 Kohei Yoshida [ff9392275783c95c7525aa396cfc7ee3bccb9007] Removed files for the old tokens class. 2010-12-09 Kohei Yoshida [343f97505efaf555275083f9788b546b0663a5ee] Adapted orcus-xlsx to use non-static token map instance. 2010-12-08 Kohei Yoshida [2b8a79fa5f9eafce6f8f7bee00a95f613294813e] More on using non-static token map instance. 2010-12-08 Kohei Yoshida [5df15e114b1aef872f0ba217e92bc58c83d0d619] Adapted orcus-ods to use non-static token map instance. 2010-12-08 Kohei Yoshida [1120c8ebc1919ab316b78d1b877ec3ec2a9fdbf8] Added non-static tokens_base class which as a replacement for the static tokens class. 2010-12-08 Kohei Yoshida [da6feda946a60194a977e29f808aa80ee96e873f] More on preparing to parse OPC parts. Not finished yet. 2010-12-08 Kohei Yoshida [a7787b32180620c6894912b3a5604bec761e7588] Added the new file to the wrong project. Fixed. 2010-12-08 Kohei Yoshida [ab2be962f02b88b0f61fe143f640418ea69230d0] Added OPC token source files to the project. 2010-12-08 Kohei Yoshida [d8e504397815cbe28efab8114d640932aa527239] Reduce namespace token count for OPC. OPC only needs 'xmlns' namespace token. 2010-12-08 Kohei Yoshida [2fe2bb5d5a6196c0d7e90d32672ea87a08411a07] Added schema type parameter to the ooxml token parser script. 2010-12-08 Kohei Yoshida [7c233698c4efdf513bf0f9d6f717b15fb1c38c95] Generate OPC token list as well. 2010-12-08 Kohei Yoshida [ddb39b052b01ca08941fcc9874564cb85d5e0c57] Added xml schema for ooxml open package convention. 2010-12-05 Kohei Yoshida [bfc901c615a98990eaaf0ac679a2ac5ed056d13e] Added cases for row, c and v elements. 2010-12-05 Kohei Yoshida [b5f7fd359bb17259925a6a5711811b2cc73f90a0] Creat an internal sheet instance at the start of parsing the sheet xml fragments. 2010-12-05 Kohei Yoshida [da799e27a35008e6602659f65ad31b9a1851837d] Added class diagram. 2010-12-05 Kohei Yoshida [e67e20c3ad6ae057b86383c9706e1bdea472b74a] More content parsing on xlsx sheet.xml. 2010-12-05 Kohei Yoshida [bcf2f3f4cbe746c8bb50777ab75ba3828d4439c2] Rename spreadsheetML namespace to xlsx for the sake of brevity. 2010-12-05 Kohei Yoshida [3789b6c3ee888084eb6d393ed5557bead34a6491] More overloaded operators. 2010-12-05 Kohei Yoshida [13b766bd8c0e67f955e287d61e2e61efa6ab9681] Make pstring usable with ostream object. 2010-12-05 Kohei Yoshida [05fe612894eab420029dedf06a390be9dd97eb17] Hard-code xmlns token name; we need this for default namespace attribute. 2010-12-04 Kohei Yoshida [d068e63d6ceafda24eda7c392d07ea2eb58a1efd] Renamed odstable.* to sheet.* to reflect the class name change. 2010-12-04 Kohei Yoshida [1672489129cb408b2e3115c9a427485531fea159] Added comments. 2010-12-04 Kohei Yoshida [ccaf838d24b64d1eb7be30018d9174a02909fe8d] Renamed model::ods_table to model::sheet. I'm gonna use this class as an internal generic sheet object, for both ods and xlsx parser. So the name ods_ was not appropriate. 2010-05-08 Kohei Yoshida [7ffb5fa6a24df608d1add329fdf48c8a839d9860] Cleaning 2010-05-08 Kohei Yoshida [f4e120f75f6ff305487a46fefcd6b9e27fcbbff5] Removed _Char type name from the sax parser template. Let's always use char as the char type. 2010-05-08 Kohei Yoshida [201ba6f295a835aa70581ccf1ba2075afbd084e1] Use char pointer to keep track of current position & return current char. Doing this is slightly faster than array-type access via [] operator. 2010-05-08 Kohei Yoshida [db31009de400fe72324f5437f55464515898ca33] Generate a flat list of tokens in addition to C++ code. 2010-05-08 Kohei Yoshida [b362ea4ec28e8ae9849d7983b80ec6927ba4a9e6] Slightly better string hash algorithm. 2010-05-08 Kohei Yoshida [31fef6f5d27b84b9a72f9197bfc0611d4e069f76] Modify the rest of the handler/context classes to use the new sax parser. 2010-05-08 Kohei Yoshida [208904d0e88e74fd051f6cb40001affbb5aa2371] Removed unnecessary using namespace std statements. 2010-05-08 Kohei Yoshida [1a365b08fa6770ffa0dd4767ff46e66b404c8bf1] Store attributes for later processing in the handler class. 2010-05-08 Kohei Yoshida [4a9b9de6f137143288cccf8d4ea0fa4174e99feb] Remove extra indent from the closing '>' of opening elements. 2010-05-05 Kohei Yoshida [047e593bf97e334343df4852b77f1cbf12b3f9ff] Put raw token strings and its associated classes into anonymous namespace once again. 2010-05-05 Kohei Yoshida [9c8ab07867f044aafcec1a2b9de8c2585ef0045b] Integrate token generator into the sax parser, and convert strings into tokens as we parse the stream. 2010-05-04 Kohei Yoshida [4cbd65ed5e63f3f526de337ccb0c86ce7185c62b] Let's use char as char_type in the sax_parser. 2010-05-04 Kohei Yoshida [e45581da81d333ecf166d14fa6843abdfc7591fb] Disable string processing in libxml handler, which cuts a lot from the parsing performance. 2010-05-04 Kohei Yoshida [efa5cc2bf8914077113449ab3ae3b61e3ca7bb67] Separated common tokens implementation code into tokens.inl. 2010-05-04 Kohei Yoshida [64f7e1b712352445a29180f58c9e176c94b5899d] Use pstring to store element names, attribute names and values in the sax parser. Doing so is much much cheater than using std::string to store those strings. There is very little overhead for doing this, in fact. 2010-05-04 Kohei Yoshida [849924f679b33b8aed003fcea0f848a0b28492fb] Added c_str() to pstring class. 2010-05-04 Kohei Yoshida [c71827bb0926537e1ca586acd3c8f01b1e839fb9] Use pstring for the xlsx parser as well. 2010-05-04 Kohei Yoshida [83d1228bcebc6285b2030101bbe289394e93b5c4] Code cleanup. 2010-05-04 Kohei Yoshida [4619f791a787987db1783aaf393b69902963a443] Implemented pstring, which acts like std::string but doesn't store a char array of its own. 2010-05-02 Kohei Yoshida [d26aac7df0d2ce745f381784a7e0f2857d2e4db1] Comment out all that is very costly, for now. 2010-05-02 Kohei Yoshida [bab3fd31c1dc003155f595002f87fa27231859df] Disable debug output for the new sax parser. 2010-05-02 Kohei Yoshida [8d306c1234e3f8986fba71afd33ab7fc043dd5ec] Parse closing elements. 2010-05-02 Kohei Yoshida [5713d4706a115079731afdc937e9c1f62d241a8f] Better debug output. 2010-05-02 Kohei Yoshida [15df55bdc56e2991022a0ebe229216e579ed308d] Parsing elements. 2010-05-02 Kohei Yoshida [df8c92a448d47527aed37fd2aaee01ea0b558474] More on parsing blank chars. 2010-05-02 Kohei Yoshida [4efb520a5d345811036347af15689e637e3ca4cf] Code cleanup. 2010-05-02 Kohei Yoshida [a1627a061a37bd3041c0ee57e05e6c7c89b13ca2] Parse XML header. 2010-05-02 Kohei Yoshida [fa909e4a2e17a143526f92deee2fac8206999b0c] Added hook for a template-based sax parser. 2010-05-01 Kohei Yoshida [c7e7c19399d18dfc8541a996371a2cc87f3bb559] Added slickedit workspace files. 2010-05-01 Kohei Yoshida [af7691a179676a8ccca571dc16d2e92472404a9c] Fixed build so that both orcus-ods and orcus-xlsx can be built without altering compiler switch. 2010-05-01 Kohei Yoshida [b9e1b10bae53c7fd19d3171fbc13b0c4703d5991] Added license header. 2010-05-01 Kohei Yoshida [ac2254445cf8a9538f1ef75086c76f6edb194d38] Fixed parallel build issue wrt token file generation. 2010-04-30 Kohei Yoshida [96de136d20c3edf1eae034b4d1855790b2143712] More on xlsx parsing. 2010-04-30 Kohei Yoshida [bdade14ef7bef5193c83d5818695a54ea15d2f01] More file for the xlsx parser. 2010-04-30 Kohei Yoshida [f8b117284dda2a00fa8cf68925c9ac162803fc79] New files for xlsx parser. 2010-04-30 Kohei Yoshida [df3fb072b7744f1b81ae1bf628b0ad93cb69af60] Finally got the ooxml parser to build. But I need to resolve the token name clash somehow... 2010-04-30 Kohei Yoshida [dbbefc90440aab2bc75144db4c8b3324e522c725] Read content of sheet1.xml. 2010-04-30 Kohei Yoshida [6a4b8ada498ceeadc1669a3a3ad5881992709e26] More on xlsx parser. 2010-04-30 Kohei Yoshida [41963fffe853a16de723095dfb68212c0f209370] More on ooxml xlsx parser. 2010-04-30 Kohei Yoshida [7265b82750199d6fd46a60b23bb9ced8ea346d9c] Extract xml tokens from ooxml schema files. 2010-04-30 Kohei Yoshida [4dd1f602ca4fc359814fb33c5b1e144790d2c817] Moved ODF handling files into odf directory. 2010-04-30 Kohei Yoshida [e83f4e0fe926ffd1106dc9482fea74d3271c7686] model object files into obj/model/*.o. 2010-04-30 Kohei Yoshida [6eeeadc94fc3f6210b1a47d6501d9d6ad137e104] Totally removed $(EXEC) with orcus-ods. 2010-04-30 Kohei Yoshida [e293f3d72b42eab00c7f9f89678022744c16e533] Renamed main.cpp to orcus_ods.cpp. 2010-04-30 Kohei Yoshida [29e3a868455841e64156f9ea0c11b9bffd0a6f0b] Renamed executable to orcus-ods. 2010-04-30 Kohei Yoshida [1d0f1c4733cd9f95345b74a0a18dcf2e9891ba17] Renamed a bunch of token-related files with a odf_ prefix. 2010-04-09 Kohei Yoshida [c752aaa0f94f63554d600443147ed529034ad629] Use ::std::string instead of const char* when converting to tokens. This speeds up the performance of name_to_token somewhat. 2010-04-09 Kohei Yoshida [89ebb184c3d547fcaad6f56e28f1137b801db22b] Reserve only 15 chars instead of 100. This improves performance. 2010-04-09 Kohei Yoshida [55ef441c3cb86cd41de1a1bbd37641dd147f0824] Added new header to store global items for the model namespace. 2010-04-09 Kohei Yoshida [0d27cef39f5b38f762bdc5a19bbbfda43f439087] Put cell values into ods_table instances, and print cell contents to html. 2010-04-08 Kohei Yoshida [faa73697982189be1458577812ad7380b6af3cd3] Made a header guard longer and more complex. 2010-04-08 Kohei Yoshida [39bd8a62ae30d1a1050b4feec15fdda7b657e097] Return a const ref of string. 2010-04-08 Kohei Yoshida [d65221299b39f33d73d4202442cde867ea27b14f] Store the content of and set it as a cell value to the table model. 2010-04-08 Kohei Yoshida [7fca80b1580575ea52f98284aa1f382dd81f8a48] Added end_child_context() as a means for the child context to talk to its parent. 2010-04-08 Kohei Yoshida [abad8782ca7fbe4494b1e052400597582c6fb528] Use unordered_map instead of hash_map. hash_map is deprecated. 2010-04-05 Kohei Yoshida [79d9404ffb3a445c1c8f1863877bc0637055c5f5] More on processing content. 2010-04-05 Kohei Yoshida [ff09014c936e44534f9fb27999bc3d60d77295e4] Removed start_context() and end_context(). I can use constructor and destructor instead. 2010-04-05 Kohei Yoshida [e14c0bcc0d23d472cc053221c0f923ad55c8596a] Use text_para_context to pick up contents. 2010-04-05 Kohei Yoshida [19dbbe2103b3934fee06e06ab8afdf0ada40cc6b] Added text_para_context to handle element structure. 2010-04-05 Kohei Yoshida [8910a9357f288d8689b1110dc6642c42f8edf731] Renamed files. 2010-04-05 Kohei Yoshida [fc379a822621b37ceab9aa48902c75c219f3c63b] Renamed ods_context_base to xml_context_base, since that class is not ods specific. 2010-04-04 Kohei Yoshida [fec27490da1ecafe89bb616436f89cbd30c67521] Handle stacking of multiple contexts in the xml stream handler. 2010-04-04 Kohei Yoshida [00e6bbc74327d192d2aaddf46360cce5b6c5863e] Add new virtual methods to query whether or not to create a child context. 2010-04-04 Kohei Yoshida [57219a7768bc59e8da784cb1d18f03802a6a533f] Move the element stack handling to the base class. 2010-04-04 Kohei Yoshida [6ab7a6b5e4906dcf872e408a6b31fcb8f6fc5e14] Handle characters in the context classes. 2010-04-04 Kohei Yoshida [e28699c2f184a8cde17ac88b60b6a8a3d9903f1b] Implemented stacked contexts in the handler class. 2010-04-04 Kohei Yoshida [ccbf0f9f851ca4f04739bc1e7ec0e03505c2af70] Moved ods_context_base into its own files. 2010-04-04 Kohei Yoshida [8e5fe9aa27b1ea85b57f1fe6b85da39a97ad8c3b] Make certain methods private. 2010-04-04 Kohei Yoshida [f7637bd7deefe371b5c1924cb3ecd1e7aeec4cb1] Moved all the xml stack handling to the context class from the handler class. 2010-04-04 Kohei Yoshida [a97a44b8176ede1391978a4396d536954ed1c133] Debug output for repetition of rows and cells. 2010-04-04 Kohei Yoshida [27986d4f9003c5c473614c8aa7116c3e39fb2876] Pick up table-cell attributes, especially the table:number-columns-repeated attribute. 2010-04-04 Kohei Yoshida [28cb599d0741b349670b55af47d62a676fbdcef4] Added test document that loads slow in OOo due to too many cell styles. 2010-04-03 Kohei Yoshida [81f26ffcc48f58c0810e647fd6dddbafcaf2236c] Pick up table-row attributes, especially number-rows-repeated. 2010-04-03 Kohei Yoshida [99000b9c2715f5437ab774ede9507c1964a96161] Added a test file with Japanese content. 2010-04-03 Kohei Yoshida [e3dd6a4408aa8dcd2b257f695e7d7ffcc71874e1] Write html table for each sheet imported, and display their names. 2010-04-03 Kohei Yoshida [5cee489db52b46e7a3c51a3a1831564932082c6b] Pick up table name from the table:name attribute. 2010-04-03 Kohei Yoshida [73cb4551100a3a3120f14db9e7e2edff74a21567] Added skeleton files for ods_table class, under namespace 'model'. 2010-04-03 Kohei Yoshida [0cba348bdceffad4ee443c59a67442a25132780d] More on content.xml parsing. 2010-04-03 Kohei Yoshida [706f014d5ec3b74aa4f5fd1f9dc28b21849f0e5c] Pass parent element to the element handlers. 2010-04-03 Kohei Yoshida [82862adfa556cff1e7f7bb63ed19ec972bd1d095] Print parsed content of content.xml to html for debugging. 2010-04-03 Kohei Yoshida [a14f7e526726f84846a137fe24c19bf343baa0c6] Get parent xml element to branch element handling. 2010-04-03 Kohei Yoshida [0305d3cf4c215d260b222cdc2c3f3d2bb94f7e0b] Print warnings on unhandled elements. 2010-04-03 Kohei Yoshida [4b19defe8290aa2f70756fa1919eba4ff6b7dc61] More on parsing ods content.xml. 2010-04-03 Kohei Yoshida [9d3ffe93d09dcdf19915ba7f07f617f7c0444be8] Code cleanup. 2010-04-03 Kohei Yoshida [562cee1b83ad4ee19df14bf5be01fad82166341d] Renamed ods_context_base to ods_content_xml_context. We should have one context class for each xml stream. 2010-04-03 Kohei Yoshida [9fc15c5ca2850233b9153876ac0e8fae83a777af] More on ods' context.xml parsing. 2010-04-02 Kohei Yoshida [f2de245b887204ba50703dd63b81b2e917b0e1c8] Instantiate ods context class and pass it to each ods handler. 2010-04-02 Kohei Yoshida [4ae4af692e6a91b59f340b2e4aa39eb0c1298aed] Added skeleton files for ods_context_test. Class ods_context_test is a test implementation of ods_context_base, used only for testing. 2010-04-02 Kohei Yoshida [e22cbc92a2a7ff123fe3ccca0a3f7f50f12d655a] Added ods_context_base skeleton files. 2010-04-02 Kohei Yoshida [b8d7724b28594372cb3980333ff2b2ea914c1d14] Separated ods handler class into own files. 2010-04-01 Kohei Yoshida [f2b45129d3c448c81ee1128022beb67391ad3226] Pass elements etc from the parser to the handler. 2010-04-01 Kohei Yoshida [269c6ded4221886071b1796db8b6030920e4c8cc] Have gen-token script generate constants into a .inl file. 2010-03-31 Kohei Yoshida [920fb5038fe72d8fc200cf1c480899bad3b46d3e] Add class for handling content.xml of ods document, and pass that to the parser. 2010-03-31 Kohei Yoshida [f14186df62e85609b3ae0b806cf1aace4581c37c] XML handler class to handle specific XML structures. It's still a skeleton class. 2010-03-28 Kohei Yoshida [195b1e1b603afef1c57d696cb050318b5c5d0054] Added test document from George Ou, which is probably one of the worst case scenarios. 2010-03-28 Kohei Yoshida [c7dc98128c0a8637ba65aa05e78153542eb9c9fc] Some string hash optimization. Reversing the bits of the string size as the initial hash value makes the query speed a bit faster. 2010-03-28 Kohei Yoshida [9f72f38fc252ce30ddb49667bd9546f22ff7b776] Run gen-tokens script before the headers, since one of the headers get generated by the script. 2010-03-28 Kohei Yoshida [0f94026cbe7fa6f352ff63c1b7b21a07bcf69357] Forgot to add this file... 2010-03-27 Kohei Yoshida [3c4d7badaebd7c25f957b74cf55b588ca58d7e32] Convert textural element names into a pair of tokens during the parse. 2010-03-27 Kohei Yoshida [d554ddb9927df7d95fa4e49990738f25f69a43eb] Add methods for namespace tokens in the 'tokens' class. 2010-03-27 Kohei Yoshida [6f500f99cf700fb7cc04ead4cbed2897d08be9ab] Generate name array for the namespace tokens as well. 2010-03-27 Kohei Yoshida [6b3e59d16cf2e70123666d18ee2b4d3be1e97264] Separate namespace tokens from the normal tokens. 2010-03-27 Kohei Yoshida [e33a00f1ca7375ec0acd8e2999ef249df5e4a58b] Return XML_UNKNOWN_TOKEN when the token name is not found. 2010-03-27 Kohei Yoshida [0fe3445cc4a179692e1b0cdb28bd8a14d4600712] Split the main() method code. 2010-03-27 Kohei Yoshida [b79c09fa2bc0258e3064c59277342ce39404407d] Make token generation part of the build dependency. 2010-03-27 Kohei Yoshida [10677294ed6f10f3f5a7363b59786ffb7ff573f5] Use mutex guard class for exception safety. 2010-03-27 Kohei Yoshida [d1e2d86d4cb4cd5b404143efb1ddb7249661b265] Finished up the tokens class definition. The class should be usable now. 2010-03-27 Kohei Yoshida [79def6dab0febc67e729d9a57f59d91db22861ef] More on token generation & added token handler class. The whole thing now compiles. 2010-03-27 Kohei Yoshida [4519855aec9790d0b645b6ac65d7d06676af8b13] More on token generation. 2010-03-27 Kohei Yoshida [a0e93d2881223f5e05ff5747e17e379c3b98273d] More on token generation script. 2010-03-27 Kohei Yoshida [29c5a42b04de4275f5884e776f4c601b5dfbd5e1] Add script to parse the ODF schema and pick up a set of unique tokens. 2010-03-27 Kohei Yoshida [56670c4285613785dd07fae0304539cce511ca45] Added latest ODF schema file. 2010-03-27 Kohei Yoshida [f6aca50f1ebb666bc3eaa21ae5b47bf1acf7e7bf] Code cleanup. 2010-03-27 Kohei Yoshida [0af98d42ef39f1a46b998985cb24b946218cb9b9] Start and end document sax handlers. 2010-03-27 Kohei Yoshida [6e0d313bc8e205754862c35c8b0e181bd9b04bc6] Initial skeleton code for implementing libxml's sax interface. 2010-03-27 Kohei Yoshida [036c5fe8dbd6c15bf6944f4310a9130b2c3d82ca] Use libxml to read and build xml doc tree from xml in-memory stream. 2010-03-27 Kohei Yoshida [c6d606319bce0918afff69a3496917c69f09ea1e] dump content to stdout during parsing of content.xml. 2010-03-27 Kohei Yoshida [7d98a2b678a1f2dca9bd3eeeae42caffc9488382] added xmlparser skeleton files. 2010-03-27 Kohei Yoshida [3293e58a5d8db727b6e5ea3e5af0b477b83218d8] only read content.xml for now. 2010-03-27 Kohei Yoshida [8e26709a93431e8341e30363f00d248bb3a10aaa] Turn off parts that are specific to libgsf's own ODF support. 2010-03-27 Kohei Yoshida [949d70fe8467d204342e97b9fab93e163d57f1fa] Fixed makefile header dependency. 2010-03-25 Kohei Yoshida [ad3158ec9bc9378d91f3e49d6c7af0a910d0c05b] Use get_gsf_ooo_ns() instead as the header says. 2010-03-25 Kohei Yoshida [4aa74be86dd6ea998c2a0bc1c047575f51c997e5] Initial code on parsing xml sub-stream. 2010-03-25 Kohei Yoshida [4acc83c58b66e107701fc220002633194c77edc1] Squashed tabs. 2010-03-25 Kohei Yoshida [a5ee2d7f26b133170a1c0a180d63c7b008162880] Initial commit. liborcus-0.9.2/test-driver0000755000175000017500000001027712540653525014224 0ustar renerene#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2013 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then estatus=1 fi case $estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: liborcus-0.9.2/include/0000755000175000017500000000000012540654317013442 5ustar renereneliborcus-0.9.2/include/Makefile.in0000644000175000017500000004573312540653650015522 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = include DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = orcus all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/include/Makefile.am0000644000175000017500000000002012535701142015457 0ustar renereneSUBDIRS = orcus liborcus-0.9.2/include/orcus/0000755000175000017500000000000012540654317014575 5ustar renereneliborcus-0.9.2/include/orcus/sax_parser.hpp0000644000175000017500000003117012535701142017450 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SAX_PARSER_HPP #define ORCUS_SAX_PARSER_HPP #include "sax_parser_base.hpp" namespace orcus { struct sax_parser_default_config { /** * When true, the parser will throw an exception if the xml stream doesn't * begin with a declaration. When false, the parser will keep * parsing regardless of whether or not the xml stream begins with a * declaration. */ static const bool strict_xml_declaration = true; }; /** * Template-based sax parser that doesn't use function pointer for * callbacks for better performance, especially on large XML streams. */ template class sax_parser : public sax::parser_base { public: typedef _Handler handler_type; typedef _Config config_type; sax_parser(const char* content, const size_t size, handler_type& handler); ~sax_parser(); void parse(); private: /** * Parse XML header that occurs at the beginning of every XML stream i.e. * */ void header(); void body(); void element(); void element_open(const char* begin_pos); void element_close(const char* begin_pos); void special_tag(); void declaration(const char* name_check); void cdata(); void doctype(); void characters(); void attribute(); private: handler_type& m_handler; }; template sax_parser<_Handler,_Config>::sax_parser( const char* content, const size_t size, handler_type& handler) : sax::parser_base(content, size), m_handler(handler) { } template sax_parser<_Handler,_Config>::~sax_parser() { } template void sax_parser<_Handler,_Config>::parse() { m_pos = 0; m_nest_level = 0; m_char = m_content; header(); blank(); body(); assert(m_buffer_pos == 0); } template void sax_parser<_Handler,_Config>::header() { // we don't handle multi byte encodings so we can just skip bom entry if exists. skip_bom(); blank(); if (!has_char() || cur_char() != '<') throw sax::malformed_xml_error("xml file must begin with '<'."); if (config_type::strict_xml_declaration) { if (next_char_checked() != '?') throw sax::malformed_xml_error("xml file must begin with ' void sax_parser<_Handler,_Config>::body() { while (has_char()) { if (cur_char() == '<') { element(); if (!m_root_elem_open) // Root element closed. Stop parsing. return; } else if (m_nest_level) // Call characters only when in xml hierarchy. characters(); else next(); } } template void sax_parser<_Handler,_Config>::element() { assert(cur_char() == '<'); const char* pos = m_char; char c = next_char_checked(); switch (c) { case '/': element_close(pos); break; case '!': special_tag(); break; case '?': declaration(NULL); break; default: if (!is_alpha(c)) throw sax::malformed_xml_error("expected an alphabet."); element_open(pos); } } template void sax_parser<_Handler,_Config>::element_open(const char* begin_pos) { assert(is_alpha(cur_char())); sax::parser_element elem; element_name(elem, begin_pos); while (true) { blank(); char c = cur_char(); if (c == '/') { // Self-closing element: if (next_char() != '>') throw sax::malformed_xml_error("expected '/>' to self-close the element."); next(); elem.end_pos = m_char; m_handler.start_element(elem); reset_buffer_pos(); m_handler.end_element(elem); #if ORCUS_DEBUG_SAX_PARSER cout << "element_open: ns='" << elem.ns << "', name='" << elem.name << "' (self-closing)" << endl; #endif return; } else if (c == '>') { // End of opening element: next(); elem.end_pos = m_char; nest_up(); m_handler.start_element(elem); reset_buffer_pos(); #if ORCUS_DEBUG_SAX_PARSER cout << "element_open: ns='" << elem.ns << "', name='" << elem.name << "'" << endl; #endif return; } else attribute(); } } template void sax_parser<_Handler,_Config>::element_close(const char* begin_pos) { assert(cur_char() == '/'); nest_down(); next_check(); sax::parser_element elem; element_name(elem, begin_pos); if (cur_char() != '>') throw sax::malformed_xml_error("expected '>' to close the element."); next(); elem.end_pos = m_char; m_handler.end_element(elem); #if ORCUS_DEBUG_SAX_PARSER cout << "element_close: ns='" << elem.ns << "', name='" << elem.name << "'" << endl; #endif if (!m_nest_level) m_root_elem_open = false; } template void sax_parser<_Handler,_Config>::special_tag() { assert(cur_char() == '!'); // This can be either void sax_parser<_Handler,_Config>::declaration(const char* name_check) { assert(cur_char() == '?'); next_check(); // Get the declaration name first. pstring decl_name; name(decl_name); #if ORCUS_DEBUG_SAX_PARSER cout << "sax_parser::declaration: start name='" << decl_name << "'" << endl; #endif if (name_check && decl_name != name_check) { std::ostringstream os; os << "declaration name of '" << name_check << "' was expected, but '" << decl_name << "' was found instead."; throw sax::malformed_xml_error(os.str()); } m_handler.start_declaration(decl_name); blank(); // Parse the attributes. while (cur_char_checked() != '?') { attribute(); blank(); } if (next_char_checked() != '>') throw sax::malformed_xml_error("declaration must end with '?>'."); m_handler.end_declaration(decl_name); reset_buffer_pos(); next(); #if ORCUS_DEBUG_SAX_PARSER cout << "sax_parser::declaration: end name='" << decl_name << "'" << endl; #endif } template void sax_parser<_Handler,_Config>::cdata() { size_t len = remains(); assert(len > 3); // Parse until we reach ']]>'. const char* p0 = m_char; size_t i = 0, match = 0; for (char c = cur_char(); i < len; ++i, c = next_char()) { if (c == ']') { // Be aware that we may encounter a series of more than two ']' // characters, in which case we'll only count the last two. if (match == 0) // First ']' ++match; else if (match == 1) // Second ']' ++match; } else if (c == '>' && match == 2) { // Found ']]>'. size_t cdata_len = i - 2; m_handler.characters(pstring(p0, cdata_len), false); next(); return; } else match = 0; } throw sax::malformed_xml_error("malformed CDATA section."); } template void sax_parser<_Handler,_Config>::doctype() { // Parse the root element first. sax::doctype_declaration param; name(param.root_element); blank(); // Either PUBLIC or SYSTEM. size_t len = remains(); if (len < 6) sax::malformed_xml_error("DOCTYPE section too short."); param.keyword = sax::doctype_declaration::keyword_private; char c = cur_char(); if (c == 'P') { if (next_char() != 'U' || next_char() != 'B' || next_char() != 'L' || next_char() != 'I' || next_char() != 'C') throw sax::malformed_xml_error("malformed DOCTYPE section."); param.keyword = sax::doctype_declaration::keyword_public; } else if (c == 'S') { if (next_char() != 'Y' || next_char() != 'S' || next_char() != 'T' || next_char() != 'E' || next_char() != 'M') throw sax::malformed_xml_error("malformed DOCTYPE section."); } next_check(); blank(); has_char_throw("DOCTYPE section too short."); // Parse FPI. value(param.fpi, false); has_char_throw("DOCTYPE section too short."); blank(); has_char_throw("DOCTYPE section too short."); if (cur_char() == '>') { // Optional URI not given. Exit. #if ORCUS_DEBUG_SAX_PARSER cout << "sax_parser::doctype: root='" << param.root_element << "', fpi='" << param.fpi << "'" << endl; #endif m_handler.doctype(param); next(); return; } // Parse optional URI. value(param.uri, false); has_char_throw("DOCTYPE section too short."); blank(); has_char_throw("DOCTYPE section too short."); if (cur_char() != '>') throw sax::malformed_xml_error("malformed DOCTYPE section - closing '>' expected but not found."); #if ORCUS_DEBUG_SAX_PARSER cout << "sax_parser::doctype: root='" << param.root_element << "', fpi='" << param.fpi << "' uri='" << param.uri << "'" << endl; #endif m_handler.doctype(param); next(); } template void sax_parser<_Handler,_Config>::characters() { size_t first = m_pos; const char* p0 = m_char; for (; has_char(); next()) { if (cur_char() == '<') break; if (cur_char() == '&') { // Text span with one or more encoded characters. Parse using cell buffer. cell_buffer& buf = get_cell_buffer(); buf.reset(); buf.append(p0, m_pos-first); characters_with_encoded_char(buf); if (buf.empty()) m_handler.characters(pstring(), false); else m_handler.characters(pstring(buf.get(), buf.size()), true); return; } } if (m_pos > first) { size_t size = m_pos - first; pstring val(m_content + first, size); m_handler.characters(val, false); } } template void sax_parser<_Handler,_Config>::attribute() { sax::parser_attribute attr; pstring attr_ns_name, attr_name, attr_value; attribute_name(attr.ns, attr.name); #if ORCUS_DEBUG_SAX_PARSER std::ostringstream os; os << "sax_parser::attribute: ns='" << attr.ns << "', name='" << attr.name << "'"; #endif char c = cur_char(); if (c != '=') { std::ostringstream os; os << "Attribute must begin with 'name=..'. (ns='" << attr.ns << "', name='" << attr.name << "')"; throw sax::malformed_xml_error(os.str()); } next_check(); attr.transient = value(attr.value, true); if (attr.transient) // Value is stored in a temporary buffer. Push a new buffer. inc_buffer_pos(); #if ORCUS_DEBUG_SAX_PARSER os << " value='" << attr.value << "'" << endl; cout << os.str(); #endif m_handler.attribute(attr); } } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/orcus_ods.hpp0000644000175000017500000000240412535701142017277 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ORCUS_ODS_HPP #define ORCUS_ORCUS_ODS_HPP #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/env.hpp" #include "interface.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_factory; }} struct orcus_ods_impl; class zip_archive; class ORCUS_DLLPUBLIC orcus_ods : public iface::import_filter { orcus_ods(const orcus_ods&); // disabled orcus_ods& operator= (const orcus_ods&); // disabled public: orcus_ods(spreadsheet::iface::import_factory* factory); ~orcus_ods(); static bool detect(const unsigned char* blob, size_t size); virtual void read_file(const std::string& filepath); virtual const char* get_name() const; private: static void list_content(const zip_archive& archive); void read_content(const zip_archive& archive); void read_content_xml(const unsigned char* p, size_t size); private: orcus_ods_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/string_pool.hpp0000644000175000017500000000417712535701142017647 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_STRING_POOL_HPP__ #define __ORCUS_STRING_POOL_HPP__ #include #include #include #include #include "env.hpp" #include "pstring.hpp" namespace orcus { /** * Implements string hash map. */ class ORCUS_PSR_DLLPUBLIC string_pool { struct string_hash { size_t operator() (const std::string* p) const; private: boost::hash m_hash; }; struct string_equal_to { bool operator() (const std::string* p1, const std::string* p2) const; private: std::equal_to m_equal_to; }; typedef boost::unordered_set string_set_type; typedef boost::ptr_vector string_store_type; public: string_pool(); ~string_pool(); /** * Intern a string. * * @param str string to intern. It must be null-terminated. * * @return pair whose first value is the interned string, and the second * value specifies whether it is a newly created instance (true) * or a reuse of an existing instance (false). */ std::pair intern(const char* str); /** * Intern a string. * * * @param str string to intern. It doesn't need to be null-terminated. * @param n length of the string. * * @return see above. */ std::pair intern(const char* str, size_t n); /** * Intern a string. * * @param str string to intern. * * @return see above. */ std::pair intern(const pstring& str); void dump() const; void clear(); size_t size() const; private: string_set_type m_set; string_store_type m_store; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/sax_ns_parser.hpp0000644000175000017500000001532212535701142020151 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SAX_NS_PARSER_HPP__ #define __ORCUS_SAX_NS_PARSER_HPP__ #include "sax_parser.hpp" #include "xml_namespace.hpp" #include #include namespace orcus { struct sax_ns_parser_element { xmlns_id_t ns; // element namespace pstring ns_alias; // element namespace alias pstring name; // element name const char* begin_pos; // position of the opening brace '<'. const char* end_pos; // position of the char after the closing brace '>'. }; struct sax_ns_parser_attribute { xmlns_id_t ns; // attribute namespace pstring ns_alias; // attribute namespace alias pstring name; // attribute name pstring value; // attribute value bool transient; // whether or not the attribute value is transient. }; namespace __sax { struct entity_name { pstring ns; pstring name; entity_name(const pstring& _ns, const pstring& _name) : ns(_ns), name(_name) {} bool operator== (const entity_name& other) const { return other.ns == ns && other.name == name; } struct hash { size_t operator() (const entity_name& v) const { static pstring::hash hasher; return hasher(v.ns) + hasher(v.name); } }; }; typedef boost::unordered_set ns_keys_type; typedef boost::unordered_set entity_names_type; struct elem_scope { xmlns_id_t ns; pstring name; ns_keys_type ns_keys; }; typedef boost::ptr_vector elem_scopes_type; class pop_ns_by_key : std::unary_function { xmlns_context& m_cxt; public: pop_ns_by_key(xmlns_context& cxt) : m_cxt(cxt) {} void operator() (const pstring& key) { m_cxt.pop(key); } }; } /** * SAX based XML parser with proper namespace handling. */ template class sax_ns_parser { public: typedef _Handler handler_type; sax_ns_parser(const char* content, const size_t size, xmlns_context& ns_cxt, handler_type& handler); ~sax_ns_parser(); void parse(); private: /** * Re-route callbacks from the internal sax_parser into sax_ns_parser * callbacks. */ class handler_wrapper { __sax::elem_scopes_type m_scopes; __sax::ns_keys_type m_ns_keys; __sax::entity_names_type m_attrs; sax_ns_parser_element m_elem; sax_ns_parser_attribute m_attr; xmlns_context& m_ns_cxt; handler_type& m_handler; bool m_declaration; public: handler_wrapper(xmlns_context& ns_cxt, handler_type& handler) : m_ns_cxt(ns_cxt), m_handler(handler), m_declaration(false) {} void doctype(const sax::doctype_declaration& dtd) { m_handler.doctype(dtd); } void start_declaration(const pstring& name) { m_declaration = true; m_handler.start_declaration(name); } void end_declaration(const pstring& name) { m_declaration = false; m_handler.end_declaration(name); } void start_element(const sax::parser_element& elem) { m_scopes.push_back(new __sax::elem_scope); __sax::elem_scope& scope = m_scopes.back(); scope.ns = m_ns_cxt.get(elem.ns); scope.name = elem.name; scope.ns_keys.swap(m_ns_keys); m_elem.ns = scope.ns; m_elem.ns_alias = elem.ns; m_elem.name = scope.name; m_elem.begin_pos = elem.begin_pos; m_elem.end_pos = elem.end_pos; m_handler.start_element(m_elem); m_attrs.clear(); } void end_element(const sax::parser_element& elem) { __sax::elem_scope& scope = m_scopes.back(); if (scope.ns != m_ns_cxt.get(elem.ns) || scope.name != elem.name) throw sax::malformed_xml_error("mis-matching closing element."); m_elem.ns = scope.ns; m_elem.ns_alias = elem.ns; m_elem.name = scope.name; m_elem.begin_pos = elem.begin_pos; m_elem.end_pos = elem.end_pos; m_handler.end_element(m_elem); // Pop all namespaces declared in this scope. std::for_each(scope.ns_keys.begin(), scope.ns_keys.end(), __sax::pop_ns_by_key(m_ns_cxt)); m_scopes.pop_back(); } void characters(const pstring& val, bool transient) { m_handler.characters(val, transient); } void attribute(const sax::parser_attribute& attr) { if (m_declaration) { // XML declaration attribute. Pass it through to the handler without namespace. m_handler.attribute(attr.name, attr.value); return; } if (m_attrs.count(__sax::entity_name(attr.ns, attr.name)) > 0) throw sax::malformed_xml_error("You can't define two attributes of the same name in the same element."); m_attrs.insert(__sax::entity_name(attr.ns, attr.name)); if (attr.ns.empty() && attr.name == "xmlns") { // Default namespace m_ns_cxt.push(pstring(), attr.value); m_ns_keys.insert(pstring()); return; } if (attr.ns == "xmlns") { // Namespace alias if (!attr.name.empty()) { m_ns_cxt.push(attr.name, attr.value); m_ns_keys.insert(attr.name); } return; } m_attr.ns = m_ns_cxt.get(attr.ns); m_attr.ns_alias = attr.ns; m_attr.name = attr.name; m_attr.value = attr.value; m_attr.transient = attr.transient; m_handler.attribute(m_attr); } }; private: handler_wrapper m_wrapper; sax_parser m_parser; }; template sax_ns_parser<_Handler>::sax_ns_parser( const char* content, const size_t size, xmlns_context& ns_cxt, handler_type& handler) : m_wrapper(ns_cxt, handler), m_parser(content, size, m_wrapper) { } template sax_ns_parser<_Handler>::~sax_ns_parser() { } template void sax_ns_parser<_Handler>::parse() { m_parser.parse(); } } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/interface.hpp0000644000175000017500000000212612535701142017240 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_INTERFACE_HPP #define ORCUS_INTERFACE_HPP #include "env.hpp" #include namespace orcus { struct config; namespace iface { class ORCUS_DLLPUBLIC import_filter { struct impl; impl* mp_impl; public: import_filter(); virtual ~import_filter(); virtual void read_file(const std::string& filepath) = 0; virtual const char* get_name() const = 0; void set_config(const orcus::config& v); const orcus::config& get_config() const; }; class ORCUS_DLLPUBLIC document_dumper { public: virtual ~document_dumper(); virtual void dump_flat(const std::string& outdir) const = 0; virtual void dump_html(const std::string& outdir) const = 0; virtual void dump_check(std::ostream& os) const = 0; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/exception.hpp0000644000175000017500000000164712535701142017305 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_EXCEPTION_HPP__ #define __ORCUS_EXCEPTION_HPP__ #include #include #include "env.hpp" namespace orcus { class ORCUS_PSR_DLLPUBLIC general_error : public ::std::exception { public: explicit general_error(const ::std::string& msg); virtual ~general_error() throw(); virtual const char* what() const throw(); private: ::std::string m_msg; }; class ORCUS_PSR_DLLPUBLIC xml_structure_error : public general_error { public: explicit xml_structure_error(const ::std::string& msg); virtual ~xml_structure_error() throw(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/csv_parser.hpp0000644000175000017500000001313512535701142017451 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_CSV_PARSER_HPP #define ORCUS_CSV_PARSER_HPP #include "csv_parser_base.hpp" namespace orcus { template class csv_parser : public csv::parser_base { public: typedef _Handler handler_type; csv_parser(const char* p, size_t n, handler_type& hdl, const csv::parser_config& config); void parse(); private: // handlers void row(); void cell(); void quoted_cell(); void parse_cell_with_quote(const char* p0, size_t len0); /** * Push cell value to the handler. */ void push_cell_value(const char* p, size_t n); private: handler_type& m_handler; }; template csv_parser<_Handler>::csv_parser( const char* p, size_t n, handler_type& hdl, const csv::parser_config& config) : csv::parser_base(p, n, config), m_handler(hdl) {} template void csv_parser<_Handler>::parse() { #if ORCUS_DEBUG_CSV const char* p = mp_char; for (size_t i = m_pos; i < m_length; ++i, ++p) std::cout << *p; std::cout << std::endl; #endif m_handler.begin_parse(); while (has_char()) row(); m_handler.end_parse(); } template void csv_parser<_Handler>::row() { m_handler.begin_row(); while (true) { if (is_text_qualifier(cur_char())) quoted_cell(); else cell(); if (!has_char()) { m_handler.end_row(); return; } char c = cur_char(); if (c == '\n') { next(); #if ORCUS_DEBUG_CSV cout << "(LF)" << endl; #endif m_handler.end_row(); return; } assert(is_delim(c)); next(); if (m_config.trim_cell_value) skip_blanks(); } } template void csv_parser<_Handler>::cell() { const char* p = mp_char; size_t len = 0; char c = cur_char(); while (c != '\n' && !is_delim(c)) { ++len; next(); if (!has_char()) break; c = cur_char(); } if (!len) p = NULL; push_cell_value(p, len); } template void csv_parser<_Handler>::quoted_cell() { #if ORCUS_DEBUG_CSV cout << "--- quoted cell" << endl; #endif char c = cur_char(); assert(is_text_qualifier(c)); next(); // Skip the opening quote. if (!has_char()) return; const char* p0 = mp_char; size_t len = 1; for (; has_char(); next(), ++len) { c = cur_char(); #if ORCUS_DEBUG_CSV cout << "'" << c << "'" << endl; #endif if (!is_text_qualifier(c)) continue; // current char is a quote. Check if the next char is also a text // qualifier. if (has_next() && is_text_qualifier(next_char())) { next(); parse_cell_with_quote(p0, len); return; } // Closing quote. m_handler.cell(p0, len-1); next(); skip_blanks(); return; } // Stream ended prematurely. Handle it gracefully. m_handler.cell(p0, len); next(); skip_blanks(); } template void csv_parser<_Handler>::parse_cell_with_quote(const char* p0, size_t len0) { #if ORCUS_DEBUG_CSV using namespace std; cout << "--- parse cell with quote" << endl; #endif assert(is_text_qualifier(cur_char())); // Push the preceding chars to the temp buffer. m_cell_buf.reset(); m_cell_buf.append(p0, len0); // Parse the rest, until the closing quote. next(); const char* p_cur = mp_char; size_t cur_len = 0; for (; has_char(); next(), ++cur_len) { char c = cur_char(); #if ORCUS_DEBUG_CSV cout << "'" << c << "'" << endl; #endif if (!is_text_qualifier(c)) continue; if (has_next() && is_text_qualifier(next_char())) { // double quotation. Copy the current segment to the cell buffer. m_cell_buf.append(p_cur, cur_len); next(); // to the 2nd quote. p_cur = mp_char; cur_len = 0; continue; } // closing quote. Flush the current segment to the cell // buffer, push the value to the handler, and exit normally. m_cell_buf.append(p_cur, cur_len); m_handler.cell(m_cell_buf.get(), m_cell_buf.size()); next(); skip_blanks(); return; } // Stream ended prematurely. throw csv::parse_error("stream ended prematurely while parsing quoted cell."); } template void csv_parser<_Handler>::push_cell_value(const char* p, size_t n) { size_t len = n; if (m_config.trim_cell_value) { // Trim any leading blanks. for (size_t i = 0; i < n; ++i, --len, ++p) { if (!is_blank(*p)) break; } // Trim any trailing blanks. if (len) { const char* p_end = p + (len-1); for (; p != p_end; --p_end, --len) { if (!is_blank(*p_end)) break; } } } m_handler.cell(p, len); #if ORCUS_DEBUG_CSV if (len) cout << "(cell:'" << std::string(p, len) << "')" << endl; else cout << "(cell:'')" << endl; #endif } } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/mso/0000755000175000017500000000000012540654317015373 5ustar renereneliborcus-0.9.2/include/orcus/mso/Makefile.in0000644000175000017500000004220512540653650017442 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = include/orcus/mso DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(liborcus_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(liborcusdir)" HEADERS = $(liborcus_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ liborcusdir = $(includedir)/liborcus-@ORCUS_API_VERSION@/orcus/ooxml liborcus_HEADERS = \ encryption_info.hpp all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/orcus/mso/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/orcus/mso/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-liborcusHEADERS: $(liborcus_HEADERS) @$(NORMAL_INSTALL) @list='$(liborcus_HEADERS)'; test -n "$(liborcusdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(liborcusdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(liborcusdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(liborcusdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(liborcusdir)" || exit $$?; \ done uninstall-liborcusHEADERS: @$(NORMAL_UNINSTALL) @list='$(liborcus_HEADERS)'; test -n "$(liborcusdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(liborcusdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(liborcusdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-liborcusHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-liborcusHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-liborcusHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-liborcusHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/include/orcus/mso/Makefile.am0000644000175000017500000000016512535701142017422 0ustar renerene liborcusdir = $(includedir)/liborcus-@ORCUS_API_VERSION@/orcus/ooxml liborcus_HEADERS = \ encryption_info.hpp liborcus-0.9.2/include/orcus/mso/encryption_info.hpp0000644000175000017500000000163412535701142021306 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_MSO_ENCRYPTION_INFO_HPP__ #define __ORCUS_MSO_ENCRYPTION_INFO_HPP__ #include "../env.hpp" #include namespace orcus { namespace mso { struct encryption_info_reader_impl; class ORCUS_MSO_DLLPUBLIC encryption_info_reader { encryption_info_reader(const encryption_info_reader&); // disabled encryption_info_reader& operator= (const encryption_info_reader&); // disabled public: encryption_info_reader(); ~encryption_info_reader(); void read(const char* p, size_t n); private: encryption_info_reader_impl* mp_impl; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/stream.hpp0000644000175000017500000000125312535701142016573 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_STREAM_HPP__ #define __ORCUS_STREAM_HPP__ #include "env.hpp" #include namespace orcus { /** * Load the content of a file into a file stream. * * @param filepath file to open * @param strm content of the file */ ORCUS_PSR_DLLPUBLIC void load_file_content(const char* filepath, std::string& strm); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/csv_parser_base.hpp0000644000175000017500000000351012535701142020437 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef CSV_PARSER_BASE_HPP #define CSV_PARSER_BASE_HPP #include "env.hpp" #include "cell_buffer.hpp" #include "parser_global.hpp" #include #include #include #include #include #include #define ORCUS_DEBUG_CSV 0 #if ORCUS_DEBUG_CSV #include using std::cout; using std::endl; #endif namespace orcus { namespace csv { struct ORCUS_PSR_DLLPUBLIC parser_config { std::string delimiters; char text_qualifier; bool trim_cell_value:1; parser_config(); }; class ORCUS_PSR_DLLPUBLIC parse_error : public std::exception { std::string m_msg; public: parse_error(const std::string& msg); virtual ~parse_error() throw(); virtual const char* what() const throw(); }; class ORCUS_PSR_DLLPUBLIC parser_base { protected: const csv::parser_config& m_config; cell_buffer m_cell_buf; const char* mp_char; size_t m_pos; size_t m_length; protected: parser_base(const char* p, size_t n, const parser_config& config); bool has_char() const { return m_pos < m_length; } bool has_next() const { return m_pos + 1 < m_length; } void next(); char cur_char() const; char next_char() const; /** * This is different from the global 'is_blank' in that it doesn't treat * linefeed and carriage return characters as non-blanks. */ bool is_blank(char c) const; bool is_delim(char c) const; bool is_text_qualifier(char c) const; void skip_blanks(); }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/Makefile.in0000644000175000017500000005574712540653650016663 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @WITH_ODS_FILTER_TRUE@am__append_1 = \ @WITH_ODS_FILTER_TRUE@ orcus_ods.hpp @WITH_XLSX_FILTER_TRUE@am__append_2 = \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx.hpp \ @WITH_XLSX_FILTER_TRUE@ orcus_import_xlsx.hpp @WITH_XLS_XML_FILTER_TRUE@am__append_3 = \ @WITH_XLS_XML_FILTER_TRUE@ orcus_xls_xml.hpp @WITH_GNUMERIC_FILTER_TRUE@am__append_4 = \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric.hpp subdir = include/orcus DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(am__liborcus_HEADERS_DIST) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__liborcus_HEADERS_DIST = base64.hpp cell_buffer.hpp config.hpp \ css_document_tree.hpp css_parser.hpp css_parser_base.hpp \ css_selector.hpp css_types.hpp csv_parser.hpp \ csv_parser_base.hpp dom_tree.hpp env.hpp exception.hpp \ format_detection.hpp global.hpp interface.hpp measurement.hpp \ orcus_csv.hpp orcus_xml.hpp parser_global.hpp pstring.hpp \ sax_parser.hpp sax_parser_base.hpp sax_ns_parser.hpp \ sax_token_parser.hpp stream.hpp string_pool.hpp tokens.hpp \ types.hpp xml_namespace.hpp xml_structure_tree.hpp \ zip_archive.hpp zip_archive_stream.hpp orcus_ods.hpp \ orcus_xlsx.hpp orcus_import_xlsx.hpp orcus_xls_xml.hpp \ orcus_gnumeric.hpp am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(liborcusdir)" HEADERS = $(liborcus_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = mso spreadsheet liborcusdir = $(includedir)/liborcus-@ORCUS_API_VERSION@/orcus liborcus_HEADERS = base64.hpp cell_buffer.hpp config.hpp \ css_document_tree.hpp css_parser.hpp css_parser_base.hpp \ css_selector.hpp css_types.hpp csv_parser.hpp \ csv_parser_base.hpp dom_tree.hpp env.hpp exception.hpp \ format_detection.hpp global.hpp interface.hpp measurement.hpp \ orcus_csv.hpp orcus_xml.hpp parser_global.hpp pstring.hpp \ sax_parser.hpp sax_parser_base.hpp sax_ns_parser.hpp \ sax_token_parser.hpp stream.hpp string_pool.hpp tokens.hpp \ types.hpp xml_namespace.hpp xml_structure_tree.hpp \ zip_archive.hpp zip_archive_stream.hpp $(am__append_1) \ $(am__append_2) $(am__append_3) $(am__append_4) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/orcus/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/orcus/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-liborcusHEADERS: $(liborcus_HEADERS) @$(NORMAL_INSTALL) @list='$(liborcus_HEADERS)'; test -n "$(liborcusdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(liborcusdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(liborcusdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(liborcusdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(liborcusdir)" || exit $$?; \ done uninstall-liborcusHEADERS: @$(NORMAL_UNINSTALL) @list='$(liborcus_HEADERS)'; test -n "$(liborcusdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(liborcusdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(liborcusdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-liborcusHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-liborcusHEADERS .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-liborcusHEADERS install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-liborcusHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/include/orcus/Makefile.am0000644000175000017500000000213112535701142016617 0ustar renereneSUBDIRS = mso spreadsheet liborcusdir = $(includedir)/liborcus-@ORCUS_API_VERSION@/orcus liborcus_HEADERS = \ base64.hpp \ cell_buffer.hpp \ config.hpp \ css_document_tree.hpp \ css_parser.hpp \ css_parser_base.hpp \ css_selector.hpp \ css_types.hpp \ csv_parser.hpp \ csv_parser_base.hpp \ dom_tree.hpp \ env.hpp \ exception.hpp \ format_detection.hpp \ global.hpp \ interface.hpp \ measurement.hpp \ orcus_csv.hpp \ orcus_xml.hpp \ parser_global.hpp \ pstring.hpp \ sax_parser.hpp \ sax_parser_base.hpp \ sax_ns_parser.hpp \ sax_token_parser.hpp \ stream.hpp \ string_pool.hpp \ tokens.hpp \ types.hpp \ xml_namespace.hpp \ xml_structure_tree.hpp \ zip_archive.hpp \ zip_archive_stream.hpp if WITH_ODS_FILTER liborcus_HEADERS += \ orcus_ods.hpp endif # WITH_ODS_FILTER if WITH_XLSX_FILTER liborcus_HEADERS += \ orcus_xlsx.hpp \ orcus_import_xlsx.hpp endif # WITH_XLSX_FILTER if WITH_XLS_XML_FILTER liborcus_HEADERS += \ orcus_xls_xml.hpp endif # WITH_XLS_XML_FILTER if WITH_GNUMERIC_FILTER liborcus_HEADERS += \ orcus_gnumeric.hpp endif # WITH_GNUMERIC_FILTER liborcus-0.9.2/include/orcus/pstring.hpp0000644000175000017500000000436712535701142016777 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_PSTRING_HPP__ #define __ORCUS_PSTRING_HPP__ #include "orcus/env.hpp" #include #include #include #include namespace orcus { /** * This string class does not store any char arrays, but it only stores the * position of the first char in the memory, and the size of the char array. */ class ORCUS_PSR_DLLPUBLIC pstring { friend ::std::ostream& operator<< (::std::ostream& os, const pstring& str); public: pstring() : m_pos(NULL), m_size(0) {} pstring(const char* _pos) : m_pos(_pos) { m_size = std::strlen(_pos); } pstring(const char* _pos, size_t _size) : m_pos(_pos), m_size(_size) {} ::std::string str() const { return ::std::string(m_pos, m_size); } size_t size() const { return m_size; } const char& operator[](size_t idx) const { return m_pos[idx]; } pstring& operator= (const pstring& r) { m_pos = r.m_pos; m_size = r.m_size; return *this; } const char* get() const { return m_pos; } bool operator== (const pstring& r) const; bool operator!= (const pstring& r) const { return !operator==(r); } bool operator< (const pstring& r) const; bool operator== (const char* _str) const; bool operator!= (const char* _str) const { return !operator==(_str); } pstring trim() const; bool empty() const { return m_size == 0; } void clear() { m_pos = NULL; m_size = 0; } struct ORCUS_PSR_DLLPUBLIC hash { size_t operator() (const pstring& val) const; }; private: const char* m_pos; size_t m_size; }; inline ::std::ostream& operator<< (::std::ostream& os, const pstring& str) { return os << str.str(); } ORCUS_PSR_DLLPUBLIC std::string operator+ (const std::string& left, const pstring& right); ORCUS_PSR_DLLPUBLIC std::string& operator+= (std::string& left, const pstring& right); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/css_parser.hpp0000644000175000017500000003431212535701142017446 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_ORCUS_CSS_PARSER_HPP #define INCLUDED_ORCUS_CSS_PARSER_HPP #define ORCUS_DEBUG_CSS 0 #include "parser_global.hpp" #include "css_parser_base.hpp" #include #if ORCUS_DEBUG_CSS #include using std::cout; using std::endl; #endif namespace orcus { template class css_parser : public css::parser_base { public: typedef _Handler handler_type; css_parser(const char* p, size_t n, handler_type& hdl); void parse(); private: // Handlers - at the time a handler is called the current position is // expected to point to the first unprocessed non-blank character, and // each handler must set the current position to the next unprocessed // non-blank character when it finishes. void rule(); void at_rule_name(); void simple_selector_name(); void property_name(); void property(); void quoted_value(); void value(); void function_value(const char* p, size_t len); void function_rgb(bool alpha); void function_hsl(bool alpha); void function_url(); void name_sep(); void property_sep(); void block(); handler_type& m_handler; }; template css_parser<_Handler>::css_parser(const char* p, size_t n, handler_type& hdl) : css::parser_base(p, n), m_handler(hdl) {} template void css_parser<_Handler>::parse() { shrink_stream(); #if ORCUS_DEBUG_CSS std::cout << "compressed: '"; const char* p = mp_char; for (size_t i = m_pos; i < m_length; ++i, ++p) std::cout << *p; std::cout << "'" << std::endl; #endif m_handler.begin_parse(); while (has_char()) rule(); m_handler.end_parse(); } template void css_parser<_Handler>::rule() { // , ... , while (has_char()) { if (skip_comment()) continue; char c = cur_char(); if (is_alpha(c)) { simple_selector_name(); continue; } switch (c) { case '>': set_combinator(c, css::combinator_direct_child); break; case '+': set_combinator(c, css::combinator_next_sibling); break; case '.': case '#': case '@': simple_selector_name(); break; case ',': name_sep(); break; case '{': reset_before_block(); block(); break; default: css::parse_error::throw_with("rule: failed to parse '", c, "'"); } } } template void css_parser<_Handler>::at_rule_name() { assert(has_char()); assert(cur_char() == '@'); next(); char c = cur_char(); if (!is_alpha(c)) throw css::parse_error("at_rule_name: first character of an at-rule name must be an alphabet."); const char* p; size_t len; identifier(p, len); skip_blanks(); m_handler.at_rule_name(p, len); #if ORCUS_DEBUG_CSS std::string foo(p, len); std::cout << "at-rule name: " << foo.c_str() << std::endl; #endif } template void css_parser<_Handler>::simple_selector_name() { assert(has_char()); char c = cur_char(); if (c == '@') { // This is the name of an at-rule. at_rule_name(); return; } if (m_simple_selector_count) { #if ORCUS_DEBUG_CSS cout << "combinator: " << m_combinator << endl; #endif m_handler.combinator(m_combinator); m_combinator = css::combinator_descendant; } assert(is_alpha(c) || c == '.' || c == '#'); const char* p = NULL; size_t n = 0; #if ORCUS_DEBUG_CSS cout << "simple_selector_name: (" << m_simple_selector_count << ")"; #endif if (c != '.' && c != '#') { identifier(p, n); #if ORCUS_DEBUG_CSS std::string s(p, n); cout << " type=" << s; #endif m_handler.simple_selector_type(p, n); } bool in_loop = true; while (in_loop && has_char()) { switch (cur_char()) { case '.': { next(); identifier(p, n); m_handler.simple_selector_class(p, n); #if ORCUS_DEBUG_CSS std::string s(p, n); std::cout << " class=" << s; #endif } break; case '#': { next(); identifier(p, n); m_handler.simple_selector_id(p, n); #if ORCUS_DEBUG_CSS std::string s(p, n); std::cout << " id=" << s; #endif } break; case ':': { // This could be either a pseudo element or pseudo class. next(); if (cur_char() == ':') { // pseudo element. next(); identifier(p, n); css::pseudo_element_t elem = css::to_pseudo_element(p, n); if (!elem) css::parse_error::throw_with( "selector_name: unknown pseudo element '", p, n, "'"); m_handler.simple_selector_pseudo_element(elem); } else { // pseudo class (or pseudo element in the older version of CSS). identifier(p, n); css::pseudo_class_t pc = css::to_pseudo_class(p, n); if (!pc) css::parse_error::throw_with( "selector_name: unknown pseudo class '", p, n, "'"); m_handler.simple_selector_pseudo_class(pc); } } break; default: in_loop = false; } } m_handler.end_simple_selector(); skip_comments_and_blanks(); ++m_simple_selector_count; #if ORCUS_DEBUG_CSS std::cout << std::endl; #endif } template void css_parser<_Handler>::property_name() { // assert(has_char()); char c = cur_char(); if (!is_alpha(c) && c != '.') css::parse_error::throw_with( "property_name: first character of a name must be an alphabet or a dot, but found '", c, "'"); const char* p; size_t len; identifier(p, len); skip_comments_and_blanks(); m_handler.property_name(p, len); #if ORCUS_DEBUG_CSS std::string foo(p, len); std::cout << "property name: " << foo.c_str() << std::endl; #endif } template void css_parser<_Handler>::property() { // : , ... , m_handler.begin_property(); property_name(); if (cur_char() != ':') throw css::parse_error("property: ':' expected."); next(); skip_comments_and_blanks(); bool in_loop = true; while (in_loop && has_char()) { value(); char c = cur_char(); switch (c) { case ',': { // separated by commas. next(); skip_comments_and_blanks(); } break; case ';': case '}': in_loop = false; break; default: ; } } skip_comments_and_blanks(); m_handler.end_property(); } template void css_parser<_Handler>::quoted_value() { // Parse until the the end quote is reached. const char* p = NULL; size_t len = 0; literal(p, len, '"'); next(); skip_blanks(); m_handler.value(p, len); #if ORCUS_DEBUG_CSS std::string foo(p, len); std::cout << "quoted value: " << foo.c_str() << std::endl; #endif } template void css_parser<_Handler>::value() { assert(has_char()); char c = cur_char(); if (c == '"') { quoted_value(); return; } if (!is_alpha(c) && !is_numeric(c) && !is_in(c, "-+.#")) css::parse_error::throw_with("value:: illegal first character of a value '", c, "'"); const char* p = NULL; size_t len = 0; identifier(p, len, ".%"); if (cur_char() == '(') { function_value(p, len); return; } m_handler.value(p, len); skip_comments_and_blanks(); #if ORCUS_DEBUG_CSS std::string foo(p, len); std::cout << "value: " << foo.c_str() << std::endl; #endif } template void css_parser<_Handler>::function_value(const char* p, size_t len) { assert(cur_char() == '('); css::property_function_t func = css::to_property_function(p, len); if (!func) css::parse_error::throw_with("function_value: unknown function '", p, len, "'"); // Move to the first character of the first argument. next(); skip_comments_and_blanks(); switch (func) { case css::func_rgb: function_rgb(false); break; case css::func_rgba: function_rgb(true); break; case css::func_hsl: function_hsl(false); break; case css::func_hsla: function_hsl(true); break; case css::func_url: function_url(); break; default: css::parse_error::throw_with("function_value: unhandled function '", p, len, "'"); } char c = cur_char(); if (c != ')') css::parse_error::throw_with("function_value: ')' expected but '", c, "' found."); next(); skip_comments_and_blanks(); } template void css_parser<_Handler>::function_rgb(bool alpha) { // rgb(num, num, num) rgba(num, num, num, float) uint8_t vals[3]; uint8_t* p = vals; const uint8_t* plast = p + 2; char c = 0; for (; ; ++p) { *p = parse_uint8(); skip_comments_and_blanks(); if (p == plast) break; c = cur_char(); if (c != ',') css::parse_error::throw_with("function_rgb: ',' expected but '", c, "' found."); next(); skip_comments_and_blanks(); } if (alpha) { c = cur_char(); if (c != ',') css::parse_error::throw_with("function_rgb: ',' expected but '", c, "' found."); next(); skip_comments_and_blanks(); double alpha_val = parse_double(); alpha_val = clip(alpha_val, 0.0, 1.0); m_handler.rgba(vals[0], vals[1], vals[2], alpha_val); } else m_handler.rgb(vals[0], vals[1], vals[2]); #if ORCUS_DEBUG_CSS std::cout << "rgb"; if (alpha) std::cout << 'a'; std::cout << '('; p = vals; const uint8_t* pend = plast + 1; for (; p != pend; ++p) std::cout << ' ' << (int)*p; std::cout << " )" << std::endl; #endif } template void css_parser<_Handler>::function_hsl(bool alpha) { // hsl(num, percent, percent) hsla(num, percent, percent, float) double hue = parse_double(); // casted to uint8_t eventually. hue = clip(hue, 0.0, 360.0); skip_comments_and_blanks(); char c = cur_char(); if (c != ',') css::parse_error::throw_with("function_hsl: ',' expected but '", c, "' found."); next(); skip_comments_and_blanks(); double sat = parse_percent(); sat = clip(sat, 0.0, 100.0); skip_comments_and_blanks(); c = cur_char(); if (c != ',') css::parse_error::throw_with("function_hsl: ',' expected but '", c, "' found."); next(); skip_comments_and_blanks(); double light = parse_percent(); light = clip(light, 0.0, 100.0); skip_comments_and_blanks(); if (!alpha) { m_handler.hsl(hue, sat, light); return; } c = cur_char(); if (c != ',') css::parse_error::throw_with("function_hsl: ',' expected but '", c, "' found."); next(); skip_comments_and_blanks(); double alpha_val = parse_double(); alpha_val = clip(alpha_val, 0.0, 1.0); skip_comments_and_blanks(); m_handler.hsla(hue, sat, light, alpha_val); } template void css_parser<_Handler>::function_url() { char c = cur_char(); if (c == '"' || c == '\'') { // Quoted URL value. const char* p; size_t len; literal(p, len, c); next(); skip_comments_and_blanks(); m_handler.url(p, len); #if ORCUS_DEBUG_CSS std::cout << "url(" << std::string(p, len) << ")" << std::endl; #endif return; } // Unquoted URL value. const char* p; size_t len; skip_to_or_blank(p, len, ")"); skip_comments_and_blanks(); m_handler.url(p, len); #if ORCUS_DEBUG_CSS std::cout << "url(" << std::string(p, len) << ")" << std::endl; #endif } template void css_parser<_Handler>::name_sep() { assert(cur_char() == ','); #if ORCUS_DEBUG_CSS std::cout << "," << std::endl; #endif next(); skip_blanks(); m_handler.end_selector(); } template void css_parser<_Handler>::property_sep() { #if ORCUS_DEBUG_CSS std::cout << ";" << std::endl; #endif next(); skip_comments_and_blanks(); } template void css_parser<_Handler>::block() { // '{' ';' ... ';' ';'(optional) '}' assert(cur_char() == '{'); #if ORCUS_DEBUG_CSS std::cout << "{" << std::endl; #endif m_handler.end_selector(); m_handler.begin_block(); next(); skip_comments_and_blanks(); // parse properties. while (has_char()) { property(); if (cur_char() != ';') break; property_sep(); if (cur_char() == '}') // ';' after the last property. This is optional but allowed. break; } if (cur_char() != '}') throw css::parse_error("block: '}' expected."); m_handler.end_block(); next(); skip_comments_and_blanks(); #if ORCUS_DEBUG_CSS std::cout << "}" << std::endl; #endif } } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/global.hpp0000644000175000017500000000413412535701142016541 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GLOBAL_HPP__ #define __ORCUS_GLOBAL_HPP__ #include "types.hpp" #include "env.hpp" #include #include #define ORCUS_ASCII(literal) literal, sizeof(literal)-1 #define ORCUS_N_ELEMENTS(name) sizeof(name)/sizeof(name[0]) namespace orcus { class tokens; void print_element(xmlns_id_t ns, xml_token_t name); /** * Print attributes to stdout for debugging purposes. */ void print_attrs(const tokens& tokens, const xml_attrs_t& attrs); /** * Parse the string representation of a date-time value, and convert it into * a set of numerical values. A string representation allows either a date * only or a date and time value. It does not allow a time only value; it * always expects to have a date element. * * date only: 2013-04-09 * date and time: 2013-04-09T21:34:09.55 * * @param str string representation of a date-time value. * @return converted date-time value consisting of a set of numeric values. */ date_time_t to_date_time(const pstring& str); template struct default_deleter : public std::unary_function<_T*, void> { void operator() (_T* p) { delete p; } }; /** * Function object for deleting objects that are stored in map container as * pointers. */ template struct map_object_deleter : public ::std::unary_function { void operator() (typename T::value_type& v) { delete v.second; } }; template > class unique_ptr : public boost::interprocess::unique_ptr<_T, _Deleter> { public: unique_ptr() : boost::interprocess::unique_ptr<_T, _Deleter>(NULL) {} unique_ptr(_T* p) : boost::interprocess::unique_ptr<_T, _Deleter>(p) {} }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/types.hpp0000644000175000017500000000435612535701142016453 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_ORCUS_TYPES_HPP #define INCLUDED_ORCUS_TYPES_HPP #include #include #include #include "pstring.hpp" #include "env.hpp" namespace orcus { // XML specific types typedef size_t xml_token_t; typedef const char* xmlns_id_t; ORCUS_PSR_DLLPUBLIC extern const xmlns_id_t XMLNS_UNKNOWN_ID; ORCUS_PSR_DLLPUBLIC extern const xml_token_t XML_UNKNOWN_TOKEN; ORCUS_PSR_DLLPUBLIC extern const size_t index_not_found; ORCUS_PSR_DLLPUBLIC extern const size_t unspecified; struct xml_name_t { xmlns_id_t ns; pstring name; xml_name_t() : ns(XMLNS_UNKNOWN_ID), name() {} xml_name_t(xmlns_id_t _ns, const pstring& _name) : ns(_ns), name(_name) {} xml_name_t(const xml_name_t& r) : ns(r.ns), name(r.name) {} }; struct ORCUS_PSR_DLLPUBLIC xml_token_attr_t { xmlns_id_t ns; xml_token_t name; pstring raw_name; pstring value; /** * Whether or not the attribute value is transient. A transient value is * not guaranteed to be valid after the start_element call ends. A * non-transient value is guaranteed to be valid during the life cycle of * the xml stream it belongs to. */ bool transient; xml_token_attr_t(); xml_token_attr_t( xmlns_id_t _ns, xml_token_t _name, const pstring& _value, bool _transient); xml_token_attr_t( xmlns_id_t _ns, xml_token_t _name, const pstring& _raw_name, const pstring& _value, bool _transient); }; // Other types enum length_unit_t { length_unit_unknown = 0, length_unit_centimeter, length_unit_xlsx_column_digit, length_unit_inch, length_unit_point, length_unit_twip // TODO: Add more. }; struct ORCUS_PSR_DLLPUBLIC date_time_t { int year; int month; int day; int hour; int minute; double second; date_time_t(); std::string to_string() const; }; typedef ::std::vector xml_attrs_t; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/orcus_xml.hpp0000644000175000017500000000270512535701142017316 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ORCUS_XML_HPP__ #define __ORCUS_ORCUS_XML_HPP__ #include "env.hpp" #include "spreadsheet/types.hpp" namespace orcus { class pstring; class xmlns_repository; struct orcus_xml_impl; namespace spreadsheet { namespace iface { class import_factory; class export_factory; }} class ORCUS_DLLPUBLIC orcus_xml { orcus_xml(const orcus_xml&); // disabled orcus_xml& operator= (const orcus_xml&); // disabled public: orcus_xml(xmlns_repository& ns_repo, spreadsheet::iface::import_factory* im_fact, spreadsheet::iface::export_factory* ex_fact); ~orcus_xml(); void set_namespace_alias(const pstring& alias, const pstring& uri); void set_cell_link(const pstring& xpath, const pstring& sheet, spreadsheet::row_t row, spreadsheet::col_t col); void start_range(const pstring& sheet, spreadsheet::row_t row, spreadsheet::col_t col); void append_field_link(const pstring& xpath); void commit_range(); void append_sheet(const pstring& name); void read_file(const char* filepath); void write_file(const char* filepath); private: orcus_xml_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/orcus_xls_xml.hpp0000644000175000017500000000203312535701142020176 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ORCUS_XLS_XML_HPP #define ORCUS_ORCUS_XLS_XML_HPP #include "interface.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_factory; }} struct orcus_xls_xml_impl; class ORCUS_DLLPUBLIC orcus_xls_xml : public iface::import_filter { orcus_xls_xml(const orcus_xls_xml&); // disabled orcus_xls_xml& operator= (const orcus_xls_xml&); // disabled public: orcus_xls_xml(spreadsheet::iface::import_factory* factory); ~orcus_xls_xml(); static bool detect(const unsigned char* blob, size_t size); virtual void read_file(const std::string& filepath); virtual const char* get_name() const; private: orcus_xls_xml_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/format_detection.hpp0000644000175000017500000000126112535701142020625 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_FORMAT_DETECTION_HPP #define ORCUS_FORMAT_DETECTION_HPP #include "env.hpp" #include namespace orcus { enum format_t { format_unknown, format_ods, format_xlsx, format_gnumeric, format_xls_xml, format_csv }; ORCUS_DLLPUBLIC format_t detect(const unsigned char* buffer, size_t length); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/zip_archive.hpp0000644000175000017500000000540512535701142017606 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ZIP_ARCHIVE_HPP__ #define __ORCUS_ZIP_ARCHIVE_HPP__ #include "env.hpp" #include #include #include #include #include namespace orcus { class zip_archive_stream; class zip_archive_impl; class pstring; class ORCUS_PSR_DLLPUBLIC zip_error : public std::exception { std::string m_msg; public: zip_error(); zip_error(const std::string& msg); virtual ~zip_error() throw(); virtual const char* what() const throw(); }; class ORCUS_PSR_DLLPUBLIC zip_archive { zip_archive_impl* mp_impl; zip_archive(); // disabled zip_archive(const zip_archive&); // disabled zip_archive& operator= (const zip_archive); // disabled public: zip_archive(zip_archive_stream* stream); ~zip_archive(); /** * Loading involves the parsing of the central directory of a zip archive * (located toward the end of the stream) and building of file entry data * which are stored in the central directory. */ void load(); /** * Dump the content of a specified file entry to stdout. * * @param index file entry index */ void dump_file_entry(size_t index) const; /** * Dump the content of a specified file entry to stdout. * * * @param entry_name file entry name. */ void dump_file_entry(const char* entry_name) const; /** * Get file entry name from its index. * * @param index file entry index * * @return file entry name */ pstring get_file_entry_name(size_t index) const; /** * Return the number of file entries stored in this zip archive. Note * that a file entry may be a directory, so the number of files stored in * the zip archive may not equal the number of file entries. * * @return number of file entries. */ size_t get_file_entry_count() const; /** * Retrieve data stream of specified file entry into buffer. The retrieved * data stream gets uncompressed if the original stream is compressed. * The method will overwrite the content of passed buffer if there is any * pre-existing data in it. * * @param entry_name file entry name * @param buf buffer to put the retrieved data stream into. * * @return true if successful, false otherwise. */ bool read_file_entry(const pstring& entry_name, std::vector& buf) const; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/orcus_import_xlsx.hpp0000644000175000017500000000147412535701142021110 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ORCUS_IMPORT_XLSX_HPP #define ORCUS_ORCUS_IMPORT_XLSX_HPP #include "interface.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_table; }} class ORCUS_DLLPUBLIC import_xlsx { private: import_xlsx(); // deleted import_xlsx(const import_xlsx&); // deleted import_xlsx& operator=(const import_xlsx&); // deleted public: static void read_table(const char* p, size_t n, spreadsheet::iface::import_table* data); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/zip_archive_stream.hpp0000644000175000017500000000346012535701142021160 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ZIP_ARCHIVE_STREAM_HPP__ #define __ORCUS_ZIP_ARCHIVE_STREAM_HPP__ #include "env.hpp" #include #include namespace orcus { class ORCUS_PSR_DLLPUBLIC zip_archive_stream { public: virtual ~zip_archive_stream(); virtual size_t size() const = 0; virtual size_t tell() const = 0; virtual void seek(size_t pos) = 0; virtual void read(unsigned char* buffer, size_t length) const = 0; }; /** * Zip archive based on file descriptor. The caller needs to provide the * file path to the zip archive. */ class ORCUS_PSR_DLLPUBLIC zip_archive_stream_fd : public zip_archive_stream { FILE* m_stream; zip_archive_stream_fd(); // disabled public: zip_archive_stream_fd(const char* filepath); virtual ~zip_archive_stream_fd(); virtual size_t size() const; virtual size_t tell() const; virtual void seek(size_t pos); virtual void read(unsigned char* buffer, size_t length) const; }; /** * Zip archive whose content is already loaded onto memory. */ class ORCUS_PSR_DLLPUBLIC zip_archive_stream_blob : public zip_archive_stream { const unsigned char* m_blob; const unsigned char* m_cur; size_t m_size; zip_archive_stream_blob(); // disabled public: zip_archive_stream_blob(const unsigned char* blob, size_t size); virtual size_t size() const; virtual size_t tell() const; virtual void seek(size_t pos); virtual void read(unsigned char* buffer, size_t length) const; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/parser_global.hpp0000644000175000017500000000266612535701142020125 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_PARSER_GLOBAL_HPP #define ORCUS_PARSER_GLOBAL_HPP #include "env.hpp" #include namespace orcus { ORCUS_PSR_DLLPUBLIC bool is_blank(char c); ORCUS_PSR_DLLPUBLIC bool is_alpha(char c); ORCUS_PSR_DLLPUBLIC bool is_name_char(char c); ORCUS_PSR_DLLPUBLIC bool is_numeric(char c); /** * Check if the characater is one of allowed characters. * * @param c character to check. * @param allowed null-terminated character array containing all allowed * characters. * * @return true if the character is one of the allowed characters, false * otherwise. */ ORCUS_PSR_DLLPUBLIC bool is_in(char c, const char* allowed); ORCUS_PSR_DLLPUBLIC void write_to(std::ostringstream& os, const char* p, size_t n); ORCUS_PSR_DLLPUBLIC double parse_numeric(const char*& p, size_t max_length); /** * Clip input value to specified range in case it falls outside the range. * * @param input original input value. * @param low lower bound. * @param high upper bound. * * @return clipped value. */ ORCUS_PSR_DLLPUBLIC double clip(double input, double low, double high); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/css_parser_base.hpp0000644000175000017500000000434112535701142020437 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_CSS_PARSER_BASE_HPP #define INCLUDED_CSS_PARSER_BASE_HPP #include "orcus/env.hpp" #include "orcus/css_types.hpp" #include "orcus/exception.hpp" #include #include namespace orcus { namespace css { class ORCUS_PSR_DLLPUBLIC parse_error : public general_error { public: parse_error(const std::string& msg); static void throw_with(const char* msg_before, char c, const char* msg_after); static void throw_with(const char* msg_before, const char* p, size_t n, const char* msg_after); }; class ORCUS_PSR_DLLPUBLIC parser_base { public: parser_base(const char* p, size_t n); protected: void next(); char cur_char() const; /** * The caller must ensure that the next character exists. */ char next_char() const; size_t remaining_size() const; bool has_char() const; void identifier(const char*& p, size_t& len, const char* extra = NULL); uint8_t parse_uint8(); double parse_double(); double parse_percent(); void literal(const char*& p, size_t& len, char quote); void skip_to(const char*& p, size_t& len, char c); /** * Skip until one of specified characters or a blank character is reached. * * @param p pointer to the first character of the skipped character array. * @param len length of the skipped character array. * @param chars one or more characters that can end the skipping. */ void skip_to_or_blank(const char*& p, size_t& len, const char* chars); void skip_blanks(); void skip_blanks_reverse(); void shrink_stream(); bool skip_comment(); void comment(); void skip_comments_and_blanks(); void set_combinator(char c, css::combinator_t combinator); void reset_before_block(); protected: const char* mp_char; size_t m_pos; size_t m_length; size_t m_simple_selector_count; combinator_t m_combinator; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/orcus_xlsx.hpp0000644000175000017500000000437212535701142017516 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ORCUS_XLSX_HPP #define ORCUS_ORCUS_XLSX_HPP #include "interface.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_factory; }} struct xlsx_rel_sheet_info; struct xlsx_rel_table_info; struct orcus_xlsx_impl; class xlsx_opc_handler; class ORCUS_DLLPUBLIC orcus_xlsx : public iface::import_filter { friend class xlsx_opc_handler; orcus_xlsx(const orcus_xlsx&); // disabled orcus_xlsx& operator= (const orcus_xlsx&); // disabled public: orcus_xlsx(spreadsheet::iface::import_factory* factory); ~orcus_xlsx(); static bool detect(const unsigned char* blob, size_t size); virtual void read_file(const std::string& filepath); virtual const char* get_name() const; private: void set_formulas_to_doc(); void read_workbook(const std::string& dir_path, const std::string& file_name); /** * Parse a sheet xml part that contains data stored in a single sheet. */ void read_sheet(const std::string& dir_path, const std::string& file_name, xlsx_rel_sheet_info* data); /** * Parse sharedStrings.xml part that contains a list of strings referenced * in the document. */ void read_shared_strings(const std::string& dir_path, const std::string& file_name); void read_styles(const std::string& dir_path, const std::string& file_name); void read_table(const std::string& dir_path, const std::string& file_name, xlsx_rel_table_info* data); void read_pivot_cache_def(const std::string& dir_path, const std::string& file_name); void read_pivot_cache_rec(const std::string& dir_path, const std::string& file_name); void read_pivot_table(const std::string& dir_path, const std::string& file_name); void read_rev_headers(const std::string& dir_path, const std::string& file_name); void read_rev_log(const std::string& dir_path, const std::string& file_name); private: orcus_xlsx_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/0000755000175000017500000000000012540654317017104 5ustar renereneliborcus-0.9.2/include/orcus/spreadsheet/factory.hpp0000644000175000017500000000325412535701142021261 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SPREADSHEET_IMPORT_FACTORY_HPP__ #define __ORCUS_SPREADSHEET_IMPORT_FACTORY_HPP__ #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/spreadsheet/export_interface.hpp" #include "orcus/env.hpp" namespace orcus { namespace spreadsheet { class document; struct import_factory_impl; class ORCUS_SPM_DLLPUBLIC import_factory : public iface::import_factory { public: import_factory(document& doc, row_t row_size = 1048576, col_t col_size = 1024); virtual ~import_factory(); virtual iface::import_global_settings* get_global_settings(); virtual iface::import_shared_strings* get_shared_strings(); virtual iface::import_styles* get_styles(); virtual iface::import_sheet* append_sheet(const char* sheet_name, size_t sheet_name_length); virtual iface::import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length); virtual iface::import_sheet* get_sheet(sheet_t sheet_index); virtual void finalize(); private: import_factory_impl* mp_impl; }; struct export_factory_impl; class ORCUS_SPM_DLLPUBLIC export_factory : public iface::export_factory { public: export_factory(document& doc); virtual ~export_factory(); virtual const iface::export_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) const; private: export_factory_impl* mp_impl; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/shared_strings.hpp0000644000175000017500000000546012535701142022632 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SPREADSHEET_SHARED_STRINGS_HPP__ #define __ORCUS_SPREADSHEET_SHARED_STRINGS_HPP__ #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/spreadsheet/styles.hpp" #include "orcus/pstring.hpp" #include "orcus/env.hpp" #include #include #include #include namespace ixion { class model_context; } namespace orcus { class string_pool; namespace spreadsheet { class import_styles; struct ORCUS_SPM_DLLPUBLIC format_run { size_t pos; size_t size; pstring font; double font_size; color_t color; bool bold:1; bool italic:1; format_run(); void reset(); bool formatted() const; }; typedef std::vector format_runs_t; /** * This class handles global pool of string instances. */ class ORCUS_DLLPUBLIC import_shared_strings : public iface::import_shared_strings, private boost::noncopyable { typedef boost::unordered_map str_index_map_type; import_shared_strings(); // disabled public: // format runs for all shared strings, mapped by string IDs. typedef boost::unordered_map format_runs_map_type; import_shared_strings(orcus::string_pool& sp, ixion::model_context& cxt, import_styles& styles); virtual ~import_shared_strings(); virtual size_t append(const char* s, size_t n); virtual size_t add(const char* s, size_t n); virtual void set_segment_font(size_t font_index); virtual void set_segment_bold(bool b); virtual void set_segment_italic(bool b); virtual void set_segment_font_name(const char* s, size_t n); virtual void set_segment_font_size(double point); virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual void append_segment(const char* s, size_t n); virtual size_t commit_segments(); const format_runs_t* get_format_runs(size_t index) const; const std::string* get_string(size_t index) const; void dump() const; private: orcus::string_pool& m_string_pool; ixion::model_context& m_cxt; import_styles& m_styles; /** * Container for all format runs of all formatted strings. Format runs * are mapped with the string IDs. */ format_runs_map_type m_formats; ::std::string m_cur_segment_string; format_run m_cur_format; format_runs_t* mp_cur_format_runs; str_index_map_type m_set; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/import_interface.hpp0000644000175000017500000006347412535701142023156 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SPREADSHEET_IMPORT_INTERFACE_HPP #define ORCUS_SPREADSHEET_IMPORT_INTERFACE_HPP #include #include "types.hpp" #include "../types.hpp" #include "../env.hpp" // NB: This header must not depend on ixion, as it needs to be usable for // those clients that provide their own formula engine. Other headers in // the orcus::spreadsheet namespace may depend on ixion. namespace orcus { namespace spreadsheet { namespace iface { /** * Interface class designed to be derived by the implementor. */ class import_shared_strings { public: ORCUS_DLLPUBLIC virtual ~import_shared_strings() = 0; /** * Append new string to the string list. Order of insertion is important * since that determines the numerical ID values of inserted strings. * Note that this method assumes that the caller knows the string being * appended is not yet in the pool. * * @param s pointer to the first character of the string array. The * string array doesn't necessary have to be null-terminated. * @param n length of the string. * * @return ID of the string just inserted. */ virtual size_t append(const char* s, size_t n) = 0; /** * Similar to the append method, it adds new string to the string pool; * however, this method checks if the string being added is already in the * pool before each insertion, to avoid duplicated strings. * * @param s pointer to the first character of the string array. The * string array doesn't necessary have to be null-terminated. * @param n length of the string. * * @return ID of the string just inserted. */ virtual size_t add(const char* s, size_t n) = 0; virtual void set_segment_font(size_t font_index) = 0; virtual void set_segment_bold(bool b) = 0; virtual void set_segment_italic(bool b) = 0; virtual void set_segment_font_name(const char* s, size_t n) = 0; virtual void set_segment_font_size(double point) = 0; virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; virtual void append_segment(const char* s, size_t n) = 0; virtual size_t commit_segments() = 0; }; /** * Interface for styles. Note that because the default style must have an * index of 0 in each style category, the caller must set the default styles * first before importing and setting real styles. ID's of styles are * assigned sequentially starting with 0 and upward in each style category. * * In contrast to xf formatting, dxf (differential formats) formatting only * stores the format information that is explicitly set. It does not store * formatting from the default style. Applying a dxf format to an object * only applies those explicitly set formats from the dxf entry, while all * the other formats are retained. */ class import_styles { public: ORCUS_DLLPUBLIC virtual ~import_styles() = 0; // font virtual void set_font_count(size_t n) = 0; virtual void set_font_bold(bool b) = 0; virtual void set_font_italic(bool b) = 0; virtual void set_font_name(const char* s, size_t n) = 0; virtual void set_font_size(double point) = 0; virtual void set_font_underline(orcus::spreadsheet::underline_t e) = 0; virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; virtual size_t commit_font() = 0; // fill virtual void set_fill_count(size_t n) = 0; virtual void set_fill_pattern_type(const char* s, size_t n) = 0; virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; virtual size_t commit_fill() = 0; // border virtual void set_border_count(size_t n) = 0; virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, const char* s, size_t n) = 0; virtual void set_border_color( orcus::spreadsheet::border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; virtual size_t commit_border() = 0; // cell protection virtual void set_cell_hidden(bool b) = 0; virtual void set_cell_locked(bool b) = 0; virtual size_t commit_cell_protection() = 0; // number format virtual void set_number_format_count(size_t n) = 0; virtual void set_number_format_identifier(size_t id) = 0; virtual void set_number_format_code(const char* s, size_t n) = 0; virtual size_t commit_number_format() = 0; // cell format and cell style format (xf == cell format) virtual void set_cell_xf_count(size_t n) = 0; virtual void set_cell_style_xf_count(size_t n) = 0; virtual void set_dxf_count(size_t n) = 0; virtual void set_xf_font(size_t index) = 0; virtual void set_xf_fill(size_t index) = 0; virtual void set_xf_border(size_t index) = 0; virtual void set_xf_protection(size_t index) = 0; virtual void set_xf_number_format(size_t index) = 0; virtual void set_xf_style_xf(size_t index) = 0; virtual void set_xf_apply_alignment(bool b) = 0; virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) = 0; virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) = 0; virtual size_t commit_cell_xf() = 0; virtual size_t commit_cell_style_xf() = 0; virtual size_t commit_dxf() = 0; // cell style entry virtual void set_cell_style_count(size_t n) = 0; virtual void set_cell_style_name(const char* s, size_t n) = 0; virtual void set_cell_style_xf(size_t index) = 0; virtual void set_cell_style_builtin(size_t index) = 0; virtual size_t commit_cell_style() = 0; }; class import_sheet_properties { public: ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0; virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) = 0; virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) = 0; virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) = 0; virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) = 0; /** * Specify merged cell range. The range is given in a 2-dimensional * A1-style reference. * * @param p_range pointer to the first character of reference string. * @param n_range length of reference string. */ virtual void set_merge_cell_range(const char* p_range, size_t n_range) = 0; }; /** * Interface for importing data tables. */ class import_data_table { public: ORCUS_DLLPUBLIC virtual ~import_data_table() = 0; virtual void set_type(orcus::spreadsheet::data_table_type_t type) = 0; virtual void set_range(const char* p_range, size_t n_range) = 0; virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0; virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0; virtual void commit() = 0; }; class import_auto_filter { public: ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0; /** * Specify the range where the auto filter is applied. The range * is given in a 2-dimensional A1-style reference. * * @param p_ref pointer to the first character of range string. * @param n_ref length of range string. */ virtual void set_range(const char* p_ref, size_t n_ref) = 0; /** * Specify the column position of a filter. The position is relative to * the first column in the auto filter range. * * @param col 0-based column position of a filter relative to the first * column. */ virtual void set_column(orcus::spreadsheet::col_t col) = 0; /** * Add a match value to the current column filter. * * @param p pointer to the first character of match value. * @param n length of match value. */ virtual void append_column_match_value(const char* p, size_t n) = 0; /** * Commit current column filter to the current auto filter. */ virtual void commit_column() = 0; /** * Commit current auto filter to the model. */ virtual void commit() = 0; }; /** * This is an optional interface to import conditional formatting. * * A conditional format consists of: *
    *
  • a range
  • *
  • several entries
  • *
* * Each entry consists of: *
    *
  • a type
  • *
  • a few properties depending on the type (optional)
  • *
  • zero or more conditions depending on the type
  • *
* * Each condition consists of: *
    *
  • a formula/value/string
  • *
  • a color (optional)
  • *
*/ class import_conditional_format { public: ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0; /** * Sets the color of the current condition. * only valid for type == databar or type == colorscale. */ virtual void set_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; /** * Sets the formula, value or string of the current condition. */ virtual void set_formula(const char* p, size_t n) = 0; /** * Sets the type for the formula, value or string of the current condition. * Only valid for type = iconset, databar or colorscale. */ virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) = 0; /** * Only valid for type = date. */ virtual void set_date(orcus::spreadsheet::condition_date_t date) = 0; /** * commits the current condition to the current entry. */ virtual void commit_condition() = 0; /** * Name of the icons to use in the current entry. * only valid for type = iconset */ virtual void set_icon_name(const char* p, size_t n) = 0; /** * Use a gradient for the current entry. * only valid for type == databar */ virtual void set_databar_gradient(bool gradient) = 0; /** * Position of the 0 axis in the current entry. * only valid for type == databar. */ virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) = 0; /** * Databar color for positive values. * only valid for type == databar. */ virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; /** * Databar color for negative values. * only valid for type == databar. */ virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0; /** * Sets the minimum length for a databar. * only valid for type == databar. */ virtual void set_min_databar_length(double length) = 0; /** * Sets the maximum length for a databar. * only valid for type == databar. */ virtual void set_max_databar_length(double length) = 0; /** * Don't show the value in the cell. * only valid for type = databar, iconset, colorscale. */ virtual void set_show_value(bool show) = 0; /** * Use the icons in reverse order. * only valid for type == iconset. */ virtual void set_iconset_reverse(bool reverse) = 0; /** * TODO: In OOXML the style is stored as dxf and in ODF as named style. */ virtual void set_xf_id(size_t xf) = 0; /** * Sets the current operation used for the current entry. * only valid for type == condition */ virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) = 0; virtual void set_type(orcus::spreadsheet::conditional_format_t type) = 0; virtual void commit_entry() = 0; virtual void set_range(const char* p, size_t n) = 0; virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start, orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) = 0; virtual void commit_format() = 0; }; /** * Interface for table. A table is a range within a sheet that consists of * one or more data columns with a header row that contains their labels. */ class ORCUS_DLLPUBLIC import_table { public: virtual ~import_table() = 0; virtual import_auto_filter* get_auto_filter(); virtual void set_identifier(size_t id) = 0; virtual void set_range(const char* p_ref, size_t n_ref) = 0; virtual void set_totals_row_count(size_t row_count) = 0; virtual void set_name(const char* p, size_t n) = 0; virtual void set_display_name(const char* p, size_t n) = 0; virtual void set_column_count(size_t n) = 0; virtual void set_column_identifier(size_t id) = 0; virtual void set_column_name(const char* p, size_t n) = 0; virtual void set_column_totals_row_label(const char* p, size_t n) = 0; virtual void set_column_totals_row_function(orcus::spreadsheet::totals_row_function_t func) = 0; virtual void commit_column() = 0; virtual void set_style_name(const char* p, size_t n) = 0; virtual void set_style_show_first_column(bool b) = 0; virtual void set_style_show_last_column(bool b) = 0; virtual void set_style_show_row_stripes(bool b) = 0; virtual void set_style_show_column_stripes(bool b) = 0; virtual void commit() = 0; }; /** * Interface for sheet. */ class ORCUS_DLLPUBLIC import_sheet { public: virtual ~import_sheet() = 0; virtual import_sheet_properties* get_sheet_properties(); /** * Get an interface for importing data tables. Note that the implementer * may decide not to support this feature in which case this method * returns NULL. The implementer is responsible for managing the life * cycle of the returned interface object. * * The implementor should also initialize the internal state of the * temporary data table object when this method is called. * * @return pointer to the data table interface object. */ virtual import_data_table* get_data_table(); /** * Get an interface for importing auto filter ranges. * * The implementor should also initialize the internal state of the * temporary auto filter object when this method is called. * * @return pointer to the auto filter interface object. */ virtual import_auto_filter* get_auto_filter(); /** * Get an interface for importing tables. The implementer is responsible * for managing the life cycle of the returned interface object. * * The implementor should also initialize the internal state of the * temporary table object when this method is called. * * @return pointer to the table interface object, or NULL if the * implementer doesn't support importing of tables. */ virtual import_table* get_table(); /** * get an interface for importing conditional formats. The implementer is responsible * for managing the life cycle of the returned interface object. * * @return pointer to the conditional format interface object, or NULL * if the implementer doesn't support importing conditional formats. */ virtual import_conditional_format* get_conditional_format(); /** * Set raw string value to a cell and have the implementation * auto-recognize its data type. * * @param row row ID * @param col column ID * @param p pointer to the first character of the raw string value. * @param n size of the raw string value. */ virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0; /** * Set string value to a cell. * * @param row row ID * @param col column ID * @param sindex 0-based string index in the shared string table. */ virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0; /** * Set numerical value to a cell. * * @param row row ID * @param col column ID * @param value value being assigned to the cell. */ virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0; /** * Set a boolean value to a cell. * * @param row row ID * @param col col ID * @param value boolean value being assigned to the cell */ virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) = 0; /** * Set date and time value to a cell. * * @param row row ID * @param col column ID */ virtual void set_date_time( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, int year, int month, int day, int hour, int minute, double second) = 0; /** * Set cell format to specified cell. The cell format is referred to by * the xf (cell format) index in the styles table. * * @param row row ID * @param col column ID * @param index 0-based xf (cell format) index */ virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) = 0; /** * Set cell format to specified cell range. The cell format is referred * to by the xf (cell format) index in the styles table. * * @param row_start start row ID * @param col_start start column ID * @param row_end end row ID * @param col_end end column ID * @param index 0-based xf (cell format) index */ virtual void set_format(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start, orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end, size_t xf_index) = 0; /** * Set normal, non-shared formula expression to specified cell. * * @param row row ID * @param col column ID * @param grammar grammar used in the formula expression * @param p pointer to the first character of the raw formula expression * string. * @param n size of the raw formula expression string. */ virtual void set_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n) = 0; /** * Set shared formula expression to specified cell. This call also * registers the formula expression to a common formula expression pool to * allow it to be looked up by the specified index later. * * @param row row ID * @param col column ID * @param grammar grammar used in the formula expression * @param sindex shared formula index (0-based) * @param p_formula pointer to the first character of the raw formula * expression string. * @param n_formula size of the raw formula expression string. * @param p_range pointer to the first character of the range string * @param n_range size of the raw range string */ virtual void set_shared_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula, const char* p_range, size_t n_range) = 0; /** * Set shared formula expression to specified cell. This call also * registers the formula expression to a common formula expression pool to * allow it to be looked up by the specified index later. * * @param row row ID * @param col column ID * @param grammar grammar used in the formula expression * @param sindex shared formula index (0-based) * @param p_formula pointer to the first character of the raw formula * expression string. * @param n_formula size of the raw formula expression string. */ virtual void set_shared_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula) = 0; /** * Set shared formula to specified cell by shared formula index. The * formula expression itself associated with the index must be defined. * * @param row row ID * @param col column ID * @param grammar grammar used in the formula expression * @param sindex shared formula index (0-based) * @param p pointer to the first character of the raw formula expression * string. * @param n size of the raw formula expression string. */ virtual void set_shared_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0; virtual void set_formula_result( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0; virtual void set_formula_result( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0; /** * Set a array formula to the specified cells. The formula covers an area * specified by array_rows and array_cols beginning from the base cell. * * @param row row ID * @param col column ID * @param grammar grammar used in the formula expression * @param p pointer to the first character of the raw formula expression string. * @param n size of the raw formula expression string * @param array_rows number of rows the array formula covers * @param array_cols number of columns the array formula covers */ virtual void set_array_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n, orcus::spreadsheet::row_t array_rows, orcus::spreadsheet::col_t array_cols) = 0; /** * Set a array formula to the specified cells. The formula covers an area * specified by the range string. * * @param row row ID * @param col column ID * @param grammar grammar used in the formula expression * @param p pointer to the first character of the raw formula expression string. * @param n size of the raw formula expression string * @param p_range pointer to the first character of the range string * @param n_range isze of the range string */ virtual void set_array_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n, const char* p_range, size_t n_range) = 0; }; class import_global_settings { public: ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0; /** * Set the date that is to be represented by a value of 0. All date * values will be internally represented relative to this date afterward. * * @param year 1-based value representing year * @param month 1-based value representing month, varying from 1 through * 12. * @param day 1-based value representing day, varying from 1 through 31. */ virtual void set_origin_date(int year, int month, int day) = 0; /** * Set formula grammar to be used globally when parsing formulas if the * grammar is not specified. This grammar will also be used when parsing * range strings associated with shared formula ranges, array formula * ranges, autofilter ranges etc. * * @param grammar default formula grammar */ virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) = 0; /** * Get current default formula grammar. * * @return current default formula grammar. */ virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const = 0; }; /** * This interface provides the filters a means to instantiate concrete * classes that implement the above interfaces. The client code never has * to manually delete objects returned by its methods; the implementor of * this interface must manage the life cycles of objects it returns. * * The implementor of this interface normally wraps the document instance * inside it and have the document instance manage the life cycles of * various objects it creates. */ class ORCUS_DLLPUBLIC import_factory { public: virtual ~import_factory() = 0; virtual import_global_settings* get_global_settings(); /** * @return pointer to the shared strings instance. It may return NULL if * the client app doesn't support shared strings. */ virtual import_shared_strings* get_shared_strings(); /** * @return pointer to the styles instance. It may return NULL if the * client app doesn't support styles. */ virtual import_styles* get_styles(); /** * @return pointer to the sheet instance. It may return NULL if the client * app fails to append new sheet. */ virtual import_sheet* append_sheet(const char* sheet_name, size_t sheet_name_length) = 0; /** * @return pointer to the sheet instance whose name matches the name * passed to this method. It returns NULL if no sheet instance * exists by the specified name. */ virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0; /** * Retrieve sheet instance by specified numerical sheet index. * * @param sheet_index sheet index * * @return pointer to the sheet instance, or NULL if no sheet instance * exists at specified sheet index position. */ virtual import_sheet* get_sheet(orcus::spreadsheet::sheet_t sheet_index) = 0; /** * This method is called at the end of import, to give the implementor a * chance to perform post-processing if necessary. */ virtual void finalize() = 0; }; }}} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/styles.hpp0000644000175000017500000001376112535701142021141 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SPREADSHEET_STYLES_HPP__ #define __ORCUS_SPREADSHEET_STYLES_HPP__ #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/pstring.hpp" #include "orcus/env.hpp" #include namespace orcus { class string_pool; namespace spreadsheet { struct ORCUS_SPM_DLLPUBLIC color_t { color_elem_t alpha; color_elem_t red; color_elem_t green; color_elem_t blue; color_t(); color_t(color_elem_t _alpha, color_elem_t _red, color_elem_t _green, color_elem_t _blue); void reset(); }; struct ORCUS_SPM_DLLPUBLIC font_t { pstring name; double size; bool bold:1; bool italic:1; underline_t underline; color_t color; font_t(); void reset(); }; struct ORCUS_SPM_DLLPUBLIC fill_t { pstring pattern_type; color_t fg_color; color_t bg_color; fill_t(); void reset(); }; struct ORCUS_SPM_DLLPUBLIC border_attrs_t { pstring style; color_t border_color; border_attrs_t(); void reset(); }; struct ORCUS_SPM_DLLPUBLIC border_t { border_attrs_t top; border_attrs_t bottom; border_attrs_t left; border_attrs_t right; border_attrs_t diagonal; border_t(); void reset(); }; struct ORCUS_SPM_DLLPUBLIC protection_t { bool locked; bool hidden; protection_t(); void reset(); }; struct ORCUS_SPM_DLLPUBLIC number_format_t { size_t identifier; pstring format_string; number_format_t(); void reset(); bool operator== (const number_format_t& r) const; }; /** * Cell format attributes */ struct ORCUS_SPM_DLLPUBLIC cell_format_t { size_t font; /// font ID size_t fill; /// fill ID size_t border; /// border ID size_t protection; /// protection ID size_t number_format; /// number format ID size_t style_xf; /// style XF ID (used only for cell format) hor_alignment_t hor_align; ver_alignment_t ver_align; bool apply_num_format:1; bool apply_font:1; bool apply_fill:1; bool apply_border:1; bool apply_alignment:1; cell_format_t(); void reset(); }; struct ORCUS_SPM_DLLPUBLIC cell_style_t { pstring name; size_t xf; size_t builtin; cell_style_t(); void reset(); }; class ORCUS_SPM_DLLPUBLIC import_styles : public iface::import_styles { public: import_styles(string_pool& sp); virtual ~import_styles(); virtual void set_font_count(size_t n); virtual void set_font_bold(bool b); virtual void set_font_italic(bool b); virtual void set_font_name(const char* s, size_t n); virtual void set_font_size(double point); virtual void set_font_underline(underline_t e); virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual size_t commit_font(); virtual void set_fill_count(size_t n); virtual void set_fill_pattern_type(const char* s, size_t n); virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual size_t commit_fill(); virtual void set_border_count(size_t n); virtual void set_border_style(border_direction_t dir, const char* s, size_t n); virtual void set_border_color( border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual size_t commit_border(); virtual void set_cell_hidden(bool b); virtual void set_cell_locked(bool b); virtual size_t commit_cell_protection(); virtual void set_number_format_count(size_t n); virtual void set_number_format_identifier(size_t id); virtual void set_number_format_code(const char* s, size_t n); virtual size_t commit_number_format(); virtual void set_cell_style_xf_count(size_t n); virtual size_t commit_cell_style_xf(); virtual void set_cell_xf_count(size_t n); virtual size_t commit_cell_xf(); virtual void set_dxf_count(size_t n); virtual size_t commit_dxf(); virtual void set_xf_font(size_t index); virtual void set_xf_fill(size_t index); virtual void set_xf_border(size_t index); virtual void set_xf_protection(size_t index); virtual void set_xf_number_format(size_t index); virtual void set_xf_style_xf(size_t index); virtual void set_xf_apply_alignment(bool b); virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align); virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align); virtual void set_cell_style_count(size_t n); virtual void set_cell_style_name(const char* s, size_t n); virtual void set_cell_style_xf(size_t index); virtual void set_cell_style_builtin(size_t index); virtual size_t commit_cell_style(); const font_t* get_font(size_t index) const; const cell_format_t* get_cell_format(size_t index) const; const fill_t* get_fill(size_t index) const; const border_t* get_border(size_t index) const; private: string_pool& m_string_pool; font_t m_cur_font; fill_t m_cur_fill; border_t m_cur_border; protection_t m_cur_protection; number_format_t m_cur_number_format; cell_format_t m_cur_cell_format; cell_style_t m_cur_cell_style; ::std::vector m_fonts; ::std::vector m_fills; ::std::vector m_borders; ::std::vector m_protections; ::std::vector m_number_formats; ::std::vector m_cell_style_formats; ::std::vector m_cell_formats; ::std::vector m_dxf_formats; ::std::vector m_cell_styles; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/Makefile.in0000644000175000017500000004353612540653650021163 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @BUILD_SPREADSHEET_MODEL_TRUE@am__append_1 = \ @BUILD_SPREADSHEET_MODEL_TRUE@ auto_filter.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ document.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ factory.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ global_settings.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ shared_strings.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ sheet.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ sheet_properties.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ styles.hpp subdir = include/orcus/spreadsheet DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(am__liborcus_HEADERS_DIST) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__liborcus_HEADERS_DIST = types.hpp export_interface.hpp \ import_interface.hpp auto_filter.hpp document.hpp factory.hpp \ global_settings.hpp shared_strings.hpp sheet.hpp \ sheet_properties.hpp styles.hpp am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(liborcusdir)" HEADERS = $(liborcus_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ liborcusdir = $(includedir)/liborcus-@ORCUS_API_VERSION@/orcus/spreadsheet liborcus_HEADERS = types.hpp export_interface.hpp import_interface.hpp \ $(am__append_1) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/orcus/spreadsheet/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/orcus/spreadsheet/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-liborcusHEADERS: $(liborcus_HEADERS) @$(NORMAL_INSTALL) @list='$(liborcus_HEADERS)'; test -n "$(liborcusdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(liborcusdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(liborcusdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(liborcusdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(liborcusdir)" || exit $$?; \ done uninstall-liborcusHEADERS: @$(NORMAL_UNINSTALL) @list='$(liborcus_HEADERS)'; test -n "$(liborcusdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(liborcusdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(liborcusdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-liborcusHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-liborcusHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-liborcusHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-liborcusHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/include/orcus/spreadsheet/sheet.hpp0000644000175000017500000000772112535701142020725 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SPREADSHEET_ODSTABLE_HPP__ #define __ORCUS_SPREADSHEET_ODSTABLE_HPP__ #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/spreadsheet/export_interface.hpp" #include "orcus/env.hpp" #include namespace orcus { class pstring; namespace spreadsheet { class document; struct sheet_impl; struct auto_filter_t; /** * This class represents a single sheet instance in the internal document * model. */ class ORCUS_SPM_DLLPUBLIC sheet : public iface::import_sheet, public iface::export_sheet { friend struct sheet_impl; static const row_t max_row_limit; static const col_t max_col_limit; public: sheet(document& doc, sheet_t sheet_index, row_t row_size, col_t col_size); virtual ~sheet(); // Import methods virtual iface::import_sheet_properties* get_sheet_properties(); virtual iface::import_data_table* get_data_table(); virtual iface::import_table* get_table(); virtual iface::import_auto_filter* get_auto_filter(); virtual void set_auto(row_t row, col_t col, const char* p, size_t n); virtual void set_string(row_t row, col_t col, size_t sindex); virtual void set_value(row_t row, col_t col, double value); virtual void set_bool(row_t row, col_t col, bool value); virtual void set_date_time(row_t row, col_t col, int year, int month, int day, int hour, int minute, double second); virtual void set_format(row_t row, col_t col, size_t index); virtual void set_format(row_t row_start, col_t col_start, row_t row_end, col_t col_end, size_t index); virtual void set_formula(row_t row, col_t col, formula_grammar_t grammar, const char* p, size_t n); virtual void set_shared_formula( row_t row, col_t col, formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula, const char* p_range, size_t n_range); virtual void set_shared_formula( row_t row, col_t col, formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula); virtual void set_shared_formula(row_t row, col_t col, size_t sindex); virtual void set_formula_result(row_t row, col_t col, double value); virtual void set_formula_result(row_t row, col_t col, const char* p, size_t n); virtual void set_array_formula(row_t, col_t, formula_grammar_t, const char*, size_t, row_t, col_t); virtual void set_array_formula(row_t, col_t, formula_grammar_t, const char*, size_t, const char*, size_t); // Export methods virtual void write_string(std::ostream& os, row_t row, col_t col) const; void set_col_width(col_t col, col_width_t width); col_width_t get_col_width(col_t col, col_t* col_start, col_t* col_end) const; void set_col_hidden(col_t col, bool hidden); void set_row_height(row_t row, row_height_t height); row_height_t get_row_height(row_t row, row_t* row_start, row_t* row_end) const; void set_row_hidden(row_t row, bool hidden); void set_merge_cell_range(const char* p_ref, size_t p_ref_len); size_t get_string_identifier(row_t row, col_t col) const; auto_filter_t* get_auto_filter_data(); const auto_filter_t* get_auto_filter_data() const; void set_auto_filter_data(auto_filter_t* p); row_t row_size() const; col_t col_size() const; sheet_t get_index() const; void finalize(); void dump_flat(std::ostream& os) const; void dump_check(std::ostream& os, const pstring& sheet_name) const; void dump_html(const ::std::string& filepath) const; /** * Get the cell format ID of specified cell. */ size_t get_cell_format(row_t row, col_t col) const; private: sheet_impl* mp_impl; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/Makefile.am0000644000175000017500000000054612535701142021136 0ustar renerene liborcusdir = $(includedir)/liborcus-@ORCUS_API_VERSION@/orcus/spreadsheet liborcus_HEADERS = \ types.hpp \ export_interface.hpp \ import_interface.hpp if BUILD_SPREADSHEET_MODEL liborcus_HEADERS += \ auto_filter.hpp \ document.hpp \ factory.hpp \ global_settings.hpp \ shared_strings.hpp \ sheet.hpp \ sheet_properties.hpp \ styles.hpp endif liborcus-0.9.2/include/orcus/spreadsheet/types.hpp0000644000175000017500000001126212535701142020754 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SPREADSHEET_TYPES_HPP #define ORCUS_SPREADSHEET_TYPES_HPP #include "../env.hpp" #include // NB: This header should only use primitive data types and enums. namespace orcus { namespace spreadsheet { typedef int row_t; typedef int col_t; typedef int sheet_t; typedef unsigned char color_elem_t; typedef unsigned short col_width_t; typedef unsigned short row_height_t; ORCUS_DLLPUBLIC col_width_t get_default_column_width(); ORCUS_DLLPUBLIC row_height_t get_default_row_height(); enum border_direction_t { border_direction_unknown = 0, border_top, border_bottom, border_left, border_right, border_diagonal }; enum formula_grammar_t { formula_grammar_unknown = 0, formula_grammar_xlsx_2007, formula_grammar_xlsx_2010, formula_grammar_ods, formula_grammar_gnumeric }; enum formula_t { formula_array, formula_data_table, formula_normal, formula_shared }; enum underline_t { underline_none, underline_single, underline_single_accounting, // unique to xlsx underline_double, underline_double_accounting // unique to xlsx }; enum hor_alignment_t { hor_alignment_unknown = 0, hor_alignment_left, hor_alignment_center, hor_alignment_right, hor_alignment_justified, hor_alignment_distributed, hor_alignment_filled }; enum ver_alignment_t { ver_alignment_unknown = 0, ver_alignment_top, ver_alignment_middle, ver_alignment_bottom, ver_alignment_justified, ver_alignment_distributed }; /** * Type of data table. A data table can be either of a single-variable * column, a single-variable row, or a double-variable type that uses both * column and row input cells. */ enum data_table_type_t { data_table_column, data_table_row, data_table_both }; /** * Function type used in the totals row of a table. */ enum totals_row_function_t { totals_row_function_none = 0, totals_row_function_sum, totals_row_function_minimum, totals_row_function_maximum, totals_row_function_average, totals_row_function_count, totals_row_function_count_numbers, totals_row_function_standard_deviation, totals_row_function_variance, totals_row_function_custom }; enum conditional_format_t { conditional_format_unknown = 0, conditional_format_condition, conditional_format_date, conditional_format_formula, conditional_format_colorscale, conditional_format_databar, conditional_format_iconset }; enum condition_operator_t { condition_operator_unknown = 0, condition_operator_equal, condition_operator_less, condition_operator_greater, condition_operator_greater_equal, condition_operator_less_equal, condition_operator_not_equal, condition_operator_between, condition_operator_not_between, condition_operator_duplicate, condition_operator_unique, condition_operator_top_n, condition_operator_bottom_n, condition_operator_above_average, condition_operator_below_average, condition_operator_above_equal_average, condition_operator_below_equal_average, condition_operator_contains_error, condition_operator_contains_no_error, condition_operator_begins_with, condition_operator_ends_with, condition_operator_contains, condition_operator_contains_blanks, condition_operator_not_contains, condition_operator_expression }; enum condition_type_t { condition_type_unknown = 0, condition_type_value, condition_type_auto, condition_type_max, condition_type_min, condition_type_formula, condition_type_percent, condition_type_percentile }; enum condition_date_t { condition_date_unknown = 0, condition_date_today, condition_date_yesterday, condition_date_tomorrow, condition_date_last_7_days, condition_date_this_week, condition_date_next_week, condition_date_last_week, condition_date_this_month, condition_date_next_month, condition_date_last_month, condition_date_this_year, condition_date_next_year, condition_date_last_year, }; enum databar_axis_t { databar_axis_none = 0, databar_axis_middle, databar_axis_automatic }; /** * Convert a string representation of a totals row function name to its * equivalent enum value. */ ORCUS_DLLPUBLIC totals_row_function_t to_totals_row_function_enum(const char* p, size_t n); }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/document.hpp0000644000175000017500000000665212535701142021435 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SPREADSHEET_DOCUMENT_HPP__ #define __ORCUS_SPREADSHEET_DOCUMENT_HPP__ #include "orcus/env.hpp" #include "orcus/interface.hpp" #include "orcus/spreadsheet/types.hpp" #include namespace ixion { class formula_name_resolver; class model_context; struct abs_address_t; } namespace orcus { class pstring; class string_pool; namespace spreadsheet { class import_global_settings; class import_shared_strings; class import_styles; class sheet; struct table_t; struct document_impl; /** * Internal document representation used only for testing the filters. It * uses ixion's model_context implementation to store raw cell values. */ class ORCUS_SPM_DLLPUBLIC document : public orcus::iface::document_dumper { friend class sheet; document(const document&); // disabled document& operator= (const document&); // disabled public: document(); ~document(); import_shared_strings* get_shared_strings(); const import_shared_strings* get_shared_strings() const; import_styles* get_styles(); const import_styles* get_styles() const; sheet* append_sheet(const pstring& sheet_name, row_t row_size, col_t col_size); sheet* get_sheet(const pstring& sheet_name); sheet* get_sheet(sheet_t sheet_pos); const sheet* get_sheet(sheet_t sheet_pos) const; void calc_formulas(); void swap(document& other); /** * Clear document content, to make it empty. */ void clear(); /** * Dump document content to specified output directory. */ virtual void dump_flat(const std::string& outdir) const; /** * File name should not contain an extension. The final name will be * [filename] + _ + [sheet name] + .html. * * @param filename base file name */ virtual void dump_html(const ::std::string& outdir) const; /** * Dump document content to stdout in the special format used for content * verification during unit test. */ virtual void dump_check(std::ostream& os) const; sheet_t get_sheet_index(const pstring& name) const; pstring get_sheet_name(sheet_t sheet_pos) const; size_t sheet_size() const; void set_origin_date(int year, int month, int day); void set_formula_grammar(formula_grammar_t grammar); formula_grammar_t get_formula_grammar() const; const ixion::formula_name_resolver* get_formula_name_resolver() const; ixion::model_context& get_model_context(); const ixion::model_context& get_model_context() const; string_pool& get_string_pool(); /** * Insert a new table object into the document. The document will take * ownership of the inserted object after the call. The object will get * inserted only when there is no pre-existing table object of the same * name. The object not being inserted will be deleted. * * @param p table object to insert. */ void insert_table(table_t* p); const table_t* get_table(const pstring& name) const; void finalize(); private: void insert_dirty_cell(const ixion::abs_address_t& pos); private: document_impl* mp_impl; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/global_settings.hpp0000644000175000017500000000207212535701142022767 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_GLOBAL_SETTINGS_HPP #define ORCUS_GLOBAL_SETTINGS_HPP #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/env.hpp" namespace orcus { namespace spreadsheet { class document; struct import_global_settings_impl; class ORCUS_SPM_DLLPUBLIC import_global_settings : public spreadsheet::iface::import_global_settings { import_global_settings_impl* mp_impl; public: import_global_settings(document& doc); virtual ~import_global_settings(); virtual void set_origin_date(int year, int month, int day); virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar); virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const; }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/auto_filter.hpp0000644000175000017500000000514012535701142022123 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SPREADSHEET_AUTO_FILTER_HPP #define ORCUS_SPREADSHEET_AUTO_FILTER_HPP #include "types.hpp" #include "orcus/pstring.hpp" #include "../env.hpp" #include #include #include namespace orcus { namespace spreadsheet { /** * Data for a single column inside autofilter range. */ struct ORCUS_SPM_DLLPUBLIC auto_filter_column_t { typedef boost::unordered_set match_values_type; match_values_type match_values; void reset(); void swap(auto_filter_column_t& r); }; /** * Data for a single autofilter entry. An autofilter can belong to either a * sheet or a table. */ struct ORCUS_SPM_DLLPUBLIC auto_filter_t { typedef std::map columns_type; ixion::abs_range_t range; columns_type columns; auto_filter_t(); void reset(); void swap(auto_filter_t& r); /** * Set column data to specified column index. The data may not contain * the original data after the call when overwriting it with an existing * data previously associated with the same column index. * * @param col column index to associate the data to. * @param data column data. */ void commit_column(col_t col, auto_filter_column_t& data); }; /** * Single column entry in table. */ struct ORCUS_SPM_DLLPUBLIC table_column_t { size_t identifier; pstring name; pstring totals_row_label; totals_row_function_t totals_row_function; table_column_t(); void reset(); }; /** * Table style information. */ struct ORCUS_SPM_DLLPUBLIC table_style_t { pstring name; bool show_first_column:1; bool show_last_column:1; bool show_row_stripes:1; bool show_column_stripes:1; table_style_t(); void reset(); }; /** * Single table entry. A table is a range in a spreadsheet that represents * a single set of data that can be used as a data source. */ struct ORCUS_SPM_DLLPUBLIC table_t { typedef std::vector columns_type; size_t identifier; pstring name; pstring display_name; ixion::abs_range_t range; size_t totals_row_count; auto_filter_t filter; columns_type columns; table_style_t style; table_t(); void reset(); }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/sheet_properties.hpp0000644000175000017500000000236212535701142023175 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SHEET_PROPERTIES_HPP #define ORCUS_SHEET_PROPERTIES_HPP #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/env.hpp" namespace orcus { namespace spreadsheet { class document; class sheet; struct sheet_properties_impl; /** * Implement the sheet properties import interface, but the actual * properties are stored in sheet. */ class sheet_properties : public iface::import_sheet_properties { sheet_properties_impl* mp_impl; public: sheet_properties(document& doc, sheet& sh); ~sheet_properties(); virtual void set_column_width(col_t col, double width, orcus::length_unit_t unit); virtual void set_column_hidden(col_t col, bool hidden); virtual void set_row_height(row_t row, double height, orcus::length_unit_t unit); virtual void set_row_hidden(row_t row, bool hidden); virtual void set_merge_cell_range(const char* p_ref, size_t p_ref_len); }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/spreadsheet/export_interface.hpp0000644000175000017500000000172312535701142023152 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SPREADSHEET_EXPORT_INTERFACE_HPP__ #define __ORCUS_SPREADSHEET_EXPORT_INTERFACE_HPP__ #include "types.hpp" #include "../env.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class export_sheet { public: ORCUS_DLLPUBLIC virtual ~export_sheet() = 0; virtual void write_string(std::ostream& os, orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) const = 0; }; class export_factory { public: ORCUS_DLLPUBLIC virtual ~export_factory() = 0; virtual const export_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) const = 0; }; }}} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/config.hpp0000644000175000017500000000152612535701142016550 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_CONFIG_HPP #define ORCUS_CONFIG_HPP #include "env.hpp" namespace orcus { struct ORCUS_DLLPUBLIC config { /** * Enable or disable runtime debug output to stdout or stderr. */ bool debug; /** * Control whether or not to perform strict check of the xml structure of * a stream being parsed. When enabled, it throws an xml_structure_error * exception when an incorrect xml structure is detected. */ bool structure_check; config(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/base64.hpp0000644000175000017500000000232112535701142016361 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_BASE64_HPP__ #define __ORCUS_BASE64_HPP__ #include "env.hpp" #include #include namespace orcus { /** * Decode a based64-encoded character sequence into a sequence of bytes. * * @param p_base64 pointer to the first character of encoded character * sequence. * @param len_base64 length of encoded character sequence. * @param decoded decoded byte sequence will be put into this parameter. */ ORCUS_PSR_DLLPUBLIC void decode_from_base64(const char* p_base64, size_t len_base64, std::vector& decoded); /** * Encode a sequence of bytes into base64-encoded characters. * * @param input sequence of bytes to encode. * @param encoded base64-encoded character sequence representing the input * bytes. */ ORCUS_PSR_DLLPUBLIC void encode_to_base64(const std::vector& input, std::string& encoded); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/css_types.hpp0000644000175000017500000001162112535701142017314 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_ORCUS_CSS_TYPES_HPP #define INCLUDED_ORCUS_CSS_TYPES_HPP #include "orcus/env.hpp" #include #include #include namespace orcus { namespace css { enum combinator_t { combinator_descendant, /// 'E F' where F is a descendant of E. combinator_direct_child, /// 'E > F' where F is a direct child of E. combinator_next_sibling /// 'E + F' where F is a direct sibling of E where E precedes F. }; /** * List of functions used as property values. */ enum property_function_t { func_unknown = 0, func_hsl, func_hsla, func_rgb, func_rgba, func_url }; enum property_value_t { property_value_none = 0, property_value_string, property_value_hsl, property_value_hsla, property_value_rgb, property_value_rgba, property_value_url }; typedef uint16_t pseudo_element_t; typedef uint64_t pseudo_class_t; ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_after; ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_before; ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_first_letter; ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_first_line; ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_selection; ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_backdrop; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_active; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_checked; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_default; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_dir; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_disabled; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_empty; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_enabled; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_first; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_first_child; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_first_of_type; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_fullscreen; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_focus; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_hover; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_indeterminate; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_in_range; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_invalid; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_lang; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_last_child; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_last_of_type; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_left; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_link; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_not; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_child; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_last_child; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_last_of_type; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_of_type; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_only_child; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_only_of_type; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_optional; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_out_of_range; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_read_only; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_read_write; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_required; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_right; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_root; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_scope; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_target; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_valid; ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_visited; /** * Convert a textural representation of a pseudo element into its numerical * representation. */ ORCUS_PSR_DLLPUBLIC pseudo_element_t to_pseudo_element(const char* p, size_t n); /** * Convert a textural representation of a pseudo class into its numerical * representation. */ ORCUS_PSR_DLLPUBLIC pseudo_class_t to_pseudo_class(const char* p, size_t n); ORCUS_PSR_DLLPUBLIC std::string pseudo_class_to_string(pseudo_class_t val); ORCUS_PSR_DLLPUBLIC property_function_t to_property_function(const char* p, size_t n); }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/orcus_gnumeric.hpp0000644000175000017500000000204312535701142020322 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ORCUS_GNUMERIC_HPP #define ORCUS_ORCUS_GNUMERIC_HPP #include "interface.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_factory; }} struct orcus_gnumeric_impl; class ORCUS_DLLPUBLIC orcus_gnumeric : public iface::import_filter { orcus_gnumeric(const orcus_gnumeric&); // disabled public: orcus_gnumeric(spreadsheet::iface::import_factory* factory); ~orcus_gnumeric(); static bool detect(const unsigned char* blob, size_t size); virtual void read_file(const std::string& filepath); virtual const char* get_name() const; private: void read_content_xml(const char* p, size_t size); private: orcus_gnumeric_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/measurement.hpp0000644000175000017500000000302212535701142017621 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_MEASUREMENT_HPP #define ORCUS_MEASUREMENT_HPP #include "types.hpp" #include "env.hpp" #include #include namespace orcus { class pstring; struct ORCUS_DLLPUBLIC length_t { length_unit_t unit; double value; length_t(); std::string print() const; }; ORCUS_DLLPUBLIC double to_double(const char* p, const char* p_end, const char** p_parse_ended = NULL); ORCUS_DLLPUBLIC double to_double(const pstring& s); ORCUS_DLLPUBLIC long to_long(const char* p, const char* p_end, const char** p_parse_ended = NULL); ORCUS_DLLPUBLIC long to_long(const pstring& s); ORCUS_DLLPUBLIC bool to_bool(const pstring& s); /** * Parse a string value containing a part representing a numerical value * optionally followed by a part representing a unit of measurement. * * Examples of such string value are: "1.234in", "0.34cm" and so on. * * @param str original string value. * * @return structure containing a numerical value and a unit of measurement * that the original string value represents. */ ORCUS_DLLPUBLIC length_t to_length(const pstring& str); ORCUS_DLLPUBLIC double convert(double value, length_unit_t unit_from, length_unit_t unit_to); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/cell_buffer.hpp0000644000175000017500000000163412535701142017553 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_CELL_BUFFER_HPP__ #define __ORCUS_CELL_BUFFER_HPP__ #include "env.hpp" #include namespace orcus { /** * Temporary cell buffer used to convert cell values when needed. This is * used in the sax and csv parsers. */ class ORCUS_PSR_DLLPUBLIC cell_buffer { std::string m_buffer; size_t m_buf_size; /// Logical buffer size. May differ from the actual buffer size. public: cell_buffer(); void append(const char* p, size_t len); void reset(); const char* get() const; size_t size() const; bool empty() const; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/sax_parser_base.hpp0000644000175000017500000001275712535701142020454 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SAX_PARSER_BASE_HPP #define ORCUS_SAX_PARSER_BASE_HPP #include "env.hpp" #include "pstring.hpp" #include "cell_buffer.hpp" #include "parser_global.hpp" #include #include #include #include #include #define ORCUS_DEBUG_SAX_PARSER 0 #if ORCUS_DEBUG_SAX_PARSER #include using std::cout; using std::endl; #endif namespace orcus { namespace sax { class ORCUS_PSR_DLLPUBLIC malformed_xml_error : public std::exception { std::string m_msg; public: malformed_xml_error(const std::string& msg); virtual ~malformed_xml_error() throw(); virtual const char* what() const throw(); }; /** * Document type declaration passed by sax_parser to its handler's doctype() * call. */ struct doctype_declaration { enum keyword_type { keyword_public, keyword_private }; keyword_type keyword; pstring root_element; pstring fpi; pstring uri; }; /** * Given an encoded name (such as 'quot' and 'amp'), return a single * character that corresponds with the name. The name shouldn't include the * leading '&' and trailing ';'. * * @param p pointer to the first character of encoded name * @param n length of encoded name * * @return single character that corresponds with the encoded name. '\0' is * returned if decoding fails. */ ORCUS_PSR_DLLPUBLIC char decode_xml_encoded_char(const char* p, size_t n); /** * Element properties passed by sax_parser to its handler's open_element() * and close_element() calls. */ struct parser_element { pstring ns; // element namespace (optional) pstring name; // element name const char* begin_pos; // position of the opening brace '<'. const char* end_pos; // position of the char after the closing brace '>'. }; /** * Attribute properties passed by sax_parser to its handler's attribute() * call. When an attribute value is transient, it has been converted due to * presence of encoded character(s) and stored in a temporary buffer. The * handler must assume that the value will not survive beyond the scope of * the callback. */ struct parser_attribute { pstring ns; // attribute namespace (optional) pstring name; // attribute name pstring value; // attribute value bool transient; // whether or not the attribute value is on a temporary buffer. }; class ORCUS_PSR_DLLPUBLIC parser_base { protected: boost::ptr_vector m_cell_buffers; const char* m_content; const char* m_char; const size_t m_size; size_t m_pos; size_t m_nest_level; size_t m_buffer_pos; bool m_root_elem_open:1; protected: parser_base(const char* content, size_t size); void next() { ++m_pos; ++m_char; } void next_check() { next(); if (!has_char()) throw malformed_xml_error("xml stream ended prematurely."); } void nest_up() { ++m_nest_level; } void nest_down() { assert(m_nest_level > 0); --m_nest_level; } void inc_buffer_pos(); void reset_buffer_pos() { m_buffer_pos = 0; } bool has_char() const { return m_pos < m_size; } void has_char_throw(const char* msg) const { if (!has_char()) throw malformed_xml_error(msg); } inline size_t remains() const { #if ORCUS_DEBUG_SAX_PARSER if (m_pos >= m_size) throw malformed_xml_error("xml stream ended prematurely."); #endif return m_size - m_pos; } char cur_char() const { #if ORCUS_DEBUG_SAX_PARSER if (m_pos >= m_size) throw malformed_xml_error("xml stream ended prematurely."); #endif return *m_char; } char cur_char_checked() const { if (!has_char()) throw malformed_xml_error("xml stream ended prematurely."); return *m_char; } char next_char() { next(); #if ORCUS_DEBUG_SAX_PARSER if (m_pos >= m_size) throw malformed_xml_error("xml stream ended prematurely."); #endif return *m_char; } char next_char_checked() { next(); if (!has_char()) throw malformed_xml_error("xml stream ended prematurely."); return *m_char; } cell_buffer& get_cell_buffer(); void blank(); void comment(); /** * Skip an optional byte order mark at the begining of the xml stream. */ void skip_bom(); void expects_next(const char* p, size_t n); void parse_encoded_char(cell_buffer& buf); void value_with_encoded_char(cell_buffer& buf, pstring& str); /** * Parse quoted value. Note that the retreived string may be stored in * the temporary cell buffer if the decode parameter is true. Use the * string immediately after this call before the buffer becomes invalid. * * @return true if the value is stored in temporary buffer, false * otherwise. */ bool value(pstring& str, bool decode); void name(pstring& str); void element_name(parser_element& elem, const char* begin_pos); void attribute_name(pstring& attr_ns, pstring& attr_name); void characters_with_encoded_char(cell_buffer& buf); }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/css_selector.hpp0000644000175000017500000000764512535701142020003 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_ORCUS_CSS_SELECTOR_HPP #define INCLUDED_ORCUS_CSS_SELECTOR_HPP #include "orcus/env.hpp" #include "orcus/pstring.hpp" #include "orcus/css_types.hpp" #include #include #include #include namespace orcus { struct ORCUS_DLLPUBLIC css_simple_selector_t { typedef boost::unordered_set classes_type; pstring name; pstring id; classes_type classes; css::pseudo_class_t pseudo_classes; css_simple_selector_t(); void clear(); bool empty() const; bool operator== (const css_simple_selector_t& r) const; bool operator!= (const css_simple_selector_t& r) const; struct hash { size_t operator() (const css_simple_selector_t& ss) const; }; }; struct ORCUS_DLLPUBLIC css_chained_simple_selector_t { css::combinator_t combinator; css_simple_selector_t simple_selector; bool operator== (const css_chained_simple_selector_t& r) const; css_chained_simple_selector_t(); css_chained_simple_selector_t(const css_simple_selector_t& ss); css_chained_simple_selector_t(css::combinator_t op, const css_simple_selector_t& ss); }; /** * Each CSS selector consists of one or more chained simple selectors. */ struct ORCUS_DLLPUBLIC css_selector_t { typedef std::vector chained_type; css_simple_selector_t first; chained_type chained; void clear(); bool operator== (const css_selector_t& r) const; }; /** * Structure representing a single CSS property value. */ struct ORCUS_DLLPUBLIC css_property_value_t { css::property_value_t type; union { struct { /** * Pointer to a string value. The actual string value must be stored * in the string pool associated with the document tree storage. */ const char* str; uint32_t length; }; struct { union { struct { uint8_t red; /// 0 to 255 uint8_t green; /// 0 to 255 uint8_t blue; /// 0 to 255 }; struct { uint16_t hue; /// 0 to 360 where 0-red, 120-green, and 240-blue uint8_t saturation; /// percentage uint8_t lightness; /// percentage }; }; double alpha; /// 0 to 1.0 }; }; css_property_value_t(); css_property_value_t(const css_property_value_t& r); /** * Constructor that takes a string value. * * @param str string value to store. This value should point to a string * buffer that's already been interned. The caller is * responsible for managing the life cycle of the string buffer * that the pstring object points to. */ css_property_value_t(const pstring& str); css_property_value_t& operator= (const css_property_value_t& r); void swap(css_property_value_t& r); }; typedef boost::unordered_map, pstring::hash> css_properties_t; typedef boost::unordered_map css_pseudo_element_properties_t; ORCUS_DLLPUBLIC std::ostream& operator<< (std::ostream& os, const css_simple_selector_t& v); ORCUS_DLLPUBLIC std::ostream& operator<< (std::ostream& os, const css_selector_t& v); ORCUS_DLLPUBLIC std::ostream& operator<< (std::ostream& os, const css_property_value_t& v); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/env.hpp0000644000175000017500000000744012535701142016074 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ENV_HPP__ #define __ORCUS_ENV_HPP__ // orcus #if defined _WIN32 || defined __CYGWIN__ #if defined __MINGW32__ #define ORCUS_DLLPUBLIC #define ORCUS_DLLLOCAL #elif defined __ORCUS_BUILDING_DLL #ifdef __GNUC__ #define ORCUS_DLLPUBLIC __attribute__ ((dllexport)) #else #define ORCUS_DLLPUBLIC __declspec(dllexport) #endif #elif defined __ORCUS_STATIC_LIB #define ORCUS_DLLPUBLIC #else #ifdef __GNUC__ #define ORCUS_DLLPUBLIC __attribute__ ((dllimport)) #else #define ORCUS_DLLPUBLIC __declspec(dllimport) #endif #endif #define ORCUS_DLLLOCAL #else #if __GNUC__ >= 4 #define ORCUS_DLLPUBLIC __attribute__ ((visibility ("default"))) #define ORCUS_DLLLOCAL __attribute__ ((visibility ("hidden"))) #else #define ORCUS_DLLPUBLIC #define ORCUS_DLLLOCAL #endif #endif // orcus-parser #if defined _WIN32 || defined __CYGWIN__ #if defined __MINGW32__ #define ORCUS_PSR_DLLPUBLIC #define ORCUS_PSR_DLLLOCAL #elif defined __ORCUS_PSR_BUILDING_DLL #ifdef __GNUC__ #define ORCUS_PSR_DLLPUBLIC __attribute__ ((dllexport)) #else #define ORCUS_PSR_DLLPUBLIC __declspec(dllexport) #endif #elif defined __ORCUS_STATIC_LIB #define ORCUS_PSR_DLLPUBLIC #else #ifdef __GNUC__ #define ORCUS_PSR_DLLPUBLIC __attribute__ ((dllimport)) #else #define ORCUS_PSR_DLLPUBLIC __declspec(dllimport) #endif #endif #define ORCUS_PSR_DLLLOCAL #else #if __GNUC__ >= 4 #define ORCUS_PSR_DLLPUBLIC __attribute__ ((visibility ("default"))) #define ORCUS_PSR_DLLLOCAL __attribute__ ((visibility ("hidden"))) #else #define ORCUS_PSR_DLLPUBLIC #define ORCUS_PSR_DLLLOCAL #endif #endif // orcus-spreadsheet-model #if defined _WIN32 || defined __CYGWIN__ #if defined __MINGW32__ #define ORCUS_SPM_DLLPUBLIC #define ORCUS_SPM_DLLLOCAL #elif defined __ORCUS_SPM_BUILDING_DLL #ifdef __GNUC__ #define ORCUS_SPM_DLLPUBLIC __attribute__ ((dllexport)) #else #define ORCUS_SPM_DLLPUBLIC __declspec(dllexport) #endif #elif defined __ORCUS_STATIC_LIB #define ORCUS_SPM_DLLPUBLIC #else #ifdef __GNUC__ #define ORCUS_SPM_DLLPUBLIC __attribute__ ((dllimport)) #else #define ORCUS_SPM_DLLPUBLIC __declspec(dllimport) #endif #endif #define ORCUS_SPM_DLLLOCAL #else #if __GNUC__ >= 4 #define ORCUS_SPM_DLLPUBLIC __attribute__ ((visibility ("default"))) #define ORCUS_SPM_DLLLOCAL __attribute__ ((visibility ("hidden"))) #else #define ORCUS_SPM_DLLPUBLIC #define ORCUS_SPM_DLLLOCAL #endif #endif // orcus-mso #if defined _WIN32 || defined __CYGWIN__ #if defined __MINGW32__ #define ORCUS_MSO_DLLPUBLIC #define ORCUS_MSO_DLLLOCAL #elif defined __ORCUS_MSO_BUILDING_DLL #ifdef __GNUC__ #define ORCUS_MSO_DLLPUBLIC __attribute__ ((dllexport)) #else #define ORCUS_MSO_DLLPUBLIC __declspec(dllexport) #endif #elif defined __ORCUS_STATIC_LIB #define ORCUS_MSO_DLLPUBLIC #else #ifdef __GNUC__ #define ORCUS_MSO_DLLPUBLIC __attribute__ ((dllimport)) #else #define ORCUS_MSO_DLLPUBLIC __declspec(dllimport) #endif #endif #define ORCUS_MSO_DLLLOCAL #else #if __GNUC__ >= 4 #define ORCUS_MSO_DLLPUBLIC __attribute__ ((visibility ("default"))) #define ORCUS_MSO_DLLLOCAL __attribute__ ((visibility ("hidden"))) #else #define ORCUS_MSO_DLLPUBLIC #define ORCUS_MSO_DLLLOCAL #endif #endif #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/xml_namespace.hpp0000644000175000017500000000716312535701142020122 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XML_NAMESPACE_MANAGER_HPP__ #define __ORCUS_XML_NAMESPACE_MANAGER_HPP__ #include "types.hpp" #include namespace orcus { class xmlns_context; class pstring; struct xmlns_repository_impl; struct xmlns_context_impl; /** * Central XML namespace repository that stores all namespaces that are used * in the current session. */ class xmlns_repository { friend class xmlns_context; xmlns_id_t intern(const pstring& uri); xmlns_repository(const xmlns_repository&); // disabled xmlns_repository& operator= (const xmlns_repository&); // disabled size_t get_index(xmlns_id_t ns_id) const; public: ORCUS_PSR_DLLPUBLIC xmlns_repository(); ORCUS_PSR_DLLPUBLIC ~xmlns_repository(); /** * Add a set of predefined namespace values to the repository. * * @param predefined_ns predefined set of namespace values. This is a * null-terminated array of xmlns_id_t. This * xmlns_repository instance will assume that the * instances of these xmlns_id_t values will be * available throughout its life cycle; caller needs * to ensure that they won't get deleted before the * corresponding xmlns_repository instance is * deleted. */ ORCUS_PSR_DLLPUBLIC void add_predefined_values(const xmlns_id_t* predefined_ns); ORCUS_PSR_DLLPUBLIC xmlns_context create_context(); /** * Get XML namespace identifier from its numerical index. * * @param index numeric index of namespace. * * @return valid namespace identifier, or XMLNS_UNKNOWN_ID if not found. */ ORCUS_PSR_DLLPUBLIC xmlns_id_t get_identifier(size_t index) const; ORCUS_PSR_DLLPUBLIC std::string get_short_name(xmlns_id_t ns_id) const; ORCUS_PSR_DLLPUBLIC std::string get_short_name(size_t index) const; private: xmlns_repository_impl* mp_impl; }; /** * XML namespace context. A new context should be used for each xml stream * since the namespace keys themselves are not interned. Don't hold an * instance of this class any longer than the life cycle of the xml stream * it is used in. * * An empty key value is associated with a default namespace. */ class ORCUS_PSR_DLLPUBLIC xmlns_context { friend class xmlns_repository; xmlns_context(); // disabled xmlns_context(xmlns_repository& repo); public: xmlns_context(const xmlns_context& r); ~xmlns_context(); xmlns_id_t push(const pstring& key, const pstring& uri); void pop(const pstring& key); xmlns_id_t get(const pstring& key) const; size_t get_index(xmlns_id_t ns_id) const; std::string get_short_name(xmlns_id_t ns_id) const; /** * Get an alias currently associated with a given namespace identifier. * * @param ns_id namespace identifier. * * @return alias name currently associted with the given namespace * identifier, or an empty string if the given namespace is * currently not associated with any aliases. */ pstring get_alias(xmlns_id_t ns_id) const; void get_all_namespaces(std::vector& nslist) const; void dump(std::ostream& os) const; private: xmlns_context_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/sax_token_parser.hpp0000644000175000017500000000746212535701142020657 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_ORCUS_SAX_TOKEN_PARSER_HPP #define INCLUDED_ORCUS_SAX_TOKEN_PARSER_HPP #include #include #include #include "types.hpp" #include "sax_ns_parser.hpp" namespace orcus { class tokens; namespace sax { #if ORCUS_DEBUG_SAX_PARSER template class attr_printer : public ::std::unary_function<_Attr, void> { public: attr_printer(const _Tokens& tokens, const ::std::string& indent) : m_tokens(tokens), m_indent(indent) {} void operator() (const _Attr& attr) const { using namespace std; cout << m_indent << " attribute: " << attr.ns << ":" << m_tokens.get_token_name(attr.name) << "=\"" << attr.value.str() << "\"" << endl; } private: const _Tokens& m_tokens; ::std::string m_indent; }; #endif } /** * Element properties passed to its handler via start_element() and * end_element() calls. */ struct sax_token_parser_element { xmlns_id_t ns; xml_token_t name; pstring raw_name; std::vector attrs; }; class ORCUS_PSR_DLLPUBLIC sax_token_handler_wrapper_base { protected: sax_token_parser_element m_elem; const tokens& m_tokens; xml_token_t tokenize(const pstring& name) const; void set_element(const sax_ns_parser_element& elem); public: sax_token_handler_wrapper_base(const tokens& _tokens); void attribute(const pstring& name, const pstring& val); void attribute(const sax_ns_parser_attribute& attr); }; /** * XML parser that tokenizes element and attribute names while parsing. */ template class sax_token_parser { public: typedef _Handler handler_type; sax_token_parser( const char* content, const size_t size, const tokens& _tokens, xmlns_context& ns_cxt, handler_type& handler); ~sax_token_parser(); void parse(); private: /** * Re-route callbacks from the internal sax_parser into the token_parser * callbacks. */ class handler_wrapper : public sax_token_handler_wrapper_base { handler_type& m_handler; public: handler_wrapper(const tokens& _tokens, handler_type& handler) : sax_token_handler_wrapper_base(_tokens), m_handler(handler) {} void doctype(const sax::doctype_declaration&) {} void start_declaration(const pstring&) {} void end_declaration(const pstring&) { m_elem.attrs.clear(); } void start_element(const sax_ns_parser_element& elem) { set_element(elem); m_handler.start_element(m_elem); m_elem.attrs.clear(); } void end_element(const sax_ns_parser_element& elem) { set_element(elem); m_handler.end_element(m_elem); } void characters(const pstring& val, bool transient) { m_handler.characters(val, transient); } }; private: handler_wrapper m_wrapper; sax_ns_parser m_parser; }; template sax_token_parser<_Handler>::sax_token_parser( const char* content, const size_t size, const tokens& _tokens, xmlns_context& ns_cxt, handler_type& handler) : m_wrapper(_tokens, handler), m_parser(content, size, ns_cxt, m_wrapper) { } template sax_token_parser<_Handler>::~sax_token_parser() { } template void sax_token_parser<_Handler>::parse() { m_parser.parse(); } } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/tokens.hpp0000644000175000017500000000305112535701142016601 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_ORCUS_TOKENS_HPP #define INCLUDED_ORCUS_TOKENS_HPP #include "orcus/types.hpp" #include "orcus/pstring.hpp" #include #include namespace orcus { class pstring; class ORCUS_PSR_DLLPUBLIC tokens { public: tokens(const char** token_names, size_t token_name_count); /** * Check if a token returned from get_token() method is valid. * * @return true if valid, false otherwise. */ bool is_valid_token(xml_token_t token) const; /** * Get token from a specified name. * * @param name textural token name * * @return token value representing the given textural token. */ xml_token_t get_token(const pstring& name) const; /** * Get textural token name from a token value. * * @param token numeric token value * * @return textural token name, or empty string in case the given token is * not valid. */ const char* get_token_name(xml_token_t token) const; private: typedef boost::unordered_map token_map_type; token_map_type m_tokens; const char** m_token_names; size_t m_token_name_count; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/dom_tree.hpp0000644000175000017500000000532712535701142017104 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_DOM_TREE_HPP__ #define __ORCUS_DOM_TREE_HPP__ #include "pstring.hpp" #include "types.hpp" #include #include #include namespace orcus { class xmlns_context; struct dom_tree_impl; /** * Ordinary DOM tree representing the structure of a XML content in full. */ class ORCUS_DLLPUBLIC dom_tree { dom_tree(const dom_tree&); // disabled dom_tree& operator= (const dom_tree&); // disabled public: struct entity_name { xmlns_id_t ns; pstring name; entity_name(); entity_name(xmlns_id_t _ns, const pstring& _name); void print(std::ostream& os, const xmlns_context& cxt) const; }; struct attr { entity_name name; pstring value; attr(xmlns_id_t _ns, const pstring& _name, const pstring& _value); void print(std::ostream& os, const xmlns_context& cxt) const; }; typedef std::vector attrs_type; enum node_type { node_element, node_content }; struct node { node_type type; node(node_type _type) : type(_type) {} virtual ~node() = 0; virtual void print(std::ostream& os, const xmlns_context& cxt) const = 0; }; typedef boost::ptr_vector nodes_type; struct element : public node { entity_name name; attrs_type attrs; nodes_type child_nodes; element(xmlns_id_t _ns, const pstring& _name); virtual void print(std::ostream& os, const xmlns_context& cxt) const; virtual ~element(); }; typedef std::vector element_stack_type; struct content : public node { pstring value; content(const pstring& _value); virtual void print(std::ostream& os, const xmlns_context& cxt) const; virtual ~content(); }; dom_tree(xmlns_context& cxt); ~dom_tree(); void start_declaration(const pstring& name); void end_declaration(const pstring& name); void start_element(xmlns_id_t ns, const pstring& name); void end_element(xmlns_id_t ns, const pstring& name); void set_characters(const pstring& val); void set_attribute(xmlns_id_t ns, const pstring& name, const pstring& val); const attrs_type* get_declaration_attributes(const pstring& name) const; void dump_compact(std::ostream& os) const; private: dom_tree_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/css_document_tree.hpp0000644000175000017500000000503412535701142021006 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef INCLUDED_ORCUS_CSS_DOCUMENT_TREE_HPP #define INCLUDED_ORCUS_CSS_DOCUMENT_TREE_HPP #include "orcus/css_selector.hpp" #include "orcus/exception.hpp" #include namespace orcus { /** * Class representing CSS rules. */ class ORCUS_DLLPUBLIC css_document_tree { struct impl; impl* mp_impl; public: class insertion_error : public general_error { public: insertion_error(const std::string& msg); }; css_document_tree(); ~css_document_tree(); /** * Load raw string stream containing CSS rules to populate the document * tree. * * @param strm stream containing raw CSS rules. */ void load(const std::string& strm); /** * Insert or replace properties for given selector and pseudo element * flags. * * @param selector selector to store properties for. * @param pseudo_elem pseudo element flags for the last simple selector. * @param props new properties to insert. */ void insert_properties( const css_selector_t& selector, css::pseudo_element_t pseudo_elem, const css_properties_t& props); /** * Get properties associated with given selector and one or more pseudo * elements. * * @param selector selector to get properties for. * @param pseudo_elem pseudo element flags for the last simple selector. * This value is a bitfield. * * @return const pointer to the property set instance, or NULL in case * there is no properties for the given selector. */ const css_properties_t* get_properties( const css_selector_t& selector, css::pseudo_element_t pseudo_elem) const; /** * Get all sets of properties associated with given selector, for all * pseudo element values. * * @param selector selector to get properties for. * * @return const pointer to the map of property sets with pseudo element * values as the keys, or NULL in case there is no properties for * the given selector. */ const css_pseudo_element_properties_t* get_all_properties(const css_selector_t& selector) const; void dump() const; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/xml_structure_tree.hpp0000644000175000017500000000757312535701142021252 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XML_STRUCTURE_TREE_HPP__ #define __ORCUS_XML_STRUCTURE_TREE_HPP__ #include "env.hpp" #include "types.hpp" #include namespace orcus { class xmlns_context; struct xml_structure_tree_impl; /** * Tree representing the structure of elements in XML content. Recurring * elements under the same parent are represented by a single element * instance. This tree only includes elements; no attributes and content * nodes appear in this tree. */ class ORCUS_DLLPUBLIC xml_structure_tree { xml_structure_tree(const xml_structure_tree&); // disabled; xml_structure_tree& operator= (const xml_structure_tree&); // disabled public: struct ORCUS_DLLPUBLIC entity_name { xmlns_id_t ns; pstring name; entity_name(); entity_name(xmlns_id_t _ns, const pstring& _name); bool operator< (const entity_name& r) const; bool operator== (const entity_name& r) const; struct ORCUS_DLLPUBLIC hash { size_t operator ()(const entity_name& val) const; }; }; typedef std::vector entity_names_type; struct ORCUS_DLLPUBLIC element { entity_name name; bool repeat; element(); element(const entity_name& _name, bool _repeat); }; struct walker_impl; /** * This class allows client to traverse the tree. */ class ORCUS_DLLPUBLIC walker { friend class xml_structure_tree; walker_impl* mp_impl; walker(); // disabled walker(const xml_structure_tree_impl& parent_impl); public: walker(const walker& r); ~walker(); walker& operator= (const walker& r); /** * Set current position to the root element, and return the root * element. * * @return root element. */ element root(); /** * Descend into specified child element. * * @param ns namespace of child element * @param name name of child element * * @return child element */ element descend(const entity_name& name); /** * Move up to the parent element. */ element ascend(); /** * Get a list of names of all child elements at current element * position. The list of names is in order of appearance. * * @param names list of child element names in order of appearance. */ void get_children(entity_names_type& names); /** * Get a list of names of all attributes that belong to current * element. The list of names is in order of appearance. * * @param names list of attribute names in order of appearance. */ void get_attributes(entity_names_type& names); /** * Get a numerical, 0-based index of given XML namespace. * * @param ns XML namespace ID. * * @return numeric, 0-based index of XML namespace if found, or * xml_structure_tree::walker::index_not_found if * the namespace is not found in this structure. */ size_t get_xmlns_index(xmlns_id_t ns) const; std::string get_xmlns_short_name(xmlns_id_t ns) const; }; xml_structure_tree(xmlns_context& xmlns_cxt); ~xml_structure_tree(); void parse(const char* p, size_t n); void dump_compact(std::ostream& os) const; walker get_walker() const; private: xml_structure_tree_impl* mp_impl; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/include/orcus/orcus_csv.hpp0000644000175000017500000000172112535701142017306 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ORCUS_CSV_HPP #define ORCUS_ORCUS_CSV_HPP #include "interface.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_factory; }} class ORCUS_DLLPUBLIC orcus_csv : public iface::import_filter { orcus_csv(const orcus_csv&); // disabled orcus_csv& operator=(const orcus_csv&); // disabled public: orcus_csv(spreadsheet::iface::import_factory* factory); virtual void read_file(const std::string& filepath); virtual const char* get_name() const; private: void parse(const std::string& strm); private: spreadsheet::iface::import_factory* mp_factory; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/missing0000755000175000017500000001533012540653525013420 0ustar renerene#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: liborcus-0.9.2/config.guess0000755000175000017500000012355012540653525014345 0ustar renerene#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: liborcus-0.9.2/liborcus-spreadsheet-model.pc.in0000644000175000017500000000072512535701142020172 0ustar renereneprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: liborcus-spreadsheet-model-@ORCUS_API_VERSION@ Description: Standalone file import filter library for spreadsheet documents. Currently under development are ODS, XLSX and CSV import filters. Version: @VERSION@ Libs: -L${libdir} -lorcus-spreadsheet-model-@ORCUS_API_VERSION@ @LIBIXION_LIBS@ Cflags: -I${includedir}/liborcus-spreadsheet-model-@ORCUS_API_VERSION@ @LIBIXION_CFLAGS@ liborcus-0.9.2/slickedit/0000755000175000017500000000000012540654316013771 5ustar renereneliborcus-0.9.2/slickedit/token-gen.vpj0000644000175000017500000000355312535701142016401 0ustar renerene liborcus-0.9.2/slickedit/orcus.vpj0000644000175000017500000007473212535701142015654 0ustar renerene liborcus-0.9.2/slickedit/external-headers.vpj0000644000175000017500000001757112535701142017752 0ustar renerene liborcus-0.9.2/slickedit/orcus.vpw0000644000175000017500000000041512535701142015654 0ustar renerene liborcus-0.9.2/bin/0000755000175000017500000000000012540654316012566 5ustar renereneliborcus-0.9.2/bin/orcus-common-func.sh0000644000175000017500000000314212535701142016466 0ustar renerene common_exec() { ARG_ONE=$1 if [ "$ARG_ONE" == "gdb" ]; then shift # execute inside gdb. gdb --args $EXECPATH "$@" || exit 1 exit 0 fi if [ "$ARG_ONE" == "memcheck" ]; then shift # execute inside valgrind for memcheck valgrind --tool=memcheck --leak-check=full $EXECPATH "$@" || exit 1 exit 0 fi if [ "$ARG_ONE" == "callgrind" ]; then shift # execute inside valgrind for memcheck valgrind --tool=callgrind --simulate-cache=yes $EXECPATH "$@" || exit 1 exit 0 fi # normal execution exec $EXECPATH "$@" || exit 1 exit 0 } orcus_exec() { EXEC="$1" shift EXECDIR="$1" shift PROGDIR="$PWD/"`dirname $0` ROOTDIR=$PROGDIR/.. EXECPATH=$ROOTDIR/src/$EXEC export LD_LIBRARY_PATH=$ROOTDIR/src/liborcus/.libs:$ROOTDIR/src/mso/.libs:$ROOTDIR/src/parser/.libs:$ROOTDIR/src/spreadsheet/.libs: cd $EXECDIR common_exec "$@" } parser_test_exec() { EXEC="$1" shift EXECDIR="$PROGDIR/../src/parser" PROGDIR="$PWD/"`dirname $0` ROOTDIR=$PROGDIR/.. EXECPATH=$ROOTDIR/src/parser/.libs/$EXEC export LD_LIBRARY_PATH=$ROOTDIR/src/parser/.libs: cd $EXECDIR common_exec "$@" } liborcus_test_exec() { EXEC="$1" shift EXECDIR="$PROGDIR/../src/liborcus" PROGDIR="$PWD/"`dirname $0` ROOTDIR=$PROGDIR/.. EXECPATH=$ROOTDIR/src/liborcus/.libs/$EXEC export LD_LIBRARY_PATH=$ROOTDIR/src/liborcus/.libs:$ROOTDIR/src/mso/.libs:$ROOTDIR/src/parser/.libs:$ROOTDIR/src/spreadsheet/.libs: cd $EXECDIR common_exec "$@" } liborcus-0.9.2/bin/orcus-test-xml.sh0000755000175000017500000000020112535701142016016 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-test-xml "$PROGDIR/../src" "$@" liborcus-0.9.2/bin/orcus-gnumeric.sh0000755000175000017500000000016612535701142016064 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-gnumeric "$PWD" "$@" liborcus-0.9.2/bin/orcus-xml-dump.sh0000755000175000017500000000016512535701142016015 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-xml-dump "$PWD" "$@" liborcus-0.9.2/bin/orcus-xml.sh0000755000175000017500000000016112535701142015046 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-xml "$PWD" "$@" liborcus-0.9.2/bin/orcus-test-csv.sh0000755000175000017500000000020112535701142016011 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-test-csv "$PROGDIR/../src" "$@" liborcus-0.9.2/bin/orcus-xlsx.sh0000755000175000017500000000016112535701142015244 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-xlsx "$PWD" "$@" liborcus-0.9.2/bin/orcus-zip-dump.sh0000755000175000017500000000016512535701142016017 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-zip-dump "$PWD" "$@" liborcus-0.9.2/bin/orcus-csv.sh0000755000175000017500000000016112535701142015041 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-csv "$PWD" "$@" liborcus-0.9.2/bin/orcus-xls-xml.sh0000755000175000017500000000016412535701142015655 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-xls-xml "$PWD" "$@" liborcus-0.9.2/bin/orcus-mso-encryption.sh0000755000175000017500000000017412535701142017240 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-mso-encryption "$PWD" "$@" liborcus-0.9.2/bin/orcus-ods.sh0000755000175000017500000000016012535701142015032 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-ods "$PWD" "$@" liborcus-0.9.2/bin/orcus-test-xml-mapped.sh0000755000175000017500000000021012535701142017262 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-test-xml-mapped "$PROGDIR/../src" "$@" liborcus-0.9.2/bin/orcus-detect.sh0000755000175000017500000000016412535701142015521 0ustar renerene#!/usr/bin/env bash PROGDIR=`dirname $0` source $PROGDIR/orcus-common-func.sh orcus_exec orcus-detect "$PWD" "$@" liborcus-0.9.2/compile0000755000175000017500000001624512540653525013405 0ustar renerene#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: liborcus-0.9.2/depcomp0000755000175000017500000005601612540653525013404 0ustar renerene#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: liborcus-0.9.2/src/0000755000175000017500000000000012540654317012606 5ustar renereneliborcus-0.9.2/src/xml_map_sax_handler.hpp0000644000175000017500000000262312535701144017322 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XML_MAP_SAX_HANDLER_HPP__ #define __ORCUS_XML_MAP_SAX_HANDLER_HPP__ #include "orcus/sax_parser.hpp" #include namespace orcus { class orcus_xml; /** * Sax handler for parsing XML map definition file which defines linkage * relationships between the XML source file and the resulting spreadsheet * content. */ class xml_map_sax_handler { struct scope { pstring ns; pstring name; scope(const pstring& _ns, const pstring& _name); }; std::vector m_attrs; std::vector m_scopes; orcus_xml& m_app; public: xml_map_sax_handler(orcus_xml& app); void doctype(const sax::doctype_declaration&); void start_declaration(const pstring& name); void end_declaration(const pstring& name); void start_element(const sax::parser_element& elem); void end_element(const sax::parser_element& elem); void characters(const pstring&, bool); void attribute(const sax::parser_attribute& attr); }; void read_map_file(orcus_xml& app, const char* filepath); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_gnumeric_main.cpp0000644000175000017500000000140712535701143017336 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_gnumeric.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus_filter_global.hpp" using namespace orcus; int main(int argc, char** argv) { spreadsheet::document doc; spreadsheet::import_factory fact(doc); orcus_gnumeric app(&fact); if (parse_import_filter_args(app, doc, argc, argv)) return EXIT_FAILURE; return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_filter_global.hpp0000644000175000017500000000116712535701143017336 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ORCUS_FILTER_GLOBAL_HPP #define ORCUS_ORCUS_FILTER_GLOBAL_HPP namespace orcus { namespace iface { class import_filter; class document_dumper; } bool parse_import_filter_args( iface::import_filter& app, iface::document_dumper& doc, int argc, char** argv); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_test_xml.cpp0000644000175000017500000001720012535701143016356 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/sax_ns_parser.hpp" #include "orcus/global.hpp" #include "orcus/dom_tree.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/stream.hpp" #include #include #include #include #include using namespace orcus; using namespace std; class sax_handler { sax::doctype_declaration m_dtd; dom_tree m_tree; public: sax_handler(xmlns_context& cxt) : m_tree(cxt) {} void doctype(const sax::doctype_declaration& dtd) { m_dtd = dtd; } void start_declaration(const pstring& name) { m_tree.start_declaration(name); } void end_declaration(const pstring& name) { m_tree.end_declaration(name); } void start_element(const sax_ns_parser_element& elem) { m_tree.start_element(elem.ns, elem.name); } void end_element(const sax_ns_parser_element& elem) { m_tree.end_element(elem.ns, elem.name); } void characters(const pstring& val, bool) { m_tree.set_characters(val); } void attribute(const pstring& name, const pstring& val) { m_tree.set_attribute(XMLNS_UNKNOWN_ID, name, val); } void attribute(const sax_ns_parser_attribute& attr) { m_tree.set_attribute(attr.ns, attr.name, attr.value); } const dom_tree& get_dom() const { return m_tree; } const sax::doctype_declaration& get_dtd() const { return m_dtd; } }; class sax_handler_encoded_attrs { std::vector m_attrs; public: void doctype(const sax::doctype_declaration&) {} void start_declaration(const pstring&) {} void end_declaration(const pstring&) { m_attrs.clear(); } void start_element(const sax::parser_element&) {} void end_element(const sax::parser_element&) {} void characters(const pstring&, bool) {} void attribute(const sax::parser_attribute& attr) { m_attrs.push_back(attr); } bool check(const vector& expected) const { if (m_attrs.size() != expected.size()) { cerr << "unexpected attribute count." << endl; return false; } for (size_t i = 0, n = m_attrs.size(); i < n; ++i) { if (m_attrs[i].value != expected[i].c_str()) { cerr << "expected attribute value: " << expected[i] << " actual attribute value: " << m_attrs[i].value << endl; return false; } } return true; } }; const char* sax_parser_test_dirs[] = { SRCDIR"/test/xml/simple/", SRCDIR"/test/xml/encoded-char/", SRCDIR"/test/xml/default-ns/", SRCDIR"/test/xml/ns-alias-1/", SRCDIR"/test/xml/bom/", SRCDIR"/test/xml/custom-decl-1/", SRCDIR"/test/xml/cdata-1/" }; const char* sax_parser_parse_only_test_dirs[] = { SRCDIR"/test/xml/parse-only/rss/" }; sax_handler* parse_file(xmlns_context& cxt, const char* filepath, string &strm) { cout << "testing " << filepath << endl; load_file_content(filepath, strm); assert(!strm.empty()); orcus::unique_ptr hdl(new sax_handler(cxt)); sax_ns_parser parser(strm.c_str(), strm.size(), cxt, *hdl); parser.parse(); // Every valid XML file must have in it. assert(hdl->get_dom().get_declaration_attributes("xml")); return hdl.release(); } void test_xml_sax_parser() { string strm; size_t n = sizeof(sax_parser_test_dirs)/sizeof(sax_parser_test_dirs[0]); for (size_t i = 0; i < n; ++i) { const char* dir = sax_parser_test_dirs[i]; string dir_path(dir); string file = dir_path; file.append("input.xml"); xmlns_repository repo; xmlns_context cxt = repo.create_context(); boost::scoped_ptr hdl(parse_file(cxt, file.c_str(), strm)); // Get the compact form of the content. ostringstream os; hdl->get_dom().dump_compact(os); string content = os.str(); // Load the check form. string check; file = dir_path; file.append("check.txt"); load_file_content(file.c_str(), check); pstring psource(content.c_str(), content.size()); pstring pcheck(check.c_str(), check.size()); // They must be equal, minus preceding or trailing spaces (if any). assert(psource.trim() == pcheck.trim()); } } void test_xml_sax_parser_read_only() { string strm; size_t n = sizeof(sax_parser_parse_only_test_dirs)/sizeof(sax_parser_parse_only_test_dirs[0]); for (size_t i = 0; i < n; ++i) { const char* dir = sax_parser_parse_only_test_dirs[i]; string dir_path(dir); string file = dir_path; file.append("input.xml"); xmlns_repository repo; xmlns_context cxt = repo.create_context(); boost::scoped_ptr hdl(parse_file(cxt, file.c_str(), strm)); } } void test_xml_declarations() { string strm; const char* file_path = SRCDIR"/test/xml/custom-decl-1/input.xml"; xmlns_repository repo; xmlns_context cxt = repo.create_context(); boost::scoped_ptr hdl(parse_file(cxt, file_path, strm)); const dom_tree& dom = hdl->get_dom(); // Make sure we parse the custom declaration correctly. const dom_tree::attrs_type* p = dom.get_declaration_attributes("mso-application"); assert(p); assert(p->size() == 1); const dom_tree::attr& at = (*p)[0]; assert(at.name.ns == XMLNS_UNKNOWN_ID && at.name.name == "progid" && at.value == "Excel.Sheet"); } void test_xml_dtd() { struct { const char* file_path; sax::doctype_declaration::keyword_type keyword; const char* root_element; const char* fpi; const char* uri; } tests[] = { { SRCDIR"/test/xml/doctype/html.xml", sax::doctype_declaration::keyword_public, "html", "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" } }; string strm; xmlns_repository repo; size_t n = sizeof(tests)/sizeof(tests[0]); for (size_t i = 0; i < n; ++i) { const char* file_path = tests[i].file_path; string strm; xmlns_context cxt = repo.create_context(); boost::scoped_ptr hdl(parse_file(cxt, file_path, strm)); const sax::doctype_declaration& dtd = hdl->get_dtd(); assert(dtd.keyword == tests[i].keyword); assert(dtd.root_element == tests[i].root_element); assert(dtd.fpi == tests[i].fpi); if (tests[i].uri) { assert(dtd.uri == tests[i].uri); } } } void test_xml_encoded_attrs() { const char* filepath = SRCDIR"/test/xml/encoded-attrs/test1.xml"; string strm; cout << "testing " << filepath << endl; load_file_content(filepath, strm); assert(!strm.empty()); sax_handler_encoded_attrs hdl; sax_parser parser(&strm[0], strm.size(), hdl); parser.parse(); vector expected; expected.push_back("1 & 2"); expected.push_back("3 & 4"); expected.push_back("5 & 6"); assert(hdl.check(expected)); } int main() { test_xml_sax_parser(); test_xml_sax_parser_read_only(); test_xml_declarations(); test_xml_dtd(); test_xml_encoded_attrs(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_test_xlsx.cpp0000644000175000017500000001212512535701143016555 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xlsx.hpp" #include "orcus/pstring.hpp" #include "orcus/global.hpp" #include "orcus/stream.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/sheet.hpp" #include "orcus/spreadsheet/auto_filter.hpp" #include #include #include #include #include #include using namespace orcus; using namespace orcus::spreadsheet; using namespace std; namespace { const char* dirs[] = { SRCDIR"/test/xlsx/raw-values-1/", SRCDIR"/test/xlsx/empty-shared-strings/", }; /** * Semi-automated import test that goes through all specified directories, * and in each directory, reads the input.xlsx file, dumps its output and * checks it against the check.txt content. */ void test_xlsx_import() { size_t n = sizeof(dirs)/sizeof(dirs[0]); for (size_t i = 0; i < n; ++i) { const char* dir = dirs[i]; string path(dir); // Read the input.xlsx document. path.append("input.xlsx"); spreadsheet::document doc; spreadsheet::import_factory factory(doc); orcus_xlsx app(&factory); app.read_file(path.c_str()); // Dump the content of the model. ostringstream os; doc.dump_check(os); string check = os.str(); // Check that against known control. path = dir; path.append("check.txt"); string control; load_file_content(path.c_str(), control); assert(!check.empty()); assert(!control.empty()); pstring s1(&check[0], check.size()), s2(&control[0], control.size()); assert(s1.trim() == s2.trim()); } } void test_xlsx_table_autofilter() { string path(SRCDIR"/test/xlsx/table/autofilter.xlsx"); document doc; import_factory factory(doc); orcus_xlsx app(&factory); app.read_file(path.c_str()); const sheet* sh = doc.get_sheet(0); assert(sh); const auto_filter_t* af = sh->get_auto_filter_data(); assert(af); // Autofilter is over B2:C11. assert(af->range.first.column == 1); assert(af->range.first.row == 1); assert(af->range.last.column == 2); assert(af->range.last.row == 10); // Check the match values of the 1st column filter criterion. auto_filter_t::columns_type::const_iterator it = af->columns.find(0); assert(it != af->columns.end()); const auto_filter_column_t* afc = &it->second; assert(afc->match_values.count("A") > 0); assert(afc->match_values.count("C") > 0); // And the 2nd column. it = af->columns.find(1); assert(it != af->columns.end()); afc = &it->second; assert(afc->match_values.count("1") > 0); } void test_xlsx_table() { string path(SRCDIR"/test/xlsx/table/table-1.xlsx"); document doc; import_factory factory(doc); orcus_xlsx app(&factory); app.read_file(path.c_str()); pstring name("Table1"); const table_t* p = doc.get_table(name); assert(p); assert(p->identifier == 1); assert(p->name == name); assert(p->display_name == name); assert(p->totals_row_count == 1); // Table range is C3:D9. ixion::abs_range_t range; range.first.column = 2; range.first.row = 2; range.first.sheet = 0; range.last.column = 3; range.last.row = 8; range.last.sheet = 0; assert(p->range == range); // Table1 has 2 table columns. assert(p->columns.size() == 2); const table_column_t* tcol = &p->columns[0]; assert(tcol); assert(tcol->identifier == 1); assert(tcol->name == "Category"); assert(tcol->totals_row_label == "Total"); assert(tcol->totals_row_function == totals_row_function_none); tcol = &p->columns[1]; assert(tcol); assert(tcol->identifier == 2); assert(tcol->name == "Value"); assert(tcol->totals_row_label.empty()); assert(tcol->totals_row_function == totals_row_function_sum); const auto_filter_t& filter = p->filter; // Auto filter range is C3:D8. range.last.row = 7; assert(filter.range == range); assert(filter.columns.size() == 1); const auto_filter_column_t& afc = filter.columns.begin()->second; assert(afc.match_values.size() == 4); assert(afc.match_values.count("A") > 0); assert(afc.match_values.count("C") > 0); assert(afc.match_values.count("D") > 0); assert(afc.match_values.count("E") > 0); // Check table style. const table_style_t& style = p->style; assert(style.name == "TableStyleLight9"); assert(style.show_first_column == false); assert(style.show_last_column == false); assert(style.show_row_stripes == true); assert(style.show_column_stripes == false); } } int main() { test_xlsx_import(); test_xlsx_table_autofilter(); test_xlsx_table(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/mso/0000755000175000017500000000000012540654317013404 5ustar renereneliborcus-0.9.2/src/mso/Makefile.in0000644000175000017500000004665612540653650015471 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/mso DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) liborcus_mso_@ORCUS_API_VERSION@_la_DEPENDENCIES = \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am_liborcus_mso_@ORCUS_API_VERSION@_la_OBJECTS = encryption_info.lo liborcus_mso_@ORCUS_API_VERSION@_la_OBJECTS = \ $(am_liborcus_mso_@ORCUS_API_VERSION@_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = liborcus_mso_@ORCUS_API_VERSION@_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(liborcus_mso_@ORCUS_API_VERSION@_la_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(liborcus_mso_@ORCUS_API_VERSION@_la_SOURCES) DIST_SOURCES = $(liborcus_mso_@ORCUS_API_VERSION@_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_srcdir)/include -D__ORCUS_MSO_BUILDING_DLL lib_LTLIBRARIES = liborcus-mso-@ORCUS_API_VERSION@.la liborcus_mso_@ORCUS_API_VERSION@_la_SOURCES = \ encryption_info.cpp liborcus_mso_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined liborcus_mso_@ORCUS_API_VERSION@_la_LIBADD = \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/mso/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/mso/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } liborcus-mso-@ORCUS_API_VERSION@.la: $(liborcus_mso_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_mso_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(EXTRA_liborcus_mso_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(AM_V_CXXLD)$(liborcus_mso_@ORCUS_API_VERSION@_la_LINK) -rpath $(libdir) $(liborcus_mso_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_mso_@ORCUS_API_VERSION@_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encryption_info.Plo@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags-am \ distclean distclean-compile distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/src/mso/Makefile.am0000644000175000017500000000053412535701143015434 0ustar renerene AM_CPPFLAGS = -I$(top_srcdir)/include -D__ORCUS_MSO_BUILDING_DLL lib_LTLIBRARIES = liborcus-mso-@ORCUS_API_VERSION@.la liborcus_mso_@ORCUS_API_VERSION@_la_SOURCES = \ encryption_info.cpp liborcus_mso_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined liborcus_mso_@ORCUS_API_VERSION@_la_LIBADD = \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la liborcus-0.9.2/src/mso/encryption_info.cpp0000644000175000017500000001550412535701143017314 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/mso/encryption_info.hpp" #include "orcus/sax_ns_parser.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/base64.hpp" #define ORCUS_DEBUG_MSO_ENCRYPTION_INFO 1 #if ORCUS_DEBUG_MSO_ENCRYPTION_INFO #include #endif #include #include using namespace std; namespace orcus { namespace mso { namespace { const xmlns_id_t NS_mso_encryption = "http://schemas.microsoft.com/office/2006/encryption"; const xmlns_id_t NS_mso_password = "http://schemas.microsoft.com/office/2006/keyEncryptor/password"; const xmlns_id_t NS_mso_all[] = { NS_mso_encryption, NS_mso_password, NULL }; class char_printer : unary_function { ostream& m_os; public: char_printer(ostream& os) : m_os(os) {} void operator() (const char c) const { short v = c; v &= 0x00FF; m_os << hex << uppercase; if (v < 16) m_os << '0'; m_os << v << ' '; } }; void print_base64(const char* caption, const pstring& base64) { cout << caption << " (base64): " << base64 << endl; vector value; orcus::decode_from_base64(base64.get(), base64.size(), value); cout << caption << " (binary): "; for_each(value.begin(), value.end(), char_printer(cout)); cout << endl; } class key_data_attr_handler : unary_function { public: void operator() (const sax_ns_parser_attribute& attr) { if (attr.ns != NS_mso_encryption) // wrong namespace return; if (attr.name == "saltSize") cout << "salt size: " << attr.value << endl; else if (attr.name == "blockSize") cout << "block size: " << attr.value << endl; else if (attr.name == "keyBits") cout << "key bits: " << attr.value << endl; else if (attr.name == "hashSize") cout << "hash size: " << attr.value << endl; else if (attr.name == "cipherAlgorithm") cout << "cipher algorithm: " << attr.value << endl; else if (attr.name == "cipherChaining") cout << "cipher chaining: " << attr.value << endl; else if (attr.name == "hashAlgorithm") cout << "hash algorithm: " << attr.value << endl; else if (attr.name == "saltValue") print_base64("salt value", attr.value); } }; class data_integrity_attr_handler : unary_function { public: void operator() (const sax_ns_parser_attribute& attr) { if (attr.ns != NS_mso_encryption) // wrong namespace return; if (attr.name == "encryptedHmacKey") print_base64("encrypted HMAC key", attr.value); else if (attr.name == "encryptedHmacValue") print_base64("encrypted HMAC value", attr.value); } }; class password_encrypted_key_attr_handler : unary_function { public: void operator() (const sax_ns_parser_attribute& attr) { if (attr.ns != NS_mso_encryption) // wrong namespace return; if (attr.name == "spinCount") cout << "spin count: " << attr.value << endl; else if (attr.name == "saltSize") cout << "salt size: " << attr.value << endl; else if (attr.name == "blockSize") cout << "block size: " << attr.value << endl; else if (attr.name == "keyBits") cout << "key bits: " << attr.value << endl; else if (attr.name == "hashSize") cout << "hash size: " << attr.value << endl; else if (attr.name == "cipherAlgorithm") cout << "cipher algorithm: " << attr.value << endl; else if (attr.name == "cipherChaining") cout << "cipher chaining: " << attr.value << endl; else if (attr.name == "hashAlgorithm") cout << "hash algorithm: " << attr.value << endl; else if (attr.name == "saltValue") print_base64("salt value", attr.value); else if (attr.name == "encryptedVerifierHashInput") print_base64("encrypted verifier hash input", attr.value); else if (attr.name == "encryptedVerifierHashValue") print_base64("encrypted verifier hash value", attr.value); else if (attr.name == "encryptedKeyValue") print_base64("encrypted key value", attr.value); } }; class sax_handler { xmlns_context& m_ns_cxt; vector m_attrs; public: sax_handler(xmlns_context& ns_cxt) : m_ns_cxt(ns_cxt) {} void doctype(const sax::doctype_declaration&) {} void start_declaration(const pstring&) {} void end_declaration(const pstring&) {} void attribute(const pstring&, const pstring&) {} void attribute(const sax_ns_parser_attribute& attr) { m_attrs.push_back(attr); } void characters(const pstring&, bool) {} void start_element(const sax_ns_parser_element& elem) { if (elem.ns == NS_mso_encryption) { if (elem.name == "keyData") { cout << "--- key data" << endl; key_data_attr_handler func; for_each(m_attrs.begin(), m_attrs.end(), func); } else if (elem.name == "dataIntegrity") { cout << "--- data integrity" << endl; data_integrity_attr_handler func; for_each(m_attrs.begin(), m_attrs.end(), func); } } else if (elem.ns == NS_mso_password) { if (elem.name == "encryptedKey") { cout << "--- encrypted key" << endl; password_encrypted_key_attr_handler func; for_each(m_attrs.begin(), m_attrs.end(), func); } } m_attrs.clear(); } void end_element(const sax_ns_parser_element&) {} }; } struct encryption_info_reader_impl { orcus::xmlns_repository m_ns_repo; encryption_info_reader_impl() { m_ns_repo.add_predefined_values(NS_mso_all); } }; encryption_info_reader::encryption_info_reader() : mp_impl(new encryption_info_reader_impl) {} encryption_info_reader::~encryption_info_reader() { delete mp_impl; } void encryption_info_reader::read(const char* p, size_t n) { #if ORCUS_DEBUG_MSO_ENCRYPTION_INFO cout << "encryption_info_reader::read: stream size=" << n << endl; #endif orcus::xmlns_context cxt = mp_impl->m_ns_repo.create_context(); sax_handler hdl(cxt); orcus::sax_ns_parser parser(p, n, cxt, hdl); parser.parse(); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/0000755000175000017500000000000012540654317014430 5ustar renereneliborcus-0.9.2/src/liborcus/css_document_tree_test.cpp0000644000175000017500000004552112535701143021701 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/css_document_tree.hpp" #include "orcus/css_types.hpp" #include "orcus/stream.hpp" #include "orcus/global.hpp" #include #include #include #include using namespace orcus; using namespace std; bool check_prop(const css_properties_t& props, const pstring& key, const pstring& val) { css_properties_t::const_iterator it = props.find(key); if (it == props.end()) { cout << "property '" << key << "' not found" << endl; return false; } // Chain all property values into a single string delimited by a " ". const vector& vals = it->second; ostringstream os; if (vals.size() > 1) { vector::const_iterator it_end = vals.end(); advance(it_end, -1); copy(vals.begin(), it_end, ostream_iterator(os, " ")); } os << vals.back(); string val_stored = os.str(); if (val.str() != val_stored) { cout << "property '" << key << "' is expected to have value '" << val << "' but '" << val_stored << "' is found." << endl; return false; } return true; } void test_css_simple_selector_equality() { css_simple_selector_t left; css_simple_selector_t right; assert(left == right); left.classes.insert("one"); assert(left != right); right.classes.insert("one"); assert(left == right); left.classes.insert("two"); assert(left != right); right.classes.insert("two"); assert(left == right); left.classes.insert("three"); assert(left != right); right.classes.insert("three"); assert(left == right); } void test_css_parse_basic1() { const char* path = SRCDIR"/test/css/basic1.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "table"; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 2); assert(check_prop(*props, "width", "auto")); assert(check_prop(*props, "height", "500px")); selector.first.name = "td"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 2); assert(check_prop(*props, "color", "gray")); assert(check_prop(*props, "background-color", "yellow")); // This selector doesn't exist in the document tree. selector.first.name = "tr"; props = doc.get_properties(selector, 0); assert(!props); } void test_css_parse_basic2() { const char* path = SRCDIR"/test/css/basic2.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "div"; selector.first.classes.insert("foo"); const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "border", "solid 1px")); selector.clear(); selector.first.classes.insert("warning"); props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 2); assert(check_prop(*props, "background-color", "red")); assert(check_prop(*props, "font-weight", "900")); } void test_css_parse_basic3() { const char* path = SRCDIR"/test/css/basic3.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "html"; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "height", "100%")); selector.first.name = "body"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "height", "100%")); { // h1, h2, h3 and h4 all have identical set of properties. const char* names[] = { "h1", "h2", "h3", "h4" }; size_t n = ORCUS_N_ELEMENTS(names); for (size_t i = 0; i < n; ++i) { selector.first.name = names[i]; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 2); assert(check_prop(*props, "font-variant", "small-caps")); assert(check_prop(*props, "padding", "2.5em")); } } } void test_css_parse_basic4() { const char* path = SRCDIR"/test/css/basic4.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "h1"; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "margin", "0.5in")); selector.first.name = "h2"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "line-height", "3cm")); selector.first.name = "h3"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "word-spacing", "4mm")); selector.first.name = "h4"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "font-size", "1pc")); selector.first.name = "p"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "font-size", "12px")); } void test_css_parse_basic5() { const char* path = SRCDIR"/test/css/basic5.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.classes.insert("info"); const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "word-spacing", "normal")); } void test_css_parse_basic6() { const char* path = SRCDIR"/test/css/basic6.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "h1"; selector.first.id = "chapter1"; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "text-align", "center")); selector.first.id = "z98y"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "letter-spacing", "0.5em")); selector.clear(); selector.first.id = "id_global"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "margin", "10px")); } void test_css_parse_basic7() { const char* path = SRCDIR"/test/css/basic7.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.classes.insert("one"); selector.first.classes.insert("two"); selector.first.classes.insert("three"); const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "blue")); selector.first.classes.clear(); selector.first.classes.insert("one"); props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "aqua")); selector.first.classes.clear(); selector.first.classes.insert("two"); props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "azure")); selector.first.classes.insert("one"); // one two props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "brown")); selector.first.clear(); selector.first.name = "span"; selector.first.classes.insert("button"); props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "border", "solid 1px gray")); selector.first.classes.insert("selected"); // button selected props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "border", "solid 4px red")); } void test_css_parse_basic8() { const char* path = SRCDIR"/test/css/basic8.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.classes.insert("ribbon"); const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "#5BC8F7")); props = doc.get_properties(selector, css::pseudo_element_after); assert(props); assert(props->size() == 4); assert(check_prop(*props, "content", "Look at this orange box.")); assert(check_prop(*props, "background-color", "#FFBA10")); assert(check_prop(*props, "border-color", "black")); assert(check_prop(*props, "border-style", "dotted")); props = doc.get_properties(selector, css::pseudo_element_before); assert(!props); // it doesn't exist for this pseudo element. props = doc.get_properties( selector, css::pseudo_element_after|css::pseudo_element_selection); assert(props); assert(props->size() == 1); assert(check_prop(*props, "content", "Selected orange box.")); // Get all properties for all pseudo element flag combos. const css_pseudo_element_properties_t* all_props = doc.get_all_properties(selector); assert(all_props); assert(all_props->size() == 3); // Check the properties for no pseudo element flag. css_pseudo_element_properties_t::const_iterator it = all_props->find(0); assert(it != all_props->end()); props = &it->second; assert(props->size() == 1); assert(check_prop(*props, "background-color", "#5BC8F7")); // ::after pseudo element it = all_props->find(css::pseudo_element_after); assert(it != all_props->end()); props = &it->second; assert(props->size() == 4); assert(check_prop(*props, "content", "Look at this orange box.")); assert(check_prop(*props, "background-color", "#FFBA10")); assert(check_prop(*props, "border-color", "black")); assert(check_prop(*props, "border-style", "dotted")); // ::after::selection pseudo element pair. it = all_props->find(css::pseudo_element_after|css::pseudo_element_selection); assert(it != all_props->end()); props = &it->second; assert(check_prop(*props, "content", "Selected orange box.")); } void test_css_parse_basic9() { const char* path = SRCDIR"/test/css/basic9.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "a"; selector.first.pseudo_classes = css::pseudo_class_link; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "#FF0000")); selector.first.pseudo_classes = css::pseudo_class_visited; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "#00FF00")); selector.first.pseudo_classes = css::pseudo_class_hover; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "#FF00FF")); selector.first.pseudo_classes = css::pseudo_class_active; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "color", "#0000FF")); } void test_css_parse_basic10() { const char* path = SRCDIR"/test/css/basic10.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.classes.insert("foo"); const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 2); assert(check_prop(*props, "background-color", "rgb(12,230,222)")); assert(check_prop(*props, "border", "solid 5px rgba(30,12,0,0.79)")); } void test_css_parse_basic11() { const char* path = SRCDIR"/test/css/basic11.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.classes.insert("callout"); const css_properties_t* props = doc.get_properties(selector, css::pseudo_element_before); assert(props); assert(props->size() == 5); assert(check_prop(*props, "content", "")); assert(check_prop(*props, "width", "0px")); assert(check_prop(*props, "height", "0px")); assert(check_prop(*props, "border", "0.8em solid transparent")); assert(check_prop(*props, "position", "absolute")); } void test_css_parse_basic12() { const char* path = SRCDIR"/test/css/basic12.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "div"; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-image", "url(https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png)")); selector.first.name = "p"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-image", "none")); selector.first.name = "div"; selector.first.classes.insert("img1"); props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-image", "url(http://www.rabiakhan.com/Gallery/background.jpg)")); selector.first.classes.clear(); selector.first.classes.insert("img2"); props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-image", "url(http://www.tgraphic.com/userimages/Gallery/Backgrounds/TGraphic_com-Full-Wallpapers-Backgrounds_Colorful_C_1920_33.jpg)")); } void test_css_parse_basic13() { const char* path = SRCDIR"/test/css/basic13.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.id = "p1"; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsl(120,100,50)")); selector.first.id = "p2"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsl(120,100,75)")); selector.first.id = "p3"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsl(120,100,25)")); selector.first.id = "p4"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsl(120,60,70)")); } void test_css_parse_basic14() { const char* path = SRCDIR"/test/css/basic14.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.id = "p1"; const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsla(120,100,50,0.3)")); selector.first.id = "p2"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsla(120,100,75,0.3)")); selector.first.id = "p3"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsla(120,100,25,0.3)")); selector.first.id = "p4"; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "hsla(120,60,70,0.3)")); } void test_css_parse_chained1() { const char* path = SRCDIR"/test/css/chained1.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); css_selector_t selector; selector.first.name = "div"; css_simple_selector_t ss; ss.name = "p"; selector.chained.push_back(ss); // div p const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "yellow")); // div > p selector.chained.back().combinator = css::combinator_direct_child; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "blue")); // div + p selector.chained.back().combinator = css::combinator_next_sibling; props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 1); assert(check_prop(*props, "background-color", "red")); } void test_css_parse_chained2() { const char* path = SRCDIR"/test/css/chained2.css"; string strm; load_file_content(path, strm); css_document_tree doc; doc.load(strm); // Build selector '#id1 table.data td'. css_selector_t selector; selector.first.id = "id1"; css_simple_selector_t ss; ss.name = "table"; ss.classes.insert("data"); selector.chained.push_back(ss); ss.clear(); ss.name = "td"; selector.chained.push_back(ss); const css_properties_t* props = doc.get_properties(selector, 0); assert(props); assert(props->size() == 2); assert(check_prop(*props, "background-color", "aquamarine")); assert(check_prop(*props, "border", "solid 2px")); } int main() { test_css_simple_selector_equality(); test_css_parse_basic1(); test_css_parse_basic2(); test_css_parse_basic3(); test_css_parse_basic4(); test_css_parse_basic5(); test_css_parse_basic6(); test_css_parse_basic7(); test_css_parse_basic8(); test_css_parse_basic9(); test_css_parse_basic10(); test_css_parse_basic11(); test_css_parse_basic12(); test_css_parse_basic13(); test_css_parse_basic14(); test_css_parse_chained1(); test_css_parse_chained2(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_content_types.cpp0000644000175000017500000001016412535701143021244 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ooxml_content_types.hpp" namespace orcus { const content_type_t CT_ooxml_extended_properties = "application/vnd.openxmlformats-officedocument.extended-properties+xml"; const content_type_t CT_ooxml_drawing = "application/vnd.openxmlformats-officedocument.drawing+xml"; const content_type_t CT_ooxml_vml_drawing = "application/vnd.openxmlformats-officedocument.vmlDrawing"; const content_type_t CT_ooxml_xlsx_calc_chain = "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml"; const content_type_t CT_ooxml_xlsx_comments = "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"; const content_type_t CT_ooxml_xlsx_connections = "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml"; const content_type_t CT_ooxml_xlsx_external_link = "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml"; const content_type_t CT_ooxml_xlsx_pivot_cache_def = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml"; const content_type_t CT_ooxml_xlsx_pivot_cache_rec = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml"; const content_type_t CT_ooxml_xlsx_pivot_table = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml"; const content_type_t CT_ooxml_xlsx_printer_settings = "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings"; const content_type_t CT_ooxml_xlsx_query_table = "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml"; const content_type_t CT_ooxml_xlsx_shared_strings = "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"; const content_type_t CT_ooxml_xlsx_sheet_main = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"; const content_type_t CT_ooxml_xlsx_styles = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"; const content_type_t CT_ooxml_xlsx_table = "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"; const content_type_t CT_ooxml_xlsx_worksheet = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"; const content_type_t CT_ooxml_xlsx_usernames = "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml"; const content_type_t CT_ooxml_xlsx_rev_headers = "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml"; const content_type_t CT_ooxml_xlsx_rev_log = "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml"; const content_type_t CT_ooxml_theme = "application/vnd.openxmlformats-officedocument.theme+xml"; const content_type_t CT_opc_core_properties = "application/vnd.openxmlformats-package.core-properties+xml"; const content_type_t CT_opc_relationships = "application/vnd.openxmlformats-package.relationships+xml"; const content_type_t CT_xml = "application/xml"; namespace { content_type_t cts[] = { CT_ooxml_extended_properties, CT_ooxml_drawing, CT_ooxml_vml_drawing, CT_ooxml_xlsx_calc_chain, CT_ooxml_xlsx_comments, CT_ooxml_xlsx_connections, CT_ooxml_xlsx_external_link, CT_ooxml_xlsx_pivot_cache_def, CT_ooxml_xlsx_pivot_cache_rec, CT_ooxml_xlsx_pivot_table, CT_ooxml_xlsx_printer_settings, CT_ooxml_xlsx_query_table, CT_ooxml_xlsx_shared_strings, CT_ooxml_xlsx_sheet_main, CT_ooxml_xlsx_styles, CT_ooxml_xlsx_table, CT_ooxml_xlsx_worksheet, CT_ooxml_xlsx_usernames, CT_ooxml_xlsx_rev_headers, CT_ooxml_xlsx_rev_log, CT_ooxml_theme, CT_opc_core_properties, CT_opc_relationships, CT_xml, NULL }; } const content_type_t* CT_all = cts; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/orcus_import_xlsx.cpp0000644000175000017500000000270612535701143020736 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_import_xlsx.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/config.hpp" #include "xlsx_types.hpp" #include "xlsx_handler.hpp" #include "xlsx_context.hpp" #include "ooxml_tokens.hpp" #include "xml_stream_parser.hpp" #include "ooxml_namespace_types.hpp" #include "xlsx_session_data.hpp" #include "ooxml_global.hpp" #include namespace orcus { void import_xlsx::read_table(const char* p, size_t n, spreadsheet::iface::import_table* table) { if(!table) return; if (!p || !n) return; session_context cxt; boost::scoped_ptr handler( new xlsx_table_xml_handler(cxt, ooxml_tokens, *table)); xmlns_repository ns_repo; ns_repo.add_predefined_values(NS_ooxml_all); ns_repo.add_predefined_values(NS_opc_all); ns_repo.add_predefined_values(NS_misc_all); orcus::config config; xml_stream_parser parser( config, ns_repo, ooxml_tokens, p, n); parser.set_handler(handler.get()); parser.parse(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_schemas.hpp0000644000175000017500000000257712535701143020007 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OOXML_SCHEMAS_HPP__ #define __ORCUS_OOXML_SCHEMAS_HPP__ #include "ooxml_types.hpp" namespace orcus { extern schema_t SCH_mc; extern schema_t SCH_opc_content_types; extern schema_t SCH_opc_rels; extern schema_t SCH_opc_rels_metadata_core_props; extern schema_t SCH_od_rels_calc_chain; extern schema_t SCH_od_rels_connections; extern schema_t SCH_od_rels_printer_settings; extern schema_t SCH_od_rels_rev_headers; extern schema_t SCH_od_rels_rev_log; extern schema_t SCH_od_rels_shared_strings; extern schema_t SCH_od_rels_styles; extern schema_t SCH_od_rels_theme; extern schema_t SCH_od_rels_usernames; extern schema_t SCH_od_rels_worksheet; extern schema_t SCH_od_rels_extended_props; extern schema_t SCH_od_rels_office_doc; extern schema_t SCH_od_rels_table; extern schema_t SCH_od_rels_pivot_cache_def; extern schema_t SCH_od_rels_pivot_cache_rec; extern schema_t SCH_od_rels_pivot_table; extern schema_t SCH_xlsx_main; extern schema_t SCH_mso_x14ac; /** * Null-terminated array of all schema types. */ extern schema_t* SCH_all; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_tokens.hpp0000644000175000017500000000107312535701143020330 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERIC_TOKENS_HPP__ #define __ORCUS_GNUMERIC_TOKENS_HPP__ #include "orcus/tokens.hpp" namespace orcus { /** * Singleton instance containing all GNUMERIC tokens. */ extern tokens gnumeric_tokens; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/interface.cpp0000644000175000017500000000146212535701143017071 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/interface.hpp" #include "orcus/config.hpp" namespace orcus { namespace iface { struct import_filter::impl { orcus::config m_config; }; import_filter::import_filter() : mp_impl(new impl) {} import_filter::~import_filter() { delete mp_impl; } void import_filter::set_config(const config& v) { mp_impl->m_config = v; } const config& import_filter::get_config() const { return mp_impl->m_config; } document_dumper::~document_dumper() {} }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_types.cpp0000644000175000017500000000555412535701143017361 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_types.hpp" #include "orcus/global.hpp" #include namespace orcus { namespace { const char* str_unknown = "unknown"; typedef mdds::sorted_string_map map_type; // Keys must be sorted. map_type::entry cell_type_entries[] = { { ORCUS_ASCII("b"), xlsx_ct_boolean }, { ORCUS_ASCII("e"), xlsx_ct_error }, { ORCUS_ASCII("inlineStr"), xlsx_ct_inline_string }, { ORCUS_ASCII("n"), xlsx_ct_numeric }, { ORCUS_ASCII("s"), xlsx_ct_shared_string }, { ORCUS_ASCII("str"), xlsx_ct_formula_string } }; } xlsx_cell_t to_xlsx_cell_type(const pstring& s) { static map_type ct_map( cell_type_entries, sizeof(cell_type_entries)/sizeof(cell_type_entries[0]), xlsx_ct_unknown); return ct_map.find(s.get(), s.size()); } pstring to_string(xlsx_cell_t type) { switch (type) { case xlsx_ct_boolean: return cell_type_entries[0].key; case xlsx_ct_error: return cell_type_entries[1].key; case xlsx_ct_inline_string: return cell_type_entries[2].key; case xlsx_ct_numeric: return cell_type_entries[3].key; case xlsx_ct_shared_string: return cell_type_entries[4].key; case xlsx_ct_formula_string: return cell_type_entries[5].key; default: ; } return str_unknown; } namespace { typedef mdds::sorted_string_map rca_map_type; // Keys must be sorted. rca_map_type::entry rca_entries[] = { { ORCUS_ASCII("deleteCol"), xlsx_rev_rca_delete_column }, { ORCUS_ASCII("deleteRow"), xlsx_rev_rca_delete_row }, { ORCUS_ASCII("insertCol"), xlsx_rev_rca_insert_column }, { ORCUS_ASCII("insertRow"), xlsx_rev_rca_insert_row } }; } xlsx_rev_row_column_action_t to_xlsx_rev_row_column_action_type(const pstring& s) { static rca_map_type rca_map( rca_entries, sizeof(rca_entries)/sizeof(rca_entries[0]), xlsx_rev_rca_unknown); return rca_map.find(s.get(), s.size()); } pstring to_string(xlsx_rev_row_column_action_t type) { switch (type) { case xlsx_rev_rca_delete_column: return rca_entries[0].key; case xlsx_rev_rca_delete_row: return rca_entries[1].key; case xlsx_rev_rca_insert_column: return rca_entries[2].key; case xlsx_rev_rca_insert_row: return rca_entries[3].key; case xlsx_rev_rca_unknown: default: ; } return str_unknown; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_revision_context.hpp0000644000175000017500000000377612535701143021630 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_REVHEADERS_CONTEXT_HPP #define ORCUS_XLSX_REVHEADERS_CONTEXT_HPP #include "xml_context_base.hpp" #include "xlsx_types.hpp" namespace orcus { class xlsx_revheaders_context : public xml_context_base { std::vector m_cur_sheet_ids; /// current sheet ID's. public: xlsx_revheaders_context(session_context& session_cxt, const tokens& tokens); virtual ~xlsx_revheaders_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); }; class xlsx_revlog_context : public xml_context_base { double m_cur_value; pstring m_cur_string; xlsx_cell_t m_cur_cell_type; bool m_cur_formula; public: xlsx_revlog_context(session_context& session_cxt, const tokens& tokens); virtual ~xlsx_revlog_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/detection_result.cpp0000644000175000017500000000102712535701143020502 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "detection_result.hpp" namespace orcus { detection_result::detection_result(bool result) : m_result(result) {} bool detection_result::get_result() const { return m_result; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_stream_handler.cpp0000644000175000017500000000511212535701143020775 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_stream_handler.hpp" #include "xml_context_base.hpp" #include "orcus/exception.hpp" namespace orcus { xml_stream_handler::xml_stream_handler(xml_context_base* root_context) : mp_ns_cxt(NULL), mp_root_context(root_context) { m_context_stack.push_back(root_context); } xml_stream_handler::~xml_stream_handler() { delete mp_root_context; } void xml_stream_handler::start_document() { } void xml_stream_handler::end_document() { } void xml_stream_handler::start_element(const sax_token_parser_element& elem) { xml_context_base& cur = get_current_context(); if (!cur.can_handle_element(elem.ns, elem.name)) { m_context_stack.push_back(cur.create_child_context(elem.ns, elem.name)); m_context_stack.back()->set_ns_context(mp_ns_cxt); } get_current_context().start_element(elem.ns, elem.name, elem.attrs); } void xml_stream_handler::end_element(const sax_token_parser_element& elem) { bool ended = get_current_context().end_element(elem.ns, elem.name); if (ended) { size_t n = m_context_stack.size(); if (n > 1) { // Call end_child_context of the parent context to provide a way for // the two adjacent contexts to communicate with each other. context_stack_type::reverse_iterator itr_cur = m_context_stack.rbegin(); context_stack_type::reverse_iterator itr_par = itr_cur + 1; (*itr_par)->end_child_context(elem.ns, elem.name, *itr_cur); } m_context_stack.pop_back(); } } void xml_stream_handler::characters(const pstring& str, bool transient) { get_current_context().characters(str, transient); } void xml_stream_handler::set_ns_context(const xmlns_context* p) { mp_ns_cxt = p; if (!m_context_stack.empty()) m_context_stack.back()->set_ns_context(p); } void xml_stream_handler::set_config(const config& opt) { m_config = opt; if (!m_context_stack.empty()) m_context_stack.back()->set_config(m_config); } xml_context_base& xml_stream_handler::get_current_context() { if (m_context_stack.empty()) return *mp_root_context; return *m_context_stack.back(); } xml_context_base& xml_stream_handler::get_root_context() { return *mp_root_context; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_handler.cpp0000644000175000017500000000352512535701143017626 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_handler.hpp" #include "xlsx_context.hpp" #include "xlsx_sheet_context.hpp" #include "xlsx_table_context.hpp" #include "xlsx_pivot_context.hpp" #include using namespace std; namespace orcus { xlsx_sheet_xml_handler::xlsx_sheet_xml_handler( session_context& session_cxt, const tokens& tokens, spreadsheet::sheet_t sheet_id, spreadsheet::iface::import_sheet* sheet) : xml_stream_handler(new xlsx_sheet_context(session_cxt, tokens, sheet_id, sheet)) { } xlsx_sheet_xml_handler::~xlsx_sheet_xml_handler() { } void xlsx_sheet_xml_handler::pop_rel_extras(opc_rel_extras_t& other) { xlsx_sheet_context& cxt = static_cast(get_root_context()); cxt.pop_rel_extras(other); } xlsx_table_xml_handler::xlsx_table_xml_handler( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_table& table) : xml_stream_handler(new xlsx_table_context(session_cxt, tokens, table)) { } xlsx_pivot_cache_def_xml_handler::xlsx_pivot_cache_def_xml_handler( session_context& cxt, const tokens& tokens) : xml_stream_handler(new xlsx_pivot_cache_def_context(cxt, tokens)) {} xlsx_pivot_cache_rec_xml_handler::xlsx_pivot_cache_rec_xml_handler( session_context& cxt, const tokens& tokens) : xml_stream_handler(new xlsx_pivot_cache_rec_context(cxt, tokens)) {} xlsx_pivot_table_xml_handler::xlsx_pivot_table_xml_handler( session_context& cxt, const tokens& tokens) : xml_stream_handler(new xlsx_pivot_table_context(cxt, tokens)) {} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/session_context.hpp0000644000175000017500000000165012535701143020364 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SESSION_CONTEXT_HPP #define ORCUS_SESSION_CONTEXT_HPP #include "orcus/string_pool.hpp" #include #include namespace orcus { struct session_context : boost::noncopyable { string_pool m_string_pool; /** * Derive from this class in case the filter needs to store its own * session data. */ struct custom_data { virtual ~custom_data() = 0; }; boost::scoped_ptr mp_data; session_context(); session_context(custom_data* data); ~session_context(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_stream_parser.cpp0000644000175000017500000000331012535701143020652 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_stream_parser.hpp" #include "xml_stream_handler.hpp" #include "orcus/tokens.hpp" #include "orcus/sax_token_parser.hpp" #include #include #include using namespace std; namespace orcus { // ============================================================================ xml_stream_parser::parse_error::parse_error(const string& msg) : m_msg(msg) {} xml_stream_parser::parse_error::~parse_error() throw() {} const char* xml_stream_parser::parse_error::what() const throw() { return m_msg.c_str(); } xml_stream_parser::xml_stream_parser( const config& opt, xmlns_repository& ns_repo, const tokens& tokens, const char* content, size_t size) : m_config(opt), m_ns_cxt(ns_repo.create_context()), m_tokens(tokens), mp_handler(NULL), m_content(content), m_size(size) { } xml_stream_parser::~xml_stream_parser() { } void xml_stream_parser::parse() { if (!mp_handler) return; sax_token_parser sax(m_content, m_size, m_tokens, m_ns_cxt, *mp_handler); sax.parse(); } void xml_stream_parser::set_handler(xml_stream_handler* handler) { mp_handler = handler; if (mp_handler) { mp_handler->set_ns_context(&m_ns_cxt); mp_handler->set_config(m_config); } } xml_stream_handler* xml_stream_parser::get_handler() const { return mp_handler; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_map_tree_test.cpp0000644000175000017500000002172512535701143020650 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_map_tree.hpp" #include "orcus/xml_namespace.hpp" #include #include #include using namespace orcus; using namespace std; void test_path_insertion() { xmlns_repository repo; xml_map_tree tree(repo); xml_map_tree::cell_position ref; ref.sheet = pstring("test"); ref.row = 2; ref.col = 1; // Single cell links tree.set_cell_link("/data/elem1", ref); const xml_map_tree::linkable* p0 = tree.get_link("/data/elem1"); assert(p0 && p0->node_type == xml_map_tree::node_element); const xml_map_tree::element* p = static_cast(p0); assert(p->ref_type == xml_map_tree::reference_cell); assert(p->cell_ref->pos.sheet == "test"); assert(p->cell_ref->pos.row == 2); assert(p->cell_ref->pos.col == 1); const xml_map_tree::element* elem1 = p; ref.row = 3; ref.col = 2; tree.set_cell_link("/data/elem2", ref); p0 = tree.get_link("/data/elem2"); assert(p0 && p0->node_type == xml_map_tree::node_element); p = static_cast(p0); assert(p && p->ref_type == xml_map_tree::reference_cell); assert(p->cell_ref->pos.sheet == "test"); assert(p->cell_ref->pos.row == 3); assert(p->cell_ref->pos.col == 2); // The link in elem1 should be unchanged. p0 = tree.get_link("/data/elem1"); assert(p0 == elem1); ref.sheet = pstring("test2"); ref.row = 10; ref.col = 5; tree.set_cell_link("/data/meta/title", ref); p0 = tree.get_link("/data/meta/title"); assert(p0 && p0->node_type == xml_map_tree::node_element); p = static_cast(p0); assert(p && p->ref_type == xml_map_tree::reference_cell); assert(p->cell_ref->pos.sheet == "test2"); assert(p->cell_ref->pos.row == 10); assert(p->cell_ref->pos.col == 5); // Range field links ref.row = 5; ref.col = 0; ref.sheet = pstring("test3"); tree.append_range_field_link("/data/entries/entry/id", ref); tree.append_range_field_link("/data/entries/entry/name", ref); tree.append_range_field_link("/data/entries/entry/score", ref); p0 = tree.get_link("/data/entries/entry/id"); assert(p0 && p0->node_type == xml_map_tree::node_element); p = static_cast(p0); assert(p && p->ref_type == xml_map_tree::reference_range_field); assert(p->field_ref->ref->pos.sheet == "test3"); assert(p->field_ref->ref->pos.row == 5); assert(p->field_ref->ref->pos.col == 0); assert(p->field_ref->column_pos == 0); p0 = tree.get_link("/data/entries/entry/name"); assert(p0 && p0->node_type == xml_map_tree::node_element); p = static_cast(p0); assert(p && p->ref_type == xml_map_tree::reference_range_field); assert(p->field_ref->ref->pos.sheet == "test3"); assert(p->field_ref->ref->pos.row == 5); assert(p->field_ref->ref->pos.col == 0); assert(p->field_ref->column_pos == 1); p0 = tree.get_link("/data/entries/entry/score"); assert(p0 && p0->node_type == xml_map_tree::node_element); p = static_cast(p0); assert(p && p->ref_type == xml_map_tree::reference_range_field); assert(p->field_ref->ref->pos.sheet == "test3"); assert(p->field_ref->ref->pos.row == 5); assert(p->field_ref->ref->pos.col == 0); assert(p->field_ref->column_pos == 2); } void test_attr_path_insertion() { xmlns_repository repo; xml_map_tree tree(repo); xml_map_tree::cell_position ref; ref.sheet = pstring("test"); ref.row = 2; ref.col = 3; // 'attr1' is an attribute of 'elem'. tree.set_cell_link("/root/elem@attr1", ref); const xml_map_tree::linkable* p = tree.get_link("/root/elem@attr1"); assert(p && p->node_type == xml_map_tree::node_attribute); const xml_map_tree::attribute* attr = static_cast(p); assert(attr->ref_type == xml_map_tree::reference_cell); assert(attr->cell_ref->pos.sheet == "test"); assert(attr->cell_ref->pos.row == 2); assert(attr->cell_ref->pos.col == 3); // Insert another attribute in the same element. ref.sheet = pstring("test2"); ref.row = 11; ref.col = 4; tree.set_cell_link("/root/elem@attr2", ref); p = tree.get_link("/root/elem@attr2"); assert(p && p->node_type == xml_map_tree::node_attribute); attr = static_cast(p); assert(attr->ref_type == xml_map_tree::reference_cell); assert(attr->cell_ref->pos.sheet == "test2"); assert(attr->cell_ref->pos.row == 11); assert(attr->cell_ref->pos.col == 4); // At this point, /root/elem is not linked. p = tree.get_link("/root/elem"); assert(!p); // Now, link /root/elem. ref.sheet = pstring("test3"); ref.row = 4; ref.col = 6; tree.set_cell_link("/root/elem", ref); p = tree.get_link("/root/elem"); assert(p && p->node_type == xml_map_tree::node_element); const xml_map_tree::element* elem = static_cast(p); assert(elem->elem_type == xml_map_tree::element_linked); assert(elem->ref_type == xml_map_tree::reference_cell); assert(elem->cell_ref->pos.sheet == "test3"); assert(elem->cell_ref->pos.row == 4); assert(elem->cell_ref->pos.col == 6); } void test_tree_walk() { xmlns_repository repo; xml_map_tree tree(repo); xml_map_tree::cell_position ref; ref.sheet = pstring("test"); ref.row = 2; ref.col = 1; tree.set_cell_link("/data/header/title", ref); xml_map_tree::walker walker = tree.get_tree_walker(); walker.reset(); // Root element. const xml_map_tree::element* elem = walker.push_element(XMLNS_UNKNOWN_ID, "data"); assert(elem); assert(elem->name == "data"); assert(elem->elem_type == xml_map_tree::element_unlinked); elem = walker.push_element(XMLNS_UNKNOWN_ID, "header"); assert(elem); assert(elem->name == "header"); assert(elem->elem_type == xml_map_tree::element_unlinked); elem = walker.push_element(XMLNS_UNKNOWN_ID, "title"); assert(elem); assert(elem->name == "title"); assert(elem->ref_type == xml_map_tree::reference_cell); elem = walker.pop_element(XMLNS_UNKNOWN_ID, "title"); assert(elem); assert(elem->name == "header"); assert(elem->elem_type == xml_map_tree::element_unlinked); elem = walker.pop_element(XMLNS_UNKNOWN_ID, "header"); assert(elem); assert(elem->name == "data"); assert(elem->elem_type == xml_map_tree::element_unlinked); elem = walker.pop_element(XMLNS_UNKNOWN_ID, "data"); assert(!elem); } void test_tree_walk_namespace() { xmlns_repository repo; xml_map_tree tree(repo); xml_map_tree::cell_position ref; ref.sheet = pstring("data"); ref.row = 1; ref.col = 2; tree.set_namespace_alias("a", "http://some-namespace"); tree.set_namespace_alias("skip", "http://namespace-to-skip"); tree.set_cell_link("/a:table/a:title", ref); tree.start_range(); ref.row = 2; ref.col = 0; tree.append_range_field_link("/a:table/a:rows/a:row/a:city", ref); ++ref.col; tree.append_range_field_link("/a:table/a:rows/a:row/a:population", ref); ++ref.col; tree.append_range_field_link("/a:table/a:rows/a:row/a:year", ref); tree.commit_range(); xmlns_id_t ns_a = tree.get_namespace("a"); assert(ns_a != XMLNS_UNKNOWN_ID); xmlns_id_t ns_skip = tree.get_namespace("skip"); assert(ns_skip != XMLNS_UNKNOWN_ID); xml_map_tree::walker walker = tree.get_tree_walker(); walker.reset(); // Root element. This is not linked. const xml_map_tree::element* elem = walker.push_element(ns_a, "table"); assert(elem && elem->ns == ns_a && elem->name == "table" && elem->node_type == xml_map_tree::node_element); assert(elem->elem_type == xml_map_tree::element_unlinked); assert(elem->ref_type == xml_map_tree::reference_unknown); // Intentionally push a foreign element. const xml_map_tree::element* elem_old = elem; elem = walker.push_element(ns_skip, "foo"); assert(!elem); elem = walker.pop_element(ns_skip, "foo"); assert(elem == elem_old); // Push a foreign element and a valid element under it. A valid element // placed under a foreign element should be invalid. elem_old = elem; elem = walker.push_element(ns_skip, "foo"); assert(!elem); elem = walker.push_element(ns_a, "title"); assert(!elem); elem = walker.pop_element(ns_a, "title"); assert(!elem); elem = walker.pop_element(ns_skip, "foo"); assert(elem == elem_old); } int main() { test_path_insertion(); test_attr_path_insertion(); test_tree_walk(); test_tree_walk_namespace(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ods_content_xml_handler.hpp0000644000175000017500000000202012535701143022021 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ODSHANDLER_HPP__ #define __ORCUS_ODSHANDLER_HPP__ #include "xml_stream_handler.hpp" #include "xml_context_base.hpp" #include #include namespace orcus { struct session_context; class tokens; class ods_content_xml_context; namespace spreadsheet { namespace iface { class import_factory; }} /** * Handler for parsing the content.xml part. */ class ods_content_xml_handler : public xml_stream_handler { public: ods_content_xml_handler(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory); virtual ~ods_content_xml_handler(); virtual void start_document(); virtual void end_document(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_types.cpp0000644000175000017500000000127612535701143017516 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ooxml_types.hpp" #include "orcus/global.hpp" namespace orcus { opc_rel_extra::~opc_rel_extra() {} opc_rel_extras_t::opc_rel_extras_t() {} opc_rel_extras_t::~opc_rel_extras_t() { std::for_each(data.begin(), data.end(), map_object_deleter()); } void opc_rel_extras_t::swap(opc_rel_extras_t& other) { data.swap(other.data); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_cell_context_test.cpp0000644000175000017500000001727012535701143022550 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_cell_context.hpp" #include "gnumeric_tokens.hpp" #include "gnumeric_namespace_types.hpp" #include "gnumeric_token_constants.hpp" #include "mock_spreadsheet.hpp" #include "session_context.hpp" #include "orcus/types.hpp" #include #include #include using namespace orcus; using namespace std; using namespace orcus::spreadsheet; using namespace orcus::spreadsheet::mock; namespace { class mock_sheet : public import_sheet { public: virtual void set_value(row_t row, col_t col, double val) { assert(row == 1); assert(col == 2); assert(val == 5.0); } virtual void set_bool(row_t row, col_t col, bool val) { assert(row == 31); assert(col == 32); assert(val == true); } virtual void set_string(row_t row, col_t col, size_t id) { assert(row == 10); assert(col == 321); assert(id == 2); } virtual void set_shared_formula(row_t row, col_t col, size_t id) { assert(row == 6); assert(col == 16); assert(id == 3); } virtual void set_shared_formula(row_t row, col_t col, formula_grammar_t grammar, size_t id, const char* s, size_t n) { assert(id == 2); assert(col == 15); assert(row == 5); assert(grammar == spreadsheet::formula_grammar_gnumeric); assert(string(s, n) == "=basicFormulaString"); } virtual void set_formula(row_t row, col_t col, formula_grammar_t grammar, const char* s, size_t n) { assert(row == 9); assert(col == 11); assert(grammar == formula_grammar_gnumeric); assert(string(s, n) == "=formula"); } virtual void set_array_formula(row_t row, col_t col, formula_grammar_t grammar, const char* s, size_t n, row_t rows, col_t cols) { assert(row == 19); assert(col == 111); assert(grammar == formula_grammar_gnumeric); assert(string(s, n) == "=arrayFormula"); assert(rows == 2); assert(cols == 3); } }; class mock_shared_strings : public import_shared_strings { public: virtual size_t add(const char* s, size_t n) { assert(n == 14); assert(string(s, n) == "14 char string"); return 2; } }; class mock_factory : public import_factory { public: virtual iface::import_shared_strings* get_shared_strings() { return &m_shared_strings; } private: mock_shared_strings m_shared_strings; }; void test_cell_value() { mock_sheet sheet; import_factory factory; session_context cxt; orcus::gnumeric_cell_context context(cxt, orcus::gnumeric_tokens, &factory, &sheet); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t elem = XML_Cell; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Row, "1", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Col, "2", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_ValueType, "40", false)); context.start_element(ns, elem, attrs); context.characters("5", false); context.end_element(ns, elem); } void test_cell_bool() { mock_sheet sheet; import_factory factory; session_context cxt; orcus::gnumeric_cell_context context(cxt, orcus::gnumeric_tokens, &factory, &sheet); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t elem = XML_Cell; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Row, "31", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Col, "32", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_ValueType, "20", false)); context.start_element(ns, elem, attrs); context.characters("TRUE", false); context.end_element(ns, elem); } void test_cell_string() { mock_sheet sheet; mock_factory factory; session_context cxt; orcus::gnumeric_cell_context context(cxt, orcus::gnumeric_tokens, &factory, &sheet); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t elem = XML_Cell; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Row, "10", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Col, "321", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_ValueType, "60", false)); context.start_element(ns, elem, attrs); context.characters("14 char string", false); context.end_element(ns, elem); } void test_shared_formula_with_string() { mock_sheet sheet; mock_factory factory; session_context cxt; orcus::gnumeric_cell_context context(cxt, orcus::gnumeric_tokens, &factory, &sheet); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t elem = XML_Cell; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Row, "5", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Col, "15", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_ExprID, "2", false)); context.start_element(ns, elem, attrs); context.characters("=basicFormulaString", false); context.end_element(ns, elem); } void test_shared_formula_without_string() { mock_sheet sheet; mock_factory factory; session_context cxt; orcus::gnumeric_cell_context context(cxt, orcus::gnumeric_tokens, &factory, &sheet); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t elem = XML_Cell; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Row, "6", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Col, "16", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_ExprID, "3", false)); context.start_element(ns, elem, attrs); context.end_element(ns, elem); } void test_cell_formula() { mock_sheet sheet; mock_factory factory; session_context cxt; orcus::gnumeric_cell_context context(cxt, orcus::gnumeric_tokens, &factory, &sheet); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t elem = XML_Cell; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Row, "9", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Col, "11", false)); context.start_element(ns, elem, attrs); context.characters("=formula", false); context.end_element(ns, elem); } void test_cell_array_formula() { mock_sheet sheet; mock_factory factory; session_context cxt; orcus::gnumeric_cell_context context(cxt, orcus::gnumeric_tokens, &factory, &sheet); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t elem = XML_Cell; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Row, "19", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Col, "111", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Rows, "2", false)); attrs.push_back(xml_token_attr_t(NS_gnumeric_gnm, XML_Cols, "3", false)); context.start_element(ns, elem, attrs); context.characters("=arrayFormula", false); context.end_element(ns, elem); } } int main() { test_cell_value(); test_cell_bool(); test_cell_string(); test_shared_formula_with_string(); test_shared_formula_without_string(); test_cell_formula(); test_cell_array_formula(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_context.cpp0000644000175000017500000007064112535701143017700 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_context.hpp" #include "ooxml_global.hpp" #include "ooxml_token_constants.hpp" #include "ooxml_namespace_types.hpp" #include "ooxml_types.hpp" #include "ooxml_schemas.hpp" #include "xlsx_helper.hpp" #include "xml_context_global.hpp" #include "orcus/global.hpp" #include "orcus/tokens.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/measurement.hpp" #include #include #include #include using namespace std; namespace orcus { namespace { class shared_strings_root_attr_parser { public: shared_strings_root_attr_parser() : m_count(0), m_unique_count(0) {} void operator() (const xml_token_attr_t &attr) { switch (attr.name) { case XML_count: m_count = to_long(attr.value); break; case XML_uniqueCount: m_unique_count = to_long(attr.value); break; } } shared_strings_root_attr_parser& operator= (const shared_strings_root_attr_parser& r) { m_count = r.m_count; m_unique_count = r.m_unique_count; return *this; } size_t get_count() const { return m_count; } size_t get_unique_count() const { return m_unique_count; } private: size_t m_count; size_t m_unique_count; }; class color_attr_parser : unary_function { pstring m_rgb; public: void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_rgb: m_rgb = attr.value; break; case XML_theme: // TODO : handle this. break; default: ; } } pstring get_rgb() const { return m_rgb; } }; } xlsx_shared_strings_context::xlsx_shared_strings_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_shared_strings* strings) : xml_context_base(session_cxt, tokens), mp_strings(strings), m_in_segments(false) {} xlsx_shared_strings_context::~xlsx_shared_strings_context() {} bool xlsx_shared_strings_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* xlsx_shared_strings_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void xlsx_shared_strings_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void xlsx_shared_strings_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); switch (name) { case XML_sst: { // root element for the shared string part. xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); if (get_config().debug) print_attrs(get_tokens(), attrs); shared_strings_root_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); if (get_config().debug) cout << "count: " << func.get_count() << " unique count: " << func.get_unique_count() << endl; } break; case XML_si: // single shared string entry. m_in_segments = false; xml_element_expected(parent, NS_ooxml_xlsx, XML_sst); break; case XML_r: // rich text run m_in_segments = true; xml_element_expected(parent, NS_ooxml_xlsx, XML_si); break; case XML_rPr: // rich text run property xml_element_expected(parent, NS_ooxml_xlsx, XML_r); break; case XML_b: // bold xml_element_expected(parent, NS_ooxml_xlsx, XML_rPr); break; case XML_i: // italic xml_element_expected(parent, NS_ooxml_xlsx, XML_rPr); break; case XML_sz: { // font size xml_element_expected(parent, NS_ooxml_xlsx, XML_rPr); pstring s = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_val)).get_value(); double point = to_double(s); mp_strings->set_segment_font_size(point); } break; case XML_color: { // font color xml_element_expected(parent, NS_ooxml_xlsx, XML_rPr); color_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); spreadsheet::color_elem_t alpha; spreadsheet::color_elem_t red; spreadsheet::color_elem_t green; spreadsheet::color_elem_t blue; if (to_rgb(func.get_rgb(), alpha, red, green, blue)) mp_strings->set_segment_font_color(alpha, red, green, blue); } break; case XML_rFont: { // font xml_element_expected(parent, NS_ooxml_xlsx, XML_rPr); pstring font = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_val)).get_value(); mp_strings->set_segment_font_name(font.get(), font.size()); } break; case XML_family: // font family xml_element_expected(parent, NS_ooxml_xlsx, XML_rPr); break; case XML_scheme: // font scheme xml_element_expected(parent, NS_ooxml_xlsx, XML_rPr); break; case XML_t: { // actual text stored as its content. xml_elem_stack_t allowed; allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_si)); allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_r)); xml_element_expected(parent, allowed); } break; default: warn_unhandled(); } } bool xlsx_shared_strings_context::end_element(xmlns_id_t ns, xml_token_t name) { switch (name) { case XML_t: break; case XML_b: mp_strings->set_segment_bold(true); break; case XML_i: mp_strings->set_segment_italic(true); break; case XML_r: mp_strings->append_segment(m_cur_str.get(), m_cur_str.size()); break; case XML_si: { if (m_in_segments) // commit all formatted segments. mp_strings->commit_segments(); else { // unformatted text should only have one text segment. mp_strings->append(m_cur_str.get(), m_cur_str.size()); } } break; } return pop_stack(ns, name); } void xlsx_shared_strings_context::characters(const pstring& str, bool transient) { xml_token_pair_t& cur_token = get_current_element(); if (cur_token.first == NS_ooxml_xlsx && cur_token.second == XML_t) { m_cur_str = str; if (transient) m_cur_str = m_pool.intern(m_cur_str).first; } } // ============================================================================ namespace { class border_attr_parser : public unary_function { spreadsheet::border_direction_t m_dir; spreadsheet::iface::import_styles& m_styles; public: border_attr_parser(spreadsheet::border_direction_t dir, spreadsheet::iface::import_styles& styles) : m_dir(dir), m_styles(styles) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_style: m_styles.set_border_style(m_dir, attr.value.get(), attr.value.size()); break; } } }; class cell_style_attr_parser : public unary_function { spreadsheet::iface::import_styles& m_styles; public: cell_style_attr_parser(spreadsheet::iface::import_styles& styles) : m_styles(styles) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_name: m_styles.set_cell_style_name(attr.value.get(), attr.value.size()); break; case XML_xfId: { size_t n = to_long(attr.value); m_styles.set_cell_style_xf(n); } break; case XML_builtinId: { size_t n = to_long(attr.value); m_styles.set_cell_style_builtin(n); } break; } } }; class xf_attr_parser : public unary_function { spreadsheet::iface::import_styles& m_styles; public: xf_attr_parser(spreadsheet::iface::import_styles& styles) : m_styles(styles) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_borderId: { size_t n = to_long(attr.value); m_styles.set_xf_border(n); } break; case XML_fillId: { size_t n = to_long(attr.value); m_styles.set_xf_fill(n); } break; case XML_fontId: { size_t n = to_long(attr.value); m_styles.set_xf_font(n); } break; case XML_numFmtId: { size_t n = to_long(attr.value); m_styles.set_xf_number_format(n); } break; case XML_xfId: { size_t n = to_long(attr.value); m_styles.set_xf_style_xf(n); } break; case XML_applyBorder: break; case XML_applyFill: break; case XML_applyFont: break; case XML_applyNumberFormat: break; case XML_applyAlignment: { bool b = to_long(attr.value) != 0; m_styles.set_xf_apply_alignment(b); } break; } } }; class fill_color_attr_parser : public unary_function { spreadsheet::iface::import_styles& m_styles; const tokens& m_tokens; bool m_foreground; public: fill_color_attr_parser(spreadsheet::iface::import_styles& styles, const tokens& _tokens, bool fg) : m_styles(styles), m_tokens(_tokens), m_foreground(fg) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_rgb: { spreadsheet::color_elem_t alpha; spreadsheet::color_elem_t red; spreadsheet::color_elem_t green; spreadsheet::color_elem_t blue; if (!to_rgb(attr.value, alpha, red, green, blue)) // invalid RGB color format. return; if (m_foreground) m_styles.set_fill_fg_color(alpha, red, green, blue); else m_styles.set_fill_bg_color(alpha, red, green, blue); } break; case XML_indexed: break; default: cerr << "warning: unknown attribute [ " << m_tokens.get_token_name(attr.name) << " ]" << endl; } } }; class cell_protection_attr_parser : public unary_function { spreadsheet::iface::import_styles& m_styles; public: cell_protection_attr_parser(spreadsheet::iface::import_styles& styles) : m_styles(styles) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_hidden: { bool b = to_long(attr.value) != 0; m_styles.set_cell_hidden(b); } break; case XML_locked: { bool b = to_long(attr.value) != 0; m_styles.set_cell_locked(b); } break; } } }; class cell_alignment_attr_parser : public unary_function { spreadsheet::hor_alignment_t m_hor_align; spreadsheet::ver_alignment_t m_ver_align; public: cell_alignment_attr_parser() : m_hor_align(spreadsheet::hor_alignment_unknown), m_ver_align(spreadsheet::ver_alignment_bottom) // 'bottom' is the default if no vertical alignment is given. {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_horizontal: { if (attr.value == "center") m_hor_align = spreadsheet::hor_alignment_center; else if (attr.value == "right") m_hor_align = spreadsheet::hor_alignment_right; else if (attr.value == "left") m_hor_align = spreadsheet::hor_alignment_left; } break; case XML_vertical: { if (attr.value == "top") m_ver_align = spreadsheet::ver_alignment_top; else if (attr.value == "center") m_ver_align = spreadsheet::ver_alignment_middle; else if (attr.value == "bottom") m_ver_align = spreadsheet::ver_alignment_bottom; } break; default: ; } } spreadsheet::hor_alignment_t get_hor_align() const { return m_hor_align; } spreadsheet::ver_alignment_t get_ver_align() const { return m_ver_align; } }; } xlsx_styles_context::xlsx_styles_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_styles* styles) : xml_context_base(session_cxt, tokens), mp_styles(styles), m_cur_border_dir(spreadsheet::border_direction_unknown), m_cell_style_xf(false) {} xlsx_styles_context::~xlsx_styles_context() {} bool xlsx_styles_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* xlsx_styles_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void xlsx_styles_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void xlsx_styles_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); switch (name) { case XML_styleSheet: { // root element xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); if (get_config().debug) print_attrs(get_tokens(), attrs); } break; case XML_fonts: { xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring ps = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t font_count = to_long(ps); mp_styles->set_font_count(font_count); } break; case XML_font: { xml_elem_stack_t expected_elements; expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_fonts)); expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_dxf)); xml_element_expected(parent, expected_elements); } break; case XML_b: xml_element_expected(parent, NS_ooxml_xlsx, XML_font); mp_styles->set_font_bold(true); break; case XML_i: xml_element_expected(parent, NS_ooxml_xlsx, XML_font); mp_styles->set_font_italic(true); break; case XML_u: { xml_element_expected(parent, NS_ooxml_xlsx, XML_font); pstring ps = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_val)).get_value(); if (ps == "double") mp_styles->set_font_underline(spreadsheet::underline_double); else if (ps == "single") mp_styles->set_font_underline(spreadsheet::underline_single); else if (ps == "singleAccounting") mp_styles->set_font_underline(spreadsheet::underline_single_accounting); else if (ps == "doubleAccounting") mp_styles->set_font_underline(spreadsheet::underline_double_accounting); } break; case XML_sz: { xml_element_expected(parent, NS_ooxml_xlsx, XML_font); pstring ps = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_val)).get_value(); double font_size = to_double(ps); mp_styles->set_font_size(font_size); } break; case XML_color: { // The color element can occur under various parent elements. xml_elem_stack_t allowed; allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_font)); allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_top)); allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_bottom)); allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_left)); allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_right)); allowed.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_mruColors)); xml_element_expected(parent, allowed); if (parent.first == NS_ooxml_xlsx) { switch (parent.second) { case XML_top: case XML_bottom: case XML_left: case XML_right: // This color is for a border. start_border_color(attrs); break; case XML_font: start_font_color(attrs); default: ; } } } break; case XML_name: { xml_element_expected(parent, NS_ooxml_xlsx, XML_font); pstring ps = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_val)).get_value(); mp_styles->set_font_name(ps.get(), ps.size()); } break; case XML_family: xml_element_expected(parent, NS_ooxml_xlsx, XML_font); break; case XML_scheme: xml_element_expected(parent, NS_ooxml_xlsx, XML_font); break; case XML_fills: { xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring ps = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t fill_count = to_long(ps); mp_styles->set_fill_count(fill_count); } break; case XML_fill: { xml_elem_stack_t expected_elements; expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_fills)); expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_dxf)); xml_element_expected(parent, NS_ooxml_xlsx, XML_fills); } break; case XML_patternFill: { xml_element_expected(parent, NS_ooxml_xlsx, XML_fill); pstring ps = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_patternType)).get_value(); mp_styles->set_fill_pattern_type(ps.get(), ps.size()); } break; case XML_fgColor: { xml_element_expected(parent, NS_ooxml_xlsx, XML_patternFill); for_each(attrs.begin(), attrs.end(), fill_color_attr_parser(*mp_styles, get_tokens(), true)); } break; case XML_bgColor: { xml_element_expected(parent, NS_ooxml_xlsx, XML_patternFill); for_each(attrs.begin(), attrs.end(), fill_color_attr_parser(*mp_styles, get_tokens(), false)); } break; case XML_borders: { xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring ps = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t border_count = to_long(ps); mp_styles->set_border_count(border_count); } break; case XML_border: { xml_elem_stack_t expected_elements; expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_borders)); expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_dxf)); xml_element_expected(parent, expected_elements); } break; case XML_top: { xml_element_expected(parent, NS_ooxml_xlsx, XML_border); m_cur_border_dir = spreadsheet::border_top; border_attr_parser func(spreadsheet::border_top, *mp_styles); for_each(attrs.begin(), attrs.end(), func); } break; case XML_bottom: { xml_element_expected(parent, NS_ooxml_xlsx, XML_border); m_cur_border_dir = spreadsheet::border_bottom; border_attr_parser func(spreadsheet::border_bottom, *mp_styles); for_each(attrs.begin(), attrs.end(), func); } break; case XML_left: { xml_element_expected(parent, NS_ooxml_xlsx, XML_border); m_cur_border_dir = spreadsheet::border_left; border_attr_parser func(spreadsheet::border_left, *mp_styles); for_each(attrs.begin(), attrs.end(), func); } break; case XML_right: { xml_element_expected(parent, NS_ooxml_xlsx, XML_border); m_cur_border_dir = spreadsheet::border_right; border_attr_parser func(spreadsheet::border_right, *mp_styles); for_each(attrs.begin(), attrs.end(), func); } break; case XML_diagonal: { xml_element_expected(parent, NS_ooxml_xlsx, XML_border); m_cur_border_dir = spreadsheet::border_diagonal; border_attr_parser func(spreadsheet::border_diagonal, *mp_styles); for_each(attrs.begin(), attrs.end(), func); } break; case XML_cellStyleXfs: { xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring ps = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t n = strtoul(ps.get(), NULL, 10); mp_styles->set_cell_style_xf_count(n); m_cell_style_xf = true; } break; case XML_cellXfs: { // Collection of un-named cell formats used in the document. xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring ps = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t n = strtoul(ps.get(), NULL, 10); mp_styles->set_cell_xf_count(n); m_cell_style_xf = false; } break; case XML_dxfs: { // Collection of differential formats used in the document. xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring ps = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t n = strtoul(ps.get(), NULL, 10); mp_styles->set_dxf_count(n); } break; case XML_cellStyles: { xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring ps = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t n = strtoul(ps.get(), NULL, 10); mp_styles->set_cell_style_count(n); } break; case XML_cellStyle: { // named cell style, some of which are built-in such as 'Normal'. xml_element_expected(parent, NS_ooxml_xlsx, XML_cellStyles); for_each(attrs.begin(), attrs.end(), cell_style_attr_parser(*mp_styles)); } break; case XML_xf: { // Actual cell format attributes (for some reason) abbreviated to // 'xf'. Used both by cells and cell styles. xml_elem_stack_t allowed; allowed.push_back(xml_elem_stack_t::value_type(NS_ooxml_xlsx, XML_cellXfs)); allowed.push_back(xml_elem_stack_t::value_type(NS_ooxml_xlsx, XML_cellStyleXfs)); xml_element_expected(parent, allowed); for_each(attrs.begin(), attrs.end(), xf_attr_parser(*mp_styles)); } break; case XML_dxf: break; case XML_protection: { xml_elem_stack_t expected_elements; expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_xf)); expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_dxf)); xml_element_expected(parent, expected_elements); for_each(attrs.begin(), attrs.end(), cell_protection_attr_parser(*mp_styles)); } break; case XML_alignment: { xml_elem_stack_t expected_elements; expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_xf)); expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_dxf)); xml_element_expected(parent, expected_elements); cell_alignment_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); mp_styles->set_xf_horizontal_alignment(func.get_hor_align()); mp_styles->set_xf_vertical_alignment(func.get_ver_align()); } break; case XML_numFmts: { xml_element_expected(parent, NS_ooxml_xlsx, XML_styleSheet); pstring val = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_count)).get_value(); size_t n = to_long(val); mp_styles->set_number_format_count(n); } break; case XML_numFmt: { xml_elem_stack_t expected_elements; expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_numFmts)); expected_elements.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_dxf)); xml_element_expected(parent, expected_elements); } break; default: warn_unhandled(); } } bool xlsx_styles_context::end_element(xmlns_id_t ns, xml_token_t name) { switch (name) { case XML_font: mp_styles->commit_font(); break; case XML_fill: mp_styles->commit_fill(); break; case XML_border: mp_styles->commit_border(); break; case XML_cellStyle: mp_styles->commit_cell_style(); break; case XML_xf: if (m_cell_style_xf) mp_styles->commit_cell_style_xf(); else mp_styles->commit_cell_xf(); break; case XML_dxf: mp_styles->commit_dxf(); break; case XML_protection: { size_t id = mp_styles->commit_cell_protection(); mp_styles->set_xf_protection(id); } break; } return pop_stack(ns, name); } void xlsx_styles_context::characters(const pstring& /*str*/, bool /*transient*/) { // not used in the styles.xml part. } void xlsx_styles_context::start_border_color(const xml_attrs_t& attrs) { pstring ps = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_rgb)).get_value(); spreadsheet::color_elem_t alpha; spreadsheet::color_elem_t red; spreadsheet::color_elem_t green; spreadsheet::color_elem_t blue; if (to_rgb(ps, alpha, red, green, blue)) mp_styles->set_border_color(m_cur_border_dir, alpha, red, green, blue); } void xlsx_styles_context::start_font_color(const xml_attrs_t& attrs) { color_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); spreadsheet::color_elem_t alpha; spreadsheet::color_elem_t red; spreadsheet::color_elem_t green; spreadsheet::color_elem_t blue; if (to_rgb(func.get_rgb(), alpha, red, green, blue)) mp_styles->set_font_color(alpha, red, green, blue); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_tokens.cpp0000644000175000017500000000117412535701143017652 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ooxml_tokens.hpp" namespace orcus { namespace ooxml { #include "ooxml_tokens.inl" } namespace opc { #include "opc_tokens.inl" } tokens ooxml_tokens = tokens(ooxml::token_names, ooxml::token_name_count); tokens opc_tokens = tokens(opc::token_names, opc::token_name_count); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_helper.cpp0000644000175000017500000000172412535701143017467 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_helper.hpp" namespace orcus { bool to_rgb( const pstring& ps, spreadsheet::color_elem_t& alpha, spreadsheet::color_elem_t& red, spreadsheet::color_elem_t& green, spreadsheet::color_elem_t& blue) { // RGB string is a 8-character string representing 32-bit hexadecimal // number e.g. 'FF004A12' (alpha - red - green - blue) size_t n = ps.size(); if (n != 8) return false; unsigned long v = strtoul(ps.get(), NULL, 16); blue = (0x000000FF & v); green = (0x000000FF & (v >> 8)); red = (0x000000FF & (v >> 16)); alpha = (0x000000FF & (v >> 24)); return true; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_cell_context.hpp0000644000175000017500000000331012535701143021504 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERIC_CELL_CONTEXT_HPP__ #define __ORCUS_GNUMERIC_CELL_CONTEXT_HPP__ #include "xml_context_base.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class import_factory; class import_sheet; }} struct gnumeric_cell_data; class gnumeric_cell_context : public xml_context_base { public: gnumeric_cell_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory, spreadsheet::iface::import_sheet* sheet); virtual ~gnumeric_cell_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: void start_cell(const xml_attrs_t& attrs); void end_cell(); private: spreadsheet::iface::import_factory* mp_factory; boost::scoped_ptr mp_cell_data; /** * Used for temporary storage of characters */ pstring chars; spreadsheet::iface::import_sheet* mp_sheet; }; } // namespace orcus #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/session_context.cpp0000644000175000017500000000117112535701143020355 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "session_context.hpp" namespace orcus { session_context::custom_data::~custom_data() {} session_context::session_context() : mp_data(NULL) {} session_context::session_context(custom_data* data) : mp_data(data) {} session_context::~session_context() { mp_data.reset(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_namespace_types.hpp0000644000175000017500000000134712535701143022066 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLS_XML_NAMESPACE_TYPES_HPP #define ORCUS_XLS_XML_NAMESPACE_TYPES_HPP #include "orcus/types.hpp" namespace orcus { extern const xmlns_id_t NS_xls_xml_ss; extern const xmlns_id_t NS_xls_xml_o; extern const xmlns_id_t NS_xls_xml_x; extern const xmlns_id_t NS_xls_xml_html; /** * Null-terminated array of all xls xml namespaces. */ extern const xmlns_id_t* NS_xls_xml_all; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_token_constants.inl0000644000175000017500000027411012535701143021177 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const xml_token_t XML_0 = 1; const xml_token_t XML_0deg = 2; const xml_token_t XML_0grad = 3; const xml_token_t XML_0rad = 4; const xml_token_t XML_1 = 5; const xml_token_t XML_1_2 = 6; const xml_token_t XML_100 = 7; const xml_token_t XML_2 = 8; const xml_token_t XML_200 = 9; const xml_token_t XML_3 = 10; const xml_token_t XML_300 = 11; const xml_token_t XML_3d = 12; const xml_token_t XML_400 = 13; const xml_token_t XML_500 = 14; const xml_token_t XML_600 = 15; const xml_token_t XML_700 = 16; const xml_token_t XML_800 = 17; const xml_token_t XML_900 = 18; const xml_token_t XML_A = 19; const xml_token_t XML_I = 20; const xml_token_t XML_ROC = 21; const xml_token_t XML__blank = 22; const xml_token_t XML__parent = 23; const xml_token_t XML__self = 24; const xml_token_t XML__top = 25; const xml_token_t XML_a = 26; const xml_token_t XML_about = 27; const xml_token_t XML_above = 28; const xml_token_t XML_accelerate = 29; const xml_token_t XML_accent = 30; const xml_token_t XML_accent_height = 31; const xml_token_t XML_acceptance_state = 32; const xml_token_t XML_accepted = 33; const xml_token_t XML_accumulate = 34; const xml_token_t XML_action = 35; const xml_token_t XML_active = 36; const xml_token_t XML_actuate = 37; const xml_token_t XML_add_empty_lines = 38; const xml_token_t XML_additional_column_statement = 39; const xml_token_t XML_additive = 40; const xml_token_t XML_address = 41; const xml_token_t XML_adjustment = 42; const xml_token_t XML_after_previous = 43; const xml_token_t XML_algorithm = 44; const xml_token_t XML_align = 45; const xml_token_t XML_all = 46; const xml_token_t XML_allow_deletes = 47; const xml_token_t XML_allow_empty_cell = 48; const xml_token_t XML_allow_inserts = 49; const xml_token_t XML_allow_updates = 50; const xml_token_t XML_alpha_numeric = 51; const xml_token_t XML_alphabetic = 52; const xml_token_t XML_alphabetical_index = 53; const xml_token_t XML_alphabetical_index_auto_mark_file = 54; const xml_token_t XML_alphabetical_index_entry_template = 55; const xml_token_t XML_alphabetical_index_mark = 56; const xml_token_t XML_alphabetical_index_mark_end = 57; const xml_token_t XML_alphabetical_index_mark_start = 58; const xml_token_t XML_alphabetical_index_source = 59; const xml_token_t XML_alphabetical_separators = 60; const xml_token_t XML_alternate = 61; const xml_token_t XML_always = 62; const xml_token_t XML_am_pm = 63; const xml_token_t XML_ambient_color = 64; const xml_token_t XML_anchor_page_number = 65; const xml_token_t XML_anchor_type = 66; const xml_token_t XML_angle = 67; const xml_token_t XML_angle_offset = 68; const xml_token_t XML_angled_connector_line = 69; const xml_token_t XML_angled_line = 70; const xml_token_t XML_anim = 71; const xml_token_t XML_animate = 72; const xml_token_t XML_animateColor = 73; const xml_token_t XML_animateMotion = 74; const xml_token_t XML_animateTransform = 75; const xml_token_t XML_animation = 76; const xml_token_t XML_animation_delay = 77; const xml_token_t XML_animation_direction = 78; const xml_token_t XML_animation_group = 79; const xml_token_t XML_animation_repeat = 80; const xml_token_t XML_animation_start_inside = 81; const xml_token_t XML_animation_steps = 82; const xml_token_t XML_animation_stop_inside = 83; const xml_token_t XML_animations = 84; const xml_token_t XML_annotation = 85; const xml_token_t XML_annotation_end = 86; const xml_token_t XML_annotations = 87; const xml_token_t XML_annote = 88; const xml_token_t XML_appear = 89; const xml_token_t XML_append_table_alias_name = 90; const xml_token_t XML_applet = 91; const xml_token_t XML_application_connection_settings = 92; const xml_token_t XML_application_data = 93; const xml_token_t XML_apply_command = 94; const xml_token_t XML_apply_design_mode = 95; const xml_token_t XML_apply_filter = 96; const xml_token_t XML_apply_style_name = 97; const xml_token_t XML_arc = 98; const xml_token_t XML_archive = 99; const xml_token_t XML_area = 100; const xml_token_t XML_area_circle = 101; const xml_token_t XML_area_polygon = 102; const xml_token_t XML_area_rectangle = 103; const xml_token_t XML_array = 104; const xml_token_t XML_arrow_down = 105; const xml_token_t XML_arrow_left = 106; const xml_token_t XML_arrow_right = 107; const xml_token_t XML_arrow_up = 108; const xml_token_t XML_article = 109; const xml_token_t XML_as_char = 110; const xml_token_t XML_as_template = 111; const xml_token_t XML_ascending = 112; const xml_token_t XML_ascent = 113; const xml_token_t XML_asian = 114; const xml_token_t XML_asterisk = 115; const xml_token_t XML_at_axis = 116; const xml_token_t XML_at_labels = 117; const xml_token_t XML_at_labels_and_axis = 118; const xml_token_t XML_attached_axis = 119; const xml_token_t XML_attractive = 120; const xml_token_t XML_attributeName = 121; const xml_token_t XML_audio = 122; const xml_token_t XML_audio_level = 123; const xml_token_t XML_author = 124; const xml_token_t XML_author_initials = 125; const xml_token_t XML_author_name = 126; const xml_token_t XML_auto = 127; const xml_token_t XML_auto_complete = 128; const xml_token_t XML_auto_create_new_frame = 129; const xml_token_t XML_auto_grow_height = 130; const xml_token_t XML_auto_grow_width = 131; const xml_token_t XML_auto_increment = 132; const xml_token_t XML_auto_position = 133; const xml_token_t XML_auto_reload = 134; const xml_token_t XML_auto_size = 135; const xml_token_t XML_auto_text_indent = 136; const xml_token_t XML_auto_update = 137; const xml_token_t XML_autoReverse = 138; const xml_token_t XML_automatic = 139; const xml_token_t XML_automatic_content = 140; const xml_token_t XML_automatic_find_labels = 141; const xml_token_t XML_automatic_focus = 142; const xml_token_t XML_automatic_order = 143; const xml_token_t XML_automatic_styles = 144; const xml_token_t XML_automatic_update = 145; const xml_token_t XML_average = 146; const xml_token_t XML_avoid_overlap = 147; const xml_token_t XML_axial = 148; const xml_token_t XML_axis = 149; const xml_token_t XML_axis_label_position = 150; const xml_token_t XML_axis_position = 151; const xml_token_t XML_b_spline = 152; const xml_token_t XML_back_scale = 153; const xml_token_t XML_backface_culling = 154; const xml_token_t XML_background = 155; const xml_token_t XML_background_color = 156; const xml_token_t XML_background_image = 157; const xml_token_t XML_background_objects_visible = 158; const xml_token_t XML_background_size = 159; const xml_token_t XML_background_transparency = 160; const xml_token_t XML_background_visible = 161; const xml_token_t XML_balanced = 162; const xml_token_t XML_base_cell_address = 163; const xml_token_t XML_base_dn = 164; const xml_token_t XML_base64Binary = 165; const xml_token_t XML_baseline = 166; const xml_token_t XML_bbox = 167; const xml_token_t XML_begin = 168; const xml_token_t XML_below = 169; const xml_token_t XML_bevel = 170; const xml_token_t XML_bibliography = 171; const xml_token_t XML_bibliography_configuration = 172; const xml_token_t XML_bibliography_data_field = 173; const xml_token_t XML_bibliography_entry_template = 174; const xml_token_t XML_bibliography_mark = 175; const xml_token_t XML_bibliography_source = 176; const xml_token_t XML_bibliography_type = 177; const xml_token_t XML_biggest = 178; const xml_token_t XML_bigint = 179; const xml_token_t XML_binary = 180; const xml_token_t XML_binary_data = 181; const xml_token_t XML_bind = 182; const xml_token_t XML_bind_styles_to_content = 183; const xml_token_t XML_bit = 184; const xml_token_t XML_bitmap = 185; const xml_token_t XML_blend = 186; const xml_token_t XML_blob = 187; const xml_token_t XML_blue = 188; const xml_token_t XML_body = 189; const xml_token_t XML_bold = 190; const xml_token_t XML_book = 191; const xml_token_t XML_booklet = 192; const xml_token_t XML_bookmark = 193; const xml_token_t XML_bookmark_end = 194; const xml_token_t XML_bookmark_start = 195; const xml_token_t XML_booktitle = 196; const xml_token_t XML_boolean = 197; const xml_token_t XML_boolean_comparison_mode = 198; const xml_token_t XML_boolean_style = 199; const xml_token_t XML_boolean_value = 200; const xml_token_t XML_border = 201; const xml_token_t XML_border_bottom = 202; const xml_token_t XML_border_color = 203; const xml_token_t XML_border_left = 204; const xml_token_t XML_border_line_width = 205; const xml_token_t XML_border_line_width_bottom = 206; const xml_token_t XML_border_line_width_left = 207; const xml_token_t XML_border_line_width_right = 208; const xml_token_t XML_border_line_width_top = 209; const xml_token_t XML_border_model = 210; const xml_token_t XML_border_right = 211; const xml_token_t XML_border_top = 212; const xml_token_t XML_both = 213; const xml_token_t XML_bottom = 214; const xml_token_t XML_bottom_end = 215; const xml_token_t XML_bottom_left = 216; const xml_token_t XML_bottom_right = 217; const xml_token_t XML_bottom_start = 218; const xml_token_t XML_bound_column = 219; const xml_token_t XML_bow_tie = 220; const xml_token_t XML_break_after = 221; const xml_token_t XML_break_before = 222; const xml_token_t XML_buddhist = 223; const xml_token_t XML_bullet_char = 224; const xml_token_t XML_bullet_relative_size = 225; const xml_token_t XML_butt = 226; const xml_token_t XML_button = 227; const xml_token_t XML_button_type = 228; const xml_token_t XML_buttons = 229; const xml_token_t XML_by = 230; const xml_token_t XML_c = 231; const xml_token_t XML_calcMode = 232; const xml_token_t XML_calculation_settings = 233; const xml_token_t XML_calendar = 234; const xml_token_t XML_cap_height = 235; const xml_token_t XML_capitalize = 236; const xml_token_t XML_capitalize_entries = 237; const xml_token_t XML_caption = 238; const xml_token_t XML_caption_angle = 239; const xml_token_t XML_caption_angle_type = 240; const xml_token_t XML_caption_escape = 241; const xml_token_t XML_caption_escape_direction = 242; const xml_token_t XML_caption_fit_line_length = 243; const xml_token_t XML_caption_gap = 244; const xml_token_t XML_caption_id = 245; const xml_token_t XML_caption_line_length = 246; const xml_token_t XML_caption_point_x = 247; const xml_token_t XML_caption_point_y = 248; const xml_token_t XML_caption_sequence_format = 249; const xml_token_t XML_caption_sequence_name = 250; const xml_token_t XML_caption_type = 251; const xml_token_t XML_cascade = 252; const xml_token_t XML_case_sensitive = 253; const xml_token_t XML_catalog_name = 254; const xml_token_t XML_categories = 255; const xml_token_t XML_category_and_value = 256; const xml_token_t XML_cell_address = 257; const xml_token_t XML_cell_content_change = 258; const xml_token_t XML_cell_content_deletion = 259; const xml_token_t XML_cell_count = 260; const xml_token_t XML_cell_protect = 261; const xml_token_t XML_cell_range = 262; const xml_token_t XML_cell_range_address = 263; const xml_token_t XML_cell_range_source = 264; const xml_token_t XML_center = 265; const xml_token_t XML_chain_next_name = 266; const xml_token_t XML_change = 267; const xml_token_t XML_change_deletion = 268; const xml_token_t XML_change_end = 269; const xml_token_t XML_change_id = 270; const xml_token_t XML_change_info = 271; const xml_token_t XML_change_start = 272; const xml_token_t XML_change_track_table_cell = 273; const xml_token_t XML_changed_region = 274; const xml_token_t XML_chapter = 275; const xml_token_t XML_char = 276; const xml_token_t XML_character_count = 277; const xml_token_t XML_character_set = 278; const xml_token_t XML_chart = 279; const xml_token_t XML_chart_properties = 280; const xml_token_t XML_charts = 281; const xml_token_t XML_checkbox = 282; const xml_token_t XML_checked = 283; const xml_token_t XML_checkerboard = 284; const xml_token_t XML_circle = 285; const xml_token_t XML_citation_body_style_name = 286; const xml_token_t XML_citation_style_name = 287; const xml_token_t XML_class = 288; const xml_token_t XML_class_id = 289; const xml_token_t XML_class_names = 290; const xml_token_t XML_clip = 291; const xml_token_t XML_clob = 292; const xml_token_t XML_clockwise = 293; const xml_token_t XML_close = 294; const xml_token_t XML_close_back = 295; const xml_token_t XML_close_front = 296; const xml_token_t XML_close_horizontal = 297; const xml_token_t XML_close_vertical = 298; const xml_token_t XML_cm = 299; const xml_token_t XML_code = 300; const xml_token_t XML_collapse = 301; const xml_token_t XML_collapsing = 302; const xml_token_t XML_color = 303; const xml_token_t XML_color_interpolation = 304; const xml_token_t XML_color_interpolation_direction = 305; const xml_token_t XML_color_inversion = 306; const xml_token_t XML_color_mode = 307; const xml_token_t XML_column = 308; const xml_token_t XML_column_count = 309; const xml_token_t XML_column_definition = 310; const xml_token_t XML_column_definitions = 311; const xml_token_t XML_column_gap = 312; const xml_token_t XML_column_mapping = 313; const xml_token_t XML_column_name = 314; const xml_token_t XML_column_percentage = 315; const xml_token_t XML_column_sep = 316; const xml_token_t XML_column_width = 317; const xml_token_t XML_columns = 318; const xml_token_t XML_combine_entries = 319; const xml_token_t XML_combine_entries_with_dash = 320; const xml_token_t XML_combine_entries_with_pp = 321; const xml_token_t XML_combobox = 322; const xml_token_t XML_comma_separated = 323; const xml_token_t XML_command = 324; const xml_token_t XML_command_type = 325; const xml_token_t XML_comment = 326; const xml_token_t XML_complex = 327; const xml_token_t XML_component = 328; const xml_token_t XML_component_collection = 329; const xml_token_t XML_concave = 330; const xml_token_t XML_concentric_gradient_fill_allowed = 331; const xml_token_t XML_cond_style_name = 332; const xml_token_t XML_condensed = 333; const xml_token_t XML_condition = 334; const xml_token_t XML_condition_source = 335; const xml_token_t XML_condition_source_range_address = 336; const xml_token_t XML_conditional_text = 337; const xml_token_t XML_cone = 338; const xml_token_t XML_conference = 339; const xml_token_t XML_config = 340; const xml_token_t XML_config_item = 341; const xml_token_t XML_config_item_map_entry = 342; const xml_token_t XML_config_item_map_indexed = 343; const xml_token_t XML_config_item_map_named = 344; const xml_token_t XML_config_item_set = 345; const xml_token_t XML_connect_bars = 346; const xml_token_t XML_connection_data = 347; const xml_token_t XML_connection_name = 348; const xml_token_t XML_connection_resource = 349; const xml_token_t XML_connector = 350; const xml_token_t XML_consecutive_numbering = 351; const xml_token_t XML_consolidation = 352; const xml_token_t XML_constant = 353; const xml_token_t XML_contains_error = 354; const xml_token_t XML_contains_header = 355; const xml_token_t XML_content = 356; const xml_token_t XML_content_validation = 357; const xml_token_t XML_content_validation_name = 358; const xml_token_t XML_content_validations = 359; const xml_token_t XML_continue = 360; const xml_token_t XML_continue_list = 361; const xml_token_t XML_continue_numbering = 362; const xml_token_t XML_continuous = 363; const xml_token_t XML_contour_path = 364; const xml_token_t XML_contour_polygon = 365; const xml_token_t XML_contrast = 366; const xml_token_t XML_control = 367; const xml_token_t XML_control_implementation = 368; const xml_token_t XML_conversion_mode = 369; const xml_token_t XML_convert_empty_to_null = 370; const xml_token_t XML_copy_all = 371; const xml_token_t XML_copy_back = 372; const xml_token_t XML_copy_formulas = 373; const xml_token_t XML_copy_of = 374; const xml_token_t XML_copy_outline_levels = 375; const xml_token_t XML_copy_results_only = 376; const xml_token_t XML_copy_styles = 377; const xml_token_t XML_corner_radius = 378; const xml_token_t XML_corners = 379; const xml_token_t XML_correct = 380; const xml_token_t XML_count = 381; const xml_token_t XML_count_empty_lines = 382; const xml_token_t XML_count_in_text_boxes = 383; const xml_token_t XML_counter_clockwise = 384; const xml_token_t XML_counterclockwise = 385; const xml_token_t XML_countnums = 386; const xml_token_t XML_country = 387; const xml_token_t XML_country_asian = 388; const xml_token_t XML_country_complex = 389; const xml_token_t XML_covered_table_cell = 390; const xml_token_t XML_creation_date = 391; const xml_token_t XML_creation_time = 392; const xml_token_t XML_creator = 393; const xml_token_t XML_cube = 394; const xml_token_t XML_cubic_spline = 395; const xml_token_t XML_cuboid = 396; const xml_token_t XML_currency = 397; const xml_token_t XML_currency_style = 398; const xml_token_t XML_currency_symbol = 399; const xml_token_t XML_current = 400; const xml_token_t XML_current_date = 401; const xml_token_t XML_current_selected = 402; const xml_token_t XML_current_state = 403; const xml_token_t XML_current_value = 404; const xml_token_t XML_curve = 405; const xml_token_t XML_custom = 406; const xml_token_t XML_custom_shape = 407; const xml_token_t XML_custom1 = 408; const xml_token_t XML_custom2 = 409; const xml_token_t XML_custom3 = 410; const xml_token_t XML_custom4 = 411; const xml_token_t XML_custom5 = 412; const xml_token_t XML_cut = 413; const xml_token_t XML_cut_offs = 414; const xml_token_t XML_cx = 415; const xml_token_t XML_cy = 416; const xml_token_t XML_cylinder = 417; const xml_token_t XML_d = 418; const xml_token_t XML_dash = 419; const xml_token_t XML_dashed = 420; const xml_token_t XML_data = 421; const xml_token_t XML_data_cell_range_address = 422; const xml_token_t XML_data_field = 423; const xml_token_t XML_data_label = 424; const xml_token_t XML_data_label_number = 425; const xml_token_t XML_data_label_symbol = 426; const xml_token_t XML_data_label_text = 427; const xml_token_t XML_data_pilot_display_info = 428; const xml_token_t XML_data_pilot_field = 429; const xml_token_t XML_data_pilot_field_reference = 430; const xml_token_t XML_data_pilot_group = 431; const xml_token_t XML_data_pilot_group_member = 432; const xml_token_t XML_data_pilot_groups = 433; const xml_token_t XML_data_pilot_layout_info = 434; const xml_token_t XML_data_pilot_level = 435; const xml_token_t XML_data_pilot_member = 436; const xml_token_t XML_data_pilot_members = 437; const xml_token_t XML_data_pilot_sort_info = 438; const xml_token_t XML_data_pilot_subtotal = 439; const xml_token_t XML_data_pilot_subtotals = 440; const xml_token_t XML_data_pilot_table = 441; const xml_token_t XML_data_pilot_tables = 442; const xml_token_t XML_data_point = 443; const xml_token_t XML_data_source = 444; const xml_token_t XML_data_source_has_labels = 445; const xml_token_t XML_data_source_setting = 446; const xml_token_t XML_data_source_setting_is_list = 447; const xml_token_t XML_data_source_setting_name = 448; const xml_token_t XML_data_source_setting_type = 449; const xml_token_t XML_data_source_setting_value = 450; const xml_token_t XML_data_source_settings = 451; const xml_token_t XML_data_style_name = 452; const xml_token_t XML_data_type = 453; const xml_token_t XML_database = 454; const xml_token_t XML_database_description = 455; const xml_token_t XML_database_display = 456; const xml_token_t XML_database_name = 457; const xml_token_t XML_database_next = 458; const xml_token_t XML_database_range = 459; const xml_token_t XML_database_ranges = 460; const xml_token_t XML_database_row_number = 461; const xml_token_t XML_database_row_select = 462; const xml_token_t XML_database_source_query = 463; const xml_token_t XML_database_source_sql = 464; const xml_token_t XML_database_source_table = 465; const xml_token_t XML_database_table_name = 466; const xml_token_t XML_datasource = 467; const xml_token_t XML_datatype = 468; const xml_token_t XML_date = 469; const xml_token_t XML_date_adjust = 470; const xml_token_t XML_date_end = 471; const xml_token_t XML_date_start = 472; const xml_token_t XML_date_string = 473; const xml_token_t XML_date_style = 474; const xml_token_t XML_date_time = 475; const xml_token_t XML_date_time_decl = 476; const xml_token_t XML_date_value = 477; const xml_token_t XML_datetime = 478; const xml_token_t XML_day = 479; const xml_token_t XML_day_of_week = 480; const xml_token_t XML_days = 481; const xml_token_t XML_db = 482; const xml_token_t XML_dc = 483; const xml_token_t XML_dde_application = 484; const xml_token_t XML_dde_connection = 485; const xml_token_t XML_dde_connection_decl = 486; const xml_token_t XML_dde_connection_decls = 487; const xml_token_t XML_dde_item = 488; const xml_token_t XML_dde_link = 489; const xml_token_t XML_dde_links = 490; const xml_token_t XML_dde_source = 491; const xml_token_t XML_dde_topic = 492; const xml_token_t XML_decelerate = 493; const xml_token_t XML_decimal = 494; const xml_token_t XML_decimal_places = 495; const xml_token_t XML_decimal_replacement = 496; const xml_token_t XML_decorative = 497; const xml_token_t XML_deep = 498; const xml_token_t XML_default = 499; const xml_token_t XML_default_button = 500; const xml_token_t XML_default_cell_style_name = 501; const xml_token_t XML_default_outline_level = 502; const xml_token_t XML_default_page_layout = 503; const xml_token_t XML_default_row_style_name = 504; const xml_token_t XML_default_style = 505; const xml_token_t XML_default_style_name = 506; const xml_token_t XML_definition_src = 507; const xml_token_t XML_delay = 508; const xml_token_t XML_delay_for_repeat = 509; const xml_token_t XML_delete_rule = 510; const xml_token_t XML_deletion = 511; const xml_token_t XML_deletions = 512; const xml_token_t XML_delimiter = 513; const xml_token_t XML_denominator_value = 514; const xml_token_t XML_dependencies = 515; const xml_token_t XML_dependency = 516; const xml_token_t XML_depth = 517; const xml_token_t XML_desc = 518; const xml_token_t XML_descending = 519; const xml_token_t XML_descent = 520; const xml_token_t XML_description = 521; const xml_token_t XML_detail_fields = 522; const xml_token_t XML_detective = 523; const xml_token_t XML_diagonal_bl_tr = 524; const xml_token_t XML_diagonal_bl_tr_widths = 525; const xml_token_t XML_diagonal_tl_br = 526; const xml_token_t XML_diagonal_tl_br_widths = 527; const xml_token_t XML_diamond = 528; const xml_token_t XML_diffuse_color = 529; const xml_token_t XML_dim = 530; const xml_token_t XML_dimension = 531; const xml_token_t XML_direction = 532; const xml_token_t XML_disable = 533; const xml_token_t XML_disabled = 534; const xml_token_t XML_disc = 535; const xml_token_t XML_discrete = 536; const xml_token_t XML_display = 537; const xml_token_t XML_display_border = 538; const xml_token_t XML_display_date_time = 539; const xml_token_t XML_display_duplicates = 540; const xml_token_t XML_display_equation = 541; const xml_token_t XML_display_factor = 542; const xml_token_t XML_display_filter_buttons = 543; const xml_token_t XML_display_footer = 544; const xml_token_t XML_display_header = 545; const xml_token_t XML_display_label = 546; const xml_token_t XML_display_levels = 547; const xml_token_t XML_display_list = 548; const xml_token_t XML_display_member_mode = 549; const xml_token_t XML_display_name = 550; const xml_token_t XML_display_outline_level = 551; const xml_token_t XML_display_page_number = 552; const xml_token_t XML_display_r_square = 553; const xml_token_t XML_dissolve = 554; const xml_token_t XML_distance = 555; const xml_token_t XML_distance_after_sep = 556; const xml_token_t XML_distance_before_sep = 557; const xml_token_t XML_distinct = 558; const xml_token_t XML_distribute_letter = 559; const xml_token_t XML_distribute_space = 560; const xml_token_t XML_document = 561; const xml_token_t XML_document_content = 562; const xml_token_t XML_document_meta = 563; const xml_token_t XML_document_settings = 564; const xml_token_t XML_document_statistic = 565; const xml_token_t XML_document_styles = 566; const xml_token_t XML_domain = 567; const xml_token_t XML_dont_balance_text_columns = 568; const xml_token_t XML_dot = 569; const xml_token_t XML_dot_dash = 570; const xml_token_t XML_dot_dashed = 571; const xml_token_t XML_dot_dot_dash = 572; const xml_token_t XML_dots1 = 573; const xml_token_t XML_dots1_length = 574; const xml_token_t XML_dots2 = 575; const xml_token_t XML_dots2_length = 576; const xml_token_t XML_dotted = 577; const xml_token_t XML_double = 578; const xml_token_t XML_double_sided = 579; const xml_token_t XML_down = 580; const xml_token_t XML_dr3d = 581; const xml_token_t XML_draft = 582; const xml_token_t XML_draw = 583; const xml_token_t XML_draw_aspect = 584; const xml_token_t XML_draw_count = 585; const xml_token_t XML_drawing = 586; const xml_token_t XML_drawing_page = 587; const xml_token_t XML_drawing_page_properties = 588; const xml_token_t XML_drawings = 589; const xml_token_t XML_drill_down_on_double_click = 590; const xml_token_t XML_driver_settings = 591; const xml_token_t XML_drop_cap = 592; const xml_token_t XML_dropdown = 593; const xml_token_t XML_dur = 594; const xml_token_t XML_duration = 595; const xml_token_t XML_dynamic = 596; const xml_token_t XML_dynamic_spacing = 597; const xml_token_t XML_echo_char = 598; const xml_token_t XML_edge_rounding = 599; const xml_token_t XML_edge_rounding_mode = 600; const xml_token_t XML_editable = 601; const xml_token_t XML_editing_cycles = 602; const xml_token_t XML_editing_duration = 603; const xml_token_t XML_edition = 604; const xml_token_t XML_editor = 605; const xml_token_t XML_effect = 606; const xml_token_t XML_ellipse = 607; const xml_token_t XML_ellipsoid = 608; const xml_token_t XML_email = 609; const xml_token_t XML_embed = 610; const xml_token_t XML_embedded_number_behavior = 611; const xml_token_t XML_embedded_text = 612; const xml_token_t XML_embossed = 613; const xml_token_t XML_emissive_color = 614; const xml_token_t XML_emphasis = 615; const xml_token_t XML_enable = 616; const xml_token_t XML_enable_sql92_check = 617; const xml_token_t XML_enabled = 618; const xml_token_t XML_encoding = 619; const xml_token_t XML_enctype = 620; const xml_token_t XML_end = 621; const xml_token_t XML_end_angle = 622; const xml_token_t XML_end_cell_address = 623; const xml_token_t XML_end_color = 624; const xml_token_t XML_end_column = 625; const xml_token_t XML_end_glue_point = 626; const xml_token_t XML_end_guide = 627; const xml_token_t XML_end_indent = 628; const xml_token_t XML_end_intensity = 629; const xml_token_t XML_end_line_spacing_horizontal = 630; const xml_token_t XML_end_line_spacing_vertical = 631; const xml_token_t XML_end_position = 632; const xml_token_t XML_end_row = 633; const xml_token_t XML_end_shape = 634; const xml_token_t XML_end_table = 635; const xml_token_t XML_end_x = 636; const xml_token_t XML_end_y = 637; const xml_token_t XML_endless = 638; const xml_token_t XML_endnote = 639; const xml_token_t XML_endsync = 640; const xml_token_t XML_engine = 641; const xml_token_t XML_engraved = 642; const xml_token_t XML_enhanced_geometry = 643; const xml_token_t XML_enhanced_path = 644; const xml_token_t XML_entrance = 645; const xml_token_t XML_equal_boolean = 646; const xml_token_t XML_equal_integer = 647; const xml_token_t XML_equal_use_only_zero = 648; const xml_token_t XML_equation = 649; const xml_token_t XML_era = 650; const xml_token_t XML_error_category = 651; const xml_token_t XML_error_indicator = 652; const xml_token_t XML_error_lower_indicator = 653; const xml_token_t XML_error_lower_limit = 654; const xml_token_t XML_error_lower_range = 655; const xml_token_t XML_error_macro = 656; const xml_token_t XML_error_margin = 657; const xml_token_t XML_error_message = 658; const xml_token_t XML_error_percentage = 659; const xml_token_t XML_error_upper_indicator = 660; const xml_token_t XML_error_upper_limit = 661; const xml_token_t XML_error_upper_range = 662; const xml_token_t XML_escape_direction = 663; const xml_token_t XML_escape_processing = 664; const xml_token_t XML_even_columns = 665; const xml_token_t XML_even_rows = 666; const xml_token_t XML_evenodd = 667; const xml_token_t XML_event_listener = 668; const xml_token_t XML_event_listeners = 669; const xml_token_t XML_event_name = 670; const xml_token_t XML_execute = 671; const xml_token_t XML_execute_macro = 672; const xml_token_t XML_exit = 673; const xml_token_t XML_expanded = 674; const xml_token_t XML_exponential = 675; const xml_token_t XML_expression = 676; const xml_token_t XML_extension = 677; const xml_token_t XML_extra_condensed = 678; const xml_token_t XML_extra_expanded = 679; const xml_token_t XML_extrude = 680; const xml_token_t XML_extrusion = 681; const xml_token_t XML_extrusion_allowed = 682; const xml_token_t XML_extrusion_brightness = 683; const xml_token_t XML_extrusion_color = 684; const xml_token_t XML_extrusion_depth = 685; const xml_token_t XML_extrusion_diffusion = 686; const xml_token_t XML_extrusion_first_light_direction = 687; const xml_token_t XML_extrusion_first_light_harsh = 688; const xml_token_t XML_extrusion_first_light_level = 689; const xml_token_t XML_extrusion_light_face = 690; const xml_token_t XML_extrusion_metal = 691; const xml_token_t XML_extrusion_number_of_line_segments = 692; const xml_token_t XML_extrusion_origin = 693; const xml_token_t XML_extrusion_rotation_angle = 694; const xml_token_t XML_extrusion_rotation_center = 695; const xml_token_t XML_extrusion_second_light_direction = 696; const xml_token_t XML_extrusion_second_light_harsh = 697; const xml_token_t XML_extrusion_second_light_level = 698; const xml_token_t XML_extrusion_shininess = 699; const xml_token_t XML_extrusion_skew = 700; const xml_token_t XML_extrusion_specularity = 701; const xml_token_t XML_extrusion_viewpoint = 702; const xml_token_t XML_fade = 703; const xml_token_t XML_fade_from_bottom = 704; const xml_token_t XML_fade_from_center = 705; const xml_token_t XML_fade_from_left = 706; const xml_token_t XML_fade_from_lowerleft = 707; const xml_token_t XML_fade_from_lowerright = 708; const xml_token_t XML_fade_from_right = 709; const xml_token_t XML_fade_from_top = 710; const xml_token_t XML_fade_from_upperleft = 711; const xml_token_t XML_fade_from_upperright = 712; const xml_token_t XML_fade_out = 713; const xml_token_t XML_fade_to_center = 714; const xml_token_t XML_fadeColor = 715; const xml_token_t XML_false = 716; const xml_token_t XML_family = 717; const xml_token_t XML_fast = 718; const xml_token_t XML_field = 719; const xml_token_t XML_field_name = 720; const xml_token_t XML_field_number = 721; const xml_token_t XML_file = 722; const xml_token_t XML_file_based_database = 723; const xml_token_t XML_file_name = 724; const xml_token_t XML_fill = 725; const xml_token_t XML_fill_color = 726; const xml_token_t XML_fill_gradient_name = 727; const xml_token_t XML_fill_hatch_name = 728; const xml_token_t XML_fill_hatch_solid = 729; const xml_token_t XML_fill_image = 730; const xml_token_t XML_fill_image_height = 731; const xml_token_t XML_fill_image_name = 732; const xml_token_t XML_fill_image_ref_point = 733; const xml_token_t XML_fill_image_ref_point_x = 734; const xml_token_t XML_fill_image_ref_point_y = 735; const xml_token_t XML_fill_image_width = 736; const xml_token_t XML_fill_rule = 737; const xml_token_t XML_fillDefault = 738; const xml_token_t XML_filter = 739; const xml_token_t XML_filter_and = 740; const xml_token_t XML_filter_condition = 741; const xml_token_t XML_filter_name = 742; const xml_token_t XML_filter_options = 743; const xml_token_t XML_filter_or = 744; const xml_token_t XML_filter_set_item = 745; const xml_token_t XML_filter_statement = 746; const xml_token_t XML_first = 747; const xml_token_t XML_first_column = 748; const xml_token_t XML_first_page = 749; const xml_token_t XML_first_page_number = 750; const xml_token_t XML_first_row = 751; const xml_token_t XML_first_row_end_column = 752; const xml_token_t XML_first_row_start_column = 753; const xml_token_t XML_fit_to_contour = 754; const xml_token_t XML_fit_to_size = 755; const xml_token_t XML_fix = 756; const xml_token_t XML_fixed = 757; const xml_token_t XML_fixed_text = 758; const xml_token_t XML_flat = 759; const xml_token_t XML_float = 760; const xml_token_t XML_floating_frame = 761; const xml_token_t XML_floor = 762; const xml_token_t XML_flow_with_text = 763; const xml_token_t XML_fly_away = 764; const xml_token_t XML_fo = 765; const xml_token_t XML_focal_length = 766; const xml_token_t XML_focus_on_click = 767; const xml_token_t XML_font_adornments = 768; const xml_token_t XML_font_charset = 769; const xml_token_t XML_font_charset_asian = 770; const xml_token_t XML_font_charset_complex = 771; const xml_token_t XML_font_color = 772; const xml_token_t XML_font_face = 773; const xml_token_t XML_font_face_decls = 774; const xml_token_t XML_font_face_format = 775; const xml_token_t XML_font_face_name = 776; const xml_token_t XML_font_face_src = 777; const xml_token_t XML_font_face_uri = 778; const xml_token_t XML_font_family = 779; const xml_token_t XML_font_family_asian = 780; const xml_token_t XML_font_family_complex = 781; const xml_token_t XML_font_family_generic = 782; const xml_token_t XML_font_family_generic_asian = 783; const xml_token_t XML_font_family_generic_complex = 784; const xml_token_t XML_font_independent_line_spacing = 785; const xml_token_t XML_font_name = 786; const xml_token_t XML_font_name_asian = 787; const xml_token_t XML_font_name_complex = 788; const xml_token_t XML_font_pitch = 789; const xml_token_t XML_font_pitch_asian = 790; const xml_token_t XML_font_pitch_complex = 791; const xml_token_t XML_font_relief = 792; const xml_token_t XML_font_size = 793; const xml_token_t XML_font_size_asian = 794; const xml_token_t XML_font_size_complex = 795; const xml_token_t XML_font_size_rel = 796; const xml_token_t XML_font_size_rel_asian = 797; const xml_token_t XML_font_size_rel_complex = 798; const xml_token_t XML_font_stretch = 799; const xml_token_t XML_font_style = 800; const xml_token_t XML_font_style_asian = 801; const xml_token_t XML_font_style_complex = 802; const xml_token_t XML_font_style_name = 803; const xml_token_t XML_font_style_name_asian = 804; const xml_token_t XML_font_style_name_complex = 805; const xml_token_t XML_font_variant = 806; const xml_token_t XML_font_weight = 807; const xml_token_t XML_font_weight_asian = 808; const xml_token_t XML_font_weight_complex = 809; const xml_token_t XML_footer = 810; const xml_token_t XML_footer_decl = 811; const xml_token_t XML_footer_left = 812; const xml_token_t XML_footer_style = 813; const xml_token_t XML_footnote = 814; const xml_token_t XML_footnote_max_height = 815; const xml_token_t XML_footnote_sep = 816; const xml_token_t XML_footnotes_position = 817; const xml_token_t XML_for = 818; const xml_token_t XML_force_manual = 819; const xml_token_t XML_foreground = 820; const xml_token_t XML_foreign = 821; const xml_token_t XML_form = 822; const xml_token_t XML_format_change = 823; const xml_token_t XML_format_source = 824; const xml_token_t XML_formatted_text = 825; const xml_token_t XML_forms = 826; const xml_token_t XML_formula = 827; const xml_token_t XML_formula_hidden = 828; const xml_token_t XML_formulas = 829; const xml_token_t XML_forward = 830; const xml_token_t XML_fraction = 831; const xml_token_t XML_frame = 832; const xml_token_t XML_frame_content = 833; const xml_token_t XML_frame_count = 834; const xml_token_t XML_frame_display_border = 835; const xml_token_t XML_frame_display_scrollbar = 836; const xml_token_t XML_frame_end_margin = 837; const xml_token_t XML_frame_margin_horizontal = 838; const xml_token_t XML_frame_margin_vertical = 839; const xml_token_t XML_frame_name = 840; const xml_token_t XML_frame_start_margin = 841; const xml_token_t XML_free = 842; const xml_token_t XML_freeze = 843; const xml_token_t XML_from = 844; const xml_token_t XML_from_another_table = 845; const xml_token_t XML_from_bottom = 846; const xml_token_t XML_from_center = 847; const xml_token_t XML_from_inside = 848; const xml_token_t XML_from_left = 849; const xml_token_t XML_from_lower_left = 850; const xml_token_t XML_from_lower_right = 851; const xml_token_t XML_from_right = 852; const xml_token_t XML_from_same_table = 853; const xml_token_t XML_from_top = 854; const xml_token_t XML_from_upper_left = 855; const xml_token_t XML_from_upper_right = 856; const xml_token_t XML_ft = 857; const xml_token_t XML_full = 858; const xml_token_t XML_full_screen = 859; const xml_token_t XML_function = 860; const xml_token_t XML_fx = 861; const xml_token_t XML_fy = 862; const xml_token_t XML_g = 863; const xml_token_t XML_gamma = 864; const xml_token_t XML_gap = 865; const xml_token_t XML_gap_width = 866; const xml_token_t XML_generator = 867; const xml_token_t XML_generic_control = 868; const xml_token_t XML_gengou = 869; const xml_token_t XML_get = 870; const xml_token_t XML_global = 871; const xml_token_t XML_glue_point = 872; const xml_token_t XML_glue_point_leaving_directions = 873; const xml_token_t XML_glue_point_type = 874; const xml_token_t XML_glue_points = 875; const xml_token_t XML_glyph_orientation_vertical = 876; const xml_token_t XML_gouraud = 877; const xml_token_t XML_gradient = 878; const xml_token_t XML_gradient_step_count = 879; const xml_token_t XML_gradientTransform = 880; const xml_token_t XML_gradientUnits = 881; const xml_token_t XML_grand_total = 882; const xml_token_t XML_graphic = 883; const xml_token_t XML_graphic_properties = 884; const xml_token_t XML_grddl = 885; const xml_token_t XML_green = 886; const xml_token_t XML_gregorian = 887; const xml_token_t XML_greyscale = 888; const xml_token_t XML_grid = 889; const xml_token_t XML_group_bars_per_axis = 890; const xml_token_t XML_group_by_field_number = 891; const xml_token_t XML_group_id = 892; const xml_token_t XML_grouped_by = 893; const xml_token_t XML_grouping = 894; const xml_token_t XML_guide_distance = 895; const xml_token_t XML_guide_overhang = 896; const xml_token_t XML_h = 897; const xml_token_t XML_handle = 898; const xml_token_t XML_handle_mirror_horizontal = 899; const xml_token_t XML_handle_mirror_vertical = 900; const xml_token_t XML_handle_polar = 901; const xml_token_t XML_handle_position = 902; const xml_token_t XML_handle_radius_range_maximum = 903; const xml_token_t XML_handle_radius_range_minimum = 904; const xml_token_t XML_handle_range_x_maximum = 905; const xml_token_t XML_handle_range_x_minimum = 906; const xml_token_t XML_handle_range_y_maximum = 907; const xml_token_t XML_handle_range_y_minimum = 908; const xml_token_t XML_handle_switched = 909; const xml_token_t XML_handout = 910; const xml_token_t XML_handout_master = 911; const xml_token_t XML_hanging = 912; const xml_token_t XML_hanja = 913; const xml_token_t XML_hanja_yoil = 914; const xml_token_t XML_has_persistent_data = 915; const xml_token_t XML_hatch = 916; const xml_token_t XML_header = 917; const xml_token_t XML_header_decl = 918; const xml_token_t XML_header_footer_properties = 919; const xml_token_t XML_header_left = 920; const xml_token_t XML_header_style = 921; const xml_token_t XML_headers = 922; const xml_token_t XML_height = 923; const xml_token_t XML_help_message = 924; const xml_token_t XML_hidden = 925; const xml_token_t XML_hidden_and_protected = 926; const xml_token_t XML_hidden_paragraph = 927; const xml_token_t XML_hidden_text = 928; const xml_token_t XML_hide = 929; const xml_token_t XML_hide_shape = 930; const xml_token_t XML_hide_text = 931; const xml_token_t XML_high = 932; const xml_token_t XML_highlighted_range = 933; const xml_token_t XML_hijri = 934; const xml_token_t XML_hold = 935; const xml_token_t XML_hole_size = 936; const xml_token_t XML_horizontal = 937; const xml_token_t XML_horizontal_bar = 938; const xml_token_t XML_horizontal_checkerboard = 939; const xml_token_t XML_horizontal_lines = 940; const xml_token_t XML_horizontal_on_even = 941; const xml_token_t XML_horizontal_on_odd = 942; const xml_token_t XML_horizontal_pos = 943; const xml_token_t XML_horizontal_rel = 944; const xml_token_t XML_horizontal_segments = 945; const xml_token_t XML_horizontal_stripes = 946; const xml_token_t XML_hostname = 947; const xml_token_t XML_hourglass = 948; const xml_token_t XML_hours = 949; const xml_token_t XML_howpublished = 950; const xml_token_t XML_href = 951; const xml_token_t XML_hsl = 952; const xml_token_t XML_hyperlink_behaviour = 953; const xml_token_t XML_hyphenate = 954; const xml_token_t XML_hyphenation_keep = 955; const xml_token_t XML_hyphenation_ladder_count = 956; const xml_token_t XML_hyphenation_push_char_count = 957; const xml_token_t XML_hyphenation_remain_char_count = 958; const xml_token_t XML_i = 959; const xml_token_t XML_icon = 960; const xml_token_t XML_id = 961; const xml_token_t XML_identifier = 962; const xml_token_t XML_identify_categories = 963; const xml_token_t XML_ideograph_alpha = 964; const xml_token_t XML_ideographic = 965; const xml_token_t XML_ignore = 966; const xml_token_t XML_ignore_case = 967; const xml_token_t XML_ignore_driver_privileges = 968; const xml_token_t XML_ignore_empty_rows = 969; const xml_token_t XML_ignore_result = 970; const xml_token_t XML_illustration_index = 971; const xml_token_t XML_illustration_index_entry_template = 972; const xml_token_t XML_illustration_index_source = 973; const xml_token_t XML_image = 974; const xml_token_t XML_image_align = 975; const xml_token_t XML_image_count = 976; const xml_token_t XML_image_data = 977; const xml_token_t XML_image_frame = 978; const xml_token_t XML_image_map = 979; const xml_token_t XML_image_opacity = 980; const xml_token_t XML_image_position = 981; const xml_token_t XML_in = 982; const xml_token_t XML_inbook = 983; const xml_token_t XML_inch = 984; const xml_token_t XML_include_hidden_cells = 985; const xml_token_t XML_incollection = 986; const xml_token_t XML_increment = 987; const xml_token_t XML_indefinite = 988; const xml_token_t XML_index = 989; const xml_token_t XML_index_body = 990; const xml_token_t XML_index_column = 991; const xml_token_t XML_index_columns = 992; const xml_token_t XML_index_entry_bibliography = 993; const xml_token_t XML_index_entry_chapter = 994; const xml_token_t XML_index_entry_link_end = 995; const xml_token_t XML_index_entry_link_start = 996; const xml_token_t XML_index_entry_page_number = 997; const xml_token_t XML_index_entry_span = 998; const xml_token_t XML_index_entry_tab_stop = 999; const xml_token_t XML_index_entry_text = 1000; const xml_token_t XML_index_name = 1001; const xml_token_t XML_index_scope = 1002; const xml_token_t XML_index_source_style = 1003; const xml_token_t XML_index_source_styles = 1004; const xml_token_t XML_index_title = 1005; const xml_token_t XML_index_title_template = 1006; const xml_token_t XML_indices = 1007; const xml_token_t XML_information = 1008; const xml_token_t XML_inherit = 1009; const xml_token_t XML_initial_creator = 1010; const xml_token_t XML_inner = 1011; const xml_token_t XML_inproceedings = 1012; const xml_token_t XML_insertion = 1013; const xml_token_t XML_insertion_cut_off = 1014; const xml_token_t XML_inside = 1015; const xml_token_t XML_institution = 1016; const xml_token_t XML_int = 1017; const xml_token_t XML_integer = 1018; const xml_token_t XML_intensity = 1019; const xml_token_t XML_interactive_sequence = 1020; const xml_token_t XML_interlocking_horizontal_left = 1021; const xml_token_t XML_interlocking_horizontal_right = 1022; const xml_token_t XML_interlocking_vertical_bottom = 1023; const xml_token_t XML_interlocking_vertical_top = 1024; const xml_token_t XML_interpolation = 1025; const xml_token_t XML_interval_major = 1026; const xml_token_t XML_interval_minor_divisor = 1027; const xml_token_t XML_into_default_style_data_style = 1028; const xml_token_t XML_into_english_number = 1029; const xml_token_t XML_inverse = 1030; const xml_token_t XML_is_active = 1031; const xml_token_t XML_is_ascending = 1032; const xml_token_t XML_is_autoincrement = 1033; const xml_token_t XML_is_boolean = 1034; const xml_token_t XML_is_clustered = 1035; const xml_token_t XML_is_data_layout_field = 1036; const xml_token_t XML_is_empty_allowed = 1037; const xml_token_t XML_is_first_row_header_line = 1038; const xml_token_t XML_is_hidden = 1039; const xml_token_t XML_is_list_header = 1040; const xml_token_t XML_is_nullable = 1041; const xml_token_t XML_is_password_required = 1042; const xml_token_t XML_is_selection = 1043; const xml_token_t XML_is_sub_table = 1044; const xml_token_t XML_is_table_name_length_limited = 1045; const xml_token_t XML_is_tristate = 1046; const xml_token_t XML_is_unique = 1047; const xml_token_t XML_isbn = 1048; const xml_token_t XML_issn = 1049; const xml_token_t XML_italic = 1050; const xml_token_t XML_item = 1051; const xml_token_t XML_iterate = 1052; const xml_token_t XML_iterate_interval = 1053; const xml_token_t XML_iterate_type = 1054; const xml_token_t XML_iteration = 1055; const xml_token_t XML_iterative = 1056; const xml_token_t XML_japanese_candle_stick = 1057; const xml_token_t XML_jewish = 1058; const xml_token_t XML_join_border = 1059; const xml_token_t XML_journal = 1060; const xml_token_t XML_justify = 1061; const xml_token_t XML_justify_single_word = 1062; const xml_token_t XML_keep_text = 1063; const xml_token_t XML_keep_together = 1064; const xml_token_t XML_keep_with_next = 1065; const xml_token_t XML_key = 1066; const xml_token_t XML_key_column = 1067; const xml_token_t XML_key_columns = 1068; const xml_token_t XML_key1 = 1069; const xml_token_t XML_key1_phonetic = 1070; const xml_token_t XML_key2 = 1071; const xml_token_t XML_key2_phonetic = 1072; const xml_token_t XML_keySplines = 1073; const xml_token_t XML_keyTimes = 1074; const xml_token_t XML_keys = 1075; const xml_token_t XML_keyword = 1076; const xml_token_t XML_keywords = 1077; const xml_token_t XML_kind = 1078; const xml_token_t XML_km = 1079; const xml_token_t XML_label = 1080; const xml_token_t XML_label_alignment = 1081; const xml_token_t XML_label_arrangement = 1082; const xml_token_t XML_label_cell_address = 1083; const xml_token_t XML_label_cell_range_address = 1084; const xml_token_t XML_label_followed_by = 1085; const xml_token_t XML_label_position = 1086; const xml_token_t XML_label_position_negative = 1087; const xml_token_t XML_label_range = 1088; const xml_token_t XML_label_ranges = 1089; const xml_token_t XML_label_separator = 1090; const xml_token_t XML_label_width_and_position = 1091; const xml_token_t XML_landscape = 1092; const xml_token_t XML_language = 1093; const xml_token_t XML_language_asian = 1094; const xml_token_t XML_language_complex = 1095; const xml_token_t XML_laser = 1096; const xml_token_t XML_last = 1097; const xml_token_t XML_last_column = 1098; const xml_token_t XML_last_column_spanned = 1099; const xml_token_t XML_last_page = 1100; const xml_token_t XML_last_row = 1101; const xml_token_t XML_last_row_end_column = 1102; const xml_token_t XML_last_row_spanned = 1103; const xml_token_t XML_last_row_start_column = 1104; const xml_token_t XML_last_visited_page = 1105; const xml_token_t XML_latin = 1106; const xml_token_t XML_layer = 1107; const xml_token_t XML_layer_set = 1108; const xml_token_t XML_layout_grid_base_height = 1109; const xml_token_t XML_layout_grid_base_width = 1110; const xml_token_t XML_layout_grid_color = 1111; const xml_token_t XML_layout_grid_display = 1112; const xml_token_t XML_layout_grid_lines = 1113; const xml_token_t XML_layout_grid_mode = 1114; const xml_token_t XML_layout_grid_print = 1115; const xml_token_t XML_layout_grid_ruby_below = 1116; const xml_token_t XML_layout_grid_ruby_height = 1117; const xml_token_t XML_layout_grid_snap_to = 1118; const xml_token_t XML_layout_grid_standard_mode = 1119; const xml_token_t XML_layout_mode = 1120; const xml_token_t XML_leader_char = 1121; const xml_token_t XML_leader_color = 1122; const xml_token_t XML_leader_style = 1123; const xml_token_t XML_leader_text = 1124; const xml_token_t XML_leader_text_style = 1125; const xml_token_t XML_leader_type = 1126; const xml_token_t XML_leader_width = 1127; const xml_token_t XML_leave_gap = 1128; const xml_token_t XML_left = 1129; const xml_token_t XML_left_outside = 1130; const xml_token_t XML_legend = 1131; const xml_token_t XML_legend_align = 1132; const xml_token_t XML_legend_expansion = 1133; const xml_token_t XML_legend_expansion_aspect_ratio = 1134; const xml_token_t XML_legend_position = 1135; const xml_token_t XML_length = 1136; const xml_token_t XML_letter_kerning = 1137; const xml_token_t XML_letter_spacing = 1138; const xml_token_t XML_letters = 1139; const xml_token_t XML_level = 1140; const xml_token_t XML_light = 1141; const xml_token_t XML_lighting_mode = 1142; const xml_token_t XML_line = 1143; const xml_token_t XML_line_break = 1144; const xml_token_t XML_line_distance = 1145; const xml_token_t XML_line_height = 1146; const xml_token_t XML_line_height_at_least = 1147; const xml_token_t XML_line_number = 1148; const xml_token_t XML_line_skew = 1149; const xml_token_t XML_line_spacing = 1150; const xml_token_t XML_line_style = 1151; const xml_token_t XML_linear = 1152; const xml_token_t XML_linearGradient = 1153; const xml_token_t XML_linenumbering_configuration = 1154; const xml_token_t XML_linenumbering_separator = 1155; const xml_token_t XML_lines = 1156; const xml_token_t XML_link_data_style_to_source = 1157; const xml_token_t XML_link_to_source_data = 1158; const xml_token_t XML_linked_cell = 1159; const xml_token_t XML_list = 1160; const xml_token_t XML_list_header = 1161; const xml_token_t XML_list_id = 1162; const xml_token_t XML_list_item = 1163; const xml_token_t XML_list_level = 1164; const xml_token_t XML_list_level_label_alignment = 1165; const xml_token_t XML_list_level_position_and_space_mode = 1166; const xml_token_t XML_list_level_properties = 1167; const xml_token_t XML_list_level_style_bullet = 1168; const xml_token_t XML_list_level_style_image = 1169; const xml_token_t XML_list_level_style_number = 1170; const xml_token_t XML_list_linkage_type = 1171; const xml_token_t XML_list_property = 1172; const xml_token_t XML_list_source = 1173; const xml_token_t XML_list_source_type = 1174; const xml_token_t XML_list_style = 1175; const xml_token_t XML_list_style_name = 1176; const xml_token_t XML_list_tab_stop_position = 1177; const xml_token_t XML_list_value = 1178; const xml_token_t XML_listbox = 1179; const xml_token_t XML_listtab = 1180; const xml_token_t XML_local_socket = 1181; const xml_token_t XML_logarithmic = 1182; const xml_token_t XML_login = 1183; const xml_token_t XML_login_timeout = 1184; const xml_token_t XML_long = 1185; const xml_token_t XML_long_dash = 1186; const xml_token_t XML_longvarbinary = 1187; const xml_token_t XML_longvarchar = 1188; const xml_token_t XML_lowercase = 1189; const xml_token_t XML_lr = 1190; const xml_token_t XML_lr_tb = 1191; const xml_token_t XML_ltr = 1192; const xml_token_t XML_luminance = 1193; const xml_token_t XML_m = 1194; const xml_token_t XML_macro_name = 1195; const xml_token_t XML_main_entry = 1196; const xml_token_t XML_main_entry_style_name = 1197; const xml_token_t XML_main_sequence = 1198; const xml_token_t XML_major = 1199; const xml_token_t XML_manual = 1200; const xml_token_t XML_map = 1201; const xml_token_t XML_margin = 1202; const xml_token_t XML_margin_bottom = 1203; const xml_token_t XML_margin_left = 1204; const xml_token_t XML_margin_right = 1205; const xml_token_t XML_margin_top = 1206; const xml_token_t XML_margins = 1207; const xml_token_t XML_marked_invalid = 1208; const xml_token_t XML_marker = 1209; const xml_token_t XML_marker_end = 1210; const xml_token_t XML_marker_end_center = 1211; const xml_token_t XML_marker_end_width = 1212; const xml_token_t XML_marker_start = 1213; const xml_token_t XML_marker_start_center = 1214; const xml_token_t XML_marker_start_width = 1215; const xml_token_t XML_master_element = 1216; const xml_token_t XML_master_fields = 1217; const xml_token_t XML_master_page = 1218; const xml_token_t XML_master_page_name = 1219; const xml_token_t XML_master_styles = 1220; const xml_token_t XML_mastersthesis = 1221; const xml_token_t XML_math = 1222; const xml_token_t XML_mathematical = 1223; const xml_token_t XML_matrix_covered = 1224; const xml_token_t XML_max = 1225; const xml_token_t XML_max_edge = 1226; const xml_token_t XML_max_height = 1227; const xml_token_t XML_max_length = 1228; const xml_token_t XML_max_row_count = 1229; const xml_token_t XML_max_value = 1230; const xml_token_t XML_max_width = 1231; const xml_token_t XML_maximum = 1232; const xml_token_t XML_maximum_difference = 1233; const xml_token_t XML_may_break_between_rows = 1234; const xml_token_t XML_may_script = 1235; const xml_token_t XML_mean_value = 1236; const xml_token_t XML_measure = 1237; const xml_token_t XML_measure_align = 1238; const xml_token_t XML_measure_vertical_align = 1239; const xml_token_t XML_media = 1240; const xml_token_t XML_media_call = 1241; const xml_token_t XML_media_type = 1242; const xml_token_t XML_medium = 1243; const xml_token_t XML_melt = 1244; const xml_token_t XML_member_count = 1245; const xml_token_t XML_member_difference = 1246; const xml_token_t XML_member_name = 1247; const xml_token_t XML_member_percentage = 1248; const xml_token_t XML_member_percentage_difference = 1249; const xml_token_t XML_member_type = 1250; const xml_token_t XML_message_type = 1251; const xml_token_t XML_meta = 1252; const xml_token_t XML_meta_field = 1253; const xml_token_t XML_method = 1254; const xml_token_t XML_mi = 1255; const xml_token_t XML_middle = 1256; const xml_token_t XML_mime_type = 1257; const xml_token_t XML_mimetype = 1258; const xml_token_t XML_min = 1259; const xml_token_t XML_min_denominator_digits = 1260; const xml_token_t XML_min_edge = 1261; const xml_token_t XML_min_exponent_digits = 1262; const xml_token_t XML_min_height = 1263; const xml_token_t XML_min_integer_digits = 1264; const xml_token_t XML_min_label_distance = 1265; const xml_token_t XML_min_label_width = 1266; const xml_token_t XML_min_numerator_digits = 1267; const xml_token_t XML_min_row_height = 1268; const xml_token_t XML_min_value = 1269; const xml_token_t XML_min_width = 1270; const xml_token_t XML_minimum = 1271; const xml_token_t XML_minor = 1272; const xml_token_t XML_minutes = 1273; const xml_token_t XML_mirror = 1274; const xml_token_t XML_mirror_horizontal = 1275; const xml_token_t XML_mirror_vertical = 1276; const xml_token_t XML_mirrored = 1277; const xml_token_t XML_misc = 1278; const xml_token_t XML_miter = 1279; const xml_token_t XML_mm = 1280; const xml_token_t XML_mode = 1281; const xml_token_t XML_model = 1282; const xml_token_t XML_modern = 1283; const xml_token_t XML_modification_date = 1284; const xml_token_t XML_modification_time = 1285; const xml_token_t XML_modifiers = 1286; const xml_token_t XML_modulate = 1287; const xml_token_t XML_mono = 1288; const xml_token_t XML_month = 1289; const xml_token_t XML_months = 1290; const xml_token_t XML_motion_path = 1291; const xml_token_t XML_mouse_as_pen = 1292; const xml_token_t XML_mouse_visible = 1293; const xml_token_t XML_move = 1294; const xml_token_t XML_move_from_bottom = 1295; const xml_token_t XML_move_from_left = 1296; const xml_token_t XML_move_from_lowerleft = 1297; const xml_token_t XML_move_from_lowerright = 1298; const xml_token_t XML_move_from_right = 1299; const xml_token_t XML_move_from_top = 1300; const xml_token_t XML_move_from_upperleft = 1301; const xml_token_t XML_move_from_upperright = 1302; const xml_token_t XML_move_short = 1303; const xml_token_t XML_movement = 1304; const xml_token_t XML_movement_cut_off = 1305; const xml_token_t XML_multi_deletion_spanned = 1306; const xml_token_t XML_multi_line = 1307; const xml_token_t XML_multiple = 1308; const xml_token_t XML_name = 1309; const xml_token_t XML_name_and_extension = 1310; const xml_token_t XML_named = 1311; const xml_token_t XML_named_expression = 1312; const xml_token_t XML_named_expressions = 1313; const xml_token_t XML_named_range = 1314; const xml_token_t XML_named_symbol = 1315; const xml_token_t XML_nav_order = 1316; const xml_token_t XML_navigation_mode = 1317; const xml_token_t XML_near_axis = 1318; const xml_token_t XML_near_axis_other_side = 1319; const xml_token_t XML_near_origin = 1320; const xml_token_t XML_never = 1321; const xml_token_t XML_new = 1322; const xml_token_t XML_next = 1323; const xml_token_t XML_next_page = 1324; const xml_token_t XML_next_style_name = 1325; const xml_token_t XML_no_action = 1326; const xml_token_t XML_no_limit = 1327; const xml_token_t XML_no_nulls = 1328; const xml_token_t XML_no_repeat = 1329; const xml_token_t XML_no_wrap = 1330; const xml_token_t XML_node_type = 1331; const xml_token_t XML_nohref = 1332; const xml_token_t XML_non_primitive = 1333; const xml_token_t XML_non_whitespace_character_count = 1334; const xml_token_t XML_none = 1335; const xml_token_t XML_nonzero = 1336; const xml_token_t XML_normal = 1337; const xml_token_t XML_normals_direction = 1338; const xml_token_t XML_normals_kind = 1339; const xml_token_t XML_note = 1340; const xml_token_t XML_note_body = 1341; const xml_token_t XML_note_citation = 1342; const xml_token_t XML_note_class = 1343; const xml_token_t XML_note_continuation_notice_backward = 1344; const xml_token_t XML_note_continuation_notice_forward = 1345; const xml_token_t XML_note_ref = 1346; const xml_token_t XML_notes = 1347; const xml_token_t XML_notes_configuration = 1348; const xml_token_t XML_nothing = 1349; const xml_token_t XML_notify_on_update_of_ranges = 1350; const xml_token_t XML_null_date = 1351; const xml_token_t XML_null_year = 1352; const xml_token_t XML_nullable = 1353; const xml_token_t XML_num_format = 1354; const xml_token_t XML_num_letter_sync = 1355; const xml_token_t XML_num_prefix = 1356; const xml_token_t XML_num_suffix = 1357; const xml_token_t XML_number = 1358; const xml_token_t XML_number_all_superior = 1359; const xml_token_t XML_number_and_name = 1360; const xml_token_t XML_number_columns_repeated = 1361; const xml_token_t XML_number_columns_spanned = 1362; const xml_token_t XML_number_lines = 1363; const xml_token_t XML_number_matrix_columns_spanned = 1364; const xml_token_t XML_number_matrix_rows_spanned = 1365; const xml_token_t XML_number_no_superior = 1366; const xml_token_t XML_number_position = 1367; const xml_token_t XML_number_rows_repeated = 1368; const xml_token_t XML_number_rows_spanned = 1369; const xml_token_t XML_number_style = 1370; const xml_token_t XML_number_wrapped_paragraphs = 1371; const xml_token_t XML_numbered_entries = 1372; const xml_token_t XML_numbered_paragraph = 1373; const xml_token_t XML_numeric = 1374; const xml_token_t XML_object = 1375; const xml_token_t XML_object_count = 1376; const xml_token_t XML_object_index = 1377; const xml_token_t XML_object_index_entry_template = 1378; const xml_token_t XML_object_index_source = 1379; const xml_token_t XML_object_name = 1380; const xml_token_t XML_object_ole = 1381; const xml_token_t XML_objectBoundingBox = 1382; const xml_token_t XML_objects = 1383; const xml_token_t XML_oblique = 1384; const xml_token_t XML_odd_columns = 1385; const xml_token_t XML_odd_rows = 1386; const xml_token_t XML_office = 1387; const xml_token_t XML_offset = 1388; const xml_token_t XML_ole_action = 1389; const xml_token_t XML_ole_draw_aspect = 1390; const xml_token_t XML_ole_object_count = 1391; const xml_token_t XML_on_click = 1392; const xml_token_t XML_on_update_keep_size = 1393; const xml_token_t XML_on_update_keep_styles = 1394; const xml_token_t XML_onLoad = 1395; const xml_token_t XML_onRequest = 1396; const xml_token_t XML_once_concurrent = 1397; const xml_token_t XML_once_successive = 1398; const xml_token_t XML_opacity = 1399; const xml_token_t XML_opacity_name = 1400; const xml_token_t XML_open = 1401; const xml_token_t XML_open_horizontal = 1402; const xml_token_t XML_open_vertical = 1403; const xml_token_t XML_operation = 1404; const xml_token_t XML_operator = 1405; const xml_token_t XML_option = 1406; const xml_token_t XML_order = 1407; const xml_token_t XML_order_statement = 1408; const xml_token_t XML_organizations = 1409; const xml_token_t XML_orgchart = 1410; const xml_token_t XML_orientation = 1411; const xml_token_t XML_origin = 1412; const xml_token_t XML_orphans = 1413; const xml_token_t XML_other = 1414; const xml_token_t XML_out = 1415; const xml_token_t XML_outer = 1416; const xml_token_t XML_outline = 1417; const xml_token_t XML_outline_level = 1418; const xml_token_t XML_outline_level_style = 1419; const xml_token_t XML_outline_style = 1420; const xml_token_t XML_outline_subtotals_bottom = 1421; const xml_token_t XML_outline_subtotals_top = 1422; const xml_token_t XML_outside = 1423; const xml_token_t XML_outside_end = 1424; const xml_token_t XML_outside_start = 1425; const xml_token_t XML_overflow_behavior = 1426; const xml_token_t XML_overlap = 1427; const xml_token_t XML_overline_position = 1428; const xml_token_t XML_overline_thickness = 1429; const xml_token_t XML_p = 1430; const xml_token_t XML_paced = 1431; const xml_token_t XML_pad = 1432; const xml_token_t XML_padding = 1433; const xml_token_t XML_padding_bottom = 1434; const xml_token_t XML_padding_left = 1435; const xml_token_t XML_padding_right = 1436; const xml_token_t XML_padding_top = 1437; const xml_token_t XML_page = 1438; const xml_token_t XML_page_adjust = 1439; const xml_token_t XML_page_breaks_on_group_change = 1440; const xml_token_t XML_page_content = 1441; const xml_token_t XML_page_continuation = 1442; const xml_token_t XML_page_count = 1443; const xml_token_t XML_page_end_margin = 1444; const xml_token_t XML_page_height = 1445; const xml_token_t XML_page_layout = 1446; const xml_token_t XML_page_layout_name = 1447; const xml_token_t XML_page_layout_properties = 1448; const xml_token_t XML_page_number = 1449; const xml_token_t XML_page_sequence = 1450; const xml_token_t XML_page_start_margin = 1451; const xml_token_t XML_page_step_size = 1452; const xml_token_t XML_page_thumbnail = 1453; const xml_token_t XML_page_usage = 1454; const xml_token_t XML_page_variable_get = 1455; const xml_token_t XML_page_variable_set = 1456; const xml_token_t XML_page_width = 1457; const xml_token_t XML_pages = 1458; const xml_token_t XML_panose_1 = 1459; const xml_token_t XML_paper_tray_name = 1460; const xml_token_t XML_par = 1461; const xml_token_t XML_paragraph = 1462; const xml_token_t XML_paragraph_content = 1463; const xml_token_t XML_paragraph_count = 1464; const xml_token_t XML_paragraph_end_margin = 1465; const xml_token_t XML_paragraph_properties = 1466; const xml_token_t XML_paragraph_start_margin = 1467; const xml_token_t XML_paragraph_style_name = 1468; const xml_token_t XML_parallel = 1469; const xml_token_t XML_param = 1470; const xml_token_t XML_parameter_name_substitution = 1471; const xml_token_t XML_parent = 1472; const xml_token_t XML_parent_style_name = 1473; const xml_token_t XML_parse_sql_statement = 1474; const xml_token_t XML_password = 1475; const xml_token_t XML_path = 1476; const xml_token_t XML_path_id = 1477; const xml_token_t XML_path_stretchpoint_x = 1478; const xml_token_t XML_path_stretchpoint_y = 1479; const xml_token_t XML_pause = 1480; const xml_token_t XML_pc = 1481; const xml_token_t XML_pending = 1482; const xml_token_t XML_percentage = 1483; const xml_token_t XML_percentage_data_style_name = 1484; const xml_token_t XML_percentage_style = 1485; const xml_token_t XML_perspective = 1486; const xml_token_t XML_phdthesis = 1487; const xml_token_t XML_phong = 1488; const xml_token_t XML_pie_offset = 1489; const xml_token_t XML_placeholder = 1490; const xml_token_t XML_placeholder_type = 1491; const xml_token_t XML_placing = 1492; const xml_token_t XML_plain_number = 1493; const xml_token_t XML_plain_number_and_name = 1494; const xml_token_t XML_play = 1495; const xml_token_t XML_play_full = 1496; const xml_token_t XML_plot_area = 1497; const xml_token_t XML_plugin = 1498; const xml_token_t XML_plus = 1499; const xml_token_t XML_points = 1500; const xml_token_t XML_polygon = 1501; const xml_token_t XML_polyline = 1502; const xml_token_t XML_port = 1503; const xml_token_t XML_portrait = 1504; const xml_token_t XML_position = 1505; const xml_token_t XML_possessive_form = 1506; const xml_token_t XML_post = 1507; const xml_token_t XML_power = 1508; const xml_token_t XML_precision = 1509; const xml_token_t XML_precision_as_shown = 1510; const xml_token_t XML_prefix = 1511; const xml_token_t XML_presentation = 1512; const xml_token_t XML_presentation_page_layout = 1513; const xml_token_t XML_presentation_page_layout_name = 1514; const xml_token_t XML_preset_class = 1515; const xml_token_t XML_preset_id = 1516; const xml_token_t XML_preset_sub_type = 1517; const xml_token_t XML_previous = 1518; const xml_token_t XML_previous_page = 1519; const xml_token_t XML_primary = 1520; const xml_token_t XML_print = 1521; const xml_token_t XML_print_content = 1522; const xml_token_t XML_print_date = 1523; const xml_token_t XML_print_orientation = 1524; const xml_token_t XML_print_page_order = 1525; const xml_token_t XML_print_range = 1526; const xml_token_t XML_print_ranges = 1527; const xml_token_t XML_print_time = 1528; const xml_token_t XML_print_view = 1529; const xml_token_t XML_printable = 1530; const xml_token_t XML_printed_by = 1531; const xml_token_t XML_printer = 1532; const xml_token_t XML_proceedings = 1533; const xml_token_t XML_process_content = 1534; const xml_token_t XML_product = 1535; const xml_token_t XML_projection = 1536; const xml_token_t XML_properties = 1537; const xml_token_t XML_property = 1538; const xml_token_t XML_property_name = 1539; const xml_token_t XML_protect = 1540; const xml_token_t XML_protected = 1541; const xml_token_t XML_protection_key = 1542; const xml_token_t XML_protection_key_digest_algorithm = 1543; const xml_token_t XML_pt = 1544; const xml_token_t XML_publisher = 1545; const xml_token_t XML_punctuation_wrap = 1546; const xml_token_t XML_push = 1547; const xml_token_t XML_pyramid = 1548; const xml_token_t XML_quarter = 1549; const xml_token_t XML_quarters = 1550; const xml_token_t XML_queries = 1551; const xml_token_t XML_query = 1552; const xml_token_t XML_query_collection = 1553; const xml_token_t XML_query_name = 1554; const xml_token_t XML_r = 1555; const xml_token_t XML_radial = 1556; const xml_token_t XML_radialGradient = 1557; const xml_token_t XML_radio = 1558; const xml_token_t XML_random = 1559; const xml_token_t XML_range_usable_as = 1560; const xml_token_t XML_readonly = 1561; const xml_token_t XML_real = 1562; const xml_token_t XML_records = 1563; const xml_token_t XML_recreate_on_edit = 1564; const xml_token_t XML_rect = 1565; const xml_token_t XML_rectangle = 1566; const xml_token_t XML_rectangular = 1567; const xml_token_t XML_red = 1568; const xml_token_t XML_ref = 1569; const xml_token_t XML_ref_name = 1570; const xml_token_t XML_reference_format = 1571; const xml_token_t XML_reference_mark = 1572; const xml_token_t XML_reference_mark_end = 1573; const xml_token_t XML_reference_mark_start = 1574; const xml_token_t XML_referenced_table_name = 1575; const xml_token_t XML_reflect = 1576; const xml_token_t XML_refresh_delay = 1577; const xml_token_t XML_region_center = 1578; const xml_token_t XML_region_left = 1579; const xml_token_t XML_region_right = 1580; const xml_token_t XML_register_true = 1581; const xml_token_t XML_register_truth_ref_style_name = 1582; const xml_token_t XML_regression_curve = 1583; const xml_token_t XML_regression_type = 1584; const xml_token_t XML_regular_polygon = 1585; const xml_token_t XML_rejected = 1586; const xml_token_t XML_rejecting_change_id = 1587; const xml_token_t XML_rel_column_width = 1588; const xml_token_t XML_rel_height = 1589; const xml_token_t XML_rel_width = 1590; const xml_token_t XML_related_column_name = 1591; const xml_token_t XML_relative_tab_stop_position = 1592; const xml_token_t XML_remove = 1593; const xml_token_t XML_remove_dependents = 1594; const xml_token_t XML_remove_precedents = 1595; const xml_token_t XML_repeat = 1596; const xml_token_t XML_repeat_column = 1597; const xml_token_t XML_repeat_content = 1598; const xml_token_t XML_repeat_row = 1599; const xml_token_t XML_repeatCount = 1600; const xml_token_t XML_repeatDur = 1601; const xml_token_t XML_repeated = 1602; const xml_token_t XML_replace = 1603; const xml_token_t XML_report_type = 1604; const xml_token_t XML_reports = 1605; const xml_token_t XML_reset = 1606; const xml_token_t XML_restart = 1607; const xml_token_t XML_restart_numbering = 1608; const xml_token_t XML_restart_on_page = 1609; const xml_token_t XML_restartDefault = 1610; const xml_token_t XML_restrict = 1611; const xml_token_t XML_reverse = 1612; const xml_token_t XML_reverse_direction = 1613; const xml_token_t XML_rfc_language_tag = 1614; const xml_token_t XML_rfc_language_tag_asian = 1615; const xml_token_t XML_rfc_language_tag_complex = 1616; const xml_token_t XML_rgb = 1617; const xml_token_t XML_right = 1618; const xml_token_t XML_right_angled_axes = 1619; const xml_token_t XML_right_outside = 1620; const xml_token_t XML_rl = 1621; const xml_token_t XML_rl_tb = 1622; const xml_token_t XML_roll_from_bottom = 1623; const xml_token_t XML_roll_from_left = 1624; const xml_token_t XML_roll_from_right = 1625; const xml_token_t XML_roll_from_top = 1626; const xml_token_t XML_roman = 1627; const xml_token_t XML_rotate = 1628; const xml_token_t XML_rotation = 1629; const xml_token_t XML_rotation_align = 1630; const xml_token_t XML_rotation_angle = 1631; const xml_token_t XML_round = 1632; const xml_token_t XML_row = 1633; const xml_token_t XML_row_count = 1634; const xml_token_t XML_row_height = 1635; const xml_token_t XML_row_mapping = 1636; const xml_token_t XML_row_number = 1637; const xml_token_t XML_row_percentage = 1638; const xml_token_t XML_row_retrieving_statement = 1639; const xml_token_t XML_rows = 1640; const xml_token_t XML_ruby = 1641; const xml_token_t XML_ruby_align = 1642; const xml_token_t XML_ruby_base = 1643; const xml_token_t XML_ruby_position = 1644; const xml_token_t XML_ruby_properties = 1645; const xml_token_t XML_ruby_text = 1646; const xml_token_t XML_run_through = 1647; const xml_token_t XML_running_total = 1648; const xml_token_t XML_rx = 1649; const xml_token_t XML_ry = 1650; const xml_token_t XML_s = 1651; const xml_token_t XML_scale = 1652; const xml_token_t XML_scale_min = 1653; const xml_token_t XML_scale_text = 1654; const xml_token_t XML_scale_to = 1655; const xml_token_t XML_scale_to_pages = 1656; const xml_token_t XML_scenario = 1657; const xml_token_t XML_scenario_ranges = 1658; const xml_token_t XML_scene = 1659; const xml_token_t XML_schema_definition = 1660; const xml_token_t XML_schema_name = 1661; const xml_token_t XML_school = 1662; const xml_token_t XML_scientific_number = 1663; const xml_token_t XML_screen = 1664; const xml_token_t XML_script = 1665; const xml_token_t XML_script_asian = 1666; const xml_token_t XML_script_complex = 1667; const xml_token_t XML_script_type = 1668; const xml_token_t XML_scripts = 1669; const xml_token_t XML_scroll = 1670; const xml_token_t XML_search_criteria_must_apply_to_whole_cell = 1671; const xml_token_t XML_secondary_fill_color = 1672; const xml_token_t XML_seconds = 1673; const xml_token_t XML_section = 1674; const xml_token_t XML_section_name = 1675; const xml_token_t XML_section_properties = 1676; const xml_token_t XML_section_source = 1677; const xml_token_t XML_segments = 1678; const xml_token_t XML_select_page = 1679; const xml_token_t XML_selected = 1680; const xml_token_t XML_selected_page = 1681; const xml_token_t XML_selection = 1682; const xml_token_t XML_selection_indices = 1683; const xml_token_t XML_self = 1684; const xml_token_t XML_semi_automatic = 1685; const xml_token_t XML_semi_condensed = 1686; const xml_token_t XML_semi_expanded = 1687; const xml_token_t XML_sender_city = 1688; const xml_token_t XML_sender_company = 1689; const xml_token_t XML_sender_country = 1690; const xml_token_t XML_sender_email = 1691; const xml_token_t XML_sender_fax = 1692; const xml_token_t XML_sender_firstname = 1693; const xml_token_t XML_sender_initials = 1694; const xml_token_t XML_sender_lastname = 1695; const xml_token_t XML_sender_phone_private = 1696; const xml_token_t XML_sender_phone_work = 1697; const xml_token_t XML_sender_position = 1698; const xml_token_t XML_sender_postal_code = 1699; const xml_token_t XML_sender_state_or_province = 1700; const xml_token_t XML_sender_street = 1701; const xml_token_t XML_sender_title = 1702; const xml_token_t XML_sentence_count = 1703; const xml_token_t XML_separating = 1704; const xml_token_t XML_separation_character = 1705; const xml_token_t XML_separator = 1706; const xml_token_t XML_seq = 1707; const xml_token_t XML_sequence = 1708; const xml_token_t XML_sequence_decl = 1709; const xml_token_t XML_sequence_decls = 1710; const xml_token_t XML_sequence_ref = 1711; const xml_token_t XML_series = 1712; const xml_token_t XML_series_source = 1713; const xml_token_t XML_server_database = 1714; const xml_token_t XML_server_map = 1715; const xml_token_t XML_set = 1716; const xml_token_t XML_set_default = 1717; const xml_token_t XML_set_null = 1718; const xml_token_t XML_settings = 1719; const xml_token_t XML_shade_mode = 1720; const xml_token_t XML_shadow = 1721; const xml_token_t XML_shadow_color = 1722; const xml_token_t XML_shadow_offset_x = 1723; const xml_token_t XML_shadow_offset_y = 1724; const xml_token_t XML_shadow_opacity = 1725; const xml_token_t XML_shadow_slant = 1726; const xml_token_t XML_shape = 1727; const xml_token_t XML_shape_id = 1728; const xml_token_t XML_shapes = 1729; const xml_token_t XML_sharpness = 1730; const xml_token_t XML_sheet_name = 1731; const xml_token_t XML_shininess = 1732; const xml_token_t XML_short = 1733; const xml_token_t XML_show = 1734; const xml_token_t XML_show_deleted = 1735; const xml_token_t XML_show_details = 1736; const xml_token_t XML_show_empty = 1737; const xml_token_t XML_show_end_of_presentation_slide = 1738; const xml_token_t XML_show_filter_button = 1739; const xml_token_t XML_show_logo = 1740; const xml_token_t XML_show_shape = 1741; const xml_token_t XML_show_text = 1742; const xml_token_t XML_show_unit = 1743; const xml_token_t XML_shrink_to_fit = 1744; const xml_token_t XML_side_by_side = 1745; const xml_token_t XML_simple = 1746; const xml_token_t XML_single = 1747; const xml_token_t XML_size = 1748; const xml_token_t XML_skewX = 1749; const xml_token_t XML_skewY = 1750; const xml_token_t XML_skip_white_space = 1751; const xml_token_t XML_slide = 1752; const xml_token_t XML_slope = 1753; const xml_token_t XML_slow = 1754; const xml_token_t XML_small_caps = 1755; const xml_token_t XML_smallint = 1756; const xml_token_t XML_smil = 1757; const xml_token_t XML_snap_to_layout_grid = 1758; const xml_token_t XML_soft_page_break = 1759; const xml_token_t XML_solid = 1760; const xml_token_t XML_solid_type = 1761; const xml_token_t XML_sort = 1762; const xml_token_t XML_sort_algorithm = 1763; const xml_token_t XML_sort_ascending = 1764; const xml_token_t XML_sort_by = 1765; const xml_token_t XML_sort_by_position = 1766; const xml_token_t XML_sort_by_x_values = 1767; const xml_token_t XML_sort_groups = 1768; const xml_token_t XML_sort_key = 1769; const xml_token_t XML_sort_mode = 1770; const xml_token_t XML_sound = 1771; const xml_token_t XML_source = 1772; const xml_token_t XML_source_cell_range = 1773; const xml_token_t XML_source_cell_range_addresses = 1774; const xml_token_t XML_source_field_name = 1775; const xml_token_t XML_source_name = 1776; const xml_token_t XML_source_range_address = 1777; const xml_token_t XML_source_service = 1778; const xml_token_t XML_space = 1779; const xml_token_t XML_space_after = 1780; const xml_token_t XML_space_before = 1781; const xml_token_t XML_span = 1782; const xml_token_t XML_specular = 1783; const xml_token_t XML_specular_color = 1784; const xml_token_t XML_speed = 1785; const xml_token_t XML_sphere = 1786; const xml_token_t XML_spin_button = 1787; const xml_token_t XML_spiral_inward_left = 1788; const xml_token_t XML_spiral_inward_right = 1789; const xml_token_t XML_spiral_outward_left = 1790; const xml_token_t XML_spiral_outward_right = 1791; const xml_token_t XML_spiralin_left = 1792; const xml_token_t XML_spiralin_right = 1793; const xml_token_t XML_spiralout_left = 1794; const xml_token_t XML_spiralout_right = 1795; const xml_token_t XML_spline = 1796; const xml_token_t XML_spline_order = 1797; const xml_token_t XML_spline_resolution = 1798; const xml_token_t XML_spreadMethod = 1799; const xml_token_t XML_spreadsheet = 1800; const xml_token_t XML_sql = 1801; const xml_token_t XML_sql_pass_through = 1802; const xml_token_t XML_sql_statement = 1803; const xml_token_t XML_sqlnull = 1804; const xml_token_t XML_square = 1805; const xml_token_t XML_stacked = 1806; const xml_token_t XML_stagger_even = 1807; const xml_token_t XML_stagger_odd = 1808; const xml_token_t XML_standard = 1809; const xml_token_t XML_standard_deviation = 1810; const xml_token_t XML_standard_error = 1811; const xml_token_t XML_star = 1812; const xml_token_t XML_start = 1813; const xml_token_t XML_start_angle = 1814; const xml_token_t XML_start_color = 1815; const xml_token_t XML_start_column = 1816; const xml_token_t XML_start_glue_point = 1817; const xml_token_t XML_start_guide = 1818; const xml_token_t XML_start_indent = 1819; const xml_token_t XML_start_intensity = 1820; const xml_token_t XML_start_line_spacing_horizontal = 1821; const xml_token_t XML_start_line_spacing_vertical = 1822; const xml_token_t XML_start_numbering_at = 1823; const xml_token_t XML_start_page = 1824; const xml_token_t XML_start_position = 1825; const xml_token_t XML_start_row = 1826; const xml_token_t XML_start_scale = 1827; const xml_token_t XML_start_shape = 1828; const xml_token_t XML_start_table = 1829; const xml_token_t XML_start_value = 1830; const xml_token_t XML_start_with_navigator = 1831; const xml_token_t XML_state = 1832; const xml_token_t XML_status = 1833; const xml_token_t XML_stay_on_top = 1834; const xml_token_t XML_stdev = 1835; const xml_token_t XML_stdevp = 1836; const xml_token_t XML_stemh = 1837; const xml_token_t XML_stemv = 1838; const xml_token_t XML_step = 1839; const xml_token_t XML_step_size = 1840; const xml_token_t XML_steps = 1841; const xml_token_t XML_stock_gain_marker = 1842; const xml_token_t XML_stock_loss_marker = 1843; const xml_token_t XML_stock_range_line = 1844; const xml_token_t XML_stop = 1845; const xml_token_t XML_stop_color = 1846; const xml_token_t XML_stop_opacity = 1847; const xml_token_t XML_straight_line = 1848; const xml_token_t XML_stretch = 1849; const xml_token_t XML_stretch_from_bottom = 1850; const xml_token_t XML_stretch_from_left = 1851; const xml_token_t XML_stretch_from_right = 1852; const xml_token_t XML_stretch_from_top = 1853; const xml_token_t XML_strict = 1854; const xml_token_t XML_strikethrough_position = 1855; const xml_token_t XML_strikethrough_thickness = 1856; const xml_token_t XML_string = 1857; const xml_token_t XML_string_value = 1858; const xml_token_t XML_string_value_if_false = 1859; const xml_token_t XML_string_value_if_true = 1860; const xml_token_t XML_string_value_phonetic = 1861; const xml_token_t XML_stripes = 1862; const xml_token_t XML_stroke = 1863; const xml_token_t XML_stroke_color = 1864; const xml_token_t XML_stroke_dash = 1865; const xml_token_t XML_stroke_dash_names = 1866; const xml_token_t XML_stroke_linecap = 1867; const xml_token_t XML_stroke_linejoin = 1868; const xml_token_t XML_stroke_opacity = 1869; const xml_token_t XML_stroke_width = 1870; const xml_token_t XML_struct = 1871; const xml_token_t XML_structure_protected = 1872; const xml_token_t XML_style = 1873; const xml_token_t XML_style_name = 1874; const xml_token_t XML_style_override = 1875; const xml_token_t XML_styles = 1876; const xml_token_t XML_sub = 1877; const xml_token_t XML_sub_item = 1878; const xml_token_t XML_subject = 1879; const xml_token_t XML_submit = 1880; const xml_token_t XML_subtitle = 1881; const xml_token_t XML_subtotal_field = 1882; const xml_token_t XML_subtotal_rule = 1883; const xml_token_t XML_subtotal_rules = 1884; const xml_token_t XML_subtype = 1885; const xml_token_t XML_suffix = 1886; const xml_token_t XML_sum = 1887; const xml_token_t XML_super = 1888; const xml_token_t XML_suppress_version_columns = 1889; const xml_token_t XML_svg = 1890; const xml_token_t XML_swiss = 1891; const xml_token_t XML_syllable_count = 1892; const xml_token_t XML_symbol_color = 1893; const xml_token_t XML_symbol_height = 1894; const xml_token_t XML_symbol_image = 1895; const xml_token_t XML_symbol_name = 1896; const xml_token_t XML_symbol_type = 1897; const xml_token_t XML_symbol_width = 1898; const xml_token_t XML_system = 1899; const xml_token_t XML_system_driver_settings = 1900; const xml_token_t XML_tab = 1901; const xml_token_t XML_tab_cycle = 1902; const xml_token_t XML_tab_index = 1903; const xml_token_t XML_tab_ref = 1904; const xml_token_t XML_tab_stop = 1905; const xml_token_t XML_tab_stop_distance = 1906; const xml_token_t XML_tab_stops = 1907; const xml_token_t XML_table = 1908; const xml_token_t XML_table_background = 1909; const xml_token_t XML_table_cell = 1910; const xml_token_t XML_table_cell_properties = 1911; const xml_token_t XML_table_centering = 1912; const xml_token_t XML_table_column = 1913; const xml_token_t XML_table_column_group = 1914; const xml_token_t XML_table_column_properties = 1915; const xml_token_t XML_table_columns = 1916; const xml_token_t XML_table_count = 1917; const xml_token_t XML_table_definition = 1918; const xml_token_t XML_table_definitions = 1919; const xml_token_t XML_table_exclude_filter = 1920; const xml_token_t XML_table_fields = 1921; const xml_token_t XML_table_filter = 1922; const xml_token_t XML_table_filter_pattern = 1923; const xml_token_t XML_table_formula = 1924; const xml_token_t XML_table_header_columns = 1925; const xml_token_t XML_table_header_rows = 1926; const xml_token_t XML_table_include_filter = 1927; const xml_token_t XML_table_index = 1928; const xml_token_t XML_table_index_entry_template = 1929; const xml_token_t XML_table_index_source = 1930; const xml_token_t XML_table_name = 1931; const xml_token_t XML_table_of_content = 1932; const xml_token_t XML_table_of_content_entry_template = 1933; const xml_token_t XML_table_of_content_source = 1934; const xml_token_t XML_table_properties = 1935; const xml_token_t XML_table_representation = 1936; const xml_token_t XML_table_representations = 1937; const xml_token_t XML_table_row = 1938; const xml_token_t XML_table_row_group = 1939; const xml_token_t XML_table_row_properties = 1940; const xml_token_t XML_table_rows = 1941; const xml_token_t XML_table_setting = 1942; const xml_token_t XML_table_settings = 1943; const xml_token_t XML_table_source = 1944; const xml_token_t XML_table_template = 1945; const xml_token_t XML_table_type = 1946; const xml_token_t XML_table_type_filter = 1947; const xml_token_t XML_tabular_layout = 1948; const xml_token_t XML_target_cell_address = 1949; const xml_token_t XML_target_frame = 1950; const xml_token_t XML_target_frame_name = 1951; const xml_token_t XML_target_range_address = 1952; const xml_token_t XML_targetElement = 1953; const xml_token_t XML_tb = 1954; const xml_token_t XML_tb_lr = 1955; const xml_token_t XML_tb_rl = 1956; const xml_token_t XML_techreport = 1957; const xml_token_t XML_template = 1958; const xml_token_t XML_template_name = 1959; const xml_token_t XML_text = 1960; const xml_token_t XML_text_align = 1961; const xml_token_t XML_text_align_last = 1962; const xml_token_t XML_text_align_source = 1963; const xml_token_t XML_text_areas = 1964; const xml_token_t XML_text_autospace = 1965; const xml_token_t XML_text_blinking = 1966; const xml_token_t XML_text_box = 1967; const xml_token_t XML_text_combine = 1968; const xml_token_t XML_text_combine_end_char = 1969; const xml_token_t XML_text_combine_start_char = 1970; const xml_token_t XML_text_content = 1971; const xml_token_t XML_text_emphasize = 1972; const xml_token_t XML_text_indent = 1973; const xml_token_t XML_text_input = 1974; const xml_token_t XML_text_line_through_color = 1975; const xml_token_t XML_text_line_through_mode = 1976; const xml_token_t XML_text_line_through_style = 1977; const xml_token_t XML_text_line_through_text = 1978; const xml_token_t XML_text_line_through_text_style = 1979; const xml_token_t XML_text_line_through_type = 1980; const xml_token_t XML_text_line_through_width = 1981; const xml_token_t XML_text_outline = 1982; const xml_token_t XML_text_overlap = 1983; const xml_token_t XML_text_overline_color = 1984; const xml_token_t XML_text_overline_mode = 1985; const xml_token_t XML_text_overline_style = 1986; const xml_token_t XML_text_overline_type = 1987; const xml_token_t XML_text_overline_width = 1988; const xml_token_t XML_text_path = 1989; const xml_token_t XML_text_path_allowed = 1990; const xml_token_t XML_text_path_mode = 1991; const xml_token_t XML_text_path_same_letter_heights = 1992; const xml_token_t XML_text_path_scale = 1993; const xml_token_t XML_text_position = 1994; const xml_token_t XML_text_properties = 1995; const xml_token_t XML_text_rotate_angle = 1996; const xml_token_t XML_text_rotation_angle = 1997; const xml_token_t XML_text_rotation_scale = 1998; const xml_token_t XML_text_scale = 1999; const xml_token_t XML_text_shadow = 2000; const xml_token_t XML_text_style = 2001; const xml_token_t XML_text_style_name = 2002; const xml_token_t XML_text_transform = 2003; const xml_token_t XML_text_underline_color = 2004; const xml_token_t XML_text_underline_mode = 2005; const xml_token_t XML_text_underline_style = 2006; const xml_token_t XML_text_underline_type = 2007; const xml_token_t XML_text_underline_width = 2008; const xml_token_t XML_textarea = 2009; const xml_token_t XML_textarea_horizontal_align = 2010; const xml_token_t XML_textarea_vertical_align = 2011; const xml_token_t XML_textual = 2012; const xml_token_t XML_texture_filter = 2013; const xml_token_t XML_texture_generation_mode_x = 2014; const xml_token_t XML_texture_generation_mode_y = 2015; const xml_token_t XML_texture_kind = 2016; const xml_token_t XML_texture_mode = 2017; const xml_token_t XML_thick = 2018; const xml_token_t XML_thin = 2019; const xml_token_t XML_thousand = 2020; const xml_token_t XML_three_dimensional = 2021; const xml_token_t XML_thumbnail = 2022; const xml_token_t XML_tick_mark_position = 2023; const xml_token_t XML_tick_marks_major_inner = 2024; const xml_token_t XML_tick_marks_major_outer = 2025; const xml_token_t XML_tick_marks_minor_inner = 2026; const xml_token_t XML_tick_marks_minor_outer = 2027; const xml_token_t XML_tile_repeat_offset = 2028; const xml_token_t XML_time = 2029; const xml_token_t XML_time_adjust = 2030; const xml_token_t XML_time_style = 2031; const xml_token_t XML_time_value = 2032; const xml_token_t XML_timestmp = 2033; const xml_token_t XML_timing_root = 2034; const xml_token_t XML_tinyint = 2035; const xml_token_t XML_title = 2036; const xml_token_t XML_to = 2037; const xml_token_t XML_to_another_table = 2038; const xml_token_t XML_to_bottom = 2039; const xml_token_t XML_to_center = 2040; const xml_token_t XML_to_left = 2041; const xml_token_t XML_to_lower_left = 2042; const xml_token_t XML_to_lower_right = 2043; const xml_token_t XML_to_right = 2044; const xml_token_t XML_to_top = 2045; const xml_token_t XML_to_upper_left = 2046; const xml_token_t XML_to_upper_right = 2047; const xml_token_t XML_toc_mark = 2048; const xml_token_t XML_toc_mark_end = 2049; const xml_token_t XML_toc_mark_start = 2050; const xml_token_t XML_toggle = 2051; const xml_token_t XML_top = 2052; const xml_token_t XML_top_end = 2053; const xml_token_t XML_top_left = 2054; const xml_token_t XML_top_right = 2055; const xml_token_t XML_top_start = 2056; const xml_token_t XML_total_percentage = 2057; const xml_token_t XML_trace_dependents = 2058; const xml_token_t XML_trace_errors = 2059; const xml_token_t XML_trace_precedents = 2060; const xml_token_t XML_track_changes = 2061; const xml_token_t XML_tracked_changes = 2062; const xml_token_t XML_transform = 2063; const xml_token_t XML_transformation = 2064; const xml_token_t XML_transition = 2065; const xml_token_t XML_transition_on_click = 2066; const xml_token_t XML_transition_speed = 2067; const xml_token_t XML_transition_style = 2068; const xml_token_t XML_transition_type = 2069; const xml_token_t XML_transitionFilter = 2070; const xml_token_t XML_translate = 2071; const xml_token_t XML_transliteration_country = 2072; const xml_token_t XML_transliteration_format = 2073; const xml_token_t XML_transliteration_language = 2074; const xml_token_t XML_transliteration_style = 2075; const xml_token_t XML_transparent = 2076; const xml_token_t XML_treat_empty_cells = 2077; const xml_token_t XML_triple = 2078; const xml_token_t XML_true = 2079; const xml_token_t XML_truncate_on_overflow = 2080; const xml_token_t XML_ttb = 2081; const xml_token_t XML_type = 2082; const xml_token_t XML_type_name = 2083; const xml_token_t XML_ultra_condensed = 2084; const xml_token_t XML_ultra_expanded = 2085; const xml_token_t XML_unchecked = 2086; const xml_token_t XML_uncover_to_bottom = 2087; const xml_token_t XML_uncover_to_left = 2088; const xml_token_t XML_uncover_to_lowerleft = 2089; const xml_token_t XML_uncover_to_lowerright = 2090; const xml_token_t XML_uncover_to_right = 2091; const xml_token_t XML_uncover_to_top = 2092; const xml_token_t XML_uncover_to_upperleft = 2093; const xml_token_t XML_uncover_to_upperright = 2094; const xml_token_t XML_underline_position = 2095; const xml_token_t XML_underline_thickness = 2096; const xml_token_t XML_unicode_range = 2097; const xml_token_t XML_unique = 2098; const xml_token_t XML_unit = 2099; const xml_token_t XML_units_per_em = 2100; const xml_token_t XML_unknown = 2101; const xml_token_t XML_unpublished = 2102; const xml_token_t XML_unsorted = 2103; const xml_token_t XML_up = 2104; const xml_token_t XML_update_rule = 2105; const xml_token_t XML_update_table = 2106; const xml_token_t XML_uppercase = 2107; const xml_token_t XML_url = 2108; const xml_token_t XML_use_banding_columns_styles = 2109; const xml_token_t XML_use_banding_rows_styles = 2110; const xml_token_t XML_use_caption = 2111; const xml_token_t XML_use_catalog = 2112; const xml_token_t XML_use_chart_objects = 2113; const xml_token_t XML_use_date_time_name = 2114; const xml_token_t XML_use_draw_objects = 2115; const xml_token_t XML_use_first_column_styles = 2116; const xml_token_t XML_use_first_row_styles = 2117; const xml_token_t XML_use_floating_frames = 2118; const xml_token_t XML_use_footer_name = 2119; const xml_token_t XML_use_graphics = 2120; const xml_token_t XML_use_header_name = 2121; const xml_token_t XML_use_index_marks = 2122; const xml_token_t XML_use_index_source_styles = 2123; const xml_token_t XML_use_keys_as_entries = 2124; const xml_token_t XML_use_labels = 2125; const xml_token_t XML_use_last_column_styles = 2126; const xml_token_t XML_use_last_row_styles = 2127; const xml_token_t XML_use_math_objects = 2128; const xml_token_t XML_use_objects = 2129; const xml_token_t XML_use_optimal_column_width = 2130; const xml_token_t XML_use_optimal_row_height = 2131; const xml_token_t XML_use_other_objects = 2132; const xml_token_t XML_use_outline_level = 2133; const xml_token_t XML_use_regular_expressions = 2134; const xml_token_t XML_use_soft_page_breaks = 2135; const xml_token_t XML_use_spreadsheet_objects = 2136; const xml_token_t XML_use_system_user = 2137; const xml_token_t XML_use_tables = 2138; const xml_token_t XML_use_wildcards = 2139; const xml_token_t XML_use_window_font_color = 2140; const xml_token_t XML_use_zero = 2141; const xml_token_t XML_used_hierarchy = 2142; const xml_token_t XML_user_defined = 2143; const xml_token_t XML_user_field_decl = 2144; const xml_token_t XML_user_field_decls = 2145; const xml_token_t XML_user_field_get = 2146; const xml_token_t XML_user_field_input = 2147; const xml_token_t XML_user_index = 2148; const xml_token_t XML_user_index_entry_template = 2149; const xml_token_t XML_user_index_mark = 2150; const xml_token_t XML_user_index_mark_end = 2151; const xml_token_t XML_user_index_mark_start = 2152; const xml_token_t XML_user_index_source = 2153; const xml_token_t XML_user_name = 2154; const xml_token_t XML_user_transformed = 2155; const xml_token_t XML_v_alphabetic = 2156; const xml_token_t XML_v_hanging = 2157; const xml_token_t XML_v_ideographic = 2158; const xml_token_t XML_v_mathematical = 2159; const xml_token_t XML_validation = 2160; const xml_token_t XML_value = 2161; const xml_token_t XML_value_and_percentage = 2162; const xml_token_t XML_value_list = 2163; const xml_token_t XML_value_range = 2164; const xml_token_t XML_value_type = 2165; const xml_token_t XML_values = 2166; const xml_token_t XML_values_cell_range_address = 2167; const xml_token_t XML_var = 2168; const xml_token_t XML_varbinary = 2169; const xml_token_t XML_varchar = 2170; const xml_token_t XML_variable = 2171; const xml_token_t XML_variable_decl = 2172; const xml_token_t XML_variable_decls = 2173; const xml_token_t XML_variable_get = 2174; const xml_token_t XML_variable_input = 2175; const xml_token_t XML_variable_set = 2176; const xml_token_t XML_variance = 2177; const xml_token_t XML_varp = 2178; const xml_token_t XML_verb = 2179; const xml_token_t XML_version = 2180; const xml_token_t XML_vertical = 2181; const xml_token_t XML_vertical_align = 2182; const xml_token_t XML_vertical_bar = 2183; const xml_token_t XML_vertical_checkerboard = 2184; const xml_token_t XML_vertical_lines = 2185; const xml_token_t XML_vertical_pos = 2186; const xml_token_t XML_vertical_rel = 2187; const xml_token_t XML_vertical_segments = 2188; const xml_token_t XML_vertical_stripes = 2189; const xml_token_t XML_viewBox = 2190; const xml_token_t XML_visibility = 2191; const xml_token_t XML_visible = 2192; const xml_token_t XML_visible_area_height = 2193; const xml_token_t XML_visible_area_left = 2194; const xml_token_t XML_visible_area_top = 2195; const xml_token_t XML_visible_area_width = 2196; const xml_token_t XML_visited_style_name = 2197; const xml_token_t XML_visual_effect = 2198; const xml_token_t XML_void = 2199; const xml_token_t XML_volatile = 2200; const xml_token_t XML_volume = 2201; const xml_token_t XML_vpn = 2202; const xml_token_t XML_vrp = 2203; const xml_token_t XML_vup = 2204; const xml_token_t XML_wall = 2205; const xml_token_t XML_warning = 2206; const xml_token_t XML_watermark = 2207; const xml_token_t XML_wave = 2208; const xml_token_t XML_wavyline = 2209; const xml_token_t XML_wavyline_from_bottom = 2210; const xml_token_t XML_wavyline_from_left = 2211; const xml_token_t XML_wavyline_from_right = 2212; const xml_token_t XML_wavyline_from_top = 2213; const xml_token_t XML_week_of_year = 2214; const xml_token_t XML_whenNotActive = 2215; const xml_token_t XML_wide = 2216; const xml_token_t XML_widows = 2217; const xml_token_t XML_width = 2218; const xml_token_t XML_widths = 2219; const xml_token_t XML_with_previous = 2220; const xml_token_t XML_word = 2221; const xml_token_t XML_word_count = 2222; const xml_token_t XML_wrap = 2223; const xml_token_t XML_wrap_contour = 2224; const xml_token_t XML_wrap_contour_mode = 2225; const xml_token_t XML_wrap_dynamic_threshold = 2226; const xml_token_t XML_wrap_influence_on_position = 2227; const xml_token_t XML_wrap_option = 2228; const xml_token_t XML_writing_mode = 2229; const xml_token_t XML_writing_mode_automatic = 2230; const xml_token_t XML_www = 2231; const xml_token_t XML_x = 2232; const xml_token_t XML_x_height = 2233; const xml_token_t XML_x1 = 2234; const xml_token_t XML_x2 = 2235; const xml_token_t XML_xforms = 2236; const xml_token_t XML_xforms_list_source = 2237; const xml_token_t XML_xforms_submission = 2238; const xml_token_t XML_xhtml = 2239; const xml_token_t XML_xlink = 2240; const xml_token_t XML_xml = 2241; const xml_token_t XML_y = 2242; const xml_token_t XML_y1 = 2243; const xml_token_t XML_y2 = 2244; const xml_token_t XML_year = 2245; const xml_token_t XML_years = 2246; const xml_token_t XML_z = 2247; const xml_token_t XML_z_index = 2248; const xml_token_t XML_zero_values = 2249; liborcus-0.9.2/src/liborcus/opc_reader.cpp0000644000175000017500000001763012535701143017240 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "opc_reader.hpp" #include "xml_stream_parser.hpp" #include "ooxml_global.hpp" #include "opc_context.hpp" #include "ooxml_tokens.hpp" #include "orcus/config.hpp" #include #include using namespace std; namespace orcus { namespace { class print_xml_content_types : unary_function { public: print_xml_content_types(const char* prefix) : m_prefix(prefix) {} void operator() (const xml_part_t& v) const { cout << "* " << m_prefix << ": " << v.first; if (v.second) cout << " (" << v.second << ")"; else cout << " ()"; cout << endl; } private: const char* m_prefix; }; struct process_opc_rel : public unary_function { process_opc_rel(opc_reader& parent, opc_rel_extras_t* extras) : m_parent(parent), m_extras(extras) {} void operator() (opc_rel_t& v) { opc_rel_extra* data = NULL; if (m_extras) { opc_rel_extras_t::map_type::iterator it = m_extras->data.find(v.rid); if (it != m_extras->data.end()) data = it->second; } m_parent.read_part(v.target, v.type, data); } private: opc_reader& m_parent; opc_rel_extras_t* m_extras; }; } opc_reader::part_handler::~part_handler() {} opc_reader::opc_reader(const config& opt, xmlns_repository& ns_repo, session_context& cxt, part_handler& handler) : m_config(opt), m_ns_repo(ns_repo), m_session_cxt(cxt), m_handler(handler), m_opc_rel_handler(new opc_relations_context(m_session_cxt, opc_tokens)) {} void opc_reader::read_file(const char* fpath) { if (m_config.debug) cout << "reading " << fpath << endl; m_archive_stream.reset(new zip_archive_stream_fd(fpath)); m_archive.reset(new zip_archive(m_archive_stream.get())); m_archive->load(); m_dir_stack.push_back(string()); // push root directory. if (m_config.debug) list_content(); read_content(); m_archive.reset(); m_archive_stream.reset(); } bool opc_reader::open_zip_stream(const string& path, vector& buf) { return m_archive->read_file_entry(path.c_str(), buf); } void opc_reader::read_part(const pstring& path, const schema_t type, opc_rel_extra* data) { assert(!m_dir_stack.empty()); dir_stack_type dir_changed; // Change current directory and read the in-file. const char* p = path.get(); const char* p_name = NULL; size_t name_len = 0; for (size_t i = 0, n = path.size(); i < n; ++i, ++p) { if (!p_name) p_name = p; ++name_len; if (*p == '/') { // Push a new directory. string dir_name(p_name, name_len); if (dir_name == "..") { dir_changed.push_back(m_dir_stack.back()); m_dir_stack.pop_back(); } else { m_dir_stack.push_back(dir_name); // Add a null directory to the change record to remove it at the end. dir_changed.push_back(string()); } p_name = NULL; name_len = 0; } } if (p_name) { // This is a file. string file_name(p_name, name_len); string cur_dir = get_current_dir(); string full_path = resolve_file_path(cur_dir, file_name); if (m_handled_parts.count(full_path) > 0) { // This part has been previously read. Let's not read it twice. if (m_config.debug) { cout << "---" << endl; cout << "skipping previously read part: " << full_path << endl; } } else if (m_handler.handle_part(type, cur_dir, file_name, data)) { m_handled_parts.insert(full_path); } else if (m_config.debug) { cout << "---" << endl; cout << "unhandled relationship type: " << type << endl; } } // Unwind to the original directory. while (!dir_changed.empty()) { const string& dir = dir_changed.back(); if (dir.empty()) // remove added directory. m_dir_stack.pop_back(); else // re-add removed directory. m_dir_stack.push_back(dir); dir_changed.pop_back(); } } void opc_reader::check_relation_part(const std::string& file_name, opc_rel_extras_t* extra) { // Read the relationship file associated with this file, located at // _rels/.rels. vector rels; m_dir_stack.push_back(string("_rels/")); string rels_file_name = file_name + ".rels"; read_relations(rels_file_name.c_str(), rels); m_dir_stack.pop_back(); if (m_config.debug) for_each(rels.begin(), rels.end(), print_opc_rel()); for_each(rels.begin(), rels.end(), process_opc_rel(*this, extra)); } void opc_reader::list_content() const { size_t num = m_archive->get_file_entry_count(); cout << "number of files this archive contains: " << num << endl; for (size_t i = 0; i < num; ++i) { pstring filename = m_archive->get_file_entry_name(i); cout << filename << endl; } } void opc_reader::read_content() { if (m_dir_stack.empty()) return; // [Content_Types].xml read_content_types(); if (m_config.debug) { for_each(m_parts.begin(), m_parts.end(), print_xml_content_types("part name")); for_each(m_ext_defaults.begin(), m_ext_defaults.end(), print_xml_content_types("extension default")); } // _rels/.rels m_dir_stack.push_back(string("_rels/")); vector rels; read_relations(".rels", rels); m_dir_stack.pop_back(); if (m_config.debug) for_each(rels.begin(), rels.end(), print_opc_rel()); for_each(rels.begin(), rels.end(), process_opc_rel(*this, NULL)); } void opc_reader::read_content_types() { string filepath("[Content_Types].xml"); vector buffer; if (!open_zip_stream(filepath, buffer)) return; if (buffer.empty()) return; xml_stream_parser parser( m_config, m_ns_repo, opc_tokens, reinterpret_cast(&buffer[0]), buffer.size()); ::boost::scoped_ptr handler( new xml_simple_stream_handler(new opc_content_types_context(m_session_cxt, opc_tokens))); parser.set_handler(handler.get()); parser.parse(); opc_content_types_context& context = static_cast(handler->get_context()); context.pop_parts(m_parts); context.pop_ext_defaults(m_ext_defaults); } void opc_reader::read_relations(const char* path, vector& rels) { string filepath = resolve_file_path(get_current_dir(), path); if (m_config.debug) cout << "relation file path: " << filepath << endl; vector buffer; if (!open_zip_stream(filepath, buffer)) return; if (buffer.empty()) return; xml_stream_parser parser( m_config, m_ns_repo, opc_tokens, reinterpret_cast(&buffer[0]), buffer.size()); opc_relations_context& context = static_cast(m_opc_rel_handler.get_context()); context.init(); parser.set_handler(&m_opc_rel_handler); parser.parse(); context.pop_rels(rels); } string opc_reader::get_current_dir() const { string pwd; vector::const_iterator itr = m_dir_stack.begin(), itr_end = m_dir_stack.end(); for (; itr != itr_end; ++itr) pwd += *itr; return pwd; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/spreadsheet_types.cpp0000644000175000017500000000335612535701143020670 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/types.hpp" #include "orcus/global.hpp" #include #include namespace orcus { namespace spreadsheet { namespace { typedef mdds::sorted_string_map trf_map_type; // Keys must be sorted. trf_map_type::entry trf_entries[] = { { ORCUS_ASCII("average"), totals_row_function_average }, { ORCUS_ASCII("count"), totals_row_function_count }, { ORCUS_ASCII("countNums"), totals_row_function_count_numbers }, { ORCUS_ASCII("custom"), totals_row_function_custom }, { ORCUS_ASCII("max"), totals_row_function_maximum }, { ORCUS_ASCII("min"), totals_row_function_minimum }, { ORCUS_ASCII("none"), totals_row_function_none }, { ORCUS_ASCII("stdDev"), totals_row_function_standard_deviation }, { ORCUS_ASCII("sum"), totals_row_function_sum }, { ORCUS_ASCII("var"), totals_row_function_variance }, }; const trf_map_type& get_trf_map() { static trf_map_type trf_map( trf_entries, sizeof(trf_entries)/sizeof(trf_entries[0]), totals_row_function_none); return trf_map; } } col_width_t get_default_column_width() { return std::numeric_limits::max(); } row_height_t get_default_row_height() { return std::numeric_limits::max(); } totals_row_function_t to_totals_row_function_enum(const char* p, size_t n) { return get_trf_map().find(p, n); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_tokens.inl0000644000175000017500000001354412535701143020331 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const char* token_names[] = { "??", // 0 "AllowBlank", // 1 "AnswerR", // 2 "Area", // 3 "ArrowShapeA", // 4 "ArrowShapeB", // 5 "ArrowShapeC", // 6 "Attribute", // 7 "Attributes", // 8 "Author", // 9 "AutoScale", // 10 "Back", // 11 "Bold", // 12 "Bottom", // 13 "Calculation", // 14 "Cell", // 15 "CellComment", // 16 "Cells", // 17 "CellsStr", // 18 "Col", // 19 "ColInfo", // 20 "Collapsed", // 21 "Color", // 22 "Cols", // 23 "Comment", // 24 "Condition", // 25 "Constr", // 26 "Content", // 27 "Count", // 28 "CursorCol", // 29 "CursorRow", // 30 "DateConvention", // 31 "DefaultSizePts", // 32 "Diagonal", // 33 "Direction", // 34 "Discr", // 35 "DisplayFormulas", // 36 "DisplayOutlines", // 37 "EnableIteration", // 38 "Epoch", // 39 "ExprConvention", // 40 "ExprID", // 41 "Expression0", // 42 "Expression1", // 43 "Field", // 44 "FillColor", // 45 "Filter", // 46 "Filters", // 47 "FloatDigits", // 48 "FloatRadix", // 49 "Font", // 50 "Footer", // 51 "Fore", // 52 "Format", // 53 "FreezePanes", // 54 "FrozenTopLeft", // 55 "Full", // 56 "Geometry", // 57 "GogObject", // 58 "GridColor", // 59 "HAlign", // 60 "HardSize", // 61 "Header", // 62 "Height", // 63 "Hidden", // 64 "HideColHeader", // 65 "HideGrid", // 66 "HideRowHeader", // 67 "HideZero", // 68 "HyperLink", // 69 "Inc", // 70 "Indent", // 71 "Index", // 72 "Input", // 73 "InputMessage", // 74 "Inputs", // 75 "Italic", // 76 "IterationTolerance", // 77 "Label", // 78 "LabelFormat", // 79 "Lcol", // 80 "Left", // 81 "LimitsR", // 82 "Locked", // 83 "Lrow", // 84 "Major", // 85 "ManualRecalc", // 86 "MarginA", // 87 "MarginB", // 88 "Margins", // 89 "Max", // 90 "MaxCol", // 91 "MaxIter", // 92 "MaxIterations", // 93 "MaxRow", // 94 "MaxTime", // 95 "Merge", // 96 "MergedRegions", // 97 "Message", // 98 "Middle", // 99 "Min", // 100 "Minor", // 101 "ModelType", // 102 "Name", // 103 "Names", // 104 "No", // 105 "NonNeg", // 106 "ObjectAnchorType", // 107 "ObjectBound", // 108 "ObjectOffset", // 109 "Objects", // 110 "Op0", // 111 "Op1", // 112 "Operator", // 113 "Orient", // 114 "OutlineColor", // 115 "OutlineLevel", // 116 "OutlineSymbolsBelow", // 117 "OutlineSymbolsRight", // 118 "Output", // 119 "Page", // 120 "PatternColor", // 121 "PerformR", // 122 "Points", // 123 "PrefUnit", // 124 "Print", // 125 "PrintInformation", // 126 "ProblemType", // 127 "ProgramR", // 128 "Protected", // 129 "RTL_Layout", // 130 "Rcol", // 131 "Rev-Diagonal", // 132 "Right", // 133 "Rotation", // 134 "Row", // 135 "RowInfo", // 136 "Rows", // 137 "Rrow", // 138 "Scale", // 139 "Scenario", // 140 "Scenarios", // 141 "Script", // 142 "SelectedTab", // 143 "Selection", // 144 "Selections", // 145 "SensitivityR", // 146 "Shade", // 147 "Sheet", // 148 "SheetLayout", // 149 "SheetName", // 150 "SheetNameIndex", // 151 "SheetObjectBonobo", // 152 "SheetObjectFilled", // 153 "SheetObjectGraph", // 154 "SheetObjectImage", // 155 "SheetWidgetButton", // 156 "SheetWidgetCheckbox", // 157 "SheetWidgetCombo", // 158 "SheetWidgetFrame", // 159 "SheetWidgetLabel", // 160 "SheetWidgetList", // 161 "SheetWidgetScrollbar", // 162 "SheetWidgetSlider", // 163 "SheetWidgetSpinbutton", // 164 "SheetWidgetToggleButton", // 165 "Sheets", // 166 "ShowIter", // 167 "ShrinkToFit", // 168 "Solver", // 169 "StrikeThrough", // 170 "Style", // 171 "StyleBorder", // 172 "StyleRegion", // 173 "Styles", // 174 "TabColor", // 175 "TabTextColor", // 176 "TargetCol", // 177 "TargetRow", // 178 "Text", // 179 "TextFormat", // 180 "Title", // 181 "Top", // 182 "TopLeft", // 183 "Type", // 184 "UIData", // 185 "Underline", // 186 "UnfrozenTopLeft", // 187 "Unit", // 188 "UseDropdown", // 189 "VAlign", // 190 "Validation", // 191 "Value", // 192 "Value0", // 193 "Value1", // 194 "ValueFormat", // 195 "ValueType", // 196 "ValueType0", // 197 "ValueType1", // 198 "Version", // 199 "Visibility", // 200 "Width", // 201 "Workbook", // 202 "WrapText", // 203 "Zoom", // 204 "bottom", // 205 "break", // 206 "cols", // 207 "count", // 208 "crop-bottom", // 209 "crop-left", // 210 "crop-right", // 211 "crop-top", // 212 "data", // 213 "dimension", // 214 "do_not_print", // 215 "draft", // 216 "endCol", // 217 "endRow", // 218 "even_if_only_styles", // 219 "footer", // 220 "grid", // 221 "hPageBreaks", // 222 "hcenter", // 223 "header", // 224 "id", // 225 "image-type", // 226 "items", // 227 "left", // 228 "monochrome", // 229 "name", // 230 "order", // 231 "orientation", // 232 "paper", // 233 "percentage", // 234 "pos", // 235 "position", // 236 "print-to-uri", // 237 "print_range", // 238 "property", // 239 "repeat_left", // 240 "repeat_top", // 241 "right", // 242 "role", // 243 "rows", // 244 "size-bytes", // 245 "startCol", // 246 "startRow", // 247 "target", // 248 "tip", // 249 "titles", // 250 "top", // 251 "type", // 252 "vPageBreaks", // 253 "value", // 254 "vcenter" // 255 }; size_t token_name_count = 256; liborcus-0.9.2/src/liborcus/gnumeric_cell_context.cpp0000644000175000017500000001461712535701143021513 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_token_constants.hpp" #include "gnumeric_namespace_types.hpp" #include "gnumeric_cell_context.hpp" #include "orcus/global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include #include #include using namespace std; namespace orcus { using namespace spreadsheet; enum gnumeric_cell_type { cell_type_bool, cell_type_value, cell_type_string, cell_type_formula, cell_type_shared_formula, cell_type_array, cell_type_unknown }; struct gnumeric_cell_data { gnumeric_cell_data() : row(0), col(0), cell_type(cell_type_unknown), shared_formula_id(-1), array_rows(0), array_cols(0) {} row_t row; col_t col; gnumeric_cell_type cell_type; size_t shared_formula_id; row_t array_rows; col_t array_cols; }; namespace { class cell_attr_parser : public unary_function { public: cell_attr_parser() { cell_data.cell_type = cell_type_formula; } cell_attr_parser(const cell_attr_parser& r): cell_data(r.cell_data) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_Row: cell_data.row = atoi(attr.value.get()); break; case XML_Col: cell_data.col = atoi(attr.value.get()); break; case XML_ValueType: { int value_type = atoi(attr.value.get()); switch (value_type) { case 20: cell_data.cell_type = cell_type_bool; break; case 30: case 40: cell_data.cell_type = cell_type_value; break; case 60: cell_data.cell_type = cell_type_string; } } break; case XML_ExprID: cell_data.shared_formula_id = atoi(attr.value.get()); cell_data.cell_type = cell_type_shared_formula; break; case XML_Rows: cell_data.array_rows = atoi(attr.value.get()); cell_data.cell_type = cell_type_array; break; case XML_Cols: cell_data.array_cols = atoi(attr.value.get()); cell_data.cell_type = cell_type_array; break; } } gnumeric_cell_data get_cell_data() const { return cell_data; } private: gnumeric_cell_data cell_data; }; } // ============================================================================ gnumeric_cell_context::gnumeric_cell_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory, spreadsheet::iface::import_sheet* sheet) : xml_context_base(session_cxt, tokens), mp_factory(factory), mp_sheet(sheet) { } gnumeric_cell_context::~gnumeric_cell_context() { } bool gnumeric_cell_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* gnumeric_cell_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void gnumeric_cell_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void gnumeric_cell_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { push_stack(ns, name); if (ns == NS_gnumeric_gnm) { switch (name) { case XML_Cell: start_cell(attrs); break; default: warn_unhandled(); } } else warn_unhandled(); } bool gnumeric_cell_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_gnumeric_gnm) { switch (name) { case XML_Cell: end_cell(); break; default: ; } } return pop_stack(ns, name); } void gnumeric_cell_context::characters(const pstring& str, bool transient) { chars = str; } void gnumeric_cell_context::start_cell(const xml_attrs_t& attrs) { mp_cell_data.reset(new gnumeric_cell_data); cell_attr_parser parser = for_each(attrs.begin(), attrs.end(), cell_attr_parser()); *mp_cell_data = parser.get_cell_data(); } void gnumeric_cell_context::end_cell() { if (!mp_cell_data) return; col_t col = mp_cell_data->col; row_t row = mp_cell_data->row; gnumeric_cell_type cell_type = mp_cell_data->cell_type; switch (cell_type) { case cell_type_value: { double val = atof(chars.get()); mp_sheet->set_value(row, col, val); } break; case cell_type_string: { spreadsheet::iface::import_shared_strings* shared_strings = mp_factory->get_shared_strings(); if (!shared_strings) break; size_t id = shared_strings->add(chars.get(), chars.size()); mp_sheet->set_string(row, col, id); } break; case cell_type_formula: mp_sheet->set_formula(row, col, spreadsheet::formula_grammar_gnumeric, chars.get(), chars.size()); break; case cell_type_shared_formula: { if (chars.empty()) mp_sheet->set_shared_formula(row, col, mp_cell_data->shared_formula_id); else mp_sheet->set_shared_formula(row, col, spreadsheet::formula_grammar_gnumeric, mp_cell_data->shared_formula_id, chars.get(), chars.size()); } break; case cell_type_array: { mp_sheet->set_array_formula(row, col, spreadsheet::formula_grammar_gnumeric, chars.get(), chars.size(), mp_cell_data->array_rows, mp_cell_data->array_cols); } break; case cell_type_bool: { bool val = chars == "TRUE"; mp_sheet->set_bool(row, col, val); } break; default: ; } mp_cell_data.reset(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ods_content_xml_handler.cpp0000644000175000017500000000150412535701143022022 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ods_content_xml_handler.hpp" #include "ods_content_xml_context.hpp" namespace orcus { ods_content_xml_handler::ods_content_xml_handler(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory) : xml_stream_handler(new ods_content_xml_context(session_cxt, tokens, factory)) { } ods_content_xml_handler::~ods_content_xml_handler() { } void ods_content_xml_handler::start_document() { } void ods_content_xml_handler::end_document() { } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/opc_context.hpp0000644000175000017500000000616112535701143017464 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OPC_CONTEXT_HPP__ #define __ORCUS_OPC_CONTEXT_HPP__ #include "xml_context_base.hpp" #include "ooxml_types.hpp" #include #include namespace orcus { /** * Main context class for the [Content_Types].xml part. This context does * not use any child contexts; [Content_Types].xml part is simple enough * that we can handle all in a single context class. */ class opc_content_types_context : public xml_context_base { public: typedef boost::unordered_set ct_cache_type; opc_content_types_context(session_context& session_cxt, const tokens& _tokens); virtual ~opc_content_types_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector &attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring &str, bool transient); /** * Swap stored xml part info with the instance passed as the argument. * Calling this will clear the storage. * * @param parts instance to swap the stored xml part info with. */ void pop_parts(::std::vector& parts); /** * Swap stored xml extension info with the instance passed as the * argument. Calling this will clear the storage. * * @param parts instance to swap the stored extension info with. */ void pop_ext_defaults(::std::vector& ext_defaults); private: ct_cache_type m_ct_cache; // content type cache; ::std::vector m_parts; ::std::vector m_ext_defaults; }; /** * Context class for relations parts. */ class opc_relations_context : public xml_context_base { public: typedef boost::unordered_set schema_cache_type; opc_relations_context(session_context& session_cxt, const tokens& _tokens); virtual ~opc_relations_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector &attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring &str, bool transient); void init(); void pop_rels(::std::vector& rels); private: schema_cache_type m_schema_cache; ::std::vector m_rels; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_pivot_context.hpp0000644000175000017500000000524712535701143021126 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_PIVOT_CONTEXT_HPP #define ORCUS_XLSX_PIVOT_CONTEXT_HPP #include "xml_context_base.hpp" namespace orcus { /** * Base context for pivotCacheDefinition[n].xml part, which defines the * structure of a pivot cache. */ class xlsx_pivot_cache_def_context : public xml_context_base { public: xlsx_pivot_cache_def_context(session_context& cxt, const tokens& tokens); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); }; /** * Context for pivotCacheRecords[n].xml part, which contains the records in * a pivot cache. */ class xlsx_pivot_cache_rec_context : public xml_context_base { public: xlsx_pivot_cache_rec_context(session_context& cxt, const tokens& tokens); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); }; /** * Context for pivotTable[n].xml part which defines the structure of a pivot * table model. */ class xlsx_pivot_table_context : public xml_context_base { public: xlsx_pivot_table_context(session_context& cxt, const tokens& tokens); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/Makefile.in0000644000175000017500000077546312540653650016522 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = liborcus-test-css-document-tree$(EXEEXT) \ liborcus-test-xml-map-tree$(EXEEXT) \ liborcus-test-xml-structure-tree$(EXEEXT) \ liborcus-test-common$(EXEEXT) \ liborcus-test-format-detection$(EXEEXT) $(am__EXEEXT_1) \ $(am__EXEEXT_2) TESTS = $(am__EXEEXT_1) $(am__EXEEXT_2) \ liborcus-test-css-document-tree$(EXEEXT) \ liborcus-test-xml-map-tree$(EXEEXT) \ liborcus-test-xml-structure-tree$(EXEEXT) \ liborcus-test-common$(EXEEXT) \ liborcus-test-format-detection$(EXEEXT) @HAVE_STATIC_LIB_TRUE@am__append_1 = -D__ORCUS_STATIC_LIB=1 @HAVE_STATIC_LIB_FALSE@am__append_2 = -D__ORCUS_BUILDING_DLL=1 @WITH_XLSX_FILTER_TRUE@am__append_3 = -D__ORCUS_XLSX @WITH_XLSX_FILTER_TRUE@am__append_4 = \ @WITH_XLSX_FILTER_TRUE@ orcus-xlsx-sheet-context-test @WITH_XLSX_FILTER_TRUE@am__append_5 = \ @WITH_XLSX_FILTER_TRUE@ ooxml_content_types.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_content_types.hpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_global.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_global.hpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_schemas.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_schemas.hpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_token_constants.hpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_token_constants.inl \ @WITH_XLSX_FILTER_TRUE@ ooxml_tokens.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_tokens.hpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_tokens.inl \ @WITH_XLSX_FILTER_TRUE@ ooxml_types.hpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_types.cpp \ @WITH_XLSX_FILTER_TRUE@ opc_context.cpp \ @WITH_XLSX_FILTER_TRUE@ opc_context.hpp \ @WITH_XLSX_FILTER_TRUE@ opc_reader.cpp \ @WITH_XLSX_FILTER_TRUE@ opc_reader.hpp \ @WITH_XLSX_FILTER_TRUE@ opc_reader.hpp \ @WITH_XLSX_FILTER_TRUE@ opc_token_constants.hpp \ @WITH_XLSX_FILTER_TRUE@ opc_token_constants.inl \ @WITH_XLSX_FILTER_TRUE@ opc_tokens.inl \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx.cpp \ @WITH_XLSX_FILTER_TRUE@ orcus_import_xlsx.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_context.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_handler.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_handler.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_helper.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_helper.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_session_data.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_session_data.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_revision_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_revision_context.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_pivot_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_pivot_context.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_sheet_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_sheet_context.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_conditional_format_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_conditional_format_context.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_table_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_table_context.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_autofilter_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_autofilter_context.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_types.hpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_types.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_workbook_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_workbook_context.hpp @WITH_XLSX_FILTER_TRUE@am__append_6 = \ @WITH_XLSX_FILTER_TRUE@ orcus-xlsx-sheet-context-test @WITH_XLS_XML_FILTER_TRUE@am__append_7 = -D__ORCUS_XLS_XML @WITH_XLS_XML_FILTER_TRUE@am__append_8 = \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_tokens.hpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_tokens.inl \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_tokens.cpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_token_constants.hpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_token_constants.inl \ @WITH_XLS_XML_FILTER_TRUE@ orcus_xls_xml.cpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_detection_handler.hpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_detection_handler.cpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_handler.hpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_handler.cpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_context.hpp \ @WITH_XLS_XML_FILTER_TRUE@ xls_xml_context.cpp @WITH_ODS_FILTER_TRUE@am__append_9 = -D__ORCUS_ODS @WITH_ODS_FILTER_TRUE@am__append_10 = \ @WITH_ODS_FILTER_TRUE@ odf_para_context.hpp \ @WITH_ODS_FILTER_TRUE@ odf_para_context.cpp \ @WITH_ODS_FILTER_TRUE@ odf_styles.hpp \ @WITH_ODS_FILTER_TRUE@ odf_styles.cpp \ @WITH_ODS_FILTER_TRUE@ odf_styles_context.hpp \ @WITH_ODS_FILTER_TRUE@ odf_styles_context.cpp \ @WITH_ODS_FILTER_TRUE@ odf_token_constants.hpp \ @WITH_ODS_FILTER_TRUE@ odf_token_constants.inl \ @WITH_ODS_FILTER_TRUE@ odf_tokens.hpp \ @WITH_ODS_FILTER_TRUE@ odf_tokens.inl \ @WITH_ODS_FILTER_TRUE@ odf_tokens.cpp \ @WITH_ODS_FILTER_TRUE@ ods_content_xml_context.hpp \ @WITH_ODS_FILTER_TRUE@ ods_content_xml_context.cpp \ @WITH_ODS_FILTER_TRUE@ ods_content_xml_handler.hpp \ @WITH_ODS_FILTER_TRUE@ ods_content_xml_handler.cpp \ @WITH_ODS_FILTER_TRUE@ ods_session_data.hpp \ @WITH_ODS_FILTER_TRUE@ ods_session_data.cpp \ @WITH_ODS_FILTER_TRUE@ orcus_ods.cpp @WITH_GNUMERIC_FILTER_TRUE@am__append_11 = -D__ORCUS_GNUMERIC @WITH_GNUMERIC_FILTER_TRUE@am__append_12 = \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_cell_context.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_context.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_detection_handler.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_detection_handler.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_handler.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_helper.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_sheet_context.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_token_constants.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_token_constants.inl \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_tokens.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_cell_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_handler.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_helper.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_sheet_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_tokens.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_tokens.inl \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric.cpp @WITH_GNUMERIC_FILTER_TRUE@am__append_13 = \ @WITH_GNUMERIC_FILTER_TRUE@ $(BOOST_IOSTREAMS_LDFLAGS) @WITH_GNUMERIC_FILTER_TRUE@am__append_14 = \ @WITH_GNUMERIC_FILTER_TRUE@ $(BOOST_IOSTREAMS_LIBS) # gnumeric-cell-context-test @WITH_GNUMERIC_FILTER_TRUE@am__append_15 = \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric-cell-context-test \ @WITH_GNUMERIC_FILTER_TRUE@ orcus-gnumeric-sheet-context-test \ @WITH_GNUMERIC_FILTER_TRUE@ orcus-gnumeric-helper-test @WITH_GNUMERIC_FILTER_TRUE@am__append_16 = gnumeric-cell-context-test \ @WITH_GNUMERIC_FILTER_TRUE@ orcus-gnumeric-sheet-context-test \ @WITH_GNUMERIC_FILTER_TRUE@ orcus-gnumeric-helper-test subdir = src/liborcus DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp $(top_srcdir)/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = @WITH_GNUMERIC_FILTER_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) liborcus_@ORCUS_API_VERSION@_la_DEPENDENCIES = \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) am__liborcus_@ORCUS_API_VERSION@_la_SOURCES_DIST = config.cpp \ css_document_tree.cpp css_selector.cpp detection_result.hpp \ detection_result.cpp dom_tree.cpp format_detection.cpp \ global.cpp interface.cpp spreadsheet_interface.cpp \ orcus_csv.cpp orcus_xml.cpp measurement.cpp \ xml_context_base.hpp xml_context_base.cpp \ xml_context_global.hpp xml_context_global.cpp xml_map_tree.hpp \ xml_map_tree.cpp xml_stream_handler.hpp xml_stream_handler.cpp \ xml_stream_parser.hpp xml_stream_parser.cpp \ xml_simple_stream_handler.hpp xml_simple_stream_handler.cpp \ xml_structure_tree.cpp ooxml_namespace_types.cpp \ ooxml_namespace_types.hpp odf_namespace_types.hpp \ odf_namespace_types_hpp.inl odf_namespace_types.cpp \ odf_namespace_types_cpp.inl gnumeric_namespace_types.hpp \ gnumeric_namespace_types.cpp xls_xml_namespace_types.hpp \ xls_xml_namespace_types.cpp session_context.hpp \ session_context.cpp spreadsheet_types.cpp \ ooxml_content_types.cpp ooxml_content_types.hpp \ ooxml_global.cpp ooxml_global.hpp ooxml_schemas.cpp \ ooxml_schemas.hpp ooxml_token_constants.hpp \ ooxml_token_constants.inl ooxml_tokens.cpp ooxml_tokens.hpp \ ooxml_tokens.inl ooxml_types.hpp ooxml_types.cpp \ opc_context.cpp opc_context.hpp opc_reader.cpp opc_reader.hpp \ opc_token_constants.hpp opc_token_constants.inl opc_tokens.inl \ orcus_xlsx.cpp orcus_import_xlsx.cpp xlsx_context.cpp \ xlsx_context.hpp xlsx_handler.cpp xlsx_handler.hpp \ xlsx_helper.cpp xlsx_helper.hpp xlsx_session_data.hpp \ xlsx_session_data.cpp xlsx_revision_context.cpp \ xlsx_revision_context.hpp xlsx_pivot_context.cpp \ xlsx_pivot_context.hpp xlsx_sheet_context.cpp \ xlsx_sheet_context.hpp xlsx_conditional_format_context.cpp \ xlsx_conditional_format_context.hpp xlsx_table_context.cpp \ xlsx_table_context.hpp xlsx_autofilter_context.cpp \ xlsx_autofilter_context.hpp xlsx_types.hpp xlsx_types.cpp \ xlsx_workbook_context.cpp xlsx_workbook_context.hpp \ xls_xml_tokens.hpp xls_xml_tokens.inl xls_xml_tokens.cpp \ xls_xml_token_constants.hpp xls_xml_token_constants.inl \ orcus_xls_xml.cpp xls_xml_detection_handler.hpp \ xls_xml_detection_handler.cpp xls_xml_handler.hpp \ xls_xml_handler.cpp xls_xml_context.hpp xls_xml_context.cpp \ odf_para_context.hpp odf_para_context.cpp odf_styles.hpp \ odf_styles.cpp odf_styles_context.hpp odf_styles_context.cpp \ odf_token_constants.hpp odf_token_constants.inl odf_tokens.hpp \ odf_tokens.inl odf_tokens.cpp ods_content_xml_context.hpp \ ods_content_xml_context.cpp ods_content_xml_handler.hpp \ ods_content_xml_handler.cpp ods_session_data.hpp \ ods_session_data.cpp orcus_ods.cpp gnumeric_cell_context.hpp \ gnumeric_context.hpp gnumeric_detection_handler.hpp \ gnumeric_detection_handler.cpp gnumeric_handler.hpp \ gnumeric_helper.hpp gnumeric_sheet_context.hpp \ gnumeric_token_constants.hpp gnumeric_token_constants.inl \ gnumeric_tokens.hpp gnumeric_cell_context.cpp \ gnumeric_context.cpp gnumeric_handler.cpp gnumeric_helper.cpp \ gnumeric_sheet_context.cpp gnumeric_tokens.cpp \ gnumeric_tokens.inl orcus_gnumeric.cpp @WITH_XLSX_FILTER_TRUE@am__objects_1 = liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-ooxml_global.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-ooxml_types.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-opc_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-opc_reader.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_types.lo \ @WITH_XLSX_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.lo @WITH_XLS_XML_FILTER_TRUE@am__objects_2 = liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.lo \ @WITH_XLS_XML_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.lo \ @WITH_XLS_XML_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.lo \ @WITH_XLS_XML_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.lo \ @WITH_XLS_XML_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.lo @WITH_ODS_FILTER_TRUE@am__objects_3 = liborcus_@ORCUS_API_VERSION@_la-odf_para_context.lo \ @WITH_ODS_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-odf_styles.lo \ @WITH_ODS_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.lo \ @WITH_ODS_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-odf_tokens.lo \ @WITH_ODS_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.lo \ @WITH_ODS_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.lo \ @WITH_ODS_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-ods_session_data.lo \ @WITH_ODS_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-orcus_ods.lo @WITH_GNUMERIC_FILTER_TRUE@am__objects_4 = liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.lo \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.lo \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.lo \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.lo \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.lo \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.lo \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.lo \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.lo am_liborcus_@ORCUS_API_VERSION@_la_OBJECTS = \ liborcus_@ORCUS_API_VERSION@_la-config.lo \ liborcus_@ORCUS_API_VERSION@_la-css_document_tree.lo \ liborcus_@ORCUS_API_VERSION@_la-css_selector.lo \ liborcus_@ORCUS_API_VERSION@_la-detection_result.lo \ liborcus_@ORCUS_API_VERSION@_la-dom_tree.lo \ liborcus_@ORCUS_API_VERSION@_la-format_detection.lo \ liborcus_@ORCUS_API_VERSION@_la-global.lo \ liborcus_@ORCUS_API_VERSION@_la-interface.lo \ liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.lo \ liborcus_@ORCUS_API_VERSION@_la-orcus_csv.lo \ liborcus_@ORCUS_API_VERSION@_la-orcus_xml.lo \ liborcus_@ORCUS_API_VERSION@_la-measurement.lo \ liborcus_@ORCUS_API_VERSION@_la-xml_context_base.lo \ liborcus_@ORCUS_API_VERSION@_la-xml_context_global.lo \ liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.lo \ liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.lo \ liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.lo \ liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.lo \ liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.lo \ liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.lo \ liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.lo \ liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.lo \ liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.lo \ liborcus_@ORCUS_API_VERSION@_la-session_context.lo \ liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.lo \ $(am__objects_1) $(am__objects_2) $(am__objects_3) \ $(am__objects_4) liborcus_@ORCUS_API_VERSION@_la_OBJECTS = \ $(am_liborcus_@ORCUS_API_VERSION@_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = liborcus_@ORCUS_API_VERSION@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) \ $(liborcus_@ORCUS_API_VERSION@_la_LDFLAGS) $(LDFLAGS) -o $@ @WITH_XLSX_FILTER_TRUE@am__EXEEXT_1 = \ @WITH_XLSX_FILTER_TRUE@ orcus-xlsx-sheet-context-test$(EXEEXT) @WITH_GNUMERIC_FILTER_TRUE@am__EXEEXT_2 = gnumeric-cell-context-test$(EXEEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus-gnumeric-sheet-context-test$(EXEEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus-gnumeric-helper-test$(EXEEXT) am__gnumeric_cell_context_test_SOURCES_DIST = session_context.cpp \ gnumeric_cell_context_test.cpp gnumeric_cell_context.cpp \ xml_context_base.cpp gnumeric_namespace_types.cpp \ gnumeric_tokens.cpp odf_namespace_types.cpp \ spreadsheet_interface.cpp mock_spreadsheet.hpp \ mock_spreadsheet.cpp @WITH_GNUMERIC_FILTER_TRUE@am_gnumeric_cell_context_test_OBJECTS = \ @WITH_GNUMERIC_FILTER_TRUE@ session_context.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_cell_context_test.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_cell_context.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ xml_context_base.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_namespace_types.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_tokens.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ odf_namespace_types.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ spreadsheet_interface.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ mock_spreadsheet.$(OBJEXT) gnumeric_cell_context_test_OBJECTS = \ $(am_gnumeric_cell_context_test_OBJECTS) @WITH_GNUMERIC_FILTER_TRUE@gnumeric_cell_context_test_DEPENDENCIES = \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_GNUMERIC_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am_liborcus_test_common_OBJECTS = global.$(OBJEXT) \ common_test.$(OBJEXT) liborcus_test_common_OBJECTS = $(am_liborcus_test_common_OBJECTS) liborcus_test_common_DEPENDENCIES = liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am_liborcus_test_css_document_tree_OBJECTS = \ css_document_tree.$(OBJEXT) css_document_tree_test.$(OBJEXT) liborcus_test_css_document_tree_OBJECTS = \ $(am_liborcus_test_css_document_tree_OBJECTS) liborcus_test_css_document_tree_DEPENDENCIES = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am_liborcus_test_format_detection_OBJECTS = \ format_detection_test.$(OBJEXT) liborcus_test_format_detection_OBJECTS = \ $(am_liborcus_test_format_detection_OBJECTS) liborcus_test_format_detection_DEPENDENCIES = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am_liborcus_test_xml_map_tree_OBJECTS = xml_map_tree.$(OBJEXT) \ xml_map_tree_test.$(OBJEXT) liborcus_test_xml_map_tree_OBJECTS = \ $(am_liborcus_test_xml_map_tree_OBJECTS) liborcus_test_xml_map_tree_DEPENDENCIES = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am_liborcus_test_xml_structure_tree_OBJECTS = \ liborcus_test_xml_structure_tree-xml_structure_tree.$(OBJEXT) \ liborcus_test_xml_structure_tree-xml_structure_tree_test.$(OBJEXT) liborcus_test_xml_structure_tree_OBJECTS = \ $(am_liborcus_test_xml_structure_tree_OBJECTS) liborcus_test_xml_structure_tree_DEPENDENCIES = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am__orcus_gnumeric_helper_test_SOURCES_DIST = \ gnumeric_helper_test.cpp @WITH_GNUMERIC_FILTER_TRUE@am_orcus_gnumeric_helper_test_OBJECTS = orcus_gnumeric_helper_test-gnumeric_helper_test.$(OBJEXT) orcus_gnumeric_helper_test_OBJECTS = \ $(am_orcus_gnumeric_helper_test_OBJECTS) @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_helper_test_DEPENDENCIES = \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_GNUMERIC_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am__orcus_gnumeric_sheet_context_test_SOURCES_DIST = \ session_context.cpp gnumeric_sheet_context_test.cpp \ gnumeric_sheet_context.cpp gnumeric_cell_context.cpp \ gnumeric_helper.cpp xml_context_base.cpp \ gnumeric_namespace_types.cpp gnumeric_tokens.cpp \ odf_namespace_types.cpp spreadsheet_interface.cpp \ mock_spreadsheet.hpp mock_spreadsheet.cpp @WITH_GNUMERIC_FILTER_TRUE@am_orcus_gnumeric_sheet_context_test_OBJECTS = orcus_gnumeric_sheet_context_test-session_context.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-gnumeric_cell_context.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-gnumeric_helper.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-xml_context_base.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-gnumeric_tokens.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-odf_namespace_types.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-spreadsheet_interface.$(OBJEXT) \ @WITH_GNUMERIC_FILTER_TRUE@ orcus_gnumeric_sheet_context_test-mock_spreadsheet.$(OBJEXT) orcus_gnumeric_sheet_context_test_OBJECTS = \ $(am_orcus_gnumeric_sheet_context_test_OBJECTS) @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_sheet_context_test_DEPENDENCIES = \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_GNUMERIC_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la am__orcus_xlsx_sheet_context_test_SOURCES_DIST = \ xlsx_session_data.cpp session_context.cpp \ xlsx_conditional_format_context.cpp \ xlsx_sheet_context_test.cpp xlsx_sheet_context.cpp \ xlsx_autofilter_context.cpp xlsx_helper.cpp xlsx_types.cpp \ ooxml_global.cpp ooxml_namespace_types.cpp ooxml_tokens.cpp \ ooxml_types.cpp ooxml_schemas.cpp xml_context_base.cpp \ xml_context_global.cpp global.cpp spreadsheet_interface.cpp \ mock_spreadsheet.hpp mock_spreadsheet.cpp @WITH_XLSX_FILTER_TRUE@am_orcus_xlsx_sheet_context_test_OBJECTS = orcus_xlsx_sheet_context_test-xlsx_session_data.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-session_context.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xlsx_sheet_context.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xlsx_autofilter_context.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xlsx_helper.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xlsx_types.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-ooxml_global.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-ooxml_namespace_types.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-ooxml_tokens.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-ooxml_types.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-ooxml_schemas.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xml_context_base.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-xml_context_global.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-global.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-spreadsheet_interface.$(OBJEXT) \ @WITH_XLSX_FILTER_TRUE@ orcus_xlsx_sheet_context_test-mock_spreadsheet.$(OBJEXT) orcus_xlsx_sheet_context_test_OBJECTS = \ $(am_orcus_xlsx_sheet_context_test_OBJECTS) @WITH_XLSX_FILTER_TRUE@orcus_xlsx_sheet_context_test_DEPENDENCIES = \ @WITH_XLSX_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_XLSX_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(liborcus_@ORCUS_API_VERSION@_la_SOURCES) \ $(gnumeric_cell_context_test_SOURCES) \ $(liborcus_test_common_SOURCES) \ $(liborcus_test_css_document_tree_SOURCES) \ $(liborcus_test_format_detection_SOURCES) \ $(liborcus_test_xml_map_tree_SOURCES) \ $(liborcus_test_xml_structure_tree_SOURCES) \ $(orcus_gnumeric_helper_test_SOURCES) \ $(orcus_gnumeric_sheet_context_test_SOURCES) \ $(orcus_xlsx_sheet_context_test_SOURCES) DIST_SOURCES = $(am__liborcus_@ORCUS_API_VERSION@_la_SOURCES_DIST) \ $(am__gnumeric_cell_context_test_SOURCES_DIST) \ $(liborcus_test_common_SOURCES) \ $(liborcus_test_css_document_tree_SOURCES) \ $(liborcus_test_format_detection_SOURCES) \ $(liborcus_test_xml_map_tree_SOURCES) \ $(liborcus_test_xml_structure_tree_SOURCES) \ $(am__orcus_gnumeric_helper_test_SOURCES_DIST) \ $(am__orcus_gnumeric_sheet_context_test_SOURCES_DIST) \ $(am__orcus_xlsx_sheet_context_test_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_srcdir)/include -I./include $(am__append_1) \ $(am__append_2) -DSRCDIR=\""$(top_srcdir)"\" $(am__append_3) \ $(am__append_7) $(am__append_9) $(am__append_11) liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS = \ $(BOOST_SYSTEM_CFLAGS) $(ZLIB_CFLAGS) liborcus_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined \ $(am__append_13) liborcus_@ORCUS_API_VERSION@_la_LIBADD = \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la \ $(BOOST_SYSTEM_LIBS) $(BOOST_SYSTEM_LIB) $(ZLIB_LIBS) \ $(am__append_14) lib_LTLIBRARIES = liborcus-@ORCUS_API_VERSION@.la liborcus_@ORCUS_API_VERSION@_la_SOURCES = config.cpp \ css_document_tree.cpp css_selector.cpp detection_result.hpp \ detection_result.cpp dom_tree.cpp format_detection.cpp \ global.cpp interface.cpp spreadsheet_interface.cpp \ orcus_csv.cpp orcus_xml.cpp measurement.cpp \ xml_context_base.hpp xml_context_base.cpp \ xml_context_global.hpp xml_context_global.cpp xml_map_tree.hpp \ xml_map_tree.cpp xml_stream_handler.hpp xml_stream_handler.cpp \ xml_stream_parser.hpp xml_stream_parser.cpp \ xml_simple_stream_handler.hpp xml_simple_stream_handler.cpp \ xml_structure_tree.cpp ooxml_namespace_types.cpp \ ooxml_namespace_types.hpp odf_namespace_types.hpp \ odf_namespace_types_hpp.inl odf_namespace_types.cpp \ odf_namespace_types_cpp.inl gnumeric_namespace_types.hpp \ gnumeric_namespace_types.cpp xls_xml_namespace_types.hpp \ xls_xml_namespace_types.cpp session_context.hpp \ session_context.cpp spreadsheet_types.cpp $(am__append_5) \ $(am__append_8) $(am__append_10) $(am__append_12) # orcus-xlsx-sheet-context-test @WITH_XLSX_FILTER_TRUE@orcus_xlsx_sheet_context_test_SOURCES = \ @WITH_XLSX_FILTER_TRUE@ xlsx_session_data.cpp \ @WITH_XLSX_FILTER_TRUE@ session_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_conditional_format_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_sheet_context_test.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_sheet_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_autofilter_context.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_helper.cpp \ @WITH_XLSX_FILTER_TRUE@ xlsx_types.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_global.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_namespace_types.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_tokens.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_types.cpp \ @WITH_XLSX_FILTER_TRUE@ ooxml_schemas.cpp \ @WITH_XLSX_FILTER_TRUE@ xml_context_base.cpp \ @WITH_XLSX_FILTER_TRUE@ xml_context_global.cpp \ @WITH_XLSX_FILTER_TRUE@ global.cpp \ @WITH_XLSX_FILTER_TRUE@ spreadsheet_interface.cpp \ @WITH_XLSX_FILTER_TRUE@ mock_spreadsheet.hpp \ @WITH_XLSX_FILTER_TRUE@ mock_spreadsheet.cpp @WITH_XLSX_FILTER_TRUE@orcus_xlsx_sheet_context_test_LDADD = \ @WITH_XLSX_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_XLSX_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la @WITH_XLSX_FILTER_TRUE@orcus_xlsx_sheet_context_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) @WITH_GNUMERIC_FILTER_TRUE@gnumeric_cell_context_test_SOURCES = \ @WITH_GNUMERIC_FILTER_TRUE@ session_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_cell_context_test.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_cell_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ xml_context_base.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_namespace_types.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_tokens.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ odf_namespace_types.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ spreadsheet_interface.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ mock_spreadsheet.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ mock_spreadsheet.cpp @WITH_GNUMERIC_FILTER_TRUE@gnumeric_cell_context_test_LDADD = \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_GNUMERIC_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_cell_context_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-gnumeric-sheet-context-test @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_sheet_context_test_SOURCES = \ @WITH_GNUMERIC_FILTER_TRUE@ session_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_sheet_context_test.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_sheet_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_cell_context.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_helper.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ xml_context_base.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_namespace_types.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_tokens.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ odf_namespace_types.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ spreadsheet_interface.cpp \ @WITH_GNUMERIC_FILTER_TRUE@ mock_spreadsheet.hpp \ @WITH_GNUMERIC_FILTER_TRUE@ mock_spreadsheet.cpp @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_sheet_context_test_LDADD = \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_GNUMERIC_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_sheet_context_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-gnumeric-helper-test @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_helper_test_SOURCES = \ @WITH_GNUMERIC_FILTER_TRUE@ gnumeric_helper_test.cpp @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_helper_test_LDADD = \ @WITH_GNUMERIC_FILTER_TRUE@ liborcus-@ORCUS_API_VERSION@.la \ @WITH_GNUMERIC_FILTER_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la @WITH_GNUMERIC_FILTER_TRUE@orcus_gnumeric_helper_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # liborcus-test-css-document-tree liborcus_test_css_document_tree_SOURCES = \ css_document_tree.cpp \ css_document_tree_test.cpp liborcus_test_css_document_tree_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-xml-map-tree liborcus_test_xml_map_tree_SOURCES = \ xml_map_tree.cpp \ xml_map_tree.hpp \ xml_map_tree_test.cpp liborcus_test_xml_map_tree_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-xml-structure-tree liborcus_test_xml_structure_tree_SOURCES = \ xml_structure_tree.cpp \ xml_structure_tree_test.cpp liborcus_test_xml_structure_tree_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" liborcus_test_xml_structure_tree_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-common liborcus_test_common_SOURCES = \ global.cpp \ common_test.cpp liborcus_test_common_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-format-detection liborcus_test_format_detection_SOURCES = \ format_detection_test.cpp liborcus_test_format_detection_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/liborcus/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/liborcus/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } liborcus-@ORCUS_API_VERSION@.la: $(liborcus_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(EXTRA_liborcus_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(AM_V_CXXLD)$(liborcus_@ORCUS_API_VERSION@_la_LINK) -rpath $(libdir) $(liborcus_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_@ORCUS_API_VERSION@_la_LIBADD) $(LIBS) gnumeric-cell-context-test$(EXEEXT): $(gnumeric_cell_context_test_OBJECTS) $(gnumeric_cell_context_test_DEPENDENCIES) $(EXTRA_gnumeric_cell_context_test_DEPENDENCIES) @rm -f gnumeric-cell-context-test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(gnumeric_cell_context_test_OBJECTS) $(gnumeric_cell_context_test_LDADD) $(LIBS) liborcus-test-common$(EXEEXT): $(liborcus_test_common_OBJECTS) $(liborcus_test_common_DEPENDENCIES) $(EXTRA_liborcus_test_common_DEPENDENCIES) @rm -f liborcus-test-common$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(liborcus_test_common_OBJECTS) $(liborcus_test_common_LDADD) $(LIBS) liborcus-test-css-document-tree$(EXEEXT): $(liborcus_test_css_document_tree_OBJECTS) $(liborcus_test_css_document_tree_DEPENDENCIES) $(EXTRA_liborcus_test_css_document_tree_DEPENDENCIES) @rm -f liborcus-test-css-document-tree$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(liborcus_test_css_document_tree_OBJECTS) $(liborcus_test_css_document_tree_LDADD) $(LIBS) liborcus-test-format-detection$(EXEEXT): $(liborcus_test_format_detection_OBJECTS) $(liborcus_test_format_detection_DEPENDENCIES) $(EXTRA_liborcus_test_format_detection_DEPENDENCIES) @rm -f liborcus-test-format-detection$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(liborcus_test_format_detection_OBJECTS) $(liborcus_test_format_detection_LDADD) $(LIBS) liborcus-test-xml-map-tree$(EXEEXT): $(liborcus_test_xml_map_tree_OBJECTS) $(liborcus_test_xml_map_tree_DEPENDENCIES) $(EXTRA_liborcus_test_xml_map_tree_DEPENDENCIES) @rm -f liborcus-test-xml-map-tree$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(liborcus_test_xml_map_tree_OBJECTS) $(liborcus_test_xml_map_tree_LDADD) $(LIBS) liborcus-test-xml-structure-tree$(EXEEXT): $(liborcus_test_xml_structure_tree_OBJECTS) $(liborcus_test_xml_structure_tree_DEPENDENCIES) $(EXTRA_liborcus_test_xml_structure_tree_DEPENDENCIES) @rm -f liborcus-test-xml-structure-tree$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(liborcus_test_xml_structure_tree_OBJECTS) $(liborcus_test_xml_structure_tree_LDADD) $(LIBS) orcus-gnumeric-helper-test$(EXEEXT): $(orcus_gnumeric_helper_test_OBJECTS) $(orcus_gnumeric_helper_test_DEPENDENCIES) $(EXTRA_orcus_gnumeric_helper_test_DEPENDENCIES) @rm -f orcus-gnumeric-helper-test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_gnumeric_helper_test_OBJECTS) $(orcus_gnumeric_helper_test_LDADD) $(LIBS) orcus-gnumeric-sheet-context-test$(EXEEXT): $(orcus_gnumeric_sheet_context_test_OBJECTS) $(orcus_gnumeric_sheet_context_test_DEPENDENCIES) $(EXTRA_orcus_gnumeric_sheet_context_test_DEPENDENCIES) @rm -f orcus-gnumeric-sheet-context-test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_gnumeric_sheet_context_test_OBJECTS) $(orcus_gnumeric_sheet_context_test_LDADD) $(LIBS) orcus-xlsx-sheet-context-test$(EXEEXT): $(orcus_xlsx_sheet_context_test_OBJECTS) $(orcus_xlsx_sheet_context_test_DEPENDENCIES) $(EXTRA_orcus_xlsx_sheet_context_test_DEPENDENCIES) @rm -f orcus-xlsx-sheet-context-test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_xlsx_sheet_context_test_OBJECTS) $(orcus_xlsx_sheet_context_test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/css_document_tree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/css_document_tree_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format_detection_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnumeric_cell_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnumeric_cell_context_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnumeric_namespace_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnumeric_tokens.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-config.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_document_tree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_selector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-detection_result.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-dom_tree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-format_detection.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-global.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-interface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-measurement.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_para_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_tokens.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_session_data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_global.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_reader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_csv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_ods.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xml.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-session_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_global.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mock_spreadsheet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/odf_namespace_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_helper_test-gnumeric_helper_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_cell_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_helper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_tokens.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-mock_spreadsheet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-odf_namespace_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-session_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-spreadsheet_interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric_sheet_context_test-xml_context_base.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-mock_spreadsheet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_namespace_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_schemas.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_tokens.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-session_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-spreadsheet_interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_autofilter_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_helper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_session_data.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_base.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spreadsheet_interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_context_base.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_map_tree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_map_tree_test.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< liborcus_@ORCUS_API_VERSION@_la-config.lo: config.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-config.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-config.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-config.lo `test -f 'config.cpp' || echo '$(srcdir)/'`config.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-config.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-config.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='config.cpp' object='liborcus_@ORCUS_API_VERSION@_la-config.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-config.lo `test -f 'config.cpp' || echo '$(srcdir)/'`config.cpp liborcus_@ORCUS_API_VERSION@_la-css_document_tree.lo: css_document_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-css_document_tree.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_document_tree.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-css_document_tree.lo `test -f 'css_document_tree.cpp' || echo '$(srcdir)/'`css_document_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_document_tree.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_document_tree.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='css_document_tree.cpp' object='liborcus_@ORCUS_API_VERSION@_la-css_document_tree.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-css_document_tree.lo `test -f 'css_document_tree.cpp' || echo '$(srcdir)/'`css_document_tree.cpp liborcus_@ORCUS_API_VERSION@_la-css_selector.lo: css_selector.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-css_selector.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_selector.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-css_selector.lo `test -f 'css_selector.cpp' || echo '$(srcdir)/'`css_selector.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_selector.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-css_selector.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='css_selector.cpp' object='liborcus_@ORCUS_API_VERSION@_la-css_selector.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-css_selector.lo `test -f 'css_selector.cpp' || echo '$(srcdir)/'`css_selector.cpp liborcus_@ORCUS_API_VERSION@_la-detection_result.lo: detection_result.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-detection_result.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-detection_result.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-detection_result.lo `test -f 'detection_result.cpp' || echo '$(srcdir)/'`detection_result.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-detection_result.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-detection_result.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='detection_result.cpp' object='liborcus_@ORCUS_API_VERSION@_la-detection_result.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-detection_result.lo `test -f 'detection_result.cpp' || echo '$(srcdir)/'`detection_result.cpp liborcus_@ORCUS_API_VERSION@_la-dom_tree.lo: dom_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-dom_tree.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-dom_tree.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-dom_tree.lo `test -f 'dom_tree.cpp' || echo '$(srcdir)/'`dom_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-dom_tree.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-dom_tree.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_tree.cpp' object='liborcus_@ORCUS_API_VERSION@_la-dom_tree.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-dom_tree.lo `test -f 'dom_tree.cpp' || echo '$(srcdir)/'`dom_tree.cpp liborcus_@ORCUS_API_VERSION@_la-format_detection.lo: format_detection.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-format_detection.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-format_detection.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-format_detection.lo `test -f 'format_detection.cpp' || echo '$(srcdir)/'`format_detection.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-format_detection.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-format_detection.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='format_detection.cpp' object='liborcus_@ORCUS_API_VERSION@_la-format_detection.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-format_detection.lo `test -f 'format_detection.cpp' || echo '$(srcdir)/'`format_detection.cpp liborcus_@ORCUS_API_VERSION@_la-global.lo: global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-global.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-global.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-global.lo `test -f 'global.cpp' || echo '$(srcdir)/'`global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-global.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-global.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='global.cpp' object='liborcus_@ORCUS_API_VERSION@_la-global.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-global.lo `test -f 'global.cpp' || echo '$(srcdir)/'`global.cpp liborcus_@ORCUS_API_VERSION@_la-interface.lo: interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-interface.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-interface.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-interface.lo `test -f 'interface.cpp' || echo '$(srcdir)/'`interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-interface.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-interface.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='interface.cpp' object='liborcus_@ORCUS_API_VERSION@_la-interface.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-interface.lo `test -f 'interface.cpp' || echo '$(srcdir)/'`interface.cpp liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.lo: spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.lo `test -f 'spreadsheet_interface.cpp' || echo '$(srcdir)/'`spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='spreadsheet_interface.cpp' object='liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-spreadsheet_interface.lo `test -f 'spreadsheet_interface.cpp' || echo '$(srcdir)/'`spreadsheet_interface.cpp liborcus_@ORCUS_API_VERSION@_la-orcus_csv.lo: orcus_csv.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-orcus_csv.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_csv.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_csv.lo `test -f 'orcus_csv.cpp' || echo '$(srcdir)/'`orcus_csv.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_csv.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_csv.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_csv.cpp' object='liborcus_@ORCUS_API_VERSION@_la-orcus_csv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_csv.lo `test -f 'orcus_csv.cpp' || echo '$(srcdir)/'`orcus_csv.cpp liborcus_@ORCUS_API_VERSION@_la-orcus_xml.lo: orcus_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-orcus_xml.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xml.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_xml.lo `test -f 'orcus_xml.cpp' || echo '$(srcdir)/'`orcus_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xml.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xml.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xml.cpp' object='liborcus_@ORCUS_API_VERSION@_la-orcus_xml.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_xml.lo `test -f 'orcus_xml.cpp' || echo '$(srcdir)/'`orcus_xml.cpp liborcus_@ORCUS_API_VERSION@_la-measurement.lo: measurement.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-measurement.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-measurement.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-measurement.lo `test -f 'measurement.cpp' || echo '$(srcdir)/'`measurement.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-measurement.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-measurement.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='measurement.cpp' object='liborcus_@ORCUS_API_VERSION@_la-measurement.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-measurement.lo `test -f 'measurement.cpp' || echo '$(srcdir)/'`measurement.cpp liborcus_@ORCUS_API_VERSION@_la-xml_context_base.lo: xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xml_context_base.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_base.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xml_context_base.lo `test -f 'xml_context_base.cpp' || echo '$(srcdir)/'`xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_base.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_base.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_base.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xml_context_base.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xml_context_base.lo `test -f 'xml_context_base.cpp' || echo '$(srcdir)/'`xml_context_base.cpp liborcus_@ORCUS_API_VERSION@_la-xml_context_global.lo: xml_context_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xml_context_global.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_global.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xml_context_global.lo `test -f 'xml_context_global.cpp' || echo '$(srcdir)/'`xml_context_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_global.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_context_global.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_global.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xml_context_global.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xml_context_global.lo `test -f 'xml_context_global.cpp' || echo '$(srcdir)/'`xml_context_global.cpp liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.lo: xml_map_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.lo `test -f 'xml_map_tree.cpp' || echo '$(srcdir)/'`xml_map_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_map_tree.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xml_map_tree.lo `test -f 'xml_map_tree.cpp' || echo '$(srcdir)/'`xml_map_tree.cpp liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.lo: xml_stream_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.lo `test -f 'xml_stream_handler.cpp' || echo '$(srcdir)/'`xml_stream_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_stream_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xml_stream_handler.lo `test -f 'xml_stream_handler.cpp' || echo '$(srcdir)/'`xml_stream_handler.cpp liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.lo: xml_stream_parser.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.lo `test -f 'xml_stream_parser.cpp' || echo '$(srcdir)/'`xml_stream_parser.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_stream_parser.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xml_stream_parser.lo `test -f 'xml_stream_parser.cpp' || echo '$(srcdir)/'`xml_stream_parser.cpp liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.lo: xml_simple_stream_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.lo `test -f 'xml_simple_stream_handler.cpp' || echo '$(srcdir)/'`xml_simple_stream_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_simple_stream_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xml_simple_stream_handler.lo `test -f 'xml_simple_stream_handler.cpp' || echo '$(srcdir)/'`xml_simple_stream_handler.cpp liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.lo: xml_structure_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.lo `test -f 'xml_structure_tree.cpp' || echo '$(srcdir)/'`xml_structure_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_structure_tree.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xml_structure_tree.lo `test -f 'xml_structure_tree.cpp' || echo '$(srcdir)/'`xml_structure_tree.cpp liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.lo: ooxml_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.lo `test -f 'ooxml_namespace_types.cpp' || echo '$(srcdir)/'`ooxml_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_namespace_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_namespace_types.lo `test -f 'ooxml_namespace_types.cpp' || echo '$(srcdir)/'`ooxml_namespace_types.cpp liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.lo: odf_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.lo `test -f 'odf_namespace_types.cpp' || echo '$(srcdir)/'`odf_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='odf_namespace_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-odf_namespace_types.lo `test -f 'odf_namespace_types.cpp' || echo '$(srcdir)/'`odf_namespace_types.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.lo: gnumeric_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.lo `test -f 'gnumeric_namespace_types.cpp' || echo '$(srcdir)/'`gnumeric_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_namespace_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_namespace_types.lo `test -f 'gnumeric_namespace_types.cpp' || echo '$(srcdir)/'`gnumeric_namespace_types.cpp liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.lo: xls_xml_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.lo `test -f 'xls_xml_namespace_types.cpp' || echo '$(srcdir)/'`xls_xml_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xls_xml_namespace_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_namespace_types.lo `test -f 'xls_xml_namespace_types.cpp' || echo '$(srcdir)/'`xls_xml_namespace_types.cpp liborcus_@ORCUS_API_VERSION@_la-session_context.lo: session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-session_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-session_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-session_context.lo `test -f 'session_context.cpp' || echo '$(srcdir)/'`session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-session_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-session_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='session_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-session_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-session_context.lo `test -f 'session_context.cpp' || echo '$(srcdir)/'`session_context.cpp liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.lo: spreadsheet_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.lo `test -f 'spreadsheet_types.cpp' || echo '$(srcdir)/'`spreadsheet_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='spreadsheet_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-spreadsheet_types.lo `test -f 'spreadsheet_types.cpp' || echo '$(srcdir)/'`spreadsheet_types.cpp liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.lo: ooxml_content_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.lo `test -f 'ooxml_content_types.cpp' || echo '$(srcdir)/'`ooxml_content_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_content_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_content_types.lo `test -f 'ooxml_content_types.cpp' || echo '$(srcdir)/'`ooxml_content_types.cpp liborcus_@ORCUS_API_VERSION@_la-ooxml_global.lo: ooxml_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ooxml_global.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_global.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_global.lo `test -f 'ooxml_global.cpp' || echo '$(srcdir)/'`ooxml_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_global.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_global.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_global.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ooxml_global.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_global.lo `test -f 'ooxml_global.cpp' || echo '$(srcdir)/'`ooxml_global.cpp liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.lo: ooxml_schemas.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.lo `test -f 'ooxml_schemas.cpp' || echo '$(srcdir)/'`ooxml_schemas.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_schemas.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_schemas.lo `test -f 'ooxml_schemas.cpp' || echo '$(srcdir)/'`ooxml_schemas.cpp liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.lo: ooxml_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.lo `test -f 'ooxml_tokens.cpp' || echo '$(srcdir)/'`ooxml_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_tokens.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_tokens.lo `test -f 'ooxml_tokens.cpp' || echo '$(srcdir)/'`ooxml_tokens.cpp liborcus_@ORCUS_API_VERSION@_la-ooxml_types.lo: ooxml_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ooxml_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_types.lo `test -f 'ooxml_types.cpp' || echo '$(srcdir)/'`ooxml_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ooxml_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ooxml_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ooxml_types.lo `test -f 'ooxml_types.cpp' || echo '$(srcdir)/'`ooxml_types.cpp liborcus_@ORCUS_API_VERSION@_la-opc_context.lo: opc_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-opc_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-opc_context.lo `test -f 'opc_context.cpp' || echo '$(srcdir)/'`opc_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='opc_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-opc_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-opc_context.lo `test -f 'opc_context.cpp' || echo '$(srcdir)/'`opc_context.cpp liborcus_@ORCUS_API_VERSION@_la-opc_reader.lo: opc_reader.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-opc_reader.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_reader.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-opc_reader.lo `test -f 'opc_reader.cpp' || echo '$(srcdir)/'`opc_reader.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_reader.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-opc_reader.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='opc_reader.cpp' object='liborcus_@ORCUS_API_VERSION@_la-opc_reader.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-opc_reader.lo `test -f 'opc_reader.cpp' || echo '$(srcdir)/'`opc_reader.cpp liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.lo: orcus_xlsx.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.lo `test -f 'orcus_xlsx.cpp' || echo '$(srcdir)/'`orcus_xlsx.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xlsx.cpp' object='liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_xlsx.lo `test -f 'orcus_xlsx.cpp' || echo '$(srcdir)/'`orcus_xlsx.cpp liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.lo: orcus_import_xlsx.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.lo `test -f 'orcus_import_xlsx.cpp' || echo '$(srcdir)/'`orcus_import_xlsx.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_import_xlsx.cpp' object='liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_import_xlsx.lo `test -f 'orcus_import_xlsx.cpp' || echo '$(srcdir)/'`orcus_import_xlsx.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_context.lo: xlsx_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_context.lo `test -f 'xlsx_context.cpp' || echo '$(srcdir)/'`xlsx_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_context.lo `test -f 'xlsx_context.cpp' || echo '$(srcdir)/'`xlsx_context.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.lo: xlsx_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.lo `test -f 'xlsx_handler.cpp' || echo '$(srcdir)/'`xlsx_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_handler.lo `test -f 'xlsx_handler.cpp' || echo '$(srcdir)/'`xlsx_handler.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.lo: xlsx_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.lo `test -f 'xlsx_helper.cpp' || echo '$(srcdir)/'`xlsx_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_helper.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_helper.lo `test -f 'xlsx_helper.cpp' || echo '$(srcdir)/'`xlsx_helper.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.lo: xlsx_session_data.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.lo `test -f 'xlsx_session_data.cpp' || echo '$(srcdir)/'`xlsx_session_data.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_session_data.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_session_data.lo `test -f 'xlsx_session_data.cpp' || echo '$(srcdir)/'`xlsx_session_data.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.lo: xlsx_revision_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.lo `test -f 'xlsx_revision_context.cpp' || echo '$(srcdir)/'`xlsx_revision_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_revision_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_revision_context.lo `test -f 'xlsx_revision_context.cpp' || echo '$(srcdir)/'`xlsx_revision_context.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.lo: xlsx_pivot_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.lo `test -f 'xlsx_pivot_context.cpp' || echo '$(srcdir)/'`xlsx_pivot_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_pivot_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_pivot_context.lo `test -f 'xlsx_pivot_context.cpp' || echo '$(srcdir)/'`xlsx_pivot_context.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.lo: xlsx_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.lo `test -f 'xlsx_sheet_context.cpp' || echo '$(srcdir)/'`xlsx_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_sheet_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_sheet_context.lo `test -f 'xlsx_sheet_context.cpp' || echo '$(srcdir)/'`xlsx_sheet_context.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.lo: xlsx_conditional_format_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.lo `test -f 'xlsx_conditional_format_context.cpp' || echo '$(srcdir)/'`xlsx_conditional_format_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_conditional_format_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_conditional_format_context.lo `test -f 'xlsx_conditional_format_context.cpp' || echo '$(srcdir)/'`xlsx_conditional_format_context.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.lo: xlsx_table_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.lo `test -f 'xlsx_table_context.cpp' || echo '$(srcdir)/'`xlsx_table_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_table_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_table_context.lo `test -f 'xlsx_table_context.cpp' || echo '$(srcdir)/'`xlsx_table_context.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.lo: xlsx_autofilter_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.lo `test -f 'xlsx_autofilter_context.cpp' || echo '$(srcdir)/'`xlsx_autofilter_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_autofilter_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_autofilter_context.lo `test -f 'xlsx_autofilter_context.cpp' || echo '$(srcdir)/'`xlsx_autofilter_context.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_types.lo: xlsx_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_types.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_types.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_types.lo `test -f 'xlsx_types.cpp' || echo '$(srcdir)/'`xlsx_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_types.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_types.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_types.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_types.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_types.lo `test -f 'xlsx_types.cpp' || echo '$(srcdir)/'`xlsx_types.cpp liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.lo: xlsx_workbook_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.lo `test -f 'xlsx_workbook_context.cpp' || echo '$(srcdir)/'`xlsx_workbook_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_workbook_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xlsx_workbook_context.lo `test -f 'xlsx_workbook_context.cpp' || echo '$(srcdir)/'`xlsx_workbook_context.cpp liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.lo: xls_xml_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.lo `test -f 'xls_xml_tokens.cpp' || echo '$(srcdir)/'`xls_xml_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xls_xml_tokens.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_tokens.lo `test -f 'xls_xml_tokens.cpp' || echo '$(srcdir)/'`xls_xml_tokens.cpp liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.lo: orcus_xls_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.lo `test -f 'orcus_xls_xml.cpp' || echo '$(srcdir)/'`orcus_xls_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xls_xml.cpp' object='liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_xls_xml.lo `test -f 'orcus_xls_xml.cpp' || echo '$(srcdir)/'`orcus_xls_xml.cpp liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.lo: xls_xml_detection_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.lo `test -f 'xls_xml_detection_handler.cpp' || echo '$(srcdir)/'`xls_xml_detection_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xls_xml_detection_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_detection_handler.lo `test -f 'xls_xml_detection_handler.cpp' || echo '$(srcdir)/'`xls_xml_detection_handler.cpp liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.lo: xls_xml_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.lo `test -f 'xls_xml_handler.cpp' || echo '$(srcdir)/'`xls_xml_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xls_xml_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_handler.lo `test -f 'xls_xml_handler.cpp' || echo '$(srcdir)/'`xls_xml_handler.cpp liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.lo: xls_xml_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.lo `test -f 'xls_xml_context.cpp' || echo '$(srcdir)/'`xls_xml_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xls_xml_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-xls_xml_context.lo `test -f 'xls_xml_context.cpp' || echo '$(srcdir)/'`xls_xml_context.cpp liborcus_@ORCUS_API_VERSION@_la-odf_para_context.lo: odf_para_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-odf_para_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_para_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-odf_para_context.lo `test -f 'odf_para_context.cpp' || echo '$(srcdir)/'`odf_para_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_para_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_para_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='odf_para_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-odf_para_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-odf_para_context.lo `test -f 'odf_para_context.cpp' || echo '$(srcdir)/'`odf_para_context.cpp liborcus_@ORCUS_API_VERSION@_la-odf_styles.lo: odf_styles.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-odf_styles.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-odf_styles.lo `test -f 'odf_styles.cpp' || echo '$(srcdir)/'`odf_styles.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='odf_styles.cpp' object='liborcus_@ORCUS_API_VERSION@_la-odf_styles.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-odf_styles.lo `test -f 'odf_styles.cpp' || echo '$(srcdir)/'`odf_styles.cpp liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.lo: odf_styles_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.lo `test -f 'odf_styles_context.cpp' || echo '$(srcdir)/'`odf_styles_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='odf_styles_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-odf_styles_context.lo `test -f 'odf_styles_context.cpp' || echo '$(srcdir)/'`odf_styles_context.cpp liborcus_@ORCUS_API_VERSION@_la-odf_tokens.lo: odf_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-odf_tokens.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_tokens.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-odf_tokens.lo `test -f 'odf_tokens.cpp' || echo '$(srcdir)/'`odf_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_tokens.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-odf_tokens.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='odf_tokens.cpp' object='liborcus_@ORCUS_API_VERSION@_la-odf_tokens.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-odf_tokens.lo `test -f 'odf_tokens.cpp' || echo '$(srcdir)/'`odf_tokens.cpp liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.lo: ods_content_xml_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.lo `test -f 'ods_content_xml_context.cpp' || echo '$(srcdir)/'`ods_content_xml_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ods_content_xml_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_context.lo `test -f 'ods_content_xml_context.cpp' || echo '$(srcdir)/'`ods_content_xml_context.cpp liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.lo: ods_content_xml_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.lo `test -f 'ods_content_xml_handler.cpp' || echo '$(srcdir)/'`ods_content_xml_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ods_content_xml_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ods_content_xml_handler.lo `test -f 'ods_content_xml_handler.cpp' || echo '$(srcdir)/'`ods_content_xml_handler.cpp liborcus_@ORCUS_API_VERSION@_la-ods_session_data.lo: ods_session_data.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-ods_session_data.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_session_data.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-ods_session_data.lo `test -f 'ods_session_data.cpp' || echo '$(srcdir)/'`ods_session_data.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_session_data.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-ods_session_data.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ods_session_data.cpp' object='liborcus_@ORCUS_API_VERSION@_la-ods_session_data.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-ods_session_data.lo `test -f 'ods_session_data.cpp' || echo '$(srcdir)/'`ods_session_data.cpp liborcus_@ORCUS_API_VERSION@_la-orcus_ods.lo: orcus_ods.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-orcus_ods.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_ods.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_ods.lo `test -f 'orcus_ods.cpp' || echo '$(srcdir)/'`orcus_ods.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_ods.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_ods.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_ods.cpp' object='liborcus_@ORCUS_API_VERSION@_la-orcus_ods.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_ods.lo `test -f 'orcus_ods.cpp' || echo '$(srcdir)/'`orcus_ods.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.lo: gnumeric_detection_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.lo `test -f 'gnumeric_detection_handler.cpp' || echo '$(srcdir)/'`gnumeric_detection_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_detection_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_detection_handler.lo `test -f 'gnumeric_detection_handler.cpp' || echo '$(srcdir)/'`gnumeric_detection_handler.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.lo: gnumeric_cell_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.lo `test -f 'gnumeric_cell_context.cpp' || echo '$(srcdir)/'`gnumeric_cell_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_cell_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_cell_context.lo `test -f 'gnumeric_cell_context.cpp' || echo '$(srcdir)/'`gnumeric_cell_context.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.lo: gnumeric_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.lo `test -f 'gnumeric_context.cpp' || echo '$(srcdir)/'`gnumeric_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_context.lo `test -f 'gnumeric_context.cpp' || echo '$(srcdir)/'`gnumeric_context.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.lo: gnumeric_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.lo `test -f 'gnumeric_handler.cpp' || echo '$(srcdir)/'`gnumeric_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_handler.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_handler.lo `test -f 'gnumeric_handler.cpp' || echo '$(srcdir)/'`gnumeric_handler.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.lo: gnumeric_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.lo `test -f 'gnumeric_helper.cpp' || echo '$(srcdir)/'`gnumeric_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_helper.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_helper.lo `test -f 'gnumeric_helper.cpp' || echo '$(srcdir)/'`gnumeric_helper.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.lo: gnumeric_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.lo `test -f 'gnumeric_sheet_context.cpp' || echo '$(srcdir)/'`gnumeric_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_sheet_context.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_sheet_context.lo `test -f 'gnumeric_sheet_context.cpp' || echo '$(srcdir)/'`gnumeric_sheet_context.cpp liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.lo: gnumeric_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.lo `test -f 'gnumeric_tokens.cpp' || echo '$(srcdir)/'`gnumeric_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_tokens.cpp' object='liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-gnumeric_tokens.lo `test -f 'gnumeric_tokens.cpp' || echo '$(srcdir)/'`gnumeric_tokens.cpp liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.lo: orcus_gnumeric.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -MT liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.lo -MD -MP -MF $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.Tpo -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.lo `test -f 'orcus_gnumeric.cpp' || echo '$(srcdir)/'`orcus_gnumeric.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.Tpo $(DEPDIR)/liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_gnumeric.cpp' object='liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_@ORCUS_API_VERSION@_la-orcus_gnumeric.lo `test -f 'orcus_gnumeric.cpp' || echo '$(srcdir)/'`orcus_gnumeric.cpp liborcus_test_xml_structure_tree-xml_structure_tree.o: xml_structure_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_test_xml_structure_tree-xml_structure_tree.o -MD -MP -MF $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree.Tpo -c -o liborcus_test_xml_structure_tree-xml_structure_tree.o `test -f 'xml_structure_tree.cpp' || echo '$(srcdir)/'`xml_structure_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree.Tpo $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_structure_tree.cpp' object='liborcus_test_xml_structure_tree-xml_structure_tree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_test_xml_structure_tree-xml_structure_tree.o `test -f 'xml_structure_tree.cpp' || echo '$(srcdir)/'`xml_structure_tree.cpp liborcus_test_xml_structure_tree-xml_structure_tree.obj: xml_structure_tree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_test_xml_structure_tree-xml_structure_tree.obj -MD -MP -MF $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree.Tpo -c -o liborcus_test_xml_structure_tree-xml_structure_tree.obj `if test -f 'xml_structure_tree.cpp'; then $(CYGPATH_W) 'xml_structure_tree.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_structure_tree.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree.Tpo $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_structure_tree.cpp' object='liborcus_test_xml_structure_tree-xml_structure_tree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_test_xml_structure_tree-xml_structure_tree.obj `if test -f 'xml_structure_tree.cpp'; then $(CYGPATH_W) 'xml_structure_tree.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_structure_tree.cpp'; fi` liborcus_test_xml_structure_tree-xml_structure_tree_test.o: xml_structure_tree_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_test_xml_structure_tree-xml_structure_tree_test.o -MD -MP -MF $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree_test.Tpo -c -o liborcus_test_xml_structure_tree-xml_structure_tree_test.o `test -f 'xml_structure_tree_test.cpp' || echo '$(srcdir)/'`xml_structure_tree_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree_test.Tpo $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_structure_tree_test.cpp' object='liborcus_test_xml_structure_tree-xml_structure_tree_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_test_xml_structure_tree-xml_structure_tree_test.o `test -f 'xml_structure_tree_test.cpp' || echo '$(srcdir)/'`xml_structure_tree_test.cpp liborcus_test_xml_structure_tree-xml_structure_tree_test.obj: xml_structure_tree_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_test_xml_structure_tree-xml_structure_tree_test.obj -MD -MP -MF $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree_test.Tpo -c -o liborcus_test_xml_structure_tree-xml_structure_tree_test.obj `if test -f 'xml_structure_tree_test.cpp'; then $(CYGPATH_W) 'xml_structure_tree_test.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_structure_tree_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree_test.Tpo $(DEPDIR)/liborcus_test_xml_structure_tree-xml_structure_tree_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_structure_tree_test.cpp' object='liborcus_test_xml_structure_tree-xml_structure_tree_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_test_xml_structure_tree_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_test_xml_structure_tree-xml_structure_tree_test.obj `if test -f 'xml_structure_tree_test.cpp'; then $(CYGPATH_W) 'xml_structure_tree_test.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_structure_tree_test.cpp'; fi` orcus_gnumeric_helper_test-gnumeric_helper_test.o: gnumeric_helper_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_helper_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_helper_test-gnumeric_helper_test.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_helper_test-gnumeric_helper_test.Tpo -c -o orcus_gnumeric_helper_test-gnumeric_helper_test.o `test -f 'gnumeric_helper_test.cpp' || echo '$(srcdir)/'`gnumeric_helper_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_helper_test-gnumeric_helper_test.Tpo $(DEPDIR)/orcus_gnumeric_helper_test-gnumeric_helper_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_helper_test.cpp' object='orcus_gnumeric_helper_test-gnumeric_helper_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_helper_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_helper_test-gnumeric_helper_test.o `test -f 'gnumeric_helper_test.cpp' || echo '$(srcdir)/'`gnumeric_helper_test.cpp orcus_gnumeric_helper_test-gnumeric_helper_test.obj: gnumeric_helper_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_helper_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_helper_test-gnumeric_helper_test.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_helper_test-gnumeric_helper_test.Tpo -c -o orcus_gnumeric_helper_test-gnumeric_helper_test.obj `if test -f 'gnumeric_helper_test.cpp'; then $(CYGPATH_W) 'gnumeric_helper_test.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_helper_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_helper_test-gnumeric_helper_test.Tpo $(DEPDIR)/orcus_gnumeric_helper_test-gnumeric_helper_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_helper_test.cpp' object='orcus_gnumeric_helper_test-gnumeric_helper_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_helper_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_helper_test-gnumeric_helper_test.obj `if test -f 'gnumeric_helper_test.cpp'; then $(CYGPATH_W) 'gnumeric_helper_test.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_helper_test.cpp'; fi` orcus_gnumeric_sheet_context_test-session_context.o: session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-session_context.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-session_context.Tpo -c -o orcus_gnumeric_sheet_context_test-session_context.o `test -f 'session_context.cpp' || echo '$(srcdir)/'`session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-session_context.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-session_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='session_context.cpp' object='orcus_gnumeric_sheet_context_test-session_context.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-session_context.o `test -f 'session_context.cpp' || echo '$(srcdir)/'`session_context.cpp orcus_gnumeric_sheet_context_test-session_context.obj: session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-session_context.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-session_context.Tpo -c -o orcus_gnumeric_sheet_context_test-session_context.obj `if test -f 'session_context.cpp'; then $(CYGPATH_W) 'session_context.cpp'; else $(CYGPATH_W) '$(srcdir)/session_context.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-session_context.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-session_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='session_context.cpp' object='orcus_gnumeric_sheet_context_test-session_context.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-session_context.obj `if test -f 'session_context.cpp'; then $(CYGPATH_W) 'session_context.cpp'; else $(CYGPATH_W) '$(srcdir)/session_context.cpp'; fi` orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.o: gnumeric_sheet_context_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.o `test -f 'gnumeric_sheet_context_test.cpp' || echo '$(srcdir)/'`gnumeric_sheet_context_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_sheet_context_test.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.o `test -f 'gnumeric_sheet_context_test.cpp' || echo '$(srcdir)/'`gnumeric_sheet_context_test.cpp orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.obj: gnumeric_sheet_context_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.obj `if test -f 'gnumeric_sheet_context_test.cpp'; then $(CYGPATH_W) 'gnumeric_sheet_context_test.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_sheet_context_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_sheet_context_test.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context_test.obj `if test -f 'gnumeric_sheet_context_test.cpp'; then $(CYGPATH_W) 'gnumeric_sheet_context_test.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_sheet_context_test.cpp'; fi` orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.o: gnumeric_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.o `test -f 'gnumeric_sheet_context.cpp' || echo '$(srcdir)/'`gnumeric_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_sheet_context.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.o `test -f 'gnumeric_sheet_context.cpp' || echo '$(srcdir)/'`gnumeric_sheet_context.cpp orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.obj: gnumeric_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.obj `if test -f 'gnumeric_sheet_context.cpp'; then $(CYGPATH_W) 'gnumeric_sheet_context.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_sheet_context.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_sheet_context.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_sheet_context.obj `if test -f 'gnumeric_sheet_context.cpp'; then $(CYGPATH_W) 'gnumeric_sheet_context.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_sheet_context.cpp'; fi` orcus_gnumeric_sheet_context_test-gnumeric_cell_context.o: gnumeric_cell_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_cell_context.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_cell_context.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_cell_context.o `test -f 'gnumeric_cell_context.cpp' || echo '$(srcdir)/'`gnumeric_cell_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_cell_context.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_cell_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_cell_context.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_cell_context.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_cell_context.o `test -f 'gnumeric_cell_context.cpp' || echo '$(srcdir)/'`gnumeric_cell_context.cpp orcus_gnumeric_sheet_context_test-gnumeric_cell_context.obj: gnumeric_cell_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_cell_context.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_cell_context.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_cell_context.obj `if test -f 'gnumeric_cell_context.cpp'; then $(CYGPATH_W) 'gnumeric_cell_context.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_cell_context.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_cell_context.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_cell_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_cell_context.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_cell_context.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_cell_context.obj `if test -f 'gnumeric_cell_context.cpp'; then $(CYGPATH_W) 'gnumeric_cell_context.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_cell_context.cpp'; fi` orcus_gnumeric_sheet_context_test-gnumeric_helper.o: gnumeric_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_helper.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_helper.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_helper.o `test -f 'gnumeric_helper.cpp' || echo '$(srcdir)/'`gnumeric_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_helper.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_helper.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_helper.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_helper.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_helper.o `test -f 'gnumeric_helper.cpp' || echo '$(srcdir)/'`gnumeric_helper.cpp orcus_gnumeric_sheet_context_test-gnumeric_helper.obj: gnumeric_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_helper.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_helper.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_helper.obj `if test -f 'gnumeric_helper.cpp'; then $(CYGPATH_W) 'gnumeric_helper.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_helper.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_helper.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_helper.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_helper.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_helper.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_helper.obj `if test -f 'gnumeric_helper.cpp'; then $(CYGPATH_W) 'gnumeric_helper.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_helper.cpp'; fi` orcus_gnumeric_sheet_context_test-xml_context_base.o: xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-xml_context_base.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-xml_context_base.Tpo -c -o orcus_gnumeric_sheet_context_test-xml_context_base.o `test -f 'xml_context_base.cpp' || echo '$(srcdir)/'`xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-xml_context_base.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-xml_context_base.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_base.cpp' object='orcus_gnumeric_sheet_context_test-xml_context_base.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-xml_context_base.o `test -f 'xml_context_base.cpp' || echo '$(srcdir)/'`xml_context_base.cpp orcus_gnumeric_sheet_context_test-xml_context_base.obj: xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-xml_context_base.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-xml_context_base.Tpo -c -o orcus_gnumeric_sheet_context_test-xml_context_base.obj `if test -f 'xml_context_base.cpp'; then $(CYGPATH_W) 'xml_context_base.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_context_base.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-xml_context_base.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-xml_context_base.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_base.cpp' object='orcus_gnumeric_sheet_context_test-xml_context_base.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-xml_context_base.obj `if test -f 'xml_context_base.cpp'; then $(CYGPATH_W) 'xml_context_base.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_context_base.cpp'; fi` orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.o: gnumeric_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.o `test -f 'gnumeric_namespace_types.cpp' || echo '$(srcdir)/'`gnumeric_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_namespace_types.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.o `test -f 'gnumeric_namespace_types.cpp' || echo '$(srcdir)/'`gnumeric_namespace_types.cpp orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.obj: gnumeric_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.obj `if test -f 'gnumeric_namespace_types.cpp'; then $(CYGPATH_W) 'gnumeric_namespace_types.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_namespace_types.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_namespace_types.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_namespace_types.obj `if test -f 'gnumeric_namespace_types.cpp'; then $(CYGPATH_W) 'gnumeric_namespace_types.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_namespace_types.cpp'; fi` orcus_gnumeric_sheet_context_test-gnumeric_tokens.o: gnumeric_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_tokens.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_tokens.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_tokens.o `test -f 'gnumeric_tokens.cpp' || echo '$(srcdir)/'`gnumeric_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_tokens.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_tokens.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_tokens.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_tokens.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_tokens.o `test -f 'gnumeric_tokens.cpp' || echo '$(srcdir)/'`gnumeric_tokens.cpp orcus_gnumeric_sheet_context_test-gnumeric_tokens.obj: gnumeric_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-gnumeric_tokens.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_tokens.Tpo -c -o orcus_gnumeric_sheet_context_test-gnumeric_tokens.obj `if test -f 'gnumeric_tokens.cpp'; then $(CYGPATH_W) 'gnumeric_tokens.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_tokens.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_tokens.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-gnumeric_tokens.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gnumeric_tokens.cpp' object='orcus_gnumeric_sheet_context_test-gnumeric_tokens.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-gnumeric_tokens.obj `if test -f 'gnumeric_tokens.cpp'; then $(CYGPATH_W) 'gnumeric_tokens.cpp'; else $(CYGPATH_W) '$(srcdir)/gnumeric_tokens.cpp'; fi` orcus_gnumeric_sheet_context_test-odf_namespace_types.o: odf_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-odf_namespace_types.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-odf_namespace_types.Tpo -c -o orcus_gnumeric_sheet_context_test-odf_namespace_types.o `test -f 'odf_namespace_types.cpp' || echo '$(srcdir)/'`odf_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-odf_namespace_types.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-odf_namespace_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='odf_namespace_types.cpp' object='orcus_gnumeric_sheet_context_test-odf_namespace_types.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-odf_namespace_types.o `test -f 'odf_namespace_types.cpp' || echo '$(srcdir)/'`odf_namespace_types.cpp orcus_gnumeric_sheet_context_test-odf_namespace_types.obj: odf_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-odf_namespace_types.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-odf_namespace_types.Tpo -c -o orcus_gnumeric_sheet_context_test-odf_namespace_types.obj `if test -f 'odf_namespace_types.cpp'; then $(CYGPATH_W) 'odf_namespace_types.cpp'; else $(CYGPATH_W) '$(srcdir)/odf_namespace_types.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-odf_namespace_types.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-odf_namespace_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='odf_namespace_types.cpp' object='orcus_gnumeric_sheet_context_test-odf_namespace_types.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-odf_namespace_types.obj `if test -f 'odf_namespace_types.cpp'; then $(CYGPATH_W) 'odf_namespace_types.cpp'; else $(CYGPATH_W) '$(srcdir)/odf_namespace_types.cpp'; fi` orcus_gnumeric_sheet_context_test-spreadsheet_interface.o: spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-spreadsheet_interface.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-spreadsheet_interface.Tpo -c -o orcus_gnumeric_sheet_context_test-spreadsheet_interface.o `test -f 'spreadsheet_interface.cpp' || echo '$(srcdir)/'`spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-spreadsheet_interface.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-spreadsheet_interface.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='spreadsheet_interface.cpp' object='orcus_gnumeric_sheet_context_test-spreadsheet_interface.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-spreadsheet_interface.o `test -f 'spreadsheet_interface.cpp' || echo '$(srcdir)/'`spreadsheet_interface.cpp orcus_gnumeric_sheet_context_test-spreadsheet_interface.obj: spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-spreadsheet_interface.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-spreadsheet_interface.Tpo -c -o orcus_gnumeric_sheet_context_test-spreadsheet_interface.obj `if test -f 'spreadsheet_interface.cpp'; then $(CYGPATH_W) 'spreadsheet_interface.cpp'; else $(CYGPATH_W) '$(srcdir)/spreadsheet_interface.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-spreadsheet_interface.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-spreadsheet_interface.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='spreadsheet_interface.cpp' object='orcus_gnumeric_sheet_context_test-spreadsheet_interface.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-spreadsheet_interface.obj `if test -f 'spreadsheet_interface.cpp'; then $(CYGPATH_W) 'spreadsheet_interface.cpp'; else $(CYGPATH_W) '$(srcdir)/spreadsheet_interface.cpp'; fi` orcus_gnumeric_sheet_context_test-mock_spreadsheet.o: mock_spreadsheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-mock_spreadsheet.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-mock_spreadsheet.Tpo -c -o orcus_gnumeric_sheet_context_test-mock_spreadsheet.o `test -f 'mock_spreadsheet.cpp' || echo '$(srcdir)/'`mock_spreadsheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-mock_spreadsheet.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-mock_spreadsheet.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mock_spreadsheet.cpp' object='orcus_gnumeric_sheet_context_test-mock_spreadsheet.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-mock_spreadsheet.o `test -f 'mock_spreadsheet.cpp' || echo '$(srcdir)/'`mock_spreadsheet.cpp orcus_gnumeric_sheet_context_test-mock_spreadsheet.obj: mock_spreadsheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric_sheet_context_test-mock_spreadsheet.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric_sheet_context_test-mock_spreadsheet.Tpo -c -o orcus_gnumeric_sheet_context_test-mock_spreadsheet.obj `if test -f 'mock_spreadsheet.cpp'; then $(CYGPATH_W) 'mock_spreadsheet.cpp'; else $(CYGPATH_W) '$(srcdir)/mock_spreadsheet.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric_sheet_context_test-mock_spreadsheet.Tpo $(DEPDIR)/orcus_gnumeric_sheet_context_test-mock_spreadsheet.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mock_spreadsheet.cpp' object='orcus_gnumeric_sheet_context_test-mock_spreadsheet.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric_sheet_context_test-mock_spreadsheet.obj `if test -f 'mock_spreadsheet.cpp'; then $(CYGPATH_W) 'mock_spreadsheet.cpp'; else $(CYGPATH_W) '$(srcdir)/mock_spreadsheet.cpp'; fi` orcus_xlsx_sheet_context_test-xlsx_session_data.o: xlsx_session_data.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_session_data.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_session_data.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_session_data.o `test -f 'xlsx_session_data.cpp' || echo '$(srcdir)/'`xlsx_session_data.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_session_data.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_session_data.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_session_data.cpp' object='orcus_xlsx_sheet_context_test-xlsx_session_data.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_session_data.o `test -f 'xlsx_session_data.cpp' || echo '$(srcdir)/'`xlsx_session_data.cpp orcus_xlsx_sheet_context_test-xlsx_session_data.obj: xlsx_session_data.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_session_data.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_session_data.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_session_data.obj `if test -f 'xlsx_session_data.cpp'; then $(CYGPATH_W) 'xlsx_session_data.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_session_data.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_session_data.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_session_data.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_session_data.cpp' object='orcus_xlsx_sheet_context_test-xlsx_session_data.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_session_data.obj `if test -f 'xlsx_session_data.cpp'; then $(CYGPATH_W) 'xlsx_session_data.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_session_data.cpp'; fi` orcus_xlsx_sheet_context_test-session_context.o: session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-session_context.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-session_context.Tpo -c -o orcus_xlsx_sheet_context_test-session_context.o `test -f 'session_context.cpp' || echo '$(srcdir)/'`session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-session_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-session_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='session_context.cpp' object='orcus_xlsx_sheet_context_test-session_context.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-session_context.o `test -f 'session_context.cpp' || echo '$(srcdir)/'`session_context.cpp orcus_xlsx_sheet_context_test-session_context.obj: session_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-session_context.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-session_context.Tpo -c -o orcus_xlsx_sheet_context_test-session_context.obj `if test -f 'session_context.cpp'; then $(CYGPATH_W) 'session_context.cpp'; else $(CYGPATH_W) '$(srcdir)/session_context.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-session_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-session_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='session_context.cpp' object='orcus_xlsx_sheet_context_test-session_context.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-session_context.obj `if test -f 'session_context.cpp'; then $(CYGPATH_W) 'session_context.cpp'; else $(CYGPATH_W) '$(srcdir)/session_context.cpp'; fi` orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.o: xlsx_conditional_format_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.o `test -f 'xlsx_conditional_format_context.cpp' || echo '$(srcdir)/'`xlsx_conditional_format_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_conditional_format_context.cpp' object='orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.o `test -f 'xlsx_conditional_format_context.cpp' || echo '$(srcdir)/'`xlsx_conditional_format_context.cpp orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.obj: xlsx_conditional_format_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.obj `if test -f 'xlsx_conditional_format_context.cpp'; then $(CYGPATH_W) 'xlsx_conditional_format_context.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_conditional_format_context.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_conditional_format_context.cpp' object='orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_conditional_format_context.obj `if test -f 'xlsx_conditional_format_context.cpp'; then $(CYGPATH_W) 'xlsx_conditional_format_context.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_conditional_format_context.cpp'; fi` orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.o: xlsx_sheet_context_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.o `test -f 'xlsx_sheet_context_test.cpp' || echo '$(srcdir)/'`xlsx_sheet_context_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_sheet_context_test.cpp' object='orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.o `test -f 'xlsx_sheet_context_test.cpp' || echo '$(srcdir)/'`xlsx_sheet_context_test.cpp orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.obj: xlsx_sheet_context_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.obj `if test -f 'xlsx_sheet_context_test.cpp'; then $(CYGPATH_W) 'xlsx_sheet_context_test.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_sheet_context_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_sheet_context_test.cpp' object='orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context_test.obj `if test -f 'xlsx_sheet_context_test.cpp'; then $(CYGPATH_W) 'xlsx_sheet_context_test.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_sheet_context_test.cpp'; fi` orcus_xlsx_sheet_context_test-xlsx_sheet_context.o: xlsx_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_sheet_context.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context.o `test -f 'xlsx_sheet_context.cpp' || echo '$(srcdir)/'`xlsx_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_sheet_context.cpp' object='orcus_xlsx_sheet_context_test-xlsx_sheet_context.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context.o `test -f 'xlsx_sheet_context.cpp' || echo '$(srcdir)/'`xlsx_sheet_context.cpp orcus_xlsx_sheet_context_test-xlsx_sheet_context.obj: xlsx_sheet_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_sheet_context.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context.obj `if test -f 'xlsx_sheet_context.cpp'; then $(CYGPATH_W) 'xlsx_sheet_context.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_sheet_context.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_sheet_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_sheet_context.cpp' object='orcus_xlsx_sheet_context_test-xlsx_sheet_context.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_sheet_context.obj `if test -f 'xlsx_sheet_context.cpp'; then $(CYGPATH_W) 'xlsx_sheet_context.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_sheet_context.cpp'; fi` orcus_xlsx_sheet_context_test-xlsx_autofilter_context.o: xlsx_autofilter_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_autofilter_context.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_autofilter_context.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_autofilter_context.o `test -f 'xlsx_autofilter_context.cpp' || echo '$(srcdir)/'`xlsx_autofilter_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_autofilter_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_autofilter_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_autofilter_context.cpp' object='orcus_xlsx_sheet_context_test-xlsx_autofilter_context.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_autofilter_context.o `test -f 'xlsx_autofilter_context.cpp' || echo '$(srcdir)/'`xlsx_autofilter_context.cpp orcus_xlsx_sheet_context_test-xlsx_autofilter_context.obj: xlsx_autofilter_context.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_autofilter_context.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_autofilter_context.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_autofilter_context.obj `if test -f 'xlsx_autofilter_context.cpp'; then $(CYGPATH_W) 'xlsx_autofilter_context.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_autofilter_context.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_autofilter_context.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_autofilter_context.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_autofilter_context.cpp' object='orcus_xlsx_sheet_context_test-xlsx_autofilter_context.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_autofilter_context.obj `if test -f 'xlsx_autofilter_context.cpp'; then $(CYGPATH_W) 'xlsx_autofilter_context.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_autofilter_context.cpp'; fi` orcus_xlsx_sheet_context_test-xlsx_helper.o: xlsx_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_helper.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_helper.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_helper.o `test -f 'xlsx_helper.cpp' || echo '$(srcdir)/'`xlsx_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_helper.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_helper.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_helper.cpp' object='orcus_xlsx_sheet_context_test-xlsx_helper.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_helper.o `test -f 'xlsx_helper.cpp' || echo '$(srcdir)/'`xlsx_helper.cpp orcus_xlsx_sheet_context_test-xlsx_helper.obj: xlsx_helper.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_helper.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_helper.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_helper.obj `if test -f 'xlsx_helper.cpp'; then $(CYGPATH_W) 'xlsx_helper.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_helper.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_helper.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_helper.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_helper.cpp' object='orcus_xlsx_sheet_context_test-xlsx_helper.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_helper.obj `if test -f 'xlsx_helper.cpp'; then $(CYGPATH_W) 'xlsx_helper.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_helper.cpp'; fi` orcus_xlsx_sheet_context_test-xlsx_types.o: xlsx_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_types.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_types.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_types.o `test -f 'xlsx_types.cpp' || echo '$(srcdir)/'`xlsx_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_types.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_types.cpp' object='orcus_xlsx_sheet_context_test-xlsx_types.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_types.o `test -f 'xlsx_types.cpp' || echo '$(srcdir)/'`xlsx_types.cpp orcus_xlsx_sheet_context_test-xlsx_types.obj: xlsx_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xlsx_types.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_types.Tpo -c -o orcus_xlsx_sheet_context_test-xlsx_types.obj `if test -f 'xlsx_types.cpp'; then $(CYGPATH_W) 'xlsx_types.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_types.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_types.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xlsx_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xlsx_types.cpp' object='orcus_xlsx_sheet_context_test-xlsx_types.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xlsx_types.obj `if test -f 'xlsx_types.cpp'; then $(CYGPATH_W) 'xlsx_types.cpp'; else $(CYGPATH_W) '$(srcdir)/xlsx_types.cpp'; fi` orcus_xlsx_sheet_context_test-ooxml_global.o: ooxml_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_global.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_global.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_global.o `test -f 'ooxml_global.cpp' || echo '$(srcdir)/'`ooxml_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_global.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_global.cpp' object='orcus_xlsx_sheet_context_test-ooxml_global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_global.o `test -f 'ooxml_global.cpp' || echo '$(srcdir)/'`ooxml_global.cpp orcus_xlsx_sheet_context_test-ooxml_global.obj: ooxml_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_global.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_global.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_global.obj `if test -f 'ooxml_global.cpp'; then $(CYGPATH_W) 'ooxml_global.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_global.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_global.cpp' object='orcus_xlsx_sheet_context_test-ooxml_global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_global.obj `if test -f 'ooxml_global.cpp'; then $(CYGPATH_W) 'ooxml_global.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_global.cpp'; fi` orcus_xlsx_sheet_context_test-ooxml_namespace_types.o: ooxml_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_namespace_types.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_namespace_types.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_namespace_types.o `test -f 'ooxml_namespace_types.cpp' || echo '$(srcdir)/'`ooxml_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_namespace_types.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_namespace_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_namespace_types.cpp' object='orcus_xlsx_sheet_context_test-ooxml_namespace_types.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_namespace_types.o `test -f 'ooxml_namespace_types.cpp' || echo '$(srcdir)/'`ooxml_namespace_types.cpp orcus_xlsx_sheet_context_test-ooxml_namespace_types.obj: ooxml_namespace_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_namespace_types.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_namespace_types.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_namespace_types.obj `if test -f 'ooxml_namespace_types.cpp'; then $(CYGPATH_W) 'ooxml_namespace_types.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_namespace_types.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_namespace_types.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_namespace_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_namespace_types.cpp' object='orcus_xlsx_sheet_context_test-ooxml_namespace_types.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_namespace_types.obj `if test -f 'ooxml_namespace_types.cpp'; then $(CYGPATH_W) 'ooxml_namespace_types.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_namespace_types.cpp'; fi` orcus_xlsx_sheet_context_test-ooxml_tokens.o: ooxml_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_tokens.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_tokens.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_tokens.o `test -f 'ooxml_tokens.cpp' || echo '$(srcdir)/'`ooxml_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_tokens.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_tokens.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_tokens.cpp' object='orcus_xlsx_sheet_context_test-ooxml_tokens.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_tokens.o `test -f 'ooxml_tokens.cpp' || echo '$(srcdir)/'`ooxml_tokens.cpp orcus_xlsx_sheet_context_test-ooxml_tokens.obj: ooxml_tokens.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_tokens.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_tokens.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_tokens.obj `if test -f 'ooxml_tokens.cpp'; then $(CYGPATH_W) 'ooxml_tokens.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_tokens.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_tokens.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_tokens.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_tokens.cpp' object='orcus_xlsx_sheet_context_test-ooxml_tokens.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_tokens.obj `if test -f 'ooxml_tokens.cpp'; then $(CYGPATH_W) 'ooxml_tokens.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_tokens.cpp'; fi` orcus_xlsx_sheet_context_test-ooxml_types.o: ooxml_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_types.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_types.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_types.o `test -f 'ooxml_types.cpp' || echo '$(srcdir)/'`ooxml_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_types.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_types.cpp' object='orcus_xlsx_sheet_context_test-ooxml_types.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_types.o `test -f 'ooxml_types.cpp' || echo '$(srcdir)/'`ooxml_types.cpp orcus_xlsx_sheet_context_test-ooxml_types.obj: ooxml_types.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_types.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_types.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_types.obj `if test -f 'ooxml_types.cpp'; then $(CYGPATH_W) 'ooxml_types.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_types.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_types.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_types.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_types.cpp' object='orcus_xlsx_sheet_context_test-ooxml_types.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_types.obj `if test -f 'ooxml_types.cpp'; then $(CYGPATH_W) 'ooxml_types.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_types.cpp'; fi` orcus_xlsx_sheet_context_test-ooxml_schemas.o: ooxml_schemas.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_schemas.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_schemas.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_schemas.o `test -f 'ooxml_schemas.cpp' || echo '$(srcdir)/'`ooxml_schemas.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_schemas.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_schemas.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_schemas.cpp' object='orcus_xlsx_sheet_context_test-ooxml_schemas.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_schemas.o `test -f 'ooxml_schemas.cpp' || echo '$(srcdir)/'`ooxml_schemas.cpp orcus_xlsx_sheet_context_test-ooxml_schemas.obj: ooxml_schemas.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-ooxml_schemas.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_schemas.Tpo -c -o orcus_xlsx_sheet_context_test-ooxml_schemas.obj `if test -f 'ooxml_schemas.cpp'; then $(CYGPATH_W) 'ooxml_schemas.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_schemas.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_schemas.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-ooxml_schemas.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ooxml_schemas.cpp' object='orcus_xlsx_sheet_context_test-ooxml_schemas.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-ooxml_schemas.obj `if test -f 'ooxml_schemas.cpp'; then $(CYGPATH_W) 'ooxml_schemas.cpp'; else $(CYGPATH_W) '$(srcdir)/ooxml_schemas.cpp'; fi` orcus_xlsx_sheet_context_test-xml_context_base.o: xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xml_context_base.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_base.Tpo -c -o orcus_xlsx_sheet_context_test-xml_context_base.o `test -f 'xml_context_base.cpp' || echo '$(srcdir)/'`xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_base.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_base.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_base.cpp' object='orcus_xlsx_sheet_context_test-xml_context_base.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xml_context_base.o `test -f 'xml_context_base.cpp' || echo '$(srcdir)/'`xml_context_base.cpp orcus_xlsx_sheet_context_test-xml_context_base.obj: xml_context_base.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xml_context_base.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_base.Tpo -c -o orcus_xlsx_sheet_context_test-xml_context_base.obj `if test -f 'xml_context_base.cpp'; then $(CYGPATH_W) 'xml_context_base.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_context_base.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_base.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_base.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_base.cpp' object='orcus_xlsx_sheet_context_test-xml_context_base.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xml_context_base.obj `if test -f 'xml_context_base.cpp'; then $(CYGPATH_W) 'xml_context_base.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_context_base.cpp'; fi` orcus_xlsx_sheet_context_test-xml_context_global.o: xml_context_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xml_context_global.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_global.Tpo -c -o orcus_xlsx_sheet_context_test-xml_context_global.o `test -f 'xml_context_global.cpp' || echo '$(srcdir)/'`xml_context_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_global.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_global.cpp' object='orcus_xlsx_sheet_context_test-xml_context_global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xml_context_global.o `test -f 'xml_context_global.cpp' || echo '$(srcdir)/'`xml_context_global.cpp orcus_xlsx_sheet_context_test-xml_context_global.obj: xml_context_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-xml_context_global.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_global.Tpo -c -o orcus_xlsx_sheet_context_test-xml_context_global.obj `if test -f 'xml_context_global.cpp'; then $(CYGPATH_W) 'xml_context_global.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_context_global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_global.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-xml_context_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_context_global.cpp' object='orcus_xlsx_sheet_context_test-xml_context_global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-xml_context_global.obj `if test -f 'xml_context_global.cpp'; then $(CYGPATH_W) 'xml_context_global.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_context_global.cpp'; fi` orcus_xlsx_sheet_context_test-global.o: global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-global.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-global.Tpo -c -o orcus_xlsx_sheet_context_test-global.o `test -f 'global.cpp' || echo '$(srcdir)/'`global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-global.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='global.cpp' object='orcus_xlsx_sheet_context_test-global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-global.o `test -f 'global.cpp' || echo '$(srcdir)/'`global.cpp orcus_xlsx_sheet_context_test-global.obj: global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-global.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-global.Tpo -c -o orcus_xlsx_sheet_context_test-global.obj `if test -f 'global.cpp'; then $(CYGPATH_W) 'global.cpp'; else $(CYGPATH_W) '$(srcdir)/global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-global.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='global.cpp' object='orcus_xlsx_sheet_context_test-global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-global.obj `if test -f 'global.cpp'; then $(CYGPATH_W) 'global.cpp'; else $(CYGPATH_W) '$(srcdir)/global.cpp'; fi` orcus_xlsx_sheet_context_test-spreadsheet_interface.o: spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-spreadsheet_interface.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-spreadsheet_interface.Tpo -c -o orcus_xlsx_sheet_context_test-spreadsheet_interface.o `test -f 'spreadsheet_interface.cpp' || echo '$(srcdir)/'`spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-spreadsheet_interface.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-spreadsheet_interface.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='spreadsheet_interface.cpp' object='orcus_xlsx_sheet_context_test-spreadsheet_interface.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-spreadsheet_interface.o `test -f 'spreadsheet_interface.cpp' || echo '$(srcdir)/'`spreadsheet_interface.cpp orcus_xlsx_sheet_context_test-spreadsheet_interface.obj: spreadsheet_interface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-spreadsheet_interface.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-spreadsheet_interface.Tpo -c -o orcus_xlsx_sheet_context_test-spreadsheet_interface.obj `if test -f 'spreadsheet_interface.cpp'; then $(CYGPATH_W) 'spreadsheet_interface.cpp'; else $(CYGPATH_W) '$(srcdir)/spreadsheet_interface.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-spreadsheet_interface.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-spreadsheet_interface.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='spreadsheet_interface.cpp' object='orcus_xlsx_sheet_context_test-spreadsheet_interface.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-spreadsheet_interface.obj `if test -f 'spreadsheet_interface.cpp'; then $(CYGPATH_W) 'spreadsheet_interface.cpp'; else $(CYGPATH_W) '$(srcdir)/spreadsheet_interface.cpp'; fi` orcus_xlsx_sheet_context_test-mock_spreadsheet.o: mock_spreadsheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-mock_spreadsheet.o -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-mock_spreadsheet.Tpo -c -o orcus_xlsx_sheet_context_test-mock_spreadsheet.o `test -f 'mock_spreadsheet.cpp' || echo '$(srcdir)/'`mock_spreadsheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-mock_spreadsheet.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-mock_spreadsheet.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mock_spreadsheet.cpp' object='orcus_xlsx_sheet_context_test-mock_spreadsheet.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-mock_spreadsheet.o `test -f 'mock_spreadsheet.cpp' || echo '$(srcdir)/'`mock_spreadsheet.cpp orcus_xlsx_sheet_context_test-mock_spreadsheet.obj: mock_spreadsheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx_sheet_context_test-mock_spreadsheet.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx_sheet_context_test-mock_spreadsheet.Tpo -c -o orcus_xlsx_sheet_context_test-mock_spreadsheet.obj `if test -f 'mock_spreadsheet.cpp'; then $(CYGPATH_W) 'mock_spreadsheet.cpp'; else $(CYGPATH_W) '$(srcdir)/mock_spreadsheet.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx_sheet_context_test-mock_spreadsheet.Tpo $(DEPDIR)/orcus_xlsx_sheet_context_test-mock_spreadsheet.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mock_spreadsheet.cpp' object='orcus_xlsx_sheet_context_test-mock_spreadsheet.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_sheet_context_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx_sheet_context_test-mock_spreadsheet.obj `if test -f 'mock_spreadsheet.cpp'; then $(CYGPATH_W) 'mock_spreadsheet.cpp'; else $(CYGPATH_W) '$(srcdir)/mock_spreadsheet.cpp'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ else \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? orcus-xlsx-sheet-context-test.log: orcus-xlsx-sheet-context-test$(EXEEXT) @p='orcus-xlsx-sheet-context-test$(EXEEXT)'; \ b='orcus-xlsx-sheet-context-test'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) gnumeric-cell-context-test.log: gnumeric-cell-context-test$(EXEEXT) @p='gnumeric-cell-context-test$(EXEEXT)'; \ b='gnumeric-cell-context-test'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-gnumeric-sheet-context-test.log: orcus-gnumeric-sheet-context-test$(EXEEXT) @p='orcus-gnumeric-sheet-context-test$(EXEEXT)'; \ b='orcus-gnumeric-sheet-context-test'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-gnumeric-helper-test.log: orcus-gnumeric-helper-test$(EXEEXT) @p='orcus-gnumeric-helper-test$(EXEEXT)'; \ b='orcus-gnumeric-helper-test'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) liborcus-test-css-document-tree.log: liborcus-test-css-document-tree$(EXEEXT) @p='liborcus-test-css-document-tree$(EXEEXT)'; \ b='liborcus-test-css-document-tree'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) liborcus-test-xml-map-tree.log: liborcus-test-xml-map-tree$(EXEEXT) @p='liborcus-test-xml-map-tree$(EXEEXT)'; \ b='liborcus-test-xml-map-tree'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) liborcus-test-xml-structure-tree.log: liborcus-test-xml-structure-tree$(EXEEXT) @p='liborcus-test-xml-structure-tree$(EXEEXT)'; \ b='liborcus-test-xml-structure-tree'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) liborcus-test-common.log: liborcus-test-common$(EXEEXT) @p='liborcus-test-common$(EXEEXT)'; \ b='liborcus-test-common'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) liborcus-test-format-detection.log: liborcus-test-format-detection$(EXEEXT) @p='liborcus-test-format-detection$(EXEEXT)'; \ b='liborcus-test-format-detection'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-local distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ uninstall uninstall-am uninstall-libLTLIBRARIES distclean-local: rm -rf $(TESTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/src/liborcus/xml_context_base.cpp0000644000175000017500000001164212535701143020470 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_context_base.hpp" #include "orcus/exception.hpp" #include "orcus/tokens.hpp" #include #include using namespace std; namespace orcus { namespace { void print_stack(const tokens& tokens, const xml_elem_stack_t& elem_stack, const xmlns_context* ns_cxt) { cerr << "[ "; xml_elem_stack_t::const_iterator itr, itr_beg = elem_stack.begin(), itr_end = elem_stack.end(); for (itr = itr_beg; itr != itr_end; ++itr) { if (itr != itr_beg) cerr << " -> "; xmlns_id_t ns = itr->first; if (ns_cxt) { pstring alias = ns_cxt->get_alias(ns); if (!alias.empty()) cerr << alias << ":"; } else cerr << ns << ":"; cerr << tokens.get_token_name(itr->second); } cerr << " ]"; } } xml_context_base::xml_context_base(session_context& session_cxt, const tokens& tokens) : mp_ns_cxt(NULL), m_session_cxt(session_cxt), m_tokens(tokens) {} xml_context_base::~xml_context_base() { } void xml_context_base::set_ns_context(const xmlns_context* p) { mp_ns_cxt = p; } void xml_context_base::set_config(const config& opt) { m_config = opt; } void xml_context_base::transfer_common(const xml_context_base& parent) { m_config = parent.m_config; mp_ns_cxt = parent.mp_ns_cxt; } session_context& xml_context_base::get_session_context() { return m_session_cxt; } const tokens& xml_context_base::get_tokens() const { return m_tokens; } xml_token_pair_t xml_context_base::push_stack(xmlns_id_t ns, xml_token_t name) { xml_token_pair_t parent = m_stack.empty() ? xml_token_pair_t(XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN) : m_stack.back(); m_stack.push_back(xml_token_pair_t(ns, name)); return parent; } bool xml_context_base::pop_stack(xmlns_id_t ns, xml_token_t name) { const xml_token_pair_t& r = m_stack.back(); if (ns != r.first || name != r.second) throw general_error("mismatched element name"); m_stack.pop_back(); return m_stack.empty(); } xml_token_pair_t& xml_context_base::get_current_element() { if (m_stack.empty()) throw general_error("element stack is empty!"); return m_stack.back(); } const xml_token_pair_t& xml_context_base::get_current_element() const { if (m_stack.empty()) throw general_error("element stack is empty!"); return m_stack.back(); } xml_token_pair_t& xml_context_base::get_parent_element() { if(m_stack.size() < 2) throw general_error("element stack has no parent element"); return m_stack[m_stack.size() - 2]; } const xml_token_pair_t& xml_context_base::get_parent_element() const { if(m_stack.size() < 2) throw general_error("element stack has no parent element"); return m_stack[m_stack.size() - 2]; } void xml_context_base::warn_unhandled() const { if (!m_config.debug) return; cerr << "warning: unhandled element "; print_stack(m_tokens, m_stack, mp_ns_cxt); cerr << endl; } void xml_context_base::warn_unexpected() const { if (!m_config.debug) return; cerr << "warning: unexpected element "; print_stack(m_tokens, m_stack, mp_ns_cxt); cerr << endl; } void xml_context_base::warn(const char* msg) const { if (!m_config.debug) return; cerr << "warning: " << msg << endl; } void xml_context_base::xml_element_expected( const xml_token_pair_t& elem, xmlns_id_t ns, xml_token_t name, const string* error) { if (!m_config.structure_check) return; if (elem.first == ns && elem.second == name) // This is an expected element. Good. return; if (error) { throw xml_structure_error(*error); } // Create a generic error message. ostringstream os; os << "element '" << ns << ":" << m_tokens.get_token_name(name) << "' expected, but '"; os << elem.first << ":" << m_tokens.get_token_name(elem.second) << "' encountered."; throw xml_structure_error(os.str()); } void xml_context_base::xml_element_expected( const xml_token_pair_t& elem, const xml_elem_stack_t& expected_elems) { if (!m_config.structure_check) return; xml_elem_stack_t::const_iterator itr = expected_elems.begin(), itr_end = expected_elems.end(); for (; itr != itr_end; ++itr) { if (elem == *itr) return; } // Create a generic error message. ostringstream os; os << "unexpected element encountered: " << elem.first << ":" << m_tokens.get_token_name(elem.second); throw xml_structure_error(os.str()); } const config& xml_context_base::get_config() const { return m_config; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/Makefile.am0000644000175000017500000002130112535701142016452 0ustar renerene AM_CPPFLAGS = -I$(top_srcdir)/include -I./include EXTRA_PROGRAMS = \ liborcus-test-css-document-tree \ liborcus-test-xml-map-tree \ liborcus-test-xml-structure-tree \ liborcus-test-common \ liborcus-test-format-detection TESTS = if HAVE_STATIC_LIB AM_CPPFLAGS += -D__ORCUS_STATIC_LIB=1 else AM_CPPFLAGS += -D__ORCUS_BUILDING_DLL=1 endif liborcus_@ORCUS_API_VERSION@_la_CXXFLAGS = \ $(BOOST_SYSTEM_CFLAGS) $(ZLIB_CFLAGS) liborcus_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined liborcus_@ORCUS_API_VERSION@_la_LIBADD = \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la \ $(BOOST_SYSTEM_LIBS) $(BOOST_SYSTEM_LIB) $(ZLIB_LIBS) AM_CPPFLAGS += -DSRCDIR=\""$(top_srcdir)"\" lib_LTLIBRARIES = liborcus-@ORCUS_API_VERSION@.la liborcus_@ORCUS_API_VERSION@_la_SOURCES = \ config.cpp \ css_document_tree.cpp \ css_selector.cpp \ detection_result.hpp \ detection_result.cpp \ dom_tree.cpp \ format_detection.cpp \ global.cpp \ interface.cpp \ spreadsheet_interface.cpp \ orcus_csv.cpp \ orcus_xml.cpp \ measurement.cpp \ xml_context_base.hpp \ xml_context_base.cpp \ xml_context_global.hpp \ xml_context_global.cpp \ xml_map_tree.hpp \ xml_map_tree.cpp \ xml_stream_handler.hpp \ xml_stream_handler.cpp \ xml_stream_parser.hpp \ xml_stream_parser.cpp \ xml_simple_stream_handler.hpp \ xml_simple_stream_handler.cpp \ xml_structure_tree.cpp \ ooxml_namespace_types.cpp \ ooxml_namespace_types.hpp \ odf_namespace_types.hpp \ odf_namespace_types_hpp.inl \ odf_namespace_types.cpp \ odf_namespace_types_cpp.inl \ gnumeric_namespace_types.hpp \ gnumeric_namespace_types.cpp \ xls_xml_namespace_types.hpp \ xls_xml_namespace_types.cpp \ session_context.hpp \ session_context.cpp \ spreadsheet_types.cpp if WITH_XLSX_FILTER AM_CPPFLAGS += -D__ORCUS_XLSX EXTRA_PROGRAMS += \ orcus-xlsx-sheet-context-test liborcus_@ORCUS_API_VERSION@_la_SOURCES += \ ooxml_content_types.cpp \ ooxml_content_types.hpp \ ooxml_global.cpp \ ooxml_global.hpp \ ooxml_schemas.cpp \ ooxml_schemas.hpp \ ooxml_token_constants.hpp \ ooxml_token_constants.inl \ ooxml_tokens.cpp \ ooxml_tokens.hpp \ ooxml_tokens.inl \ ooxml_types.hpp \ ooxml_types.cpp \ opc_context.cpp \ opc_context.hpp \ opc_reader.cpp \ opc_reader.hpp \ opc_reader.hpp \ opc_token_constants.hpp \ opc_token_constants.inl \ opc_tokens.inl \ orcus_xlsx.cpp \ orcus_import_xlsx.cpp \ xlsx_context.cpp \ xlsx_context.hpp \ xlsx_handler.cpp \ xlsx_handler.hpp \ xlsx_helper.cpp \ xlsx_helper.hpp \ xlsx_session_data.hpp \ xlsx_session_data.cpp \ xlsx_revision_context.cpp \ xlsx_revision_context.hpp \ xlsx_pivot_context.cpp \ xlsx_pivot_context.hpp \ xlsx_sheet_context.cpp \ xlsx_sheet_context.hpp \ xlsx_conditional_format_context.cpp \ xlsx_conditional_format_context.hpp \ xlsx_table_context.cpp \ xlsx_table_context.hpp \ xlsx_autofilter_context.cpp \ xlsx_autofilter_context.hpp \ xlsx_types.hpp \ xlsx_types.cpp \ xlsx_workbook_context.cpp \ xlsx_workbook_context.hpp # orcus-xlsx-sheet-context-test orcus_xlsx_sheet_context_test_SOURCES = \ xlsx_session_data.cpp \ session_context.cpp \ xlsx_conditional_format_context.cpp \ xlsx_sheet_context_test.cpp \ xlsx_sheet_context.cpp \ xlsx_autofilter_context.cpp \ xlsx_helper.cpp \ xlsx_types.cpp \ ooxml_global.cpp \ ooxml_namespace_types.cpp \ ooxml_tokens.cpp \ ooxml_types.cpp \ ooxml_schemas.cpp \ xml_context_base.cpp \ xml_context_global.cpp \ global.cpp \ spreadsheet_interface.cpp \ mock_spreadsheet.hpp \ mock_spreadsheet.cpp orcus_xlsx_sheet_context_test_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_xlsx_sheet_context_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) TESTS += \ orcus-xlsx-sheet-context-test endif # WITH_XLSX_FILTER if WITH_XLS_XML_FILTER AM_CPPFLAGS += -D__ORCUS_XLS_XML liborcus_@ORCUS_API_VERSION@_la_SOURCES += \ xls_xml_tokens.hpp \ xls_xml_tokens.inl \ xls_xml_tokens.cpp \ xls_xml_token_constants.hpp \ xls_xml_token_constants.inl \ orcus_xls_xml.cpp \ xls_xml_detection_handler.hpp \ xls_xml_detection_handler.cpp \ xls_xml_handler.hpp \ xls_xml_handler.cpp \ xls_xml_context.hpp \ xls_xml_context.cpp endif # WITH_XLS_XML_FILTER if WITH_ODS_FILTER AM_CPPFLAGS += -D__ORCUS_ODS liborcus_@ORCUS_API_VERSION@_la_SOURCES += \ odf_para_context.hpp \ odf_para_context.cpp \ odf_styles.hpp \ odf_styles.cpp \ odf_styles_context.hpp \ odf_styles_context.cpp \ odf_token_constants.hpp \ odf_token_constants.inl \ odf_tokens.hpp \ odf_tokens.inl \ odf_tokens.cpp \ ods_content_xml_context.hpp \ ods_content_xml_context.cpp \ ods_content_xml_handler.hpp \ ods_content_xml_handler.cpp \ ods_session_data.hpp \ ods_session_data.cpp \ orcus_ods.cpp endif # WITH_ODS_FILTER if WITH_GNUMERIC_FILTER AM_CPPFLAGS += -D__ORCUS_GNUMERIC liborcus_@ORCUS_API_VERSION@_la_SOURCES += \ gnumeric_cell_context.hpp \ gnumeric_context.hpp \ gnumeric_detection_handler.hpp \ gnumeric_detection_handler.cpp \ gnumeric_handler.hpp \ gnumeric_helper.hpp \ gnumeric_sheet_context.hpp \ gnumeric_token_constants.hpp \ gnumeric_token_constants.inl \ gnumeric_tokens.hpp \ gnumeric_cell_context.cpp \ gnumeric_context.cpp \ gnumeric_handler.cpp \ gnumeric_helper.cpp \ gnumeric_sheet_context.cpp \ gnumeric_tokens.cpp \ gnumeric_tokens.inl \ orcus_gnumeric.cpp liborcus_@ORCUS_API_VERSION@_la_LDFLAGS += \ $(BOOST_IOSTREAMS_LDFLAGS) liborcus_@ORCUS_API_VERSION@_la_LIBADD += \ $(BOOST_IOSTREAMS_LIBS) # gnumeric-cell-context-test EXTRA_PROGRAMS += \ gnumeric-cell-context-test \ orcus-gnumeric-sheet-context-test \ orcus-gnumeric-helper-test gnumeric_cell_context_test_SOURCES = \ session_context.cpp \ gnumeric_cell_context_test.cpp \ gnumeric_cell_context.cpp \ xml_context_base.cpp \ gnumeric_namespace_types.cpp \ gnumeric_tokens.cpp \ odf_namespace_types.cpp \ spreadsheet_interface.cpp \ mock_spreadsheet.hpp \ mock_spreadsheet.cpp gnumeric_cell_context_test_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_gnumeric_cell_context_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) TESTS += gnumeric-cell-context-test # orcus-gnumeric-sheet-context-test orcus_gnumeric_sheet_context_test_SOURCES = \ session_context.cpp \ gnumeric_sheet_context_test.cpp \ gnumeric_sheet_context.cpp \ gnumeric_cell_context.cpp \ gnumeric_helper.cpp \ xml_context_base.cpp \ gnumeric_namespace_types.cpp \ gnumeric_tokens.cpp \ odf_namespace_types.cpp \ spreadsheet_interface.cpp \ mock_spreadsheet.hpp \ mock_spreadsheet.cpp orcus_gnumeric_sheet_context_test_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_gnumeric_sheet_context_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) TESTS += orcus-gnumeric-sheet-context-test # orcus-gnumeric-helper-test orcus_gnumeric_helper_test_SOURCES = \ gnumeric_helper_test.cpp orcus_gnumeric_helper_test_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_gnumeric_helper_test_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) TESTS += orcus-gnumeric-helper-test endif # WITH_GNUMERIC_FILTER # liborcus-test-css-document-tree liborcus_test_css_document_tree_SOURCES = \ css_document_tree.cpp \ css_document_tree_test.cpp liborcus_test_css_document_tree_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-xml-map-tree liborcus_test_xml_map_tree_SOURCES = \ xml_map_tree.cpp \ xml_map_tree.hpp \ xml_map_tree_test.cpp liborcus_test_xml_map_tree_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-xml-structure-tree liborcus_test_xml_structure_tree_SOURCES = \ xml_structure_tree.cpp \ xml_structure_tree_test.cpp liborcus_test_xml_structure_tree_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" liborcus_test_xml_structure_tree_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-common liborcus_test_common_SOURCES = \ global.cpp \ common_test.cpp liborcus_test_common_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la # liborcus-test-format-detection liborcus_test_format_detection_SOURCES = \ format_detection_test.cpp liborcus_test_format_detection_LDADD = \ liborcus-@ORCUS_API_VERSION@.la \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la TESTS += \ liborcus-test-css-document-tree \ liborcus-test-xml-map-tree \ liborcus-test-xml-structure-tree \ liborcus-test-common \ liborcus-test-format-detection distclean-local: rm -rf $(TESTS) liborcus-0.9.2/src/liborcus/xml_context_global.cpp0000644000175000017500000000454612535701143021023 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_context_global.hpp" #include "orcus/string_pool.hpp" #include "orcus/measurement.hpp" namespace orcus { single_attr_getter::single_attr_getter(string_pool& pool, xmlns_id_t ns, xml_token_t name) : m_pool(&pool), m_ns(ns), m_name(name) {} void single_attr_getter::operator() (const xml_token_attr_t& attr) { if (attr.ns != m_ns || attr.name != m_name) return; m_value = attr.value; if (attr.transient) m_value = m_pool->intern(m_value).first; } pstring single_attr_getter::get_value() const { return m_value; } pstring single_attr_getter::get( const std::vector& attrs, string_pool& pool, xmlns_id_t ns, xml_token_t name) { single_attr_getter func(pool, ns, name); return std::for_each(attrs.begin(), attrs.end(), func).get_value(); } single_long_attr_getter::single_long_attr_getter(xmlns_id_t ns, xml_token_t name) : m_value(-1), m_ns(ns), m_name(name) {} void single_long_attr_getter::operator() (const xml_token_attr_t& attr) { if (attr.ns != m_ns || attr.name != m_name) return; m_value = to_long(attr.value); } long single_long_attr_getter::get_value() const { return m_value; } long single_long_attr_getter::get(const std::vector& attrs, xmlns_id_t ns, xml_token_t name) { single_long_attr_getter func(ns, name); return std::for_each(attrs.begin(), attrs.end(), func).get_value(); } single_double_attr_getter::single_double_attr_getter(xmlns_id_t ns, xml_token_t name) : m_value(-1.0), m_ns(ns), m_name(name) {} void single_double_attr_getter::operator() (const xml_token_attr_t& attr) { if (attr.ns != m_ns || attr.name != m_name) return; m_value = to_double(attr.value); } double single_double_attr_getter::get_value() const { return m_value; } double single_double_attr_getter::get(const std::vector& attrs, xmlns_id_t ns, xml_token_t name) { single_double_attr_getter func(ns, name); return std::for_each(attrs.begin(), attrs.end(), func).get_value(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_workbook_context.cpp0000644000175000017500000000660412535701143021613 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_workbook_context.hpp" #include "ooxml_global.hpp" #include "ooxml_schemas.hpp" #include "ooxml_token_constants.hpp" #include "ooxml_namespace_types.hpp" #include "session_context.hpp" #include "orcus/global.hpp" #include "orcus/measurement.hpp" using namespace std; namespace orcus { namespace { class workbook_sheet_attr_parser : public unary_function { public: workbook_sheet_attr_parser(session_context* cxt) : m_cxt(cxt) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_ooxml_xlsx && attr.name == XML_name) m_sheet.name = m_cxt->m_string_pool.intern(attr.value).first; else if (attr.ns == NS_ooxml_xlsx && attr.name == XML_sheetId) { const pstring& val = attr.value; if (!val.empty()) m_sheet.id = to_long(val); } else if (attr.ns == NS_ooxml_r && attr.name == XML_id) { m_rid = m_cxt->m_string_pool.intern(attr.value).first; } } const xlsx_rel_sheet_info get_sheet() const { return m_sheet; } const pstring& get_rid() const { return m_rid; } private: session_context* m_cxt; pstring m_rid; xlsx_rel_sheet_info m_sheet; }; } xlsx_workbook_context::xlsx_workbook_context(session_context& session_cxt, const tokens& tokens) : xml_context_base(session_cxt, tokens) {} xlsx_workbook_context::~xlsx_workbook_context() {} bool xlsx_workbook_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const { return true; } xml_context_base* xlsx_workbook_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) { return NULL; } void xlsx_workbook_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) { } void xlsx_workbook_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); switch (name) { case XML_workbook: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); if (get_config().debug) print_attrs(get_tokens(), attrs); } break; case XML_sheets: xml_element_expected(parent, NS_ooxml_xlsx, XML_workbook); break; case XML_sheet: { xml_element_expected(parent, NS_ooxml_xlsx, XML_sheets); workbook_sheet_attr_parser func(&get_session_context()); func = for_each(attrs.begin(), attrs.end(), func); m_sheet_info.data.insert( opc_rel_extras_t::map_type::value_type( func.get_rid(), new xlsx_rel_sheet_info(func.get_sheet()))); } break; default: warn_unhandled(); } } bool xlsx_workbook_context::end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } void xlsx_workbook_context::characters(const pstring& str, bool transient) {} void xlsx_workbook_context::pop_sheet_info(opc_rel_extras_t& sheets) { m_sheet_info.swap(sheets); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/opc_token_constants.hpp0000644000175000017500000000101012535701143021200 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OPC_TOKEN_CONSTANTS_HPP__ #define __ORCUS_OPC_TOKEN_CONSTANTS_HPP__ #include "orcus/types.hpp" namespace orcus { #include "opc_token_constants.inl" } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_autofilter_context.cpp0000644000175000017500000000767012535701143022140 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_autofilter_context.hpp" #include "xml_context_global.hpp" #include "ooxml_namespace_types.hpp" #include "ooxml_token_constants.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include using namespace std; namespace orcus { xlsx_autofilter_context::xlsx_autofilter_context(session_context& session_cxt, const tokens& tokens) : xml_context_base(session_cxt, tokens), m_cur_col(-1) {} xlsx_autofilter_context::~xlsx_autofilter_context() {} bool xlsx_autofilter_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const { return true; } xml_context_base* xlsx_autofilter_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) { return NULL; } void xlsx_autofilter_context::end_child_context( xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) { } void xlsx_autofilter_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns != NS_ooxml_xlsx) return; switch (name) { case XML_autoFilter: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); m_ref_range = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_ref)).get_value(); } break; case XML_filterColumn: { xml_element_expected(parent, NS_ooxml_xlsx, XML_autoFilter); m_cur_col = for_each( attrs.begin(), attrs.end(), single_long_attr_getter(NS_ooxml_xlsx, XML_colId)).get_value(); } break; case XML_filters: xml_element_expected(parent, NS_ooxml_xlsx, XML_filterColumn); break; case XML_filter: { xml_element_expected(parent, NS_ooxml_xlsx, XML_filters); pstring val = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_val)).get_value(); if (!val.empty()) m_cur_match_values.push_back(val); } break; default: warn_unhandled(); } } bool xlsx_autofilter_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_ooxml_xlsx) { switch (name) { case XML_filterColumn: { if (m_cur_col >= 0) { m_column_filters.insert( column_filters_type::value_type(m_cur_col, m_cur_match_values)); } m_cur_col = -1; m_cur_match_values.clear(); } break; default: ; } } return pop_stack(ns, name); } void xlsx_autofilter_context::characters(const pstring& /*str*/, bool /*transient*/) { } void xlsx_autofilter_context::push_to_model(spreadsheet::iface::import_auto_filter& af) const { af.set_range(m_ref_range.get(), m_ref_range.size()); column_filters_type::const_iterator it = m_column_filters.begin(), it_end = m_column_filters.end(); for (; it != it_end; ++it) { spreadsheet::col_t col = it->first; const xlsx_autofilter_context::match_values_type& mv = it->second; af.set_column(col); xlsx_autofilter_context::match_values_type::const_iterator itmv = mv.begin(), itmv_end = mv.end(); for (; itmv != itmv_end; ++itmv) { const pstring& v = *itmv; af.append_column_match_value(v.get(), v.size()); } af.commit_column(); } af.commit(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_para_context.cpp0000644000175000017500000001050512535701143020446 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "odf_para_context.hpp" #include "odf_token_constants.hpp" #include "odf_namespace_types.hpp" #include "xml_context_global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/exception.hpp" #include #include using namespace std; namespace orcus { text_para_context::text_para_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_shared_strings* ssb, odf_styles_map_type& styles) : xml_context_base(session_cxt, tokens), mp_sstrings(ssb), m_styles(styles), m_string_index(0), m_has_content(false) { } text_para_context::~text_para_context() { } bool text_para_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* text_para_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void text_para_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { // not implemented yet. } void text_para_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_odf_text) { switch (name) { case XML_p: // paragraph xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); break; case XML_span: { // text span. xml_element_expected(parent, NS_odf_text, XML_p); flush_segment(); pstring style_name = for_each(attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_odf_text, XML_style_name)).get_value(); m_span_stack.push_back(style_name); } break; case XML_s: // control character. ignored for now. break; default: warn_unhandled(); } } else warn_unhandled(); } bool text_para_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_odf_text) { switch (name) { case XML_p: { // paragraph flush_segment(); m_string_index = mp_sstrings->commit_segments(); } break; case XML_span: { // text span. if (m_span_stack.empty()) throw xml_structure_error("
encountered without matching opening element."); flush_segment(); m_span_stack.pop_back(); } break; default: ; } } return pop_stack(ns, name); } void text_para_context::characters(const pstring& str, bool transient) { if (transient) m_contents.push_back(m_pool.intern(str).first); else m_contents.push_back(str); } void text_para_context::reset() { m_string_index = 0; m_has_content = false; m_pool.clear(); m_contents.clear(); } size_t text_para_context::get_string_index() const { return m_string_index; } bool text_para_context::empty() const { return !m_has_content; } void text_para_context::flush_segment() { if (m_contents.empty()) // No content to flush. return; m_has_content = true; const odf_style* style = NULL; if (!m_span_stack.empty()) { pstring style_name = m_span_stack.back(); odf_styles_map_type::const_iterator it = m_styles.find(style_name); if (it != m_styles.end()) style = it->second; } if (style && style->family == style_family_text) { const odf_style::text* data = style->text_data; mp_sstrings->set_segment_font(data->font); } vector::const_iterator it = m_contents.begin(), it_end = m_contents.end(); for (; it != it_end; ++it) { const pstring& ps = *it; mp_sstrings->append_segment(ps.get(), ps.size()); } m_contents.clear(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_detection_handler.cpp0000644000175000017500000000564512535701143022504 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_detection_handler.hpp" #include "gnumeric_namespace_types.hpp" #include "gnumeric_token_constants.hpp" #include "xml_context_base.hpp" #include "detection_result.hpp" namespace orcus { namespace { /** * Check the xml structure up to the first element. If all the * structure check passes up to that point, we call it "detected". */ class gnumeric_detection_context : public xml_context_base { public: gnumeric_detection_context(session_context& session_cxt, const tokens& tokens) : xml_context_base(session_cxt, tokens) {} virtual bool can_handle_element(xmlns_id_t, xml_token_t) const { return true; }; virtual xml_context_base* create_child_context(xmlns_id_t, xml_token_t) { return NULL; } virtual void characters(const pstring&, bool) {} virtual void end_child_context(xmlns_id_t, xml_token_t, xml_context_base*) {} virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& /*attrs*/) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_gnumeric_gnm) { switch (name) { case XML_Workbook: xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); break; case XML_Version: case XML_Attributes: case XML_Calculation: case XML_SheetNameIndex: case XML_Geometry: case XML_Sheets: xml_element_expected(parent, NS_gnumeric_gnm, XML_Workbook); break; case XML_Attribute: xml_element_expected(parent, NS_gnumeric_gnm, XML_Attributes); break; case XML_SheetName: xml_element_expected(parent, NS_gnumeric_gnm, XML_SheetNameIndex); break; case XML_Sheet: xml_element_expected(parent, NS_gnumeric_gnm, XML_Sheets); throw detection_result(true); break; default: ; } } } virtual bool end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } }; } gnumeric_detection_handler::gnumeric_detection_handler(session_context& session_cxt, const tokens& tokens) : xml_stream_handler(new gnumeric_detection_context(session_cxt, tokens)) {} gnumeric_detection_handler::~gnumeric_detection_handler() {} void gnumeric_detection_handler::start_document() {} void gnumeric_detection_handler::end_document() {} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_handler.hpp0000644000175000017500000000170512535701143020444 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERICHANDLER_HPP__ #define __ORCUS_GNUMERICHANDLER_HPP__ #include "xml_stream_handler.hpp" namespace orcus { struct session_context; class tokens; namespace spreadsheet { namespace iface { class import_factory; }} /** * Handler for parsing the content.xml part. */ class gnumeric_content_xml_handler : public xml_stream_handler { public: gnumeric_content_xml_handler(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory); virtual ~gnumeric_content_xml_handler(); virtual void start_document(); virtual void end_document(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_global.cpp0000644000175000017500000000407512535701143017612 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ooxml_global.hpp" #include "ooxml_types.hpp" #include "ooxml_token_constants.hpp" #include #include using namespace std; namespace orcus { void print_opc_rel::operator() (const opc_rel_t& v) const { using namespace std; cout << v.rid << ": " << v.target << " (" << v.type << ")" << endl; } std::string resolve_file_path(const std::string& dir_path, const std::string& file_name) { if (dir_path.empty()) return file_name; const char* p = &dir_path[0]; const char* p_end = p + dir_path.size(); bool has_root = *p == '/'; if (has_root) ++p; vector dir_stack; const char* p_head = NULL; for (; p != p_end; ++p) { if (*p == '/') { if (!p_head) // invalid directory path. return file_name; size_t len = p - p_head; pstring dir(p_head, len); if (dir == "..") { if (dir_stack.empty()) // invalid directory path. return file_name; dir_stack.pop_back(); } else dir_stack.push_back(dir); p_head = NULL; } else if (p_head) { // Do nothing. } else p_head = p; } if (p_head) { // directory path must end with '/'. This one doesn't. return file_name; } ostringstream full_path; if (has_root) full_path << '/'; vector::const_iterator it = dir_stack.begin(), it_end = dir_stack.end(); for (; it != it_end; ++it) full_path << *it << '/'; full_path << file_name; return full_path.str(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_table_context.cpp0000644000175000017500000002422212535701143021041 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_table_context.hpp" #include "xlsx_autofilter_context.hpp" #include "ooxml_namespace_types.hpp" #include "ooxml_token_constants.hpp" #include "session_context.hpp" #include "xml_context_global.hpp" #include "orcus/measurement.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include using namespace std; namespace orcus { namespace { class table_attr_parser : public unary_function { string_pool* m_pool; long m_id; long m_totals_row_count; pstring m_name; pstring m_display_name; pstring m_ref; public: table_attr_parser(string_pool* pool) : m_pool(pool), m_id(-1), m_totals_row_count(-1) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_id: m_id = to_long(attr.value); break; case XML_totalsRowCount: m_totals_row_count = to_long(attr.value); break; case XML_name: m_name = attr.value; if (attr.transient) m_name = m_pool->intern(m_name).first; break; case XML_displayName: m_display_name = attr.value; if (attr.transient) m_display_name = m_pool->intern(m_display_name).first; break; case XML_ref: m_ref = attr.value; if (attr.transient) m_ref = m_pool->intern(m_ref).first; break; default: ; } } long get_id() const { return m_id; } long get_totals_row_count() const { return m_totals_row_count; } pstring get_name() const { return m_name; } pstring get_display_name() const { return m_display_name; } pstring get_ref() const { return m_ref; } }; class table_column_attr_parser : public unary_function { string_pool* m_pool; long m_id; pstring m_name; pstring m_totals_row_label; spreadsheet::totals_row_function_t m_totals_row_func; public: table_column_attr_parser(string_pool* pool) : m_pool(pool), m_id(-1), m_totals_row_func(spreadsheet::totals_row_function_none) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_id: m_id = to_long(attr.value); break; case XML_name: m_name = attr.value; if (attr.transient) m_name = m_pool->intern(m_name).first; break; case XML_totalsRowLabel: m_totals_row_label = attr.value; if (attr.transient) m_totals_row_label = m_pool->intern(m_totals_row_label).first; break; case XML_totalsRowFunction: m_totals_row_func = spreadsheet::to_totals_row_function_enum( attr.value.get(), attr.value.size()); break; default: ; } } long get_id() const { return m_id; } pstring get_name() const { return m_name; } pstring get_totals_row_label() const { return m_totals_row_label; } spreadsheet::totals_row_function_t get_totals_row_function() const { return m_totals_row_func; } }; class table_style_info_attr_parser : public unary_function { spreadsheet::iface::import_table* mp_table; bool m_debug; public: table_style_info_attr_parser(spreadsheet::iface::import_table* table, bool debug) : mp_table(table), m_debug(debug) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; bool b = false; switch (attr.name) { case XML_name: mp_table->set_style_name(attr.value.get(), attr.value.size()); if (m_debug) cout << " * table style info (name=" << attr.value << ")" << endl; break; case XML_showFirstColumn: b = to_bool(attr.value); mp_table->set_style_show_first_column(b); if (m_debug) cout << " * show first column: " << b << endl; break; case XML_showLastColumn: b = to_bool(attr.value); mp_table->set_style_show_last_column(b); if (m_debug) cout << " * show last column: " << b << endl; break; case XML_showRowStripes: b = to_bool(attr.value); mp_table->set_style_show_row_stripes(b); if (m_debug) cout << " * show row stripes: " << b << endl; break; case XML_showColumnStripes: b = to_bool(attr.value); mp_table->set_style_show_column_stripes(b); if (m_debug) cout << " * show column stripes: " << b << endl; break; default: ; } } }; } xlsx_table_context::xlsx_table_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_table& table) : xml_context_base(session_cxt, tokens), m_table(table) {} xlsx_table_context::~xlsx_table_context() {} bool xlsx_table_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { if (ns == NS_ooxml_xlsx && name == XML_autoFilter) return false; return true; } xml_context_base* xlsx_table_context::create_child_context(xmlns_id_t ns, xml_token_t name) { if (ns == NS_ooxml_xlsx && name == XML_autoFilter) { mp_child.reset(new xlsx_autofilter_context(get_session_context(), get_tokens())); mp_child->transfer_common(*this); return mp_child.get(); } return NULL; } void xlsx_table_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { if (ns == NS_ooxml_xlsx && name == XML_autoFilter) { spreadsheet::iface::import_auto_filter* af = m_table.get_auto_filter(); if (!af) return; const xlsx_autofilter_context& cxt = static_cast(*child); cxt.push_to_model(*af); } } void xlsx_table_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns != NS_ooxml_xlsx) return; pstring str; switch (name) { case XML_table: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); table_attr_parser func(&get_session_context().m_string_pool); func = for_each(attrs.begin(), attrs.end(), func); if (get_config().debug) { cout << "* table (range=" << func.get_ref() << "; id=" << func.get_id() << "; name=" << func.get_name() << "; display name=" << func.get_display_name() << ")" << endl; cout << " * totals row count: " << func.get_totals_row_count() << endl; } m_table.set_identifier(func.get_id()); str = func.get_ref(); m_table.set_range(str.get(), str.size()); str = func.get_name(); m_table.set_name(str.get(), str.size()); str = func.get_display_name(); m_table.set_display_name(str.get(), str.size()); m_table.set_totals_row_count(func.get_totals_row_count()); } break; case XML_tableColumns: { xml_element_expected(parent, NS_ooxml_xlsx, XML_table); single_long_attr_getter func(NS_ooxml_xlsx, XML_count); long column_count = for_each(attrs.begin(), attrs.end(), func).get_value(); if (get_config().debug) cout << " * column count: " << column_count << endl; m_table.set_column_count(column_count); } break; case XML_tableColumn: { xml_element_expected(parent, NS_ooxml_xlsx, XML_tableColumns); table_column_attr_parser func(&get_session_context().m_string_pool); func = for_each(attrs.begin(), attrs.end(), func); if (get_config().debug) { cout << " * table column (id=" << func.get_id() << "; name=" << func.get_name() << ")" << endl; cout << " * totals row label: " << func.get_totals_row_label() << endl; cout << " * totals func: " << func.get_totals_row_function() << endl; } m_table.set_column_identifier(func.get_id()); str = func.get_name(); m_table.set_column_name(str.get(), str.size()); str = func.get_totals_row_label(); m_table.set_column_totals_row_label(str.get(), str.size()); m_table.set_column_totals_row_function(func.get_totals_row_function()); } break; case XML_tableStyleInfo: { xml_element_expected(parent, NS_ooxml_xlsx, XML_table); table_style_info_attr_parser func(&m_table, get_config().debug); for_each(attrs.begin(), attrs.end(), func); } break; default: warn_unhandled(); } } bool xlsx_table_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_ooxml_xlsx) { switch (name) { case XML_table: m_table.commit(); break; case XML_tableColumn: m_table.commit_column(); break; default: ; } } return pop_stack(ns, name); } void xlsx_table_context::characters(const pstring& str, bool transient) { } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/common_test.cpp0000644000175000017500000001334312535701142017460 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include "orcus/global.hpp" #include "orcus/measurement.hpp" using namespace std; using namespace orcus; void test_date_time_conversion() { struct { const char* str; int year; int month; int day; int hour; int minute; double second; } tests[] = { { "2011-02-12", 2011, 2, 12, 0, 0, 0.0 }, { "1934-12-23T21:34:56.69", 1934, 12, 23, 21, 34, 56.69 }, }; for (size_t i = 0, n = sizeof(tests)/sizeof(tests[0]); i < n; ++i) { pstring str(tests[i].str); date_time_t ret = to_date_time(str); cout << "original: " << str << endl; cout << "converted: year=" << ret.year << ", month=" << ret.month << ", day=" << ret.day << ", hour=" << ret.hour << ", minute=" << ret.minute << ", second=" << ret.second << endl; assert(ret.year == tests[i].year); assert(ret.month == tests[i].month); assert(ret.day == tests[i].day); assert(ret.hour == tests[i].hour); assert(ret.minute == tests[i].minute); assert(ret.second == tests[i].second); } } string to_string(length_unit_t unit) { switch (unit) { case length_unit_centimeter: return "centimeter"; case length_unit_inch: return "inch"; case length_unit_point: return "point"; case length_unit_twip: return "twip"; case length_unit_unknown: default: ; } return "unknown"; } void test_measurement_conversion() { struct { const char* str; double expected; size_t decimals; length_unit_t unit; } tests[] = { { "12.34", 12.34, 2, length_unit_unknown }, { "35", 35, 0, length_unit_unknown }, { "0.69825", 0.69825, 5, length_unit_unknown }, { ".1592", 0.1592, 4, length_unit_unknown }, { "5", 5.0, 0, length_unit_unknown }, { "-3", -3.0, 0, length_unit_unknown }, { "-3.456", -3.456, 3, length_unit_unknown }, { "-.987", -0.987, 3, length_unit_unknown }, { "-100.987.", -100.987, 3, length_unit_unknown }, // Second decimal point should stop the parsing. { "12.345in", 12.345, 3, length_unit_inch }, { "120.30001cm", 120.30001, 5, length_unit_centimeter }, }; for (size_t i = 0, n = sizeof(tests)/sizeof(tests[0]); i < n; ++i) { length_t ret = to_length(tests[i].str); cout << "original: '" << tests[i].str << "', converted: " << ret.value << " (" << to_string(ret.unit) << "), expected: " << tests[i].expected << " (" << to_string(tests[i].unit) << ")" << endl; // Check for double-precision equality without the rounding error. double factor = 1.0; for (size_t j = 0; j < tests[i].decimals; ++j) factor *= 10.0; double converted = round(ret.value * factor); double expected = round(tests[i].expected * factor); assert(converted == expected); assert(ret.unit == tests[i].unit); } } void test_string2number_conversion() { struct { const char* str; double expected; size_t decimals; size_t end_pos; } tests[] = { { "1.2", 1.2, 1, 3 }, { "1.2a", 1.2, 1, 3 }, { "1.2.", 1.2, 1, 3 }, { "1.3456", 1.3456, 4, 6 }, { "-10.345", -10.345, 3, 7 }, { "-10.345-", -10.345, 3, 7 }, }; for (size_t i = 0, n = sizeof(tests)/sizeof(tests[0]); i < n; ++i) { const char* p = tests[i].str; const char* p_end = p + strlen(p); const char* p_parse_ended = NULL; double converted = to_double(p, p_end, &p_parse_ended); cout << "original: '" << tests[i].str << "', converted: " << converted << ", expected: " << tests[i].expected << endl; // Check for double-precision equality without the rounding error. double factor = 1.0; for (size_t j = 0; j < tests[i].decimals; ++j) factor *= 10.0; converted = round(converted * factor); double expected = round(tests[i].expected * factor); assert(converted == expected); // Check the end parse position. const char* pos_expected = p + tests[i].end_pos; assert(pos_expected == p_parse_ended); } } void test_string2long_conversion() { struct { const char* str; long expected; size_t end_pos; } tests[] = { { "1", 1, 1 }, { "12", 12, 2 }, { "13.4", 13, 2 }, { "-23", -23, 3 }, { "678abc", 678, 3 }, }; for (size_t i = 0, n = sizeof(tests)/sizeof(tests[0]); i < n; ++i) { const char* p = tests[i].str; const char* p_end = p + strlen(p); const char* p_parse_ended = NULL; long converted = to_long(p, p_end, &p_parse_ended); cout << "original: '" << tests[i].str << "', converted: " << converted << ", expected: " << tests[i].expected << endl; assert(converted == tests[i].expected); // Check the end parse position. const char* pos_expected = p + tests[i].end_pos; assert(pos_expected == p_parse_ended); } } int main() { test_date_time_conversion(); test_measurement_conversion(); test_string2number_conversion(); test_string2long_conversion(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_sheet_context.hpp0000644000175000017500000000517512535701143021075 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_SHEET_CONTEXT_HPP #define ORCUS_XLSX_SHEET_CONTEXT_HPP #include "xml_context_base.hpp" #include "ooxml_types.hpp" #include "xlsx_types.hpp" #include "orcus/spreadsheet/types.hpp" #include "orcus/string_pool.hpp" #include namespace orcus { struct session_context; namespace spreadsheet { namespace iface { class import_sheet; }} /** * Top-level context for xl/worksheets/sheet.xml. */ class xlsx_sheet_context : public xml_context_base { public: struct formula { spreadsheet::formula_t type; pstring str; /// formula expression string pstring ref; /// formula reference pstring data_table_ref1; pstring data_table_ref2; int shared_id; bool data_table_2d:1; bool data_table_row_based:1; bool data_table_ref1_deleted:1; bool data_table_ref2_deleted:1; formula(); void reset(); }; xlsx_sheet_context( session_context& session_cxt, const tokens& tokens, spreadsheet::sheet_t sheet_id, spreadsheet::iface::import_sheet* import_sheet); virtual ~xlsx_sheet_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); void pop_rel_extras(opc_rel_extras_t& other); private: void end_element_cell(); void push_raw_cell_value(); private: boost::scoped_ptr mp_child; spreadsheet::iface::import_sheet* mp_sheet; /// sheet model instance for the loaded document. string_pool m_pool; spreadsheet::sheet_t m_sheet_id; /// ID of this sheet. spreadsheet::row_t m_cur_row; spreadsheet::col_t m_cur_col; xlsx_cell_t m_cur_cell_type; size_t m_cur_cell_xf; pstring m_cur_str; pstring m_cur_value; formula m_cur_formula; /** * Extra data to pass on to subsequent parts via relations. */ opc_rel_extras_t m_rel_extras; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_autofilter_context.hpp0000644000175000017500000000327412535701143022141 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_AUTOFILTER_CONTEXT_HPP #define ORCUS_XLSX_AUTOFILTER_CONTEXT_HPP #include "xml_context_base.hpp" #include "orcus/string_pool.hpp" #include "orcus/spreadsheet/types.hpp" #include #include namespace orcus { namespace spreadsheet { namespace iface { class import_auto_filter; }} class xlsx_autofilter_context : public xml_context_base { public: typedef std::vector match_values_type; typedef std::map column_filters_type; xlsx_autofilter_context(session_context& session_cxt, const tokens& tokens); virtual ~xlsx_autofilter_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); void push_to_model(spreadsheet::iface::import_auto_filter& af) const; private: string_pool m_pool; pstring m_ref_range; spreadsheet::col_t m_cur_col; match_values_type m_cur_match_values; column_filters_type m_column_filters; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_detection_handler.hpp0000644000175000017500000000144712535701143022505 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_GNUMERIC_DETECTION_HANDLER_HPP #define ORCUS_GNUMERIC_DETECTION_HANDLER_HPP #include "xml_stream_handler.hpp" namespace orcus { struct session_context; class tokens; class gnumeric_detection_handler : public xml_stream_handler { public: gnumeric_detection_handler(session_context& session_cxt, const tokens& tokens); virtual ~gnumeric_detection_handler(); virtual void start_document(); virtual void end_document(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/spreadsheet_interface.cpp0000644000175000017500000000327112535701143021460 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/spreadsheet/export_interface.hpp" namespace orcus { namespace spreadsheet { namespace iface { import_shared_strings::~import_shared_strings() {} import_styles::~import_styles() {} import_sheet_properties::~import_sheet_properties() {} import_data_table::~import_data_table() {} import_auto_filter::~import_auto_filter() {} import_table::~import_table() {} import_conditional_format::~import_conditional_format() {} import_auto_filter* import_table::get_auto_filter() { return NULL; } import_sheet::~import_sheet() {} import_sheet_properties* import_sheet::get_sheet_properties() { return NULL; } import_data_table* import_sheet::get_data_table() { return NULL; } import_auto_filter* import_sheet::get_auto_filter() { return NULL; } import_table* import_sheet::get_table() { return NULL; } import_conditional_format* import_sheet::get_conditional_format() { return NULL; } import_global_settings::~import_global_settings() {} import_factory::~import_factory() {} import_global_settings* import_factory::get_global_settings() { return NULL; } import_shared_strings* import_factory::get_shared_strings() { return NULL; } import_styles* import_factory::get_styles() { return NULL; } export_sheet::~export_sheet() {} export_factory::~export_factory() {} }}} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_namespace_types_hpp.inl0000644000175000017500000000170612535701143022011 0ustar renerenenamespace orcus { extern const xmlns_id_t NS_odf_anim; extern const xmlns_id_t NS_odf_chart; extern const xmlns_id_t NS_odf_config; extern const xmlns_id_t NS_odf_db; extern const xmlns_id_t NS_odf_dc; extern const xmlns_id_t NS_odf_dr3d; extern const xmlns_id_t NS_odf_draw; extern const xmlns_id_t NS_odf_fo; extern const xmlns_id_t NS_odf_form; extern const xmlns_id_t NS_odf_grddl; extern const xmlns_id_t NS_odf_math; extern const xmlns_id_t NS_odf_meta; extern const xmlns_id_t NS_odf_number; extern const xmlns_id_t NS_odf_office; extern const xmlns_id_t NS_odf_presentation; extern const xmlns_id_t NS_odf_script; extern const xmlns_id_t NS_odf_smil; extern const xmlns_id_t NS_odf_style; extern const xmlns_id_t NS_odf_svg; extern const xmlns_id_t NS_odf_table; extern const xmlns_id_t NS_odf_text; extern const xmlns_id_t NS_odf_xforms; extern const xmlns_id_t NS_odf_xhtml; extern const xmlns_id_t NS_odf_xlink; extern const xmlns_id_t* NS_odf_all; } liborcus-0.9.2/src/liborcus/css_document_tree.cpp0000644000175000017500000004435412535701143020645 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/css_document_tree.hpp" #include "orcus/css_parser.hpp" #include "orcus/string_pool.hpp" #define ORCUS_DEBUG_CSS_DOCTREE 0 #include #include using namespace std; namespace orcus { namespace { struct selector_type { css_selector_t selector; css::pseudo_element_t pseudo_element; }; class parser_handler { css_document_tree& m_doc; std::vector m_cur_selector_group; css_properties_t m_cur_properties; pstring m_cur_prop_name; std::vector m_cur_prop_values; css_selector_t m_cur_selector; /// current selector css_simple_selector_t m_cur_simple_selector; css::pseudo_element_t m_cur_pseudo_element; css::combinator_t m_cur_combinator; bool m_in_prop:1; public: parser_handler(css_document_tree& doc) : m_doc(doc), m_cur_pseudo_element(0), m_cur_combinator(css::combinator_descendant), m_in_prop(false) {} void at_rule_name(const char* p, size_t n) { #if ORCUS_DEBUG_CSS_DOCTREE cout << "@" << string(p, n).c_str(); #endif } void simple_selector_type(const char* p, size_t n) { m_cur_simple_selector.name = pstring(p, n); } void simple_selector_class(const char* p, size_t n) { m_cur_simple_selector.classes.insert(pstring(p, n)); } void simple_selector_pseudo_element(css::pseudo_element_t pe) { // Only the one applied to the last simple selector is valid. m_cur_pseudo_element |= pe; } void simple_selector_pseudo_class(css::pseudo_class_t pc) { m_cur_simple_selector.pseudo_classes |= pc; } void simple_selector_id(const char* p, size_t n) { m_cur_simple_selector.id = pstring(p, n); } void end_simple_selector() { if (m_cur_selector.first.empty()) m_cur_selector.first = m_cur_simple_selector; else { css_chained_simple_selector_t css; css.combinator = m_cur_combinator; css.simple_selector = m_cur_simple_selector; m_cur_selector.chained.push_back(css); } m_cur_simple_selector.clear(); } void end_selector() { #if ORCUS_DEBUG_CSS_DOCTREE cout << m_cur_selector << "|"; #endif selector_type sel; sel.selector = m_cur_selector; sel.pseudo_element = m_cur_pseudo_element; m_cur_selector_group.push_back(sel); m_cur_selector.clear(); m_cur_pseudo_element = 0; } void combinator(css::combinator_t combinator) { m_cur_combinator = combinator; } void property_name(const char* p, size_t n) { m_cur_prop_name = pstring(p, n); #if ORCUS_DEBUG_CSS_DOCTREE cout << string(p, n).c_str() << ":"; #endif } void value(const char* p, size_t n) { pstring pv(p, n); m_cur_prop_values.push_back(pv); #if ORCUS_DEBUG_CSS_DOCTREE cout << " '" << string(p, n).c_str() << "'"; #endif } void rgb(uint8_t red, uint8_t green, uint8_t blue) { #if ORCUS_DEBUG_CSS_DOCTREE cout << " rgb(" << (int)red << ',' << (int)green << ',' << (int)blue << ')'; #endif css_property_value_t val; val.type = css::property_value_rgb; val.red = red; val.green = green; val.blue = blue; m_cur_prop_values.push_back(val); } void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) { #if ORCUS_DEBUG_CSS_DOCTREE cout << " rgba(" << (int)red << ',' << (int)green << ',' << (int)blue << ',' << alpha << ')'; #endif css_property_value_t val; val.type = css::property_value_rgba; val.red = red; val.green = green; val.blue = blue; val.alpha = alpha; m_cur_prop_values.push_back(val); } void hsl(uint8_t hue, uint8_t sat, uint8_t light) { #if ORCUS_DEBUG_CSS_DOCTREE cout << "hsl(" << (int)hue << ',' << (int)sat << ',' << (int)light << ')'; #endif css_property_value_t val; val.type = css::property_value_hsl; val.hue = hue; val.saturation = sat; val.lightness = light; m_cur_prop_values.push_back(val); } void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) { #if ORCUS_DEBUG_CSS_DOCTREE cout << "hsla(" << (int)hue << ',' << (int)sat << ',' << (int)light << ',' << alpha << ')'; #endif css_property_value_t val; val.type = css::property_value_hsla; val.hue = hue; val.saturation = sat; val.lightness = light; val.alpha = alpha; m_cur_prop_values.push_back(val); } void url(const char* p, size_t n) { #if ORCUS_DEBUG_CSS_DOCTREE cout << " url(" << pstring(p, n) << ")"; #endif css_property_value_t val; val.type = orcus::css::property_value_url; val.str = p; val.length = n; m_cur_prop_values.push_back(val); } void begin_parse() { #if ORCUS_DEBUG_CSS_DOCTREE cout << "========" << endl; #endif } void end_parse() { #if ORCUS_DEBUG_CSS_DOCTREE cout << "========" << endl; #endif } void begin_block() { #if ORCUS_DEBUG_CSS_DOCTREE cout << endl << "{" << endl; #endif m_in_prop = true; } void end_block() { #if ORCUS_DEBUG_CSS_DOCTREE cout << "}" << endl; #endif m_in_prop = false; // Push the property set and selector group to the document tree. std::vector::iterator it = m_cur_selector_group.begin(), ite = m_cur_selector_group.end(); for (; it != ite; ++it) m_doc.insert_properties(it->selector, it->pseudo_element, m_cur_properties); m_cur_selector_group.clear(); m_cur_properties.clear(); } void begin_property() { #if ORCUS_DEBUG_CSS_DOCTREE if (m_in_prop) cout << " "; cout << "* "; #endif } void end_property() { m_cur_properties.insert( css_properties_t::value_type(m_cur_prop_name, m_cur_prop_values)); m_cur_prop_name.clear(); m_cur_prop_values.clear(); #if ORCUS_DEBUG_CSS_DOCTREE cout << endl; #endif } }; struct simple_selector_node; typedef boost::unordered_map< css_simple_selector_t, simple_selector_node, css_simple_selector_t::hash> simple_selectors_type; typedef boost::unordered_map combinators_type; struct simple_selector_node { css_pseudo_element_properties_t properties; combinators_type children; }; css_simple_selector_t intern(string_pool& sp, const css_simple_selector_t& sel) { css_simple_selector_t interned; if (!sel.name.empty()) interned.name = sp.intern(sel.name).first; if (!sel.id.empty()) interned.id = sp.intern(sel.id).first; css_simple_selector_t::classes_type::const_iterator it = sel.classes.begin(), ite = sel.classes.end(); for (; it != ite; ++it) interned.classes.insert(sp.intern(*it).first); interned.pseudo_classes = sel.pseudo_classes; return interned; } css_selector_t intern(string_pool& sp, const css_selector_t& sel) { css_selector_t interned; interned.first = intern(sp, sel.first); css_selector_t::chained_type::const_iterator it = sel.chained.begin(), ite = sel.chained.end(); for (; it != ite; ++it) { const css_chained_simple_selector_t& cs = *it; css_chained_simple_selector_t cs_interned; cs_interned.combinator = cs.combinator; cs_interned.simple_selector = intern(sp, cs.simple_selector); interned.chained.push_back(cs_interned); } return interned; } class intern_inserter : std::unary_function { string_pool& m_sp; std::vector& m_dest; public: intern_inserter(string_pool& sp, std::vector& dest) : m_sp(sp), m_dest(dest) {} void operator() (const css_property_value_t& v) const { switch (v.type) { case css::property_value_string: case css::property_value_url: { // String value needs interning. css_property_value_t interned = v; interned.str = m_sp.intern(v.str, v.length).first.get(); m_dest.push_back(interned); } break; default: m_dest.push_back(v); } } }; void store_properties( string_pool& sp, css_pseudo_element_properties_t& store, css::pseudo_element_t pseudo_flags, const css_properties_t& props) { css_pseudo_element_properties_t::iterator it_store = store.find(pseudo_flags); if (it_store == store.end()) { // No storage for this pseudo flag value. Create a new one. std::pair r = store.insert( css_pseudo_element_properties_t::value_type( pseudo_flags, css_properties_t())); if (!r.second) // insertion failed. return; it_store = r.first; } css_properties_t& prop_store = it_store->second; css_properties_t::const_iterator it = props.begin(), ite = props.end(); for (; it != ite; ++it) { pstring key = sp.intern(it->first).first; vector vals; for_each(it->second.begin(), it->second.end(), intern_inserter(sp, vals)); prop_store[key] = vals; } } simple_selector_node* get_or_create_simple_selector_node( simple_selectors_type& store, const css_simple_selector_t& ss) { simple_selectors_type::iterator it = store.find(ss); if (it == store.end()) { // Insert this root selector. std::pair r = store.insert( simple_selectors_type::value_type( ss, simple_selector_node())); if (!r.second) // Insertion failed. return NULL; it = r.first; } return &it->second; } const simple_selector_node* get_simple_selector_node( const simple_selectors_type& store, const css_simple_selector_t& ss) { simple_selectors_type::const_iterator it = store.find(ss); return it == store.end() ? NULL : &it->second; } simple_selectors_type* get_or_create_simple_selectors_type( combinators_type& store, css::combinator_t combinator) { combinators_type::iterator it = store.find(combinator); if (it == store.end()) { // Insert new combinator. std::pair r = store.insert( combinators_type::value_type( combinator, simple_selectors_type())); if (!r.second) // Insertion failed. return NULL; it = r.first; } return &it->second; } const simple_selectors_type* get_simple_selectors_type( const combinators_type& store, css::combinator_t combinator) { combinators_type::const_iterator it = store.find(combinator); return it == store.end() ? NULL : &it->second; } void dump_pseudo_elements(css::pseudo_element_t elem) { if (!elem) return; if (elem & css::pseudo_element_after) cout << "::after"; if (elem & css::pseudo_element_before) cout << "::before"; if (elem & css::pseudo_element_first_letter) cout << "::first-letter"; if (elem & css::pseudo_element_first_line) cout << "::first-line"; if (elem & css::pseudo_element_selection) cout << "::selection"; if (elem & css::pseudo_element_backdrop) cout << "::backdrop"; } void dump_properties(const css_properties_t& props) { cout << '{' << endl; css_properties_t::const_iterator it = props.begin(), ite = props.end(); for (; it != ite; ++it) { cout << " * " << it->first << ": "; const vector& vals = it->second; copy(vals.begin(), vals.end(), ostream_iterator(cout, " ")); cout << ';' << endl; } cout << '}' << endl; } void dump_all_properties(const css_selector_t& selector, const css_pseudo_element_properties_t& properties) { css_pseudo_element_properties_t::const_iterator it_prop = properties.begin(), ite_prop = properties.end(); for (; it_prop != ite_prop; ++it_prop) { const css_properties_t& prop = it_prop->second; if (prop.empty()) continue; cout << selector; dump_pseudo_elements(it_prop->first); cout << endl; dump_properties(prop); } } void dump_chained_recursive( css_selector_t& selector, css::combinator_t op, const simple_selectors_type& ss) { simple_selectors_type::const_iterator it_ss = ss.begin(), ite_ss = ss.end(); for (; it_ss != ite_ss; ++it_ss) { css_chained_simple_selector_t chained_ss; chained_ss.combinator = op; chained_ss.simple_selector = it_ss->first; selector.chained.push_back(chained_ss); const simple_selector_node& node = it_ss->second; dump_all_properties(selector, node.properties); combinators_type::const_iterator it_comb = node.children.begin(), ite_comb = node.children.end(); for (; it_comb != ite_comb; ++it_comb) dump_chained_recursive(selector, it_comb->first, it_comb->second); selector.chained.pop_back(); } } const css_pseudo_element_properties_t* get_properties_map( const simple_selectors_type& root, const css_selector_t& selector) { const simple_selector_node* node = get_simple_selector_node(root, selector.first); if (!node) return NULL; if (!selector.chained.empty()) { // Follow the chain to find the right node to store new properties. css_selector_t::chained_type::const_iterator it_chain = selector.chained.begin(); css_selector_t::chained_type::const_iterator ite_chain = selector.chained.end(); const combinators_type* combos = &node->children; for (; it_chain != ite_chain; ++it_chain) { const css_chained_simple_selector_t& css = *it_chain; const simple_selectors_type* ss = get_simple_selectors_type(*combos, css.combinator); if (!ss) return NULL; node = get_simple_selector_node(*ss, css.simple_selector); if (!node) return NULL; combos = &node->children; } } assert(node); return &node->properties; } } css_document_tree::insertion_error::insertion_error(const std::string& msg) : general_error(msg) {} struct css_document_tree::impl { string_pool m_string_pool; simple_selectors_type m_root; }; css_document_tree::css_document_tree() : mp_impl(new impl) { } css_document_tree::~css_document_tree() { delete mp_impl; } void css_document_tree::load(const std::string& strm) { if (strm.empty()) return; #if ORCUS_DEBUG_CSS_DOCTREE cout << "original: '" << strm << "'" << endl << endl; #endif parser_handler handler(*this); css_parser parser(&strm[0], strm.size(), handler); parser.parse(); } void css_document_tree::insert_properties( const css_selector_t& selector, css::pseudo_element_t pseudo_elem, const css_properties_t& props) { if (props.empty()) return; css_selector_t selector_interned = intern(mp_impl->m_string_pool, selector); // See if the root selector already exists. simple_selector_node* node = get_or_create_simple_selector_node(mp_impl->m_root, selector_interned.first); if (!node) throw insertion_error("failed to find or create the root simple selector node."); if (!selector_interned.chained.empty()) { // Follow the chain to find the right node to store new properties. css_selector_t::chained_type::iterator it_chain = selector_interned.chained.begin(); css_selector_t::chained_type::iterator ite_chain = selector_interned.chained.end(); combinators_type* combos = &node->children; for (; it_chain != ite_chain; ++it_chain) { css_chained_simple_selector_t& css = *it_chain; simple_selectors_type* ss = get_or_create_simple_selectors_type(*combos, css.combinator); if (!ss) throw insertion_error("failed to find or create the simple selectors type by combinator."); node = get_or_create_simple_selector_node(*ss, css.simple_selector); if (!node) throw insertion_error("failed to find or create the simple selector node."); combos = &node->children; } } // We found the right node to store the properties. assert(node); store_properties(mp_impl->m_string_pool, node->properties, pseudo_elem, props); } const css_properties_t* css_document_tree::get_properties( const css_selector_t& selector, css::pseudo_element_t pseudo_elem) const { const css_pseudo_element_properties_t* prop_map = get_properties_map(mp_impl->m_root, selector); if (!prop_map) return NULL; css_pseudo_element_properties_t::const_iterator it = prop_map->find(pseudo_elem); if (it == prop_map->end()) return NULL; return &it->second; } const css_pseudo_element_properties_t* css_document_tree::get_all_properties(const css_selector_t& selector) const { return get_properties_map(mp_impl->m_root, selector); } void css_document_tree::dump() const { css_selector_t selector; const simple_selectors_type& ss = mp_impl->m_root; simple_selectors_type::const_iterator it_ss = ss.begin(), ite_ss = ss.end(); for (; it_ss != ite_ss; ++it_ss) { selector.first = it_ss->first; const simple_selector_node& node = it_ss->second; dump_all_properties(selector, node.properties); combinators_type::const_iterator it_comb = node.children.begin(), ite_comb = node.children.end(); for (; it_comb != ite_comb; ++it_comb) dump_chained_recursive(selector, it_comb->first, it_comb->second); } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_namespace_types.hpp0000644000175000017500000000076612535701143021154 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ODF_NAMESPACE_TYPES_HPP__ #define __ORCUS_ODF_NAMESPACE_TYPES_HPP__ #include "orcus/types.hpp" #include "odf_namespace_types_hpp.inl" #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/mock_spreadsheet.hpp0000644000175000017500000001651112535701143020457 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_SPREADSHEET_MOCK_IMPORT_INTERFACE_HPP__ #define __ORCUS_SPREADSHEET_MOCK_IMPORT_INTERFACE_HPP__ #include namespace orcus { namespace spreadsheet { namespace mock { class import_shared_strings : public orcus::spreadsheet::iface::import_shared_strings { public: virtual ~import_shared_strings(); virtual size_t append(const char* s, size_t n); virtual size_t add(const char* s, size_t n); virtual void set_segment_font(size_t font_index); virtual void set_segment_bold(bool b); virtual void set_segment_italic(bool b); virtual void set_segment_font_name(const char* s, size_t n); virtual void set_segment_font_size(double point); virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual void append_segment(const char* s, size_t n); virtual size_t commit_segments(); }; class import_styles : public orcus::spreadsheet::iface::import_styles { public: virtual ~import_styles(); // font virtual void set_font_count(size_t n); virtual void set_font_bold(bool b); virtual void set_font_italic(bool b); virtual void set_font_name(const char* s, size_t n); virtual void set_font_size(double point); virtual void set_font_underline(orcus::spreadsheet::underline_t e); virtual size_t commit_font(); // fill virtual void set_fill_count(size_t n); virtual void set_fill_pattern_type(const char* s, size_t n); virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual size_t commit_fill(); // border virtual void set_border_count(size_t n); virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, const char* s, size_t n); virtual void set_border_color(orcus::spreadsheet::border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue); virtual size_t commit_border(); // cell protection virtual void set_cell_hidden(bool b); virtual void set_cell_locked(bool b); virtual size_t commit_cell_protection(); // cell style xf virtual void set_cell_style_xf_count(size_t n); virtual size_t commit_cell_style_xf(); // cell xf virtual void set_cell_xf_count(size_t n); virtual size_t commit_cell_xf(); // dxf virtual void set_dxf_count(size_t n); virtual size_t commit_dxf(); // xf (cell format) - used both by cell xf and cell style xf. virtual void set_xf_number_format(size_t index); virtual void set_xf_font(size_t index); virtual void set_xf_fill(size_t index); virtual void set_xf_border(size_t index); virtual void set_xf_protection(size_t index); virtual void set_xf_style_xf(size_t index); virtual void set_xf_apply_alignment(bool b); virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align); virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align); // cell style entry virtual void set_cell_style_count(size_t n); virtual void set_cell_style_name(const char* s, size_t n); virtual void set_cell_style_xf(size_t index); virtual void set_cell_style_builtin(size_t index); virtual size_t commit_cell_style(); }; class import_sheet_properties : public orcus::spreadsheet::iface::import_sheet_properties { public: virtual ~import_sheet_properties(); virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit); virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden); virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit); virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden); virtual void set_merge_cell_range(const char* p_ref, size_t p_ref_len); }; /** * Interface for sheet. */ class import_sheet : public orcus::spreadsheet::iface::import_sheet { public: virtual ~import_sheet(); virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n); virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex); virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value); virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value); virtual void set_date_time( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, int year, int month, int day, int hours, int minutes, double seconds); virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index); virtual void set_format(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start, orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end, size_t xf_index); virtual void set_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n); virtual void set_shared_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula, const char* p_range, size_t n_range); virtual void set_shared_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula); virtual void set_shared_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex); virtual void set_formula_result( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value); virtual void set_formula_result( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n); virtual void set_array_formula(row_t, col_t, formula_grammar_t, const char*, size_t, row_t, col_t); virtual void set_array_formula(row_t, col_t, formula_grammar_t, const char*, size_t, const char*, size_t); }; class import_factory : public orcus::spreadsheet::iface::import_factory { public: virtual ~import_factory(); virtual orcus::spreadsheet::iface::import_global_settings* get_global_settings(); virtual orcus::spreadsheet::iface::import_shared_strings* get_shared_strings(); virtual orcus::spreadsheet::iface::import_styles* get_styles(); virtual orcus::spreadsheet::iface::import_sheet* append_sheet(const char* sheet_name, size_t sheet_name_length); virtual orcus::spreadsheet::iface::import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length); virtual orcus::spreadsheet::iface::import_sheet* get_sheet(orcus::spreadsheet::sheet_t sheet_index); virtual void finalize(); }; }}} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/orcus_ods.cpp0000644000175000017500000000753712535701143017142 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_ods.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/zip_archive.hpp" #include "orcus/zip_archive_stream.hpp" #include "xml_stream_parser.hpp" #include "ods_content_xml_handler.hpp" #include "ods_session_data.hpp" #include "odf_tokens.hpp" #include "odf_namespace_types.hpp" #include "session_context.hpp" #include #include #include using namespace std; namespace orcus { struct orcus_ods_impl { xmlns_repository m_ns_repo; session_context m_cxt; spreadsheet::iface::import_factory* mp_factory; orcus_ods_impl(spreadsheet::iface::import_factory* im_factory) : m_cxt(new ods_session_data), mp_factory(im_factory) {} }; orcus_ods::orcus_ods(spreadsheet::iface::import_factory* factory) : mp_impl(new orcus_ods_impl(factory)) { mp_impl->m_ns_repo.add_predefined_values(NS_odf_all); } orcus_ods::~orcus_ods() { delete mp_impl; } void orcus_ods::list_content(const zip_archive& archive) { size_t num = archive.get_file_entry_count(); cout << "number of files this archive contains: " << num << endl; for (size_t i = 0; i < num; ++i) { pstring filename = archive.get_file_entry_name(i); if (filename.empty()) cout << "(empty)" << endl; else cout << filename << endl; } } void orcus_ods::read_content(const zip_archive& archive) { vector buf; if (!archive.read_file_entry("content.xml", buf)) { cout << "failed to get stat on content.xml" << endl; return; } read_content_xml(&buf[0], buf.size()); } void orcus_ods::read_content_xml(const unsigned char* p, size_t size) { xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, odf_tokens, reinterpret_cast(p), size); ods_content_xml_handler handler(mp_impl->m_cxt, odf_tokens, mp_impl->mp_factory); parser.set_handler(&handler); parser.parse(); } bool orcus_ods::detect(const unsigned char* blob, size_t size) { zip_archive_stream_blob stream(blob, size); zip_archive archive(&stream); try { archive.load(); } catch (const zip_error&) { // Not a valid zip archive. return false; } vector buf; if (!archive.read_file_entry("mimetype", buf)) // Failed to read 'mimetype' entry. return false; if (buf.empty()) // mimetype is empty. return false; const char* mimetype = "application/vnd.oasis.opendocument.spreadsheet"; size_t n = strlen(mimetype); if (buf.size() < n) return false; if (strncmp(mimetype, reinterpret_cast(&buf[0]), n)) // The mimetype content differs. return false; return true; } void orcus_ods::read_file(const string& filepath) { zip_archive_stream_fd stream(filepath.c_str()); zip_archive archive(&stream); archive.load(); list_content(archive); spreadsheet::formula_grammar_t old_grammar = spreadsheet::formula_grammar_unknown; spreadsheet::iface::import_global_settings* gs = mp_impl->mp_factory->get_global_settings(); if (gs) { old_grammar = gs->get_default_formula_grammar(); gs->set_default_formula_grammar(spreadsheet::formula_grammar_ods); } read_content(archive); mp_impl->mp_factory->finalize(); if (gs) // This grammar will be used gs->set_default_formula_grammar(old_grammar); } const char* orcus_ods::get_name() const { static const char* name = "ods"; return name; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ods_session_data.hpp0000644000175000017500000000252612535701143020461 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ODS_SESSION_DATA_HPP #define ORCUS_ODS_SESSION_DATA_HPP #include "session_context.hpp" #include "orcus/spreadsheet/types.hpp" namespace orcus { struct ods_session_data : public session_context::custom_data { enum formula_result_type { rt_none, rt_numeric, rt_string, rt_error }; struct formula_result { formula_result_type type; double numeric_value; pstring string_value; formula_result(); }; struct formula { spreadsheet::sheet_t sheet; spreadsheet::row_t row; spreadsheet::col_t column; spreadsheet::formula_grammar_t grammar; pstring exp; formula_result result; formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _col, spreadsheet::formula_grammar_t _grammar, const pstring& _exp); }; typedef boost::ptr_vector formulas_type; formulas_type m_formulas; virtual ~ods_session_data(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ods_session_data.cpp0000644000175000017500000000150312535701143020446 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ods_session_data.hpp" namespace orcus { ods_session_data::formula_result::formula_result() : type(rt_none), numeric_value(std::numeric_limits::quiet_NaN()) {} ods_session_data::formula::formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _col, spreadsheet::formula_grammar_t _grammar, const pstring& _exp) : sheet(_sheet), row(_row), column(_col), grammar(_grammar), exp(_exp) {} ods_session_data::~ods_session_data() {} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/orcus_gnumeric.cpp0000644000175000017500000000732612535701143020162 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_gnumeric.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/stream.hpp" #include "orcus/config.hpp" #include "xml_stream_parser.hpp" #include "gnumeric_handler.hpp" #include "gnumeric_tokens.hpp" #include "gnumeric_namespace_types.hpp" #include "gnumeric_detection_handler.hpp" #include "session_context.hpp" #include "detection_result.hpp" #define ORCUS_DEBUG_GNUMERIC 0 #define BOOST_IOSTREAMS_NO_LIB 1 #include #include #include #include #include using namespace std; namespace orcus { namespace { bool decompress_gzip(const char* buffer, size_t size, string& decompressed) { string buf; try { boost::iostreams::filtering_ostream os; os.push(boost::iostreams::gzip_decompressor()); os.push(boost::iostreams::back_inserter(buf)); boost::iostreams::write(os, buffer, size); os.flush(); } catch (const exception&) { return false; } buf.swap(decompressed); return true; } } struct orcus_gnumeric_impl { xmlns_repository m_ns_repo; session_context m_cxt; spreadsheet::iface::import_factory* mp_factory; orcus_gnumeric_impl(spreadsheet::iface::import_factory* im_factory) : mp_factory(im_factory) {} }; orcus_gnumeric::orcus_gnumeric(spreadsheet::iface::import_factory* factory) : mp_impl(new orcus_gnumeric_impl(factory)) { mp_impl->m_ns_repo.add_predefined_values(NS_gnumeric_all); } orcus_gnumeric::~orcus_gnumeric() { delete mp_impl; } void orcus_gnumeric::read_content_xml(const char* p, size_t size) { xml_stream_parser parser(get_config(), mp_impl->m_ns_repo, gnumeric_tokens, p, size); ::boost::scoped_ptr handler( new gnumeric_content_xml_handler(mp_impl->m_cxt, gnumeric_tokens, mp_impl->mp_factory)); parser.set_handler(handler.get()); parser.parse(); } bool orcus_gnumeric::detect(const unsigned char* buffer, size_t size) { // Detect gnumeric format that's already in memory. string decompressed; if (!decompress_gzip(reinterpret_cast(buffer), size, decompressed)) return false; if (decompressed.empty()) return false; // Parse this xml stream for detection. config opt; xmlns_repository ns_repo; ns_repo.add_predefined_values(NS_gnumeric_all); session_context cxt; xml_stream_parser parser(opt, ns_repo, gnumeric_tokens, &decompressed[0], decompressed.size()); gnumeric_detection_handler handler(cxt, gnumeric_tokens); parser.set_handler(&handler); try { parser.parse(); } catch (const detection_result& res) { return res.get_result(); } catch (...) {} return false; } void orcus_gnumeric::read_file(const string& filepath) { #if ORCUS_DEBUG_GNUMERIC cout << "reading " << filepath << endl; #endif string strm; load_file_content(filepath.c_str(), strm); if (strm.empty()) return; string file_content; if (!decompress_gzip(&strm[0], strm.size(), file_content)) return; read_content_xml(file_content.c_str(), file_content.length()); mp_impl->mp_factory->finalize(); } const char* orcus_gnumeric::get_name() const { static const char* name = "gnumeric"; return name; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_context.hpp0000644000175000017500000000527612535701143017707 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_CONTEXT_HPP #define ORCUS_XLSX_CONTEXT_HPP #include "orcus/spreadsheet/types.hpp" #include "orcus/string_pool.hpp" #include "xml_context_base.hpp" #include "xlsx_types.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class import_sheet; class import_shared_strings; class import_styles; }} /** * Context for xl/sharedStrings.xml part. */ class xlsx_shared_strings_context : public xml_context_base { public: xlsx_shared_strings_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_shared_strings* strings); virtual ~xlsx_shared_strings_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: spreadsheet::iface::import_shared_strings* mp_strings; string_pool m_pool; pstring m_cur_str; bool m_in_segments; }; /** * Context for xl/styles.xml part. This part contains various styles used * in the sheets. */ class xlsx_styles_context : public xml_context_base { public: xlsx_styles_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_styles* import_styles); virtual ~xlsx_styles_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: void start_border_color(const xml_attrs_t& attrs); void start_font_color(const xml_attrs_t& attrs); private: spreadsheet::iface::import_styles* mp_styles; string_pool m_pool; spreadsheet::border_direction_t m_cur_border_dir; bool m_cell_style_xf; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_token_constants.hpp0000644000175000017500000000101712535701143021564 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OOXML_TOKEN_CONSTANTS_HPP__ #define __ORCUS_OOXML_TOKEN_CONSTANTS_HPP__ #include "orcus/types.hpp" namespace orcus { #include "ooxml_token_constants.inl" } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/orcus_xls_xml.cpp0000644000175000017500000000502312535701143020027 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xls_xml.hpp" #include "orcus/stream.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/config.hpp" #include "xml_stream_parser.hpp" #include "xls_xml_handler.hpp" #include "xls_xml_detection_handler.hpp" #include "session_context.hpp" #include "xls_xml_tokens.hpp" #include "xls_xml_namespace_types.hpp" #include "detection_result.hpp" #include #define ORCUS_DEBUG_XLS_XML_FILTER 1 #if ORCUS_DEBUG_XLS_XML_FILTER #include #endif using namespace std; namespace orcus { struct orcus_xls_xml_impl { xmlns_repository m_ns_repo; session_context m_cxt; spreadsheet::iface::import_factory* mp_factory; orcus_xls_xml_impl(spreadsheet::iface::import_factory* factory) : mp_factory(factory) {} }; orcus_xls_xml::orcus_xls_xml(spreadsheet::iface::import_factory* factory) : mp_impl(new orcus_xls_xml_impl(factory)) { mp_impl->m_ns_repo.add_predefined_values(NS_xls_xml_all); } orcus_xls_xml::~orcus_xls_xml() { delete mp_impl; } bool orcus_xls_xml::detect(const unsigned char* buffer, size_t size) { config opt; xmlns_repository ns_repo; ns_repo.add_predefined_values(NS_xls_xml_all); xml_stream_parser parser(opt, ns_repo, xls_xml_tokens, reinterpret_cast(buffer), size); session_context cxt; xls_xml_detection_handler handler(cxt, xls_xml_tokens); parser.set_handler(&handler); try { parser.parse(); } catch (const detection_result& res) { return res.get_result(); } catch (...) {} return false; } void orcus_xls_xml::read_file(const string& filepath) { #if ORCUS_DEBUG_XLS_XML_FILTER cout << "reading " << filepath << endl; #endif string strm; load_file_content(filepath.c_str(), strm); if (strm.empty()) return; xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, xls_xml_tokens, &strm[0], strm.size()); boost::scoped_ptr handler( new xls_xml_handler(mp_impl->m_cxt, xls_xml_tokens, mp_impl->mp_factory)); parser.set_handler(handler.get()); parser.parse(); } const char* orcus_xls_xml::get_name() const { static const char* name = "xls-xml"; return name; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_namespace_types.cpp0000644000175000017500000000203412535701143022176 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_namespace_types.hpp" #include "odf_namespace_types.hpp" namespace orcus { const xmlns_id_t NS_gnumeric_dc = "http://purl.org/dc/elements/1.1/"; const xmlns_id_t NS_gnumeric_gnm = "http://www.gnumeric.org/v10.dtd"; const xmlns_id_t NS_gnumeric_ooo = "http://openoffice.org/2004/office"; const xmlns_id_t NS_gnumeric_xlink = "http://www.w3.org/1999/xlink"; const xmlns_id_t NS_gnumeric_xsi = "http://www.w3.org/2001/XMLSchema-instance"; namespace { xmlns_id_t gnumeric_ns[] = { NS_gnumeric_dc, NS_gnumeric_gnm, NS_gnumeric_ooo, NS_gnumeric_xlink, NS_gnumeric_xsi, NS_odf_meta, NS_odf_office, NULL }; } const xmlns_id_t* NS_gnumeric_all = gnumeric_ns; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_context.cpp0000644000175000017500000000433312535701143020506 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_context.hpp" #include "gnumeric_token_constants.hpp" #include "gnumeric_namespace_types.hpp" #include "gnumeric_sheet_context.hpp" #include "orcus/global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include #include #include using namespace std; namespace orcus { namespace { } gnumeric_content_xml_context::gnumeric_content_xml_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory) : xml_context_base(session_cxt, tokens), mp_factory(factory) { } gnumeric_content_xml_context::~gnumeric_content_xml_context() { } bool gnumeric_content_xml_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { if (ns == NS_gnumeric_gnm && name == XML_Sheet) return false; return true; } xml_context_base* gnumeric_content_xml_context::create_child_context(xmlns_id_t ns, xml_token_t name) { if (ns == NS_gnumeric_gnm && name == XML_Sheet) { mp_child.reset(new gnumeric_sheet_context(get_session_context(), get_tokens(), mp_factory)); mp_child->transfer_common(*this); return mp_child.get(); } return NULL; } void gnumeric_content_xml_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void gnumeric_content_xml_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { push_stack(ns, name); if (ns == NS_gnumeric_gnm) { switch (name) { default: warn_unhandled(); } } else warn_unhandled(); } bool gnumeric_content_xml_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_gnumeric_gnm) { switch (name) { } } return pop_stack(ns, name); } void gnumeric_content_xml_context::characters(const pstring& str, bool transient) { } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_token_constants.inl0000644000175000017500000011523012535701143022112 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const xml_token_t XML_AcceptLabelsInFormulas = 1; const xml_token_t XML_Action = 2; const xml_token_t XML_ActiveChart = 3; const xml_token_t XML_ActiveCol = 4; const xml_token_t XML_ActiveColumn = 5; const xml_token_t XML_ActivePane = 6; const xml_token_t XML_ActiveRow = 7; const xml_token_t XML_ActiveRows = 8; const xml_token_t XML_ActiveSheet = 9; const xml_token_t XML_Aggregate = 10; const xml_token_t XML_AlertVersion = 11; const xml_token_t XML_Alignment = 12; const xml_token_t XML_AllItemName = 13; const xml_token_t XML_AllowDeleteCols = 14; const xml_token_t XML_AllowDeleteRows = 15; const xml_token_t XML_AllowFilter = 16; const xml_token_t XML_AllowFormatCells = 17; const xml_token_t XML_AllowInsertCols = 18; const xml_token_t XML_AllowInsertHyperlinks = 19; const xml_token_t XML_AllowInsertRows = 20; const xml_token_t XML_AllowSizeCols = 21; const xml_token_t XML_AllowSizeRows = 22; const xml_token_t XML_AllowSort = 23; const xml_token_t XML_AllowUsePivotTables = 24; const xml_token_t XML_AlternateMethod = 25; const xml_token_t XML_AppName = 26; const xml_token_t XML_Append = 27; const xml_token_t XML_ApplyAutomaticOutlineStyles = 28; const xml_token_t XML_Area = 29; const xml_token_t XML_ArrayRange = 30; const xml_token_t XML_Async = 31; const xml_token_t XML_Attribute = 32; const xml_token_t XML_AttributeType = 33; const xml_token_t XML_Authentication = 34; const xml_token_t XML_Author = 35; const xml_token_t XML_AutoFilter = 36; const xml_token_t XML_AutoFilterAnd = 37; const xml_token_t XML_AutoFilterColumn = 38; const xml_token_t XML_AutoFilterCondition = 39; const xml_token_t XML_AutoFilterOr = 40; const xml_token_t XML_AutoFitHeight = 41; const xml_token_t XML_AutoFitWidth = 42; const xml_token_t XML_AutoFormatAlignment = 43; const xml_token_t XML_AutoFormatBorder = 44; const xml_token_t XML_AutoFormatFont = 45; const xml_token_t XML_AutoFormatName = 46; const xml_token_t XML_AutoFormatNumber = 47; const xml_token_t XML_AutoFormatPattern = 48; const xml_token_t XML_AutoFormatWidth = 49; const xml_token_t XML_AutoRepublish = 50; const xml_token_t XML_AutoShowCount = 51; const xml_token_t XML_AutoShowField = 52; const xml_token_t XML_AutoShowRange = 53; const xml_token_t XML_AutoShowType = 54; const xml_token_t XML_AutoSortField = 55; const xml_token_t XML_AutoSortOrder = 56; const xml_token_t XML_BackgroundQuery = 57; const xml_token_t XML_BaseField = 58; const xml_token_t XML_BaseItem = 59; const xml_token_t XML_Basic = 60; const xml_token_t XML_Behavior = 61; const xml_token_t XML_Binding = 62; const xml_token_t XML_BlackAndWhite = 63; const xml_token_t XML_BlankLineAfterItems = 64; const xml_token_t XML_BlockTotal = 65; const xml_token_t XML_Bold = 66; const xml_token_t XML_Boolean = 67; const xml_token_t XML_Border = 68; const xml_token_t XML_Borders = 69; const xml_token_t XML_Bottom = 70; const xml_token_t XML_BoundField = 71; const xml_token_t XML_Bytes = 72; const xml_token_t XML_CacheDetails = 73; const xml_token_t XML_CacheFile = 74; const xml_token_t XML_CacheIndex = 75; const xml_token_t XML_CachePosition = 76; const xml_token_t XML_CalculatedMember = 77; const xml_token_t XML_Calculation = 78; const xml_token_t XML_CantGetUniqueItems = 79; const xml_token_t XML_Caption = 80; const xml_token_t XML_CaptionAlignment = 81; const xml_token_t XML_CaseSensitive = 82; const xml_token_t XML_Category = 83; const xml_token_t XML_Cell = 84; const xml_token_t XML_CellRangeList = 85; const xml_token_t XML_CellsExpanded = 86; const xml_token_t XML_CellsExpandedSeqNum = 87; const xml_token_t XML_CellsNotExpanded = 88; const xml_token_t XML_CenterHorizontal = 89; const xml_token_t XML_CenterVertical = 90; const xml_token_t XML_Cf = 91; const xml_token_t XML_CharSet = 92; const xml_token_t XML_Characters = 93; const xml_token_t XML_CharactersWithSpaces = 94; const xml_token_t XML_ClientParameter = 95; const xml_token_t XML_ClientParameterBinding = 96; const xml_token_t XML_ClientParameterBindings = 97; const xml_token_t XML_ClientParameterValue = 98; const xml_token_t XML_Clipped = 99; const xml_token_t XML_CodeName = 100; const xml_token_t XML_Col1 = 101; const xml_token_t XML_Col10 = 102; const xml_token_t XML_Col11 = 103; const xml_token_t XML_Col12 = 104; const xml_token_t XML_Col13 = 105; const xml_token_t XML_Col14 = 106; const xml_token_t XML_Col15 = 107; const xml_token_t XML_Col16 = 108; const xml_token_t XML_Col17 = 109; const xml_token_t XML_Col18 = 110; const xml_token_t XML_Col19 = 111; const xml_token_t XML_Col2 = 112; const xml_token_t XML_Col20 = 113; const xml_token_t XML_Col3 = 114; const xml_token_t XML_Col4 = 115; const xml_token_t XML_Col5 = 116; const xml_token_t XML_Col6 = 117; const xml_token_t XML_Col7 = 118; const xml_token_t XML_Col8 = 119; const xml_token_t XML_Col9 = 120; const xml_token_t XML_ColBreak = 121; const xml_token_t XML_ColBreaks = 122; const xml_token_t XML_ColFirst = 123; const xml_token_t XML_ColLast = 124; const xml_token_t XML_Color = 125; const xml_token_t XML_Column = 126; const xml_token_t XML_ColumnInfo = 127; const xml_token_t XML_ColumnInputCell = 128; const xml_token_t XML_ColumnName = 129; const xml_token_t XML_ComboHide = 130; const xml_token_t XML_Comma = 131; const xml_token_t XML_CommandText = 132; const xml_token_t XML_CommandTextOrignal = 133; const xml_token_t XML_CommandType = 134; const xml_token_t XML_Comment = 135; const xml_token_t XML_CommentsLayout = 136; const xml_token_t XML_Company = 137; const xml_token_t XML_ComponentOptions = 138; const xml_token_t XML_Condition = 139; const xml_token_t XML_ConditionalFormatting = 140; const xml_token_t XML_Connection = 141; const xml_token_t XML_ConnectionInfo = 142; const xml_token_t XML_ConnectionString = 143; const xml_token_t XML_Consecutive = 144; const xml_token_t XML_ConsolidationReference = 145; const xml_token_t XML_Count = 146; const xml_token_t XML_CountOfSameItems = 147; const xml_token_t XML_CreateBackup = 148; const xml_token_t XML_Created = 149; const xml_token_t XML_Credential = 150; const xml_token_t XML_CredentialBinding = 151; const xml_token_t XML_CredentialValue = 152; const xml_token_t XML_Crn = 153; const xml_token_t XML_CubeField = 154; const xml_token_t XML_CubeSource = 155; const xml_token_t XML_CurrentPage = 156; const xml_token_t XML_Custom = 157; const xml_token_t XML_CustomDocumentProperties = 158; const xml_token_t XML_Data = 159; const xml_token_t XML_DataAxisEmpty = 160; const xml_token_t XML_DataField = 161; const xml_token_t XML_DataMember = 162; const xml_token_t XML_DataSource = 163; const xml_token_t XML_DataTable = 164; const xml_token_t XML_DataType = 165; const xml_token_t XML_DataValidation = 166; const xml_token_t XML_DataValueEditing = 167; const xml_token_t XML_Date1904 = 168; const xml_token_t XML_Decimal = 169; const xml_token_t XML_DefaultColumnWidth = 170; const xml_token_t XML_DefaultItem = 171; const xml_token_t XML_DefaultRowHeight = 172; const xml_token_t XML_DefaultValue = 173; const xml_token_t XML_DefaultVersion = 174; const xml_token_t XML_DeletedTitle = 175; const xml_token_t XML_Delimiters = 176; const xml_token_t XML_Descending = 177; const xml_token_t XML_Description = 178; const xml_token_t XML_DetailFormat = 179; const xml_token_t XML_DetailMaxHeight = 180; const xml_token_t XML_DetailMaxWidth = 181; const xml_token_t XML_DetailRowHeight = 182; const xml_token_t XML_DetailSortOrder = 183; const xml_token_t XML_DetailWidth = 184; const xml_token_t XML_Dimension = 185; const xml_token_t XML_DisableDateRecognition = 186; const xml_token_t XML_DisableDrillDown = 187; const xml_token_t XML_DisableEdit = 188; const xml_token_t XML_DisableFieldDialog = 189; const xml_token_t XML_DisableRefresh = 190; const xml_token_t XML_DisableWizard = 191; const xml_token_t XML_DisplayDrawingObjects = 192; const xml_token_t XML_DisplayEmptyMembers = 193; const xml_token_t XML_DisplayErrorString = 194; const xml_token_t XML_DisplayFieldList = 195; const xml_token_t XML_DisplayFormulas = 196; const xml_token_t XML_DisplayIn = 197; const xml_token_t XML_DisplayInkNotes = 198; const xml_token_t XML_DisplayPageBreak = 199; const xml_token_t XML_DisplayRightToLeft = 200; const xml_token_t XML_DivID = 201; const xml_token_t XML_DoNotCalculateBeforeSave = 202; const xml_token_t XML_DoNotDisplayColHeaders = 203; const xml_token_t XML_DoNotDisplayGridlines = 204; const xml_token_t XML_DoNotDisplayHeadings = 205; const xml_token_t XML_DoNotDisplayOutline = 206; const xml_token_t XML_DoNotDisplayRowHeaders = 207; const xml_token_t XML_DoNotDisplayZeros = 208; const xml_token_t XML_DoNotJoinDelimiters = 209; const xml_token_t XML_DoNotPersist = 210; const xml_token_t XML_DoNotPersistSort = 211; const xml_token_t XML_DoNotPersstAF = 212; const xml_token_t XML_DoNotPromptForFile = 213; const xml_token_t XML_DoNotSaveLinkValues = 214; const xml_token_t XML_DocumentProperties = 215; const xml_token_t XML_DontShowInFieldList = 216; const xml_token_t XML_DownloadComponents = 217; const xml_token_t XML_DraftQuality = 218; const xml_token_t XML_DrawAspect = 219; const xml_token_t XML_DrilledLevel = 220; const xml_token_t XML_DrilledMember = 221; const xml_token_t XML_EditWebPage = 222; const xml_token_t XML_ElementType = 223; const xml_token_t XML_EmbedSaveSmartTags = 224; const xml_token_t XML_EnableMultiplePageItems = 225; const xml_token_t XML_EnableRedirections = 226; const xml_token_t XML_EnableSelection = 227; const xml_token_t XML_Encode = 228; const xml_token_t XML_EntirePage = 229; const xml_token_t XML_Entry = 230; const xml_token_t XML_Error = 231; const xml_token_t XML_ErrorHide = 232; const xml_token_t XML_ErrorMessage = 233; const xml_token_t XML_ErrorString = 234; const xml_token_t XML_ErrorStyle = 235; const xml_token_t XML_ErrorTitle = 236; const xml_token_t XML_ExcelName = 237; const xml_token_t XML_ExcelType = 238; const xml_token_t XML_ExcelWorkbook = 239; const xml_token_t XML_ExcelWorksheetType = 240; const xml_token_t XML_Expanded = 241; const xml_token_t XML_ExpandedColumnCount = 242; const xml_token_t XML_ExpandedRowCount = 243; const xml_token_t XML_ExternName = 244; const xml_token_t XML_ExtraLeftColumns = 245; const xml_token_t XML_ExtraRightColumns = 246; const xml_token_t XML_Family = 247; const xml_token_t XML_Field = 248; const xml_token_t XML_FieldLabelFormat = 249; const xml_token_t XML_FieldListBottom = 250; const xml_token_t XML_FieldListLeft = 251; const xml_token_t XML_FieldListRight = 252; const xml_token_t XML_FieldListTop = 253; const xml_token_t XML_FieldStart = 254; const xml_token_t XML_FieldType = 255; const xml_token_t XML_File = 256; const xml_token_t XML_FileName = 257; const xml_token_t XML_FillDown = 258; const xml_token_t XML_Filled = 259; const xml_token_t XML_FilterCaption = 260; const xml_token_t XML_FilterMember = 261; const xml_token_t XML_FilterOn = 262; const xml_token_t XML_FirstVisibleSheet = 263; const xml_token_t XML_FitHeight = 264; const xml_token_t XML_FitToPage = 265; const xml_token_t XML_FitWidth = 266; const xml_token_t XML_Font = 267; const xml_token_t XML_FontName = 268; const xml_token_t XML_Footer = 269; const xml_token_t XML_Format = 270; const xml_token_t XML_FormatSettings = 271; const xml_token_t XML_FormatType = 272; const xml_token_t XML_Formula = 273; const xml_token_t XML_FormulaIndex = 274; const xml_token_t XML_FormulaV10 = 275; const xml_token_t XML_FreezePanes = 276; const xml_token_t XML_FrozenNoSplit = 277; const xml_token_t XML_FullColumns = 278; const xml_token_t XML_FullRows = 279; const xml_token_t XML_Function = 280; const xml_token_t XML_FunctionGroup = 281; const xml_token_t XML_FunctionGroupIndex = 282; const xml_token_t XML_FuturePersist = 283; const xml_token_t XML_FutureVer = 284; const xml_token_t XML_GrandTotalString = 285; const xml_token_t XML_GridlineColor = 286; const xml_token_t XML_GridlineColorIndex = 287; const xml_token_t XML_Gridlines = 288; const xml_token_t XML_GroupBy = 289; const xml_token_t XML_GroupDefinition = 290; const xml_token_t XML_GroupEnd = 291; const xml_token_t XML_GroupEndAuto = 292; const xml_token_t XML_GroupLevel = 293; const xml_token_t XML_GroupMember = 294; const xml_token_t XML_GroupNumber = 295; const xml_token_t XML_GroupStart = 296; const xml_token_t XML_GroupStartAuto = 297; const xml_token_t XML_GroupType = 298; const xml_token_t XML_GroupedWidth = 299; const xml_token_t XML_Guid = 300; const xml_token_t XML_HRef = 301; const xml_token_t XML_HRefScreenTip = 302; const xml_token_t XML_HTMLFormat = 303; const xml_token_t XML_HTMLTables = 304; const xml_token_t XML_HasNoAutoFormat = 305; const xml_token_t XML_HasNoRecords = 306; const xml_token_t XML_Header = 307; const xml_token_t XML_HeaderRange = 308; const xml_token_t XML_HeaderRow = 309; const xml_token_t XML_Height = 310; const xml_token_t XML_Hidden = 311; const xml_token_t XML_HideDetail = 312; const xml_token_t XML_HideDropDowns = 313; const xml_token_t XML_HideFormula = 314; const xml_token_t XML_HideHorizontalScrollBar = 315; const xml_token_t XML_HideInactiveListBorder = 316; const xml_token_t XML_HideOfficeLogo = 317; const xml_token_t XML_HidePivotTableFieldList = 318; const xml_token_t XML_HideTotalsAnnotation = 319; const xml_token_t XML_HideVerticalScrollBar = 320; const xml_token_t XML_HideWorkbookTabs = 321; const xml_token_t XML_Horizontal = 322; const xml_token_t XML_HorizontalResolution = 323; const xml_token_t XML_Href = 324; const xml_token_t XML_HtmlType = 325; const xml_token_t XML_HyperlinkBase = 326; const xml_token_t XML_ID = 327; const xml_token_t XML_IMEMode = 328; const xml_token_t XML_Id = 329; const xml_token_t XML_IdWrapped = 330; const xml_token_t XML_If = 331; const xml_token_t XML_ImmediateItemsOnDrop = 332; const xml_token_t XML_Indent = 333; const xml_token_t XML_Index = 334; const xml_token_t XML_IndividualCellBorders = 335; const xml_token_t XML_InputHide = 336; const xml_token_t XML_InputMessage = 337; const xml_token_t XML_InputTitle = 338; const xml_token_t XML_InsertEntireRows = 339; const xml_token_t XML_InstanceShape = 340; const xml_token_t XML_Interior = 341; const xml_token_t XML_IntlMacro = 342; const xml_token_t XML_Invalid = 343; const xml_token_t XML_InvertedColumnMember = 344; const xml_token_t XML_InvertedRowMember = 345; const xml_token_t XML_IsGroupLevel = 346; const xml_token_t XML_IsMemberProperty = 347; const xml_token_t XML_IsNotFiltered = 348; const xml_token_t XML_Italic = 349; const xml_token_t XML_Item = 350; const xml_token_t XML_ItemType = 351; const xml_token_t XML_Iteration = 352; const xml_token_t XML_KeyboardShortcut = 353; const xml_token_t XML_Keywords = 354; const xml_token_t XML_Label = 355; const xml_token_t XML_LastAuthor = 356; const xml_token_t XML_LastPrinted = 357; const xml_token_t XML_LastSaved = 358; const xml_token_t XML_Layout = 359; const xml_token_t XML_LayoutForm = 360; const xml_token_t XML_LayoutPageBreak = 361; const xml_token_t XML_LayoutSubtotalLocation = 362; const xml_token_t XML_LeafColumnMember = 363; const xml_token_t XML_LeafRowMember = 364; const xml_token_t XML_Left = 365; const xml_token_t XML_LeftCell = 366; const xml_token_t XML_LeftColumnRightPane = 367; const xml_token_t XML_LeftColumnVisible = 368; const xml_token_t XML_LeftToRight = 369; const xml_token_t XML_LengthLevelUniqueName = 370; const xml_token_t XML_Level = 371; const xml_token_t XML_LineStyle = 372; const xml_token_t XML_Lines = 373; const xml_token_t XML_LoadMode = 374; const xml_token_t XML_LocalConnection = 375; const xml_token_t XML_Location = 376; const xml_token_t XML_LocationOfComponents = 377; const xml_token_t XML_Macro = 378; const xml_token_t XML_MainFile = 379; const xml_token_t XML_Maintain = 380; const xml_token_t XML_MajorVersion = 381; const xml_token_t XML_Manager = 382; const xml_token_t XML_Map = 383; const xml_token_t XML_MapChildItems = 384; const xml_token_t XML_MapID = 385; const xml_token_t XML_MapInfo = 386; const xml_token_t XML_Mapdata = 387; const xml_token_t XML_Margin = 388; const xml_token_t XML_Max = 389; const xml_token_t XML_MaxChange = 390; const xml_token_t XML_MaxHeight = 391; const xml_token_t XML_MaxIterations = 392; const xml_token_t XML_MaxWidth = 393; const xml_token_t XML_Measure = 394; const xml_token_t XML_Member = 395; const xml_token_t XML_MemberExpand = 396; const xml_token_t XML_MemberFormat = 397; const xml_token_t XML_MemberName = 398; const xml_token_t XML_MemberPropertiesOrder = 399; const xml_token_t XML_MemberProperty = 400; const xml_token_t XML_MemberPropertyParent = 401; const xml_token_t XML_MergeAcross = 402; const xml_token_t XML_MergeDown = 403; const xml_token_t XML_MergeLabels = 404; const xml_token_t XML_Min = 405; const xml_token_t XML_MinorVersion = 406; const xml_token_t XML_Missing = 407; const xml_token_t XML_MissingItemsLimit = 408; const xml_token_t XML_Moper = 409; const xml_token_t XML_MoveAfterReturn = 410; const xml_token_t XML_Name = 411; const xml_token_t XML_NamedCell = 412; const xml_token_t XML_NamedRange = 413; const xml_token_t XML_Names = 414; const xml_token_t XML_Namespace = 415; const xml_token_t XML_NewAsync = 416; const xml_token_t XML_NewItemsHidden = 417; const xml_token_t XML_NextId = 418; const xml_token_t XML_NextSheetNumber = 419; const xml_token_t XML_NoAutoFit = 420; const xml_token_t XML_NoAutoFormatWidth = 421; const xml_token_t XML_NoAutoPage = 422; const xml_token_t XML_NoAutoRecover = 423; const xml_token_t XML_NoAutofit = 424; const xml_token_t XML_NoColumnGrand = 425; const xml_token_t XML_NoDetailAutoFit = 426; const xml_token_t XML_NoDisplayNullString = 427; const xml_token_t XML_NoDragToColumn = 428; const xml_token_t XML_NoDragToData = 429; const xml_token_t XML_NoDragToHide = 430; const xml_token_t XML_NoDragToPage = 431; const xml_token_t XML_NoDragToRow = 432; const xml_token_t XML_NoInserts = 433; const xml_token_t XML_NoPreserveFormatting = 434; const xml_token_t XML_NoPrintRepeatItems = 435; const xml_token_t XML_NoPrinterInfo = 436; const xml_token_t XML_NoRefreshCache = 437; const xml_token_t XML_NoRowGrand = 438; const xml_token_t XML_NoSaveData = 439; const xml_token_t XML_NoSummaryColumnsRightDetail = 440; const xml_token_t XML_NoSummaryRowsBelowDetail = 441; const xml_token_t XML_NoTextToColumns = 442; const xml_token_t XML_NoTitles = 443; const xml_token_t XML_NoToggleDataHeader = 444; const xml_token_t XML_NoViewCalculatedMembers = 445; const xml_token_t XML_NonDefaultName = 446; const xml_token_t XML_NotInverted = 447; const xml_token_t XML_NotVisible = 448; const xml_token_t XML_NullString = 449; const xml_token_t XML_Number = 450; const xml_token_t XML_NumberFormat = 451; const xml_token_t XML_NumberOfCopies = 452; const xml_token_t XML_OLEObject = 453; const xml_token_t XML_OWCVersion = 454; const xml_token_t XML_ObjectID = 455; const xml_token_t XML_OfficeDocumentSettings = 456; const xml_token_t XML_OleLink = 457; const xml_token_t XML_Operator = 458; const xml_token_t XML_OptimizeCache = 459; const xml_token_t XML_Orientation = 460; const xml_token_t XML_Outline = 461; const xml_token_t XML_OverwriteCells = 462; const xml_token_t XML_PLCaption = 463; const xml_token_t XML_PLDataOrientation = 464; const xml_token_t XML_PLExport = 465; const xml_token_t XML_PLGroupType = 466; const xml_token_t XML_PLName = 467; const xml_token_t XML_PLPivotField = 468; const xml_token_t XML_PLPosition = 469; const xml_token_t XML_PLSubtotal = 470; const xml_token_t XML_PLTPivotItem = 471; const xml_token_t XML_PLTotal = 472; const xml_token_t XML_PTFormat = 473; const xml_token_t XML_PTFormula = 474; const xml_token_t XML_PTLineItem = 475; const xml_token_t XML_PTLineItems = 476; const xml_token_t XML_PTPivotData = 477; const xml_token_t XML_PTRule = 478; const xml_token_t XML_PTSource = 479; const xml_token_t XML_PageBreakZoom = 480; const xml_token_t XML_PageBreaks = 481; const xml_token_t XML_PageFieldOrder = 482; const xml_token_t XML_PageFieldStyle = 483; const xml_token_t XML_PageFieldWrapCount = 484; const xml_token_t XML_PageMargins = 485; const xml_token_t XML_PageSetup = 486; const xml_token_t XML_Pages = 487; const xml_token_t XML_Pane = 488; const xml_token_t XML_Panes = 489; const xml_token_t XML_PaperSizeIndex = 490; const xml_token_t XML_Paragraphs = 491; const xml_token_t XML_Parameter = 492; const xml_token_t XML_ParameterType = 493; const xml_token_t XML_ParameterValue = 494; const xml_token_t XML_Parent = 495; const xml_token_t XML_ParentField = 496; const xml_token_t XML_ParentIsOther = 497; const xml_token_t XML_ParentName = 498; const xml_token_t XML_ParentUniqueName = 499; const xml_token_t XML_ParseFormulaAsV10 = 500; const xml_token_t XML_ParseRuleAsV10 = 501; const xml_token_t XML_PasteFormula = 502; const xml_token_t XML_PasteRefersTo = 503; const xml_token_t XML_Path = 504; const xml_token_t XML_Pattern = 505; const xml_token_t XML_PatternColor = 506; const xml_token_t XML_PivotAxis = 507; const xml_token_t XML_PivotCache = 508; const xml_token_t XML_PivotField = 509; const xml_token_t XML_PivotItem = 510; const xml_token_t XML_PivotTable = 511; const xml_token_t XML_PivotView = 512; const xml_token_t XML_Position = 513; const xml_token_t XML_PrecisionAsDisplayed = 514; const xml_token_t XML_PresentationFormat = 515; const xml_token_t XML_Print = 516; const xml_token_t XML_PrintErrors = 517; const xml_token_t XML_PrintSetTitles = 518; const xml_token_t XML_ProgID = 519; const xml_token_t XML_PromptString = 520; const xml_token_t XML_ProtectContents = 521; const xml_token_t XML_ProtectObjects = 522; const xml_token_t XML_ProtectScenarios = 523; const xml_token_t XML_ProtectStructure = 524; const xml_token_t XML_ProtectWindows = 525; const xml_token_t XML_Protected = 526; const xml_token_t XML_Protection = 527; const xml_token_t XML_Proxy = 528; const xml_token_t XML_PublishObject = 529; const xml_token_t XML_PublishObjects = 530; const xml_token_t XML_Purpose = 531; const xml_token_t XML_QTSource = 532; const xml_token_t XML_Qualifier = 533; const xml_token_t XML_Query97 = 534; const xml_token_t XML_QuerySource = 535; const xml_token_t XML_QueryTable = 536; const xml_token_t XML_QueryType = 537; const xml_token_t XML_Range = 538; const xml_token_t XML_RangeSelection = 539; const xml_token_t XML_ReadOnly = 540; const xml_token_t XML_ReadingOrder = 541; const xml_token_t XML_RefModeR1C1 = 542; const xml_token_t XML_Reference = 543; const xml_token_t XML_RefersTo = 544; const xml_token_t XML_RefreshDate = 545; const xml_token_t XML_RefreshDateCopy = 546; const xml_token_t XML_RefreshInfo = 547; const xml_token_t XML_RefreshName = 548; const xml_token_t XML_RefreshOnChange = 549; const xml_token_t XML_RefreshOnFileOpen = 550; const xml_token_t XML_RefreshTimeSpan = 551; const xml_token_t XML_RefreshedInXl9 = 552; const xml_token_t XML_Resource = 553; const xml_token_t XML_Revision = 554; const xml_token_t XML_Right = 555; const xml_token_t XML_RightToLeft = 556; const xml_token_t XML_RobustConnect = 557; const xml_token_t XML_RootElement = 558; const xml_token_t XML_Rotate = 559; const xml_token_t XML_Rotation = 560; const xml_token_t XML_Row = 561; const xml_token_t XML_RowBreak = 562; const xml_token_t XML_RowBreaks = 563; const xml_token_t XML_RowColHeadings = 564; const xml_token_t XML_RowInputCell = 565; const xml_token_t XML_RowLast = 566; const xml_token_t XML_RowNumbers = 567; const xml_token_t XML_Rule = 568; const xml_token_t XML_RuleType = 569; const xml_token_t XML_RuleV10 = 570; const xml_token_t XML_SOAPAction = 571; const xml_token_t XML_SQLType = 572; const xml_token_t XML_Scale = 573; const xml_token_t XML_Schema = 574; const xml_token_t XML_SchemaID = 575; const xml_token_t XML_SchemaRef = 576; const xml_token_t XML_Selected = 577; const xml_token_t XML_SelectedSheets = 578; const xml_token_t XML_Selection = 579; const xml_token_t XML_SelectionNamespaces = 580; const xml_token_t XML_SemiColon = 581; const xml_token_t XML_SeqNum = 582; const xml_token_t XML_Sequence = 583; const xml_token_t XML_ServerBased = 584; const xml_token_t XML_ServerSortOrder = 585; const xml_token_t XML_Set = 586; const xml_token_t XML_Shadow = 587; const xml_token_t XML_ShapeID = 588; const xml_token_t XML_SheetIndex = 589; const xml_token_t XML_SheetName = 590; const xml_token_t XML_ShowAllItems = 591; const xml_token_t XML_ShowAlways = 592; const xml_token_t XML_ShowCellBackgroundFromOLAP = 593; const xml_token_t XML_ShowImportExportValidationErrors = 594; const xml_token_t XML_ShowPageBreakZoom = 595; const xml_token_t XML_ShowPageMultipleItemLabel = 596; const xml_token_t XML_ShowTotals = 597; const xml_token_t XML_ShrinkToFit = 598; const xml_token_t XML_Size = 599; const xml_token_t XML_SmallGrid = 600; const xml_token_t XML_SmartTagType = 601; const xml_token_t XML_SmartTags = 602; const xml_token_t XML_SolveOrder = 603; const xml_token_t XML_Sort = 604; const xml_token_t XML_SortKey = 605; const xml_token_t XML_SortOrder = 606; const xml_token_t XML_Sorting = 607; const xml_token_t XML_Source = 608; const xml_token_t XML_SourceConnectionFile = 609; const xml_token_t XML_SourceConsolidation = 610; const xml_token_t XML_SourceDataFile = 611; const xml_token_t XML_SourceHierarchy = 612; const xml_token_t XML_SourceHierarchyLevel = 613; const xml_token_t XML_SourceName = 614; const xml_token_t XML_SourceType = 615; const xml_token_t XML_Space = 616; const xml_token_t XML_SpaceAbove = 617; const xml_token_t XML_SpaceBelow = 618; const xml_token_t XML_Span = 619; const xml_token_t XML_SplitHorizontal = 620; const xml_token_t XML_SplitVertical = 621; const xml_token_t XML_SpreadsheetAutoFit = 622; const xml_token_t XML_StandardWidth = 623; const xml_token_t XML_StartPageNumber = 624; const xml_token_t XML_StartRow = 625; const xml_token_t XML_StrikeThrough = 626; const xml_token_t XML_Style = 627; const xml_token_t XML_StyleID = 628; const xml_token_t XML_Styles = 629; const xml_token_t XML_SubType = 630; const xml_token_t XML_Subject = 631; const xml_token_t XML_Subtotal = 632; const xml_token_t XML_SubtotalFormat = 633; const xml_token_t XML_SubtotalHiddenPageItems = 634; const xml_token_t XML_SubtotalName = 635; const xml_token_t XML_SupBook = 636; const xml_token_t XML_Synchronous = 637; const xml_token_t XML_Tab = 638; const xml_token_t XML_TabColorIndex = 639; const xml_token_t XML_TabRatio = 640; const xml_token_t XML_Table = 641; const xml_token_t XML_TableStyle = 642; const xml_token_t XML_Tag = 643; const xml_token_t XML_Text = 644; const xml_token_t XML_TextQualifier = 645; const xml_token_t XML_TextWizardSettings = 646; const xml_token_t XML_ThousandSeparator = 647; const xml_token_t XML_Ticked = 648; const xml_token_t XML_Title = 649; const xml_token_t XML_Toolbar = 650; const xml_token_t XML_TooltipInfo = 651; const xml_token_t XML_Top = 652; const xml_token_t XML_TopCell = 653; const xml_token_t XML_TopRowBottomPane = 654; const xml_token_t XML_TopRowVisible = 655; const xml_token_t XML_TotalAlignment = 656; const xml_token_t XML_TotalAllMembers = 657; const xml_token_t XML_TotalCaptionAlignment = 658; const xml_token_t XML_TotalFormat = 659; const xml_token_t XML_TotalTime = 660; const xml_token_t XML_TotalWidth = 661; const xml_token_t XML_TransitionExpressionEvaluation = 662; const xml_token_t XML_TransitionFormulaEntry = 663; const xml_token_t XML_Type = 664; const xml_token_t XML_URLString = 665; const xml_token_t XML_Uncalced = 666; const xml_token_t XML_Underline = 667; const xml_token_t XML_UniqueName = 668; const xml_token_t XML_Unsynced = 669; const xml_token_t XML_UseBlank = 670; const xml_token_t XML_UseLocalConnection = 671; const xml_token_t XML_UseSameSettings = 672; const xml_token_t XML_User = 673; const xml_token_t XML_VMLFrame = 674; const xml_token_t XML_VacatedStyle = 675; const xml_token_t XML_ValidPrinterInfo = 676; const xml_token_t XML_Value = 677; const xml_token_t XML_Value1 = 678; const xml_token_t XML_Value2 = 679; const xml_token_t XML_Version = 680; const xml_token_t XML_VersionLastEdit = 681; const xml_token_t XML_VersionLastRefresh = 682; const xml_token_t XML_VersionLastUpdate = 683; const xml_token_t XML_VersionRefreshableMin = 684; const xml_token_t XML_VersionUpdateableMin = 685; const xml_token_t XML_Vertical = 686; const xml_token_t XML_VerticalAlign = 687; const xml_token_t XML_VerticalResolution = 688; const xml_token_t XML_VerticalText = 689; const xml_token_t XML_ViewableRange = 690; const xml_token_t XML_Visible = 691; const xml_token_t XML_VisualTotals = 692; const xml_token_t XML_WantAdvise = 693; const xml_token_t XML_WantPict = 694; const xml_token_t XML_Watch = 695; const xml_token_t XML_Watches = 696; const xml_token_t XML_WebPostString = 697; const xml_token_t XML_Weight = 698; const xml_token_t XML_Width = 699; const xml_token_t XML_WindowHeight = 700; const xml_token_t XML_WindowHidden = 701; const xml_token_t XML_WindowIconic = 702; const xml_token_t XML_WindowTopX = 703; const xml_token_t XML_WindowTopY = 704; const xml_token_t XML_WindowWidth = 705; const xml_token_t XML_Windows = 706; const xml_token_t XML_Words = 707; const xml_token_t XML_Workbook = 708; const xml_token_t XML_WorkbookOptions = 709; const xml_token_t XML_Worksheet = 710; const xml_token_t XML_WorksheetOptions = 711; const xml_token_t XML_WorksheetSource = 712; const xml_token_t XML_WrapText = 713; const xml_token_t XML_XPath = 714; const xml_token_t XML_XSDType = 715; const xml_token_t XML_Xct = 716; const xml_token_t XML_ZeroHeight = 717; const xml_token_t XML_Zoom = 718; const xml_token_t XML_accentbar = 719; const xml_token_t XML_adj = 720; const xml_token_t XML_adjusthandles = 721; const xml_token_t XML_alignshape = 722; const xml_token_t XML_allowincell = 723; const xml_token_t XML_allowoverlap = 724; const xml_token_t XML_alt = 725; const xml_token_t XML_althref = 726; const xml_token_t XML_angle = 727; const xml_token_t XML_arc = 728; const xml_token_t XML_arcsize = 729; const xml_token_t XML_arrowok = 730; const xml_token_t XML_aspect = 731; const xml_token_t XML_aspectratio = 732; const xml_token_t XML_attribute = 733; const xml_token_t XML_autorotationcenter = 734; const xml_token_t XML_backdepth = 735; const xml_token_t XML_background = 736; const xml_token_t XML_bilevel = 737; const xml_token_t XML_blacklevel = 738; const xml_token_t XML_borderbottomcolor = 739; const xml_token_t XML_borderleftcolor = 740; const xml_token_t XML_borderrightcolor = 741; const xml_token_t XML_bordertopcolor = 742; const xml_token_t XML_brightness = 743; const xml_token_t XML_bullet = 744; const xml_token_t XML_button = 745; const xml_token_t XML_bwmode = 746; const xml_token_t XML_bwnormal = 747; const xml_token_t XML_bwpure = 748; const xml_token_t XML_callout = 749; const xml_token_t XML_caption = 750; const xml_token_t XML_chromakey = 751; const xml_token_t XML_class = 752; const xml_token_t XML_clip = 753; const xml_token_t XML_color = 754; const xml_token_t XML_color2 = 755; const xml_token_t XML_colormenu = 756; const xml_token_t XML_colormode = 757; const xml_token_t XML_colormru = 758; const xml_token_t XML_colors = 759; const xml_token_t XML_complex = 760; const xml_token_t XML_connectangles = 761; const xml_token_t XML_connectloc = 762; const xml_token_t XML_connectlocs = 763; const xml_token_t XML_connectortype = 764; const xml_token_t XML_connecttype = 765; const xml_token_t XML_content = 766; const xml_token_t XML_control1 = 767; const xml_token_t XML_control2 = 768; const xml_token_t XML_coordorigin = 769; const xml_token_t XML_coordsize = 770; const xml_token_t XML_cropbottom = 771; const xml_token_t XML_cropleft = 772; const xml_token_t XML_cropping = 773; const xml_token_t XML_cropright = 774; const xml_token_t XML_croptop = 775; const xml_token_t XML_curve = 776; const xml_token_t XML_dashstyle = 777; const xml_token_t XML_data = 778; const xml_token_t XML_datatype = 779; const xml_token_t XML_detectmouseclick = 780; const xml_token_t XML_diffusity = 781; const xml_token_t XML_displaycustomheaders = 782; const xml_token_t XML_distance = 783; const xml_token_t XML_doubleclicknotify = 784; const xml_token_t XML_drop = 785; const xml_token_t XML_dropauto = 786; const xml_token_t XML_dt = 787; const xml_token_t XML_edge = 788; const xml_token_t XML_editas = 789; const xml_token_t XML_embosscolor = 790; const xml_token_t XML_end = 791; const xml_token_t XML_endAngle = 792; const xml_token_t XML_endarrow = 793; const xml_token_t XML_endarrowlength = 794; const xml_token_t XML_endarrowwidth = 795; const xml_token_t XML_endcap = 796; const xml_token_t XML_entry = 797; const xml_token_t XML_eqn = 798; const xml_token_t XML_ext = 799; const xml_token_t XML_extends = 800; const xml_token_t XML_extrusion = 801; const xml_token_t XML_extrusioncolor = 802; const xml_token_t XML_extrusionok = 803; const xml_token_t XML_f = 804; const xml_token_t XML_facet = 805; const xml_token_t XML_fill = 806; const xml_token_t XML_fillcolor = 807; const xml_token_t XML_filled = 808; const xml_token_t XML_fillok = 809; const xml_token_t XML_filltype = 810; const xml_token_t XML_fitpath = 811; const xml_token_t XML_fitshape = 812; const xml_token_t XML_focus = 813; const xml_token_t XML_focusposition = 814; const xml_token_t XML_focussize = 815; const xml_token_t XML_forcedash = 816; const xml_token_t XML_foredepth = 817; const xml_token_t XML_formulas = 818; const xml_token_t XML_from = 819; const xml_token_t XML_gain = 820; const xml_token_t XML_gamma = 821; const xml_token_t XML_gap = 822; const xml_token_t XML_gradientshapeok = 823; const xml_token_t XML_grayscale = 824; const xml_token_t XML_group = 825; const xml_token_t XML_grouping = 826; const xml_token_t XML_h = 827; const xml_token_t XML_handles = 828; const xml_token_t XML_hidden = 829; const xml_token_t XML_how = 830; const xml_token_t XML_hr = 831; const xml_token_t XML_hralign = 832; const xml_token_t XML_href = 833; const xml_token_t XML_hrheight = 834; const xml_token_t XML_hrnoshade = 835; const xml_token_t XML_hrpct = 836; const xml_token_t XML_hrstd = 837; const xml_token_t XML_hrwidth = 838; const xml_token_t XML_id = 839; const xml_token_t XML_idmap = 840; const xml_token_t XML_idref = 841; const xml_token_t XML_image = 842; const xml_token_t XML_imagealignshape = 843; const xml_token_t XML_imageaspect = 844; const xml_token_t XML_imagedata = 845; const xml_token_t XML_imagesize = 846; const xml_token_t XML_inset = 847; const xml_token_t XML_insetmode = 848; const xml_token_t XML_invx = 849; const xml_token_t XML_invy = 850; const xml_token_t XML_joinstyle = 851; const xml_token_t XML_length = 852; const xml_token_t XML_lengthspecified = 853; const xml_token_t XML_lightface = 854; const xml_token_t XML_lightharsh = 855; const xml_token_t XML_lightharsh2 = 856; const xml_token_t XML_lightlevel = 857; const xml_token_t XML_lightlevel2 = 858; const xml_token_t XML_lightposition = 859; const xml_token_t XML_lightposition2 = 860; const xml_token_t XML_limo = 861; const xml_token_t XML_line = 862; const xml_token_t XML_linestyle = 863; const xml_token_t XML_lock = 864; const xml_token_t XML_lockrotationcenter = 865; const xml_token_t XML_map = 866; const xml_token_t XML_master = 867; const xml_token_t XML_matrix = 868; const xml_token_t XML_maxLength = 869; const xml_token_t XML_metal = 870; const xml_token_t XML_method = 871; const xml_token_t XML_minusx = 872; const xml_token_t XML_minusy = 873; const xml_token_t XML_miterlimit = 874; const xml_token_t XML_movie = 875; const xml_token_t XML_name = 876; const xml_token_t XML_namespaceuri = 877; const xml_token_t XML_new = 878; const xml_token_t XML_obscured = 879; const xml_token_t XML_offset = 880; const xml_token_t XML_offset2 = 881; const xml_token_t XML_old = 882; const xml_token_t XML_ole = 883; const xml_token_t XML_oleicon = 884; const xml_token_t XML_oleid = 885; const xml_token_t XML_on = 886; const xml_token_t XML_oned = 887; const xml_token_t XML_onmouseover = 888; const xml_token_t XML_opacity = 889; const xml_token_t XML_opacity2 = 890; const xml_token_t XML_orientation = 891; const xml_token_t XML_orientationangle = 892; const xml_token_t XML_origin = 893; const xml_token_t XML_oval = 894; const xml_token_t XML_password = 895; const xml_token_t XML_path = 896; const xml_token_t XML_phonetictext = 897; const xml_token_t XML_plane = 898; const xml_token_t XML_points = 899; const xml_token_t XML_polar = 900; const xml_token_t XML_polyline = 901; const xml_token_t XML_position = 902; const xml_token_t XML_preferrelative = 903; const xml_token_t XML_print = 904; const xml_token_t XML_proxy = 905; const xml_token_t XML_r = 906; const xml_token_t XML_radiusrange = 907; const xml_token_t XML_rect = 908; const xml_token_t XML_regroupid = 909; const xml_token_t XML_regrouptable = 910; const xml_token_t XML_relativeposition = 911; const xml_token_t XML_render = 912; const xml_token_t XML_rotation = 913; const xml_token_t XML_rotationangle = 914; const xml_token_t XML_rotationcenter = 915; const xml_token_t XML_roundrect = 916; const xml_token_t XML_row = 917; const xml_token_t XML_ruleinitiator = 918; const xml_token_t XML_ruleproxy = 919; const xml_token_t XML_rules = 920; const xml_token_t XML_selection = 921; const xml_token_t XML_shadow = 922; const xml_token_t XML_shadowcolor = 923; const xml_token_t XML_shadowok = 924; const xml_token_t XML_shape = 925; const xml_token_t XML_shapedefaults = 926; const xml_token_t XML_shapelayout = 927; const xml_token_t XML_shapetype = 928; const xml_token_t XML_shininess = 929; const xml_token_t XML_singleclick = 930; const xml_token_t XML_size = 931; const xml_token_t XML_skew = 932; const xml_token_t XML_skewamt = 933; const xml_token_t XML_skewangle = 934; const xml_token_t XML_specularity = 935; const xml_token_t XML_spid = 936; const xml_token_t XML_spidmax = 937; const xml_token_t XML_spt = 938; const xml_token_t XML_src = 939; const xml_token_t XML_start = 940; const xml_token_t XML_startAngle = 941; const xml_token_t XML_startarrow = 942; const xml_token_t XML_startarrowlength = 943; const xml_token_t XML_startarrowwidth = 944; const xml_token_t XML_string = 945; const xml_token_t XML_stroke = 946; const xml_token_t XML_strokecolor = 947; const xml_token_t XML_stroked = 948; const xml_token_t XML_strokeok = 949; const xml_token_t XML_strokeweight = 950; const xml_token_t XML_style = 951; const xml_token_t XML_switch = 952; const xml_token_t XML_tablelimits = 953; const xml_token_t XML_tableproperties = 954; const xml_token_t XML_target = 955; const xml_token_t XML_targetscreensize = 956; const xml_token_t XML_text = 957; const xml_token_t XML_textborder = 958; const xml_token_t XML_textbox = 959; const xml_token_t XML_textboxrect = 960; const xml_token_t XML_textpath = 961; const xml_token_t XML_textpathok = 962; const xml_token_t XML_title = 963; const xml_token_t XML_to = 964; const xml_token_t XML_trim = 965; const xml_token_t XML_type = 966; const xml_token_t XML_url = 967; const xml_token_t XML_useExplicit = 968; const xml_token_t XML_userId = 969; const xml_token_t XML_userdrawn = 970; const xml_token_t XML_userhidden = 971; const xml_token_t XML_v = 972; const xml_token_t XML_verticies = 973; const xml_token_t XML_viewpoint = 974; const xml_token_t XML_viewpointorigin = 975; const xml_token_t XML_visible = 976; const xml_token_t XML_weight = 977; const xml_token_t XML_worksheetoptions = 978; const xml_token_t XML_wrapcoords = 979; const xml_token_t XML_xrange = 980; const xml_token_t XML_xscale = 981; const xml_token_t XML_yrange = 982; liborcus-0.9.2/src/liborcus/xml_simple_stream_handler.hpp0000644000175000017500000000205212535701143022353 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XML_SIMPLE_HANDLER_HPP__ #define __ORCUS_XML_SIMPLE_HANDLER_HPP__ #include "xml_stream_handler.hpp" namespace orcus { class xml_context_base; /** * Simple stream handler that only uses a single context instance. */ class xml_simple_stream_handler : public xml_stream_handler { public: xml_simple_stream_handler(xml_context_base* context); ~xml_simple_stream_handler(); xml_context_base& get_context(); virtual void start_document(); virtual void end_document(); virtual void start_element(const sax_token_parser_element& elem); virtual void end_element(const sax_token_parser_element& elem); virtual void characters(const pstring& str, bool transient); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/orcus_xml.cpp0000644000175000017500000005571412535701143017155 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xml.hpp" #include "orcus/global.hpp" #include "orcus/sax_ns_parser.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/spreadsheet/export_interface.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/stream.hpp" #include "xml_map_tree.hpp" #define ORCUS_DEBUG_XML 0 #if ORCUS_DEBUG_XML #include #endif #include #include #include using namespace std; namespace orcus { namespace { class xml_data_sax_handler { struct scope { xmlns_id_t ns; pstring name; const char* element_open_begin; const char* element_open_end; xml_map_tree::element_type type; scope(xmlns_id_t _ns, const pstring& _name) : ns(_ns), name(_name), element_open_begin(NULL), element_open_end(NULL), type(xml_map_tree::element_unknown) {} }; vector m_attrs; vector m_scopes; spreadsheet::iface::import_factory& m_factory; xml_map_tree::const_element_list_type& m_link_positions; const xml_map_tree& m_map_tree; xml_map_tree::walker m_map_tree_walker; const xml_map_tree::element* mp_current_elem; bool m_in_range_ref:1; private: const sax_ns_parser_attribute* find_attr_by_name(xmlns_id_t ns, const pstring& name) { vector::const_iterator it = m_attrs.begin(), it_end = m_attrs.end(); for (; it != it_end; ++it) { if (it->ns == ns && it->name == name) return &(*it); } return NULL; } void set_single_link_cell(const xml_map_tree::cell_reference& ref, const pstring& val) { spreadsheet::iface::import_sheet* sheet = m_factory.get_sheet(ref.pos.sheet.get(), ref.pos.sheet.size()); if (sheet) sheet->set_auto(ref.pos.row, ref.pos.col, val.get(), val.size()); } void set_field_link_cell(const xml_map_tree::field_in_range& field, const pstring& val) { assert(field.ref); assert(!field.ref->pos.sheet.empty()); if (field.column_pos == 0) ++field.ref->row_size; const xml_map_tree::cell_position& pos = field.ref->pos; spreadsheet::iface::import_sheet* sheet = m_factory.get_sheet(pos.sheet.get(), pos.sheet.size()); if (sheet) sheet->set_auto( pos.row + field.ref->row_size, pos.col + field.column_pos, val.get(), val.size()); } public: xml_data_sax_handler( spreadsheet::iface::import_factory& factory, xml_map_tree::const_element_list_type& link_positions, const xml_map_tree& map_tree) : m_factory(factory), m_link_positions(link_positions), m_map_tree(map_tree), m_map_tree_walker(map_tree.get_tree_walker()), mp_current_elem(NULL), m_in_range_ref(false) {} void doctype(const sax::doctype_declaration&) { } void start_declaration(const pstring&) { } void end_declaration(const pstring&) { m_attrs.clear(); } void start_element(const sax_ns_parser_element& elem) { m_scopes.push_back(scope(elem.ns, elem.name)); scope& cur = m_scopes.back(); cur.element_open_begin = elem.begin_pos; cur.element_open_end = elem.end_pos; mp_current_elem = m_map_tree_walker.push_element(elem.ns, elem.name); if (mp_current_elem) { // Go through all linked attributes that belong to this element, // and see if they exist in this content xml. const xml_map_tree::attribute_store_type& linked_attrs = mp_current_elem->attributes; xml_map_tree::attribute_store_type::const_iterator it = linked_attrs.begin(), it_end = linked_attrs.end(); for (; it != it_end; ++it) { const xml_map_tree::attribute& linked_attr = *it; const sax_ns_parser_attribute* p = find_attr_by_name(linked_attr.ns, linked_attr.name); if (!p) continue; // This attribute is linked. Import its value. pstring val_trimmed = p->value.trim(); switch (linked_attr.ref_type) { case xml_map_tree::reference_cell: set_single_link_cell(*linked_attr.cell_ref, val_trimmed); break; case xml_map_tree::reference_range_field: set_field_link_cell(*linked_attr.field_ref, val_trimmed); break; default: ; } // Record the namespace alias used in the content stream. linked_attr.ns_alias = m_map_tree.intern_string(p->ns_alias); } if (mp_current_elem->range_parent) m_in_range_ref = true; } m_attrs.clear(); } void end_element(const sax_ns_parser_element& elem) { assert(!m_scopes.empty()); if (mp_current_elem) { // Store the end element position in stream for linked elements. const scope& cur = m_scopes.back(); if (mp_current_elem->ref_type == xml_map_tree::reference_cell || mp_current_elem->range_parent || (!m_in_range_ref && mp_current_elem->unlinked_attribute_anchor())) { // either single link element, parent of range link elements, // or an unlinked attribute anchor outside linked ranges. mp_current_elem->stream_pos.open_begin = cur.element_open_begin; mp_current_elem->stream_pos.open_end = cur.element_open_end; mp_current_elem->stream_pos.close_begin = elem.begin_pos; mp_current_elem->stream_pos.close_end = elem.end_pos; m_link_positions.push_back(mp_current_elem); } if (mp_current_elem->range_parent) m_in_range_ref = false; // Record the namespace alias used in the content stream. mp_current_elem->ns_alias = m_map_tree.intern_string(elem.ns_alias); } m_scopes.pop_back(); mp_current_elem = m_map_tree_walker.pop_element(elem.ns, elem.name); } void characters(const pstring& val, bool /*transient*/) { if (!mp_current_elem) return; pstring val_trimmed = val.trim(); if (val_trimmed.empty()) return; switch (mp_current_elem->ref_type) { case xml_map_tree::reference_cell: set_single_link_cell(*mp_current_elem->cell_ref, val_trimmed); break; case xml_map_tree::reference_range_field: set_field_link_cell(*mp_current_elem->field_ref, val_trimmed); break; default: ; } } void attribute(const pstring& /*name*/, const pstring& /*val*/) { // Ignore attributes in XML declaration. } void attribute(const sax_ns_parser_attribute& at) { m_attrs.push_back(at); } }; /** * Used in write_range_reference_group(). */ struct scope : boost::noncopyable { const xml_map_tree::element& element; xml_map_tree::element_store_type::const_iterator current_child_pos; xml_map_tree::element_store_type::const_iterator end_child_pos; bool opened:1; scope(const xml_map_tree::element& _elem) : element(_elem), opened(false) { current_child_pos = end_child_pos; if (element.elem_type == xml_map_tree::element_unlinked) { current_child_pos = element.child_elements->begin(); end_child_pos = element.child_elements->end(); } } }; typedef boost::ptr_vector scopes_type; void write_opening_element( ostream& os, const xml_map_tree::element& elem, const xml_map_tree::range_reference& ref, const spreadsheet::iface::export_sheet& sheet, spreadsheet::row_t current_row, bool self_close) { if (elem.attributes.empty()) { // This element has no linked attributes. Just write the element name and be done with it. os << '<' << elem << '>'; return; } // Element has one or more linked attributes. os << '<' << elem; xml_map_tree::attribute_store_type::const_iterator it = elem.attributes.begin(), it_end = elem.attributes.end(); for (; it != it_end; ++it) { const xml_map_tree::attribute& attr = *it; if (attr.ref_type != xml_map_tree::reference_range_field) // In theory this should never happen but it won't hurt to check. continue; os << ' ' << attr << "=\""; sheet.write_string(os, ref.pos.row + 1 + current_row, ref.pos.col + attr.field_ref->column_pos); os << "\""; } if (self_close) os << '/'; os << '>'; } void write_opening_element( ostream& os, const xml_map_tree::element& elem, const spreadsheet::iface::export_factory& fact, bool self_close) { os << '<' << elem; xml_map_tree::attribute_store_type::const_iterator it = elem.attributes.begin(), it_end = elem.attributes.end(); for (; it != it_end; ++it) { const xml_map_tree::attribute& attr = *it; if (attr.ref_type != xml_map_tree::reference_cell) // We should only see single linked cell here, as all // field links are handled by the range parent above. continue; const xml_map_tree::cell_position& pos = attr.cell_ref->pos; const spreadsheet::iface::export_sheet* sheet = fact.get_sheet(pos.sheet.get(), pos.sheet.size()); if (!sheet) continue; os << ' ' << attr << "=\""; sheet->write_string(os, pos.row, pos.col); os << "\""; } if (self_close) os << '/'; os << '>'; } /** * Write to the output stream a single range reference. * * @param os output stream. * @param root root map tree element representing the root of a single range * reference. * @param ref range reference data. * @param factory export factory instance. */ void write_range_reference_group( ostream& os, const xml_map_tree::element& root, const xml_map_tree::range_reference& ref, const spreadsheet::iface::export_factory& factory) { const spreadsheet::iface::export_sheet* sheet = factory.get_sheet(ref.pos.sheet.get(), ref.pos.sheet.size()); if (!sheet) return; scopes_type scopes; for (spreadsheet::row_t current_row = 0; current_row < ref.row_size; ++current_row) { scopes.push_back(new scope(root)); // root element while (!scopes.empty()) { bool new_scope = false; scope& cur_scope = scopes.back(); // Self-closing element has no child elements nor content. bool self_close = (cur_scope.current_child_pos == cur_scope.end_child_pos) && (cur_scope.element.ref_type != xml_map_tree::reference_range_field); if (!cur_scope.opened) { // Write opening element of this scope only on the 1st entrance. write_opening_element(os, cur_scope.element, ref, *sheet, current_row, self_close); cur_scope.opened = true; } if (self_close) { scopes.pop_back(); continue; } // Go though all child elements. for (; cur_scope.current_child_pos != cur_scope.end_child_pos; ++cur_scope.current_child_pos) { const xml_map_tree::element& child_elem = *cur_scope.current_child_pos; if (child_elem.elem_type == xml_map_tree::element_unlinked) { // This is a non-leaf element. Push a new scope with this // element and re-start the loop. ++cur_scope.current_child_pos; scopes.push_back(new scope(child_elem)); new_scope = true; break; } // This is a leaf element. This must be a field link element. if (child_elem.ref_type == xml_map_tree::reference_range_field) { write_opening_element(os, child_elem, ref, *sheet, current_row, false); sheet->write_string(os, ref.pos.row + 1 + current_row, ref.pos.col + child_elem.field_ref->column_pos); os << ""; } } if (new_scope) // Re-start the loop with a new scope. continue; // Write content of this element before closing it (if it's linked). if (scopes.back().element.ref_type == xml_map_tree::reference_range_field) sheet->write_string( os, ref.pos.row + 1 + current_row, ref.pos.col + scopes.back().element.field_ref->column_pos); // Close this element for good, and exit the current scope. os << ""; scopes.pop_back(); } } } /** * Write to an output stream the sub-structure comprising one or more range * references. * * @param os output stream * @param elem_top topmost element in the range reference sub-structure. */ void write_range_reference(ostream& os, const xml_map_tree::element& elem_top, const spreadsheet::iface::export_factory& factory) { // Top element is expected to have one or more child elements, and each // child element represents a separate database range. if (elem_top.elem_type != xml_map_tree::element_unlinked) return; assert(elem_top.child_elements); if (elem_top.child_elements->empty()) return; // TODO: For now, we assume that there is only one child element under the // range ref parent. write_range_reference_group( os, *elem_top.child_elements->begin(), *elem_top.range_parent, factory); } struct less_by_opening_elem_pos : std::binary_function { bool operator() (const xml_map_tree::element* left, const xml_map_tree::element* right) const { return left->stream_pos.open_begin < right->stream_pos.open_begin; } }; } struct orcus_xml_impl { spreadsheet::iface::import_factory* mp_import_factory; spreadsheet::iface::export_factory* mp_export_factory; /** original xml data stream. */ string m_data_strm; /** xml namespace repository for the whole session. */ xmlns_repository& m_ns_repo; /** xml namespace context */ xmlns_context m_ns_cxt_map; /** xml element tree that represents all mapped paths. */ xml_map_tree m_map_tree; /** * Positions of all linked elements, single and range reference alike. * Stored link elements must be sorted in order of stream positions, and * as such, no linked elements should be nested; there should never be a * linked element inside the substructure of another linked element. */ xml_map_tree::const_element_list_type m_link_positions; xml_map_tree::cell_position m_cur_range_ref; explicit orcus_xml_impl(xmlns_repository& ns_repo) : mp_import_factory(NULL), mp_export_factory(NULL), m_ns_repo(ns_repo), m_ns_cxt_map(ns_repo.create_context()), m_map_tree(m_ns_repo) {} }; orcus_xml::orcus_xml(xmlns_repository& ns_repo, spreadsheet::iface::import_factory* im_fact, spreadsheet::iface::export_factory* ex_fact) : mp_impl(new orcus_xml_impl(ns_repo)) { mp_impl->mp_import_factory = im_fact; mp_impl->mp_export_factory = ex_fact; } orcus_xml::~orcus_xml() { delete mp_impl; } void orcus_xml::set_namespace_alias(const pstring& alias, const pstring& uri) { mp_impl->m_map_tree.set_namespace_alias(alias, uri); } void orcus_xml::set_cell_link(const pstring& xpath, const pstring& sheet, spreadsheet::row_t row, spreadsheet::col_t col) { pstring sheet_safe = mp_impl->m_map_tree.intern_string(sheet); mp_impl->m_map_tree.set_cell_link(xpath, xml_map_tree::cell_position(sheet_safe, row, col)); } void orcus_xml::start_range(const pstring& sheet, spreadsheet::row_t row, spreadsheet::col_t col) { pstring sheet_safe = mp_impl->m_map_tree.intern_string(sheet); mp_impl->m_cur_range_ref = xml_map_tree::cell_position(sheet_safe, row, col); mp_impl->m_map_tree.start_range(); } void orcus_xml::append_field_link(const pstring& xpath) { mp_impl->m_map_tree.append_range_field_link(xpath, mp_impl->m_cur_range_ref); } void orcus_xml::commit_range() { mp_impl->m_cur_range_ref = xml_map_tree::cell_position(); mp_impl->m_map_tree.commit_range(); } void orcus_xml::append_sheet(const pstring& name) { if (name.empty()) return; mp_impl->mp_import_factory->append_sheet(name.get(), name.size()); } void orcus_xml::read_file(const char* filepath) { #if ORCUS_DEBUG_XML cout << "reading file " << filepath << endl; #endif string& strm = mp_impl->m_data_strm; load_file_content(filepath, strm); if (strm.empty()) return; // Insert the range headers and reset the row size counters. xml_map_tree::range_ref_map_type& range_refs = mp_impl->m_map_tree.get_range_references(); xml_map_tree::range_ref_map_type::iterator it_ref = range_refs.begin(), it_ref_end = range_refs.end(); for (; it_ref != it_ref_end; ++it_ref) { const xml_map_tree::cell_position& ref = it_ref->first; xml_map_tree::range_reference& range_ref = *it_ref->second; range_ref.row_size = 0; // Reset the row offset. spreadsheet::iface::import_sheet* sheet = mp_impl->mp_import_factory->get_sheet(ref.sheet.get(), ref.sheet.size()); if (!sheet) continue; xml_map_tree::const_linkable_list_type::const_iterator it = range_ref.field_nodes.begin(), it_end = range_ref.field_nodes.end(); spreadsheet::row_t row = ref.row; spreadsheet::col_t col = ref.col; for (; it != it_end; ++it) { const xml_map_tree::linkable& e = **it; ostringstream os; if (e.ns) os << mp_impl->m_ns_repo.get_short_name(e.ns) << ':'; os << e.name; string s = os.str(); if (!s.empty()) sheet->set_auto(row, col++, &s[0], s.size()); } } // Parse the content xml. xmlns_context ns_cxt = mp_impl->m_ns_repo.create_context(); // new ns context for the content xml stream. xml_data_sax_handler handler( *mp_impl->mp_import_factory, mp_impl->m_link_positions, mp_impl->m_map_tree); sax_ns_parser parser(strm.c_str(), strm.size(), ns_cxt, handler); parser.parse(); } #if ORCUS_DEBUG_XML namespace { void dump_links(const xml_map_tree::const_element_list_type& links) { cout << "link count: " << links.size() << endl; } } #endif void orcus_xml::write_file(const char* filepath) { if (!mp_impl->mp_export_factory) // We can't export data witout export factory. return; if (mp_impl->m_data_strm.empty()) // Original xml stream is missing. We need it. return; xml_map_tree::const_element_list_type& links = mp_impl->m_link_positions; if (links.empty()) // nothing to write. return; // Sort all link position by opening element positions. std::sort(links.begin(), links.end(), less_by_opening_elem_pos()); #if ORCUS_DEBUG_XML cout << "writing to " << filepath << endl; #endif ofstream file(filepath); if (!file) throw general_error("Failed to create output file."); spreadsheet::iface::export_factory& fact = *mp_impl->mp_export_factory; xml_map_tree::const_element_list_type::const_iterator it = links.begin(), it_end = links.end(); #if ORCUS_DEBUG_XML dump_links(links); #endif const char* begin_pos = &mp_impl->m_data_strm[0]; for (; it != it_end; ++it) { const xml_map_tree::element& elem = **it; if (elem.ref_type == xml_map_tree::reference_cell) { // Single cell link const xml_map_tree::cell_position& pos = elem.cell_ref->pos; const spreadsheet::iface::export_sheet* sheet = fact.get_sheet(pos.sheet.get(), pos.sheet.size()); if (!sheet) continue; const char* open_begin = elem.stream_pos.open_begin; const char* close_begin = elem.stream_pos.close_begin; const char* close_end = elem.stream_pos.close_end; assert(open_begin > begin_pos); file << pstring(begin_pos, open_begin-begin_pos); // stream since last linked element. write_opening_element(file, elem, fact, false); sheet->write_string(file, pos.row, pos.col); file << pstring(close_begin, close_end-close_begin); // closing element. begin_pos = close_end; } else if (elem.range_parent) { // Range link const xml_map_tree::range_reference& ref = *elem.range_parent; const xml_map_tree::cell_position& pos = ref.pos; const spreadsheet::iface::export_sheet* sheet = fact.get_sheet(pos.sheet.get(), pos.sheet.size()); if (!sheet) continue; const char* open_begin = elem.stream_pos.open_begin; const char* close_begin = elem.stream_pos.close_begin; const char* close_end = elem.stream_pos.close_end; assert(open_begin > begin_pos); file << pstring(begin_pos, open_begin-begin_pos); // stream since last linked element. write_opening_element(file, elem, fact, false); write_range_reference(file, elem, fact); file << pstring(close_begin, close_end-close_begin); // closing element. begin_pos = close_end; } else if (elem.unlinked_attribute_anchor()) { // Element is not linked but has one or more attributes that are // linked. Here, only write the opening element with attributes. const char* open_begin = elem.stream_pos.open_begin; const char* open_end = elem.stream_pos.open_end; bool self_close = open_begin == elem.stream_pos.close_begin; assert(open_begin > begin_pos); file << pstring(begin_pos, open_begin-begin_pos); // stream since last linked element. write_opening_element(file, elem, fact, self_close); begin_pos = open_end; } else throw general_error("Non-link element type encountered."); } // Flush the remaining stream. const char* strm_end = &mp_impl->m_data_strm[mp_impl->m_data_strm.size()-1]; file << pstring(begin_pos, strm_end-begin_pos); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_helper.hpp0000644000175000017500000000176012535701143020307 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERIC_HELPER__ #define __ORCUS_GNUMERIC_HELPER__ #include "orcus/spreadsheet/types.hpp" #include "orcus/pstring.hpp" namespace orcus { /** * This class provides common helper functions for the gnumeric parser */ class gnumeric_helper { public: /** * Parses a RGB color attribute string and returns the single components * * @return returns false if the string could not be parsed as valid color * attribute */ static bool parse_RGB_color_attribute(spreadsheet::color_elem_t& red, spreadsheet::color_elem_t& green, spreadsheet::color_elem_t& blue, const pstring& attr); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_tokens.cpp0000644000175000017500000000075712535701143017272 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "odf_tokens.hpp" namespace orcus { namespace { #include "odf_tokens.inl" } tokens odf_tokens = tokens(token_names, token_name_count); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_namespace_types.cpp0000644000175000017500000000227112535701143021526 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ooxml_namespace_types.hpp" namespace orcus { const xmlns_id_t NS_ooxml_r = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"; const xmlns_id_t NS_ooxml_xlsx = "http://schemas.openxmlformats.org/spreadsheetml/2006/main"; const xmlns_id_t NS_opc_ct = "http://schemas.openxmlformats.org/package/2006/content-types"; const xmlns_id_t NS_opc_rel = "http://schemas.openxmlformats.org/package/2006/relationships"; const xmlns_id_t NS_mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"; namespace { xmlns_id_t ooxml_ns[] = { NS_ooxml_r, NS_ooxml_xlsx, NULL }; xmlns_id_t opc_ns[] = { NS_opc_ct, NS_opc_rel, NULL }; xmlns_id_t misc_ns[] = { NS_mc, NULL }; } const xmlns_id_t* NS_ooxml_all = ooxml_ns; const xmlns_id_t* NS_opc_all = opc_ns; const xmlns_id_t* NS_misc_all = misc_ns; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_sheet_context.hpp0000644000175000017500000000552412535701143021706 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERIC_SHEET_CONTEXT_HPP__ #define __ORCUS_GNUMERIC_SHEET_CONTEXT_HPP__ #include "xml_context_base.hpp" #include "orcus/spreadsheet/types.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class import_factory; class import_sheet; class import_auto_filter; }} struct gnumeric_color { spreadsheet::color_elem_t red; spreadsheet::color_elem_t green; spreadsheet::color_elem_t blue; gnumeric_color(): red(0), green(0), blue(0) {} }; struct gnumeric_style_region { spreadsheet::row_t start_row; spreadsheet::row_t end_row; spreadsheet::col_t start_col; spreadsheet::col_t end_col; size_t xf_id; bool contains_conditional_format; gnumeric_style_region(): start_row(0), end_row(0), start_col(0), end_col(0), xf_id(0), contains_conditional_format(false) {} }; class gnumeric_sheet_context : public xml_context_base { public: gnumeric_sheet_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory); virtual ~gnumeric_sheet_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: void start_style_region(const xml_attrs_t& attrs); void start_style(const xml_attrs_t& attrs); void start_font(const xml_attrs_t& attrs); void start_col(const xml_attrs_t& attrs); void start_row(const xml_attrs_t& attrs); void start_condition(const xml_attrs_t& attrs); void end_table(); void end_style(bool conditional_format); void end_font(); void end_style_region(); void end_condition(); void end_expression(); private: spreadsheet::iface::import_factory* mp_factory; spreadsheet::iface::import_sheet* mp_sheet; spreadsheet::iface::import_auto_filter* mp_auto_filter; boost::scoped_ptr mp_child; boost::scoped_ptr mp_region_data; gnumeric_color front_color; /** * Used for temporary storage of characters */ pstring chars; }; } // namespace orcus #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_handler.cpp0000644000175000017500000000153612535701143020441 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_handler.hpp" #include "gnumeric_context.hpp" namespace orcus { gnumeric_content_xml_handler::gnumeric_content_xml_handler( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory) : xml_stream_handler(new gnumeric_content_xml_context(session_cxt, tokens, factory)) { } gnumeric_content_xml_handler::~gnumeric_content_xml_handler() { } void gnumeric_content_xml_handler::start_document() { } void gnumeric_content_xml_handler::end_document() { } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_stream_handler.hpp0000644000175000017500000000265112535701143021007 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XML_STREAM_HANDLER_HPP #define ORCUS_XML_STREAM_HANDLER_HPP #include "orcus/sax_token_parser.hpp" #include "orcus/config.hpp" #include #include #include namespace orcus { class xml_context_base; class xmlns_context; class xml_stream_handler { config m_config; const xmlns_context* mp_ns_cxt; xml_context_base* mp_root_context; typedef std::vector context_stack_type; context_stack_type m_context_stack; xml_stream_handler(); // disabled public: xml_stream_handler(xml_context_base* root_context); virtual ~xml_stream_handler() = 0; virtual void start_document(); virtual void end_document(); virtual void start_element(const sax_token_parser_element& elem); virtual void end_element(const sax_token_parser_element& elem); virtual void characters(const pstring& str, bool transient); void set_ns_context(const xmlns_context* p); void set_config(const config& opt); protected: xml_context_base& get_current_context(); xml_context_base& get_root_context(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/opc_context.cpp0000644000175000017500000002151412535701143017456 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "opc_context.hpp" #include "opc_token_constants.hpp" #include "ooxml_content_types.hpp" #include "ooxml_namespace_types.hpp" #include "ooxml_schemas.hpp" #include "session_context.hpp" #include "orcus/exception.hpp" #include "orcus/global.hpp" #include #include #include using namespace std; namespace orcus { namespace { class part_ext_attr_parser : public unary_function { public: part_ext_attr_parser( opc_content_types_context::ct_cache_type* p_ct_cache, xml_token_t attr_name) : mp_ct_cache(p_ct_cache), m_attr_name(attr_name), m_content_type(NULL) {} part_ext_attr_parser(const part_ext_attr_parser& r) : mp_ct_cache(r.mp_ct_cache), m_attr_name(r.m_attr_name), m_name(r.m_name), m_content_type(r.m_content_type) {} void operator() (const xml_token_attr_t& attr) { if (attr.name == m_attr_name) m_name = attr.value; else if (attr.name == XML_ContentType) m_content_type = to_content_type(attr.value); } const pstring& get_name() const { return m_name; } content_type_t get_content_type() const { return m_content_type; } private: content_type_t to_content_type(const pstring& p) const { opc_content_types_context::ct_cache_type::const_iterator itr = mp_ct_cache->find(p); if (itr == mp_ct_cache->end()) { cout << "unknown content type: " << p << endl; return NULL; } const pstring& val = *itr; return val.get(); } private: const opc_content_types_context::ct_cache_type* mp_ct_cache; xml_token_t m_attr_name; pstring m_name; content_type_t m_content_type; }; } opc_content_types_context::opc_content_types_context(session_context& session_cxt, const tokens& _tokens) : xml_context_base(session_cxt, _tokens) { // build content type cache. for (const content_type_t* p = CT_all; *p; ++p) m_ct_cache.insert(pstring(*p)); } opc_content_types_context::~opc_content_types_context() { } bool opc_content_types_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* opc_content_types_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void opc_content_types_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) { } void opc_content_types_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector &attrs) { xml_token_pair_t parent = push_stack(ns, name); switch (name) { case XML_Types: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); if (get_config().debug) print_attrs(get_tokens(), attrs); } break; case XML_Override: { xml_element_expected(parent, NS_opc_ct, XML_Types); part_ext_attr_parser func(&m_ct_cache, XML_PartName); func = for_each(attrs.begin(), attrs.end(), func); // We need to use allocated strings for part names here because // the part names need to survive after the [Content_Types].xml // stream is destroyed. pstring part_name = get_session_context().m_string_pool.intern(func.get_name()).first; m_parts.push_back( xml_part_t(part_name, func.get_content_type())); } break; case XML_Default: { xml_element_expected(parent, NS_opc_ct, XML_Types); part_ext_attr_parser func(&m_ct_cache, XML_Extension); func = for_each(attrs.begin(), attrs.end(), func); // Like the part names, we need to use allocated strings for // extension names. pstring ext_name = get_session_context().m_string_pool.intern(func.get_name()).first; m_ext_defaults.push_back( xml_part_t(ext_name, func.get_content_type())); } break; default: warn_unhandled(); } } bool opc_content_types_context::end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } void opc_content_types_context::characters(const pstring &str, bool transient) { } void opc_content_types_context::pop_parts(vector& parts) { m_parts.swap(parts); } void opc_content_types_context::pop_ext_defaults(vector& ext_defaults) { m_ext_defaults.swap(ext_defaults); } // ============================================================================ namespace { class rel_attr_parser : public unary_function { public: rel_attr_parser(session_context* cxt, const opc_relations_context::schema_cache_type* cache, const config* conf) : m_cxt(cxt), mp_schema_cache(cache), mp_config(conf) {} void operator() (const xml_token_attr_t& attr) { // Target and rId strings must be interned as they must survive after // the rels part gets destroyed. switch (attr.name) { case XML_Target: m_rel.target = m_cxt->m_string_pool.intern(attr.value).first; break; case XML_Type: m_rel.type = to_schema(attr.value); break; case XML_Id: m_rel.rid = m_cxt->m_string_pool.intern(attr.value).first; break; } } const opc_rel_t& get_rel() const { return m_rel; } private: schema_t to_schema(const pstring& p) const { opc_relations_context::schema_cache_type::const_iterator itr = mp_schema_cache->find(p); if (itr == mp_schema_cache->end()) { if (mp_config->debug) cout << "unknown schema: " << p << endl; return NULL; } const pstring& val = *itr; return val.get(); } private: session_context* m_cxt; const opc_relations_context::schema_cache_type* mp_schema_cache; const config* mp_config; opc_rel_t m_rel; }; /** * Compare relations by the rId. */ struct compare_rels : binary_function { bool operator() (const opc_rel_t& r1, const opc_rel_t& r2) const { size_t n1 = r1.rid.size(), n2 = r2.rid.size(); size_t n = min(n1, n2); const char *p1 = r1.rid.get(), *p2 = r2.rid.get(); for (size_t i = 0; i < n; ++i, ++p1, ++p2) { if (*p1 < *p2) return true; if (*p1 > *p2) return false; assert(*p1 == *p2); } return n1 < n2; } }; } opc_relations_context::opc_relations_context(session_context& session_cxt, const tokens &_tokens) : xml_context_base(session_cxt, _tokens) { // build content type cache. for (schema_t* p = SCH_all; *p; ++p) m_schema_cache.insert(pstring(*p)); } opc_relations_context::~opc_relations_context() { } bool opc_relations_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* opc_relations_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void opc_relations_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) { } void opc_relations_context::start_element(xmlns_id_t ns, xml_token_t name, const vector &attrs) { xml_token_pair_t parent = push_stack(ns, name); switch (name) { case XML_Relationships: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); if (get_config().debug) print_attrs(get_tokens(), attrs); } break; case XML_Relationship: { rel_attr_parser func(&get_session_context(), &m_schema_cache, &get_config()); xml_element_expected(parent, NS_opc_rel, XML_Relationships); func = for_each(attrs.begin(), attrs.end(), func); const opc_rel_t& rel = func.get_rel(); if (rel.type) m_rels.push_back(rel); } break; default: warn_unhandled(); } } bool opc_relations_context::end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } void opc_relations_context::characters(const pstring &str, bool transient) { } void opc_relations_context::init() { m_rels.clear(); } void opc_relations_context::pop_rels(vector& rels) { // Sort by the rId. sort(m_rels.begin(), m_rels.end(), compare_rels()); m_rels.swap(rels); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_tokens.inl0000644000175000017500000025350512535701143017661 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const char* token_names[] = { "??", // 0 "AbbreviatedCaseNumber", // 1 "Accel", // 2 "Accel2", // 3 "AlbumTitle", // 4 "Anchor", // 5 "AppVersion", // 6 "Append", // 7 "Application", // 8 "Artist", // 9 "Author", // 10 "AutoFill", // 11 "AutoFit", // 12 "AutoLine", // 13 "AutoPict", // 14 "AutoScale", // 15 "BookAuthor", // 16 "BookTitle", // 17 "BroadcastTitle", // 18 "Broadcaster", // 19 "CF", // 20 "Camera", // 21 "Cancel", // 22 "CaseNumber", // 23 "ChapterNumber", // 24 "Characters", // 25 "CharactersWithSpaces", // 26 "Checked", // 27 "City", // 28 "ClientData", // 29 "ColHidden", // 30 "Colored", // 31 "Column", // 32 "Comments", // 33 "Company", // 34 "Compiler", // 35 "Composer", // 36 "Conductor", // 37 "ConferenceName", // 38 "ConnectionID", // 39 "Corporate", // 40 "Counsel", // 41 "CountryRegion", // 42 "Court", // 43 "DDE", // 44 "DataBinding", // 45 "DataBindingLoadMode", // 46 "DataBindingName", // 47 "Day", // 48 "DayAccessed", // 49 "Default", // 50 "DefaultSize", // 51 "Department", // 52 "DigSig", // 53 "Director", // 54 "Disabled", // 55 "Dismiss", // 56 "Distributor", // 57 "DocSecurity", // 58 "DrawAspect", // 59 "DropLines", // 60 "DropStyle", // 61 "Dx", // 62 "Edition", // 63 "Editor", // 64 "FieldCodes", // 65 "FileBinding", // 66 "FileBindingName", // 67 "First", // 68 "FirstButton", // 69 "FmlaGroup", // 70 "FmlaLink", // 71 "FmlaMacro", // 72 "FmlaPict", // 73 "FmlaRange", // 74 "FmlaTxbx", // 75 "Guid", // 76 "HLinks", // 77 "HeadingPairs", // 78 "Help", // 79 "HiddenSlides", // 80 "Horiz", // 81 "HyperlinkBase", // 82 "HyperlinksChanged", // 83 "ID", // 84 "Inc", // 85 "Institution", // 86 "InternetSiteTitle", // 87 "Interviewee", // 88 "Interviewer", // 89 "Inventor", // 90 "Issue", // 91 "JournalName", // 92 "JustLastX", // 93 "LCID", // 94 "LCT", // 95 "Last", // 96 "Lines", // 97 "LinkType", // 98 "LinksUpToDate", // 99 "ListItem", // 100 "LockText", // 101 "Locked", // 102 "LockedField", // 103 "MMClips", // 104 "Manager", // 105 "Map", // 106 "MapInfo", // 107 "MapOCX", // 108 "Max", // 109 "Medium", // 110 "Middle", // 111 "Min", // 112 "Month", // 113 "MonthAccessed", // 114 "MoveWithCells", // 115 "MultiLine", // 116 "MultiSel", // 117 "Name", // 118 "NameList", // 119 "Namespace", // 120 "NoThreeD", // 121 "NoThreeD2", // 122 "Notes", // 123 "NumberVolumes", // 124 "OLEObject", // 125 "ObjectID", // 126 "ObjectType", // 127 "Page", // 128 "Pages", // 129 "Paragraphs", // 130 "PatentNumber", // 131 "Performer", // 132 "PeriodicalTitle", // 133 "Person", // 134 "PresentationFormat", // 135 "PreserveFormat", // 136 "PreserveSortAFLayout", // 137 "PrintObject", // 138 "ProducerName", // 139 "ProductionCompany", // 140 "ProgID", // 141 "Properties", // 142 "PublicationTitle", // 143 "Publisher", // 144 "RecalcAlways", // 145 "RecordingNumber", // 146 "RefOrder", // 147 "Reporter", // 148 "RootElement", // 149 "Row", // 150 "RowHidden", // 151 "ScaleCrop", // 152 "Schema", // 153 "SchemaID", // 154 "SchemaRef", // 155 "ScriptExtended", // 156 "ScriptLanguage", // 157 "ScriptLocation", // 158 "ScriptText", // 159 "SecretEdit", // 160 "Sel", // 161 "SelType", // 162 "SelectedStyle", // 163 "SelectionNamespaces", // 164 "ShapeID", // 165 "SharedDoc", // 166 "ShortTitle", // 167 "ShowImportExportValidationErrors", // 168 "SizeWithCells", // 169 "Slides", // 170 "Source", // 171 "SourceType", // 172 "Sources", // 173 "StandardNumber", // 174 "StateProvince", // 175 "Station", // 176 "StyleName", // 177 "Tag", // 178 "Template", // 179 "TextHAlign", // 180 "TextVAlign", // 181 "Theater", // 182 "ThesisType", // 183 "Title", // 184 "TitlesOfParts", // 185 "TotalTime", // 186 "Translator", // 187 "Type", // 188 "UIObj", // 189 "URI", // 190 "URL", // 191 "UpdateMode", // 192 "VScroll", // 193 "VTEdit", // 194 "Val", // 195 "ValidIds", // 196 "Version", // 197 "Visible", // 198 "Volume", // 199 "WidthMin", // 200 "Words", // 201 "Writer", // 202 "Year", // 203 "YearAccessed", // 204 "a", // 205 "aboveAverage", // 206 "absSizeAnchor", // 207 "absoluteAnchor", // 208 "abstractNum", // 209 "abstractNumId", // 210 "aca", // 211 "acc", // 212 "accPr", // 213 "accel", // 214 "accent1", // 215 "accent2", // 216 "accent3", // 217 "accent4", // 218 "accent5", // 219 "accent6", // 220 "accentbar", // 221 "accumulate", // 222 "action", // 223 "active", // 224 "activeCell", // 225 "activeCellId", // 226 "activeCol", // 227 "activePane", // 228 "activeRecord", // 229 "activeRow", // 230 "activeSheetId", // 231 "activeTab", // 232 "activeWritingStyle", // 233 "actualPg", // 234 "additionalCharacteristics", // 235 "additive", // 236 "addlxml", // 237 "addressFieldName", // 238 "adj", // 239 "adjLst", // 240 "adjust", // 241 "adjustColumnWidth", // 242 "adjustLineHeightInTable", // 243 "adjustRightInd", // 244 "adjusthandles", // 245 "advAuto", // 246 "advClick", // 247 "advTm", // 248 "advise", // 249 "after", // 250 "afterAutospacing", // 251 "afterEffect", // 252 "afterLines", // 253 "ahLst", // 254 "ahPolar", // 255 "ahXY", // 256 "alg", // 257 "algIdExt", // 258 "algIdExtSource", // 259 "algn", // 260 "alias", // 261 "aliases", // 262 "align", // 263 "alignBordersAndEdges", // 264 "alignTablesRowByRow", // 265 "alignWithMargins", // 266 "alignment", // 267 "alignshape", // 268 "all", // 269 "allCaption", // 270 "allDrilled", // 271 "allUniqueName", // 272 "allowBlank", // 273 "allowOverlap", // 274 "allowPNG", // 275 "allowPng", // 276 "allowRefreshQuery", // 277 "allowSpaceOfSameStyleInTable", // 278 "allowcomments", // 279 "allowincell", // 280 "allowoverlap", // 281 "aln", // 282 "alnAt", // 283 "alnScr", // 284 "alpha", // 285 "alphaBiLevel", // 286 "alphaCeiling", // 287 "alphaFloor", // 288 "alphaInv", // 289 "alphaMod", // 290 "alphaModFix", // 291 "alphaOff", // 292 "alphaOutset", // 293 "alphaRepl", // 294 "alt", // 295 "altChunk", // 296 "altChunkPr", // 297 "altLang", // 298 "altName", // 299 "althref", // 300 "alwaysMergeEmptyNamespace", // 301 "alwaysShow", // 302 "alwaysShowPlaceholderText", // 303 "amt", // 304 "anchor", // 305 "anchorCtr", // 306 "anchorLock", // 307 "anchorlock", // 308 "anchorx", // 309 "anchory", // 310 "and", // 311 "ang", // 312 "angle", // 313 "anim", // 314 "animBg", // 315 "animClr", // 316 "animEffect", // 317 "animLvl", // 318 "animMotion", // 319 "animOne", // 320 "animRot", // 321 "animScale", // 322 "annotation", // 323 "annotationRef", // 324 "appName", // 325 "applyAlignment", // 326 "applyAlignmentFormats", // 327 "applyBorder", // 328 "applyBorderFormats", // 329 "applyBreakingRules", // 330 "applyFill", // 331 "applyFont", // 332 "applyFontFormats", // 333 "applyNumberFormat", // 334 "applyNumberFormats", // 335 "applyPatternFormats", // 336 "applyProtection", // 337 "applyStyles", // 338 "applyToEnd", // 339 "applyToFront", // 340 "applyToSides", // 341 "applyWidthHeightFormats", // 342 "arc", // 343 "arcTo", // 344 "arcsize", // 345 "area3DChart", // 346 "areaChart", // 347 "arg", // 348 "argPr", // 349 "argSz", // 350 "array", // 351 "arrowok", // 352 "ascii", // 353 "asciiTheme", // 354 "aspect", // 355 "aspectratio", // 356 "assign", // 357 "asteriskTotals", // 358 "attachedSchema", // 359 "attachedTemplate", // 360 "attr", // 361 "attrName", // 362 "attrNameLst", // 363 "attribute", // 364 "audio", // 365 "audioCd", // 366 "audioFile", // 367 "author", // 368 "authorId", // 369 "authors", // 370 "auto", // 371 "autoAdjust", // 372 "autoCaption", // 373 "autoCaptions", // 374 "autoCompressPictures", // 375 "autoEnd", // 376 "autoFilter", // 377 "autoFilterDateGrouping", // 378 "autoFormatId", // 379 "autoFormatOverride", // 380 "autoHyphenation", // 381 "autoLoad", // 382 "autoPage", // 383 "autoPageBreaks", // 384 "autoRecover", // 385 "autoRedefine", // 386 "autoRepublish", // 387 "autoRev", // 388 "autoShow", // 389 "autoSortScope", // 390 "autoSpaceDE", // 391 "autoSpaceDN", // 392 "autoSpaceLikeWord95", // 393 "autoStart", // 394 "autoTitleDeleted", // 395 "autoUpdate", // 396 "autoUpdateAnimBg", // 397 "autofitToFirstFixedWidthCell", // 398 "autoformat", // 399 "autolayout", // 400 "autorotationcenter", // 401 "avLst", // 402 "avgSubtotal", // 403 "axId", // 404 "axPos", // 405 "axis", // 406 "b", // 407 "bCs", // 408 "bIns", // 409 "backWall", // 410 "backdepth", // 411 "backdrop", // 412 "background", // 413 "backgroundQuery", // 414 "backgroundRefresh", // 415 "backupFile", // 416 "backward", // 417 "backwards", // 418 "balanceSingleByteDoubleByteWidth", // 419 "band1H", // 420 "band1V", // 421 "band2H", // 422 "band2V", // 423 "bandCol", // 424 "bandFmt", // 425 "bandFmts", // 426 "bandRow", // 427 "bar", // 428 "bar3DChart", // 429 "barChart", // 430 "barDir", // 431 "barPr", // 432 "base", // 433 "baseColWidth", // 434 "baseField", // 435 "baseItem", // 436 "baseJc", // 437 "baseTimeUnit", // 438 "baseType", // 439 "basedOn", // 440 "baseline", // 441 "bc", // 442 "bdr", // 443 "before", // 444 "beforeAutospacing", // 445 "beforeLines", // 446 "begChr", // 447 "behavior", // 448 "behaviors", // 449 "behindDoc", // 450 "bestFit", // 451 "between", // 452 "bevel", // 453 "bevelB", // 454 "bevelT", // 455 "bg", // 456 "bg1", // 457 "bg2", // 458 "bgClr", // 459 "bgColor", // 460 "bgFillStyleLst", // 461 "bgPr", // 462 "bgRef", // 463 "biLevel", // 464 "bibliography", // 465 "bidi", // 466 "bidiVisual", // 467 "bilevel", // 468 "bk", // 469 "blackAndWhite", // 470 "blacklevel", // 471 "blank", // 472 "bld", // 473 "bldAsOne", // 474 "bldChart", // 475 "bldDgm", // 476 "bldGraphic", // 477 "bldLst", // 478 "bldLvl", // 479 "bldOleChart", // 480 "bldP", // 481 "bldStep", // 482 "bldSub", // 483 "blend", // 484 "blinds", // 485 "blip", // 486 "blipFill", // 487 "blipPhldr", // 488 "blob", // 489 "blockQuote", // 490 "blue", // 491 "blueMod", // 492 "blueOff", // 493 "blur", // 494 "blurRad", // 495 "bmk", // 496 "body", // 497 "bodyDiv", // 498 "bodyPr", // 499 "bodyStyle", // 500 "bold", // 501 "boldItalic", // 502 "bookFoldPrinting", // 503 "bookFoldPrintingSheets", // 504 "bookFoldRevPrinting", // 505 "bookViews", // 506 "bookmarkEnd", // 507 "bookmarkIdSeed", // 508 "bookmarkStart", // 509 "bool", // 510 "boolVal", // 511 "boolean", // 512 "border", // 513 "borderBox", // 514 "borderBoxPr", // 515 "borderId", // 516 "borderbottom", // 517 "borderbottomcolor", // 518 "borderleft", // 519 "borderleftcolor", // 520 "borderright", // 521 "borderrightcolor", // 522 "borders", // 523 "bordersDoNotSurroundFooter", // 524 "bordersDoNotSurroundHeader", // 525 "bordertop", // 526 "bordertopcolor", // 527 "bottom", // 528 "bottomFromText", // 529 "box", // 530 "boxPr", // 531 "br", // 532 "bright", // 533 "brightness", // 534 "brk", // 535 "brkBin", // 536 "brkBinSub", // 537 "browse", // 538 "bstr", // 539 "buAutoNum", // 540 "buBlip", // 541 "buChar", // 542 "buClr", // 543 "buClrTx", // 544 "buFont", // 545 "buFontTx", // 546 "buNone", // 547 "buSzPct", // 548 "buSzPts", // 549 "buSzTx", // 550 "bubble3D", // 551 "bubbleChart", // 552 "bubbleScale", // 553 "bubbleSize", // 554 "build", // 555 "builtIn", // 556 "builtInGroupCount", // 557 "builtInUnit", // 558 "builtinId", // 559 "bullet", // 560 "bulletEnabled", // 561 "button", // 562 "bw", // 563 "bwMode", // 564 "bwmode", // 565 "bwnormal", // 566 "bwpure", // 567 "bx", // 568 "by", // 569 "byPosition", // 570 "c", // 571 "cBhvr", // 572 "cGp", // 573 "cGpRule", // 574 "cMediaNode", // 575 "cNvCxnSpPr", // 576 "cNvGraphicFramePr", // 577 "cNvGrpSpPr", // 578 "cNvPicPr", // 579 "cNvPr", // 580 "cNvSpPr", // 581 "cSld", // 582 "cSldViewPr", // 583 "cSp", // 584 "cTn", // 585 "cViewPr", // 586 "ca", // 587 "cacheField", // 588 "cacheFields", // 589 "cacheHierarchies", // 590 "cacheHierarchy", // 591 "cacheId", // 592 "cacheIndex", // 593 "cacheSource", // 594 "cachedColBalance", // 595 "calcChain", // 596 "calcCompleted", // 597 "calcId", // 598 "calcMode", // 599 "calcOnExit", // 600 "calcOnSave", // 601 "calcPr", // 602 "calcmode", // 603 "calculatedColumn", // 604 "calculatedColumnFormula", // 605 "calculatedItem", // 606 "calculatedItems", // 607 "calculatedMember", // 608 "calculatedMembers", // 609 "calendar", // 610 "calendarType", // 611 "callout", // 612 "camera", // 613 "cantSplit", // 614 "cap", // 615 "caps", // 616 "caption", // 617 "captions", // 618 "caseSensitive", // 619 "cat", // 620 "catAx", // 621 "catLst", // 622 "category", // 623 "categoryIdx", // 624 "cell", // 625 "cell3D", // 626 "cellColor", // 627 "cellComments", // 628 "cellDel", // 629 "cellIns", // 630 "cellMerge", // 631 "cellMeta", // 632 "cellMetadata", // 633 "cellSmartTag", // 634 "cellSmartTagPr", // 635 "cellSmartTags", // 636 "cellStyle", // 637 "cellStyleXfs", // 638 "cellStyles", // 639 "cellWatch", // 640 "cellWatches", // 641 "cellXfs", // 642 "cf", // 643 "cfRule", // 644 "cfvo", // 645 "chExt", // 646 "chMax", // 647 "chOff", // 648 "chOrder", // 649 "chPref", // 650 "changesSavedWin", // 651 "chapNum", // 652 "chapSep", // 653 "chapStyle", // 654 "char", // 655 "charRg", // 656 "charSpace", // 657 "characterSpacingControl", // 658 "characteristic", // 659 "charset", // 660 "chart", // 661 "chartFormat", // 662 "chartFormats", // 663 "chartObject", // 664 "chartSpace", // 665 "chartsheet", // 666 "checkBox", // 667 "checkCompatibility", // 668 "checkErrors", // 669 "checkStyle", // 670 "checked", // 671 "checker", // 672 "childTnLst", // 673 "choose", // 674 "chr", // 675 "chromakey", // 676 "circle", // 677 "citation", // 678 "class", // 679 "clear", // 680 "clearAll", // 681 "clearComments", // 682 "clearContents", // 683 "clearFormats", // 684 "click", // 685 "clickAndTypeStyle", // 686 "clientData", // 687 "clientInsertedTime", // 688 "clip", // 689 "clippath", // 690 "clipped", // 691 "cliptowrap", // 692 "close", // 693 "clr", // 694 "clrChange", // 695 "clrData", // 696 "clrFrom", // 697 "clrIdx", // 698 "clrMap", // 699 "clrMapOvr", // 700 "clrMode", // 701 "clrMru", // 702 "clrRepl", // 703 "clrScheme", // 704 "clrSchemeMapping", // 705 "clrSpc", // 706 "clrTo", // 707 "clrVal", // 708 "clsid", // 709 "cm", // 710 "cmAuthor", // 711 "cmAuthorLst", // 712 "cmLst", // 713 "cmd", // 714 "cmpd", // 715 "cnfStyle", // 716 "cnt", // 717 "code", // 718 "codeName", // 719 "codePage", // 720 "coerce", // 721 "coherent3DOff", // 722 "col", // 723 "colBreaks", // 724 "colDelim", // 725 "colFields", // 726 "colFirst", // 727 "colGrandTotals", // 728 "colHeaderCaption", // 729 "colHierarchiesUsage", // 730 "colHierarchyUsage", // 731 "colId", // 732 "colItems", // 733 "colLast", // 734 "colOff", // 735 "colPageCount", // 736 "collapse", // 737 "collapsed", // 738 "collapsedLevelsAreSubtotals", // 739 "color", // 740 "color2", // 741 "colorFilter", // 742 "colorId", // 743 "colorScale", // 744 "colormenu", // 745 "colormode", // 746 "colormru", // 747 "colors", // 748 "colorsDef", // 749 "colorsDefHdr", // 750 "colorsDefHdrLst", // 751 "cols", // 752 "column", // 753 "columnSort", // 754 "comb", // 755 "combine", // 756 "combineBrackets", // 757 "comboBox", // 758 "comma", // 759 "command", // 760 "commandType", // 761 "comment", // 762 "commentList", // 763 "commentRangeEnd", // 764 "commentRangeStart", // 765 "commentReference", // 766 "comments", // 767 "comp", // 768 "compact", // 769 "compactData", // 770 "compat", // 771 "compatLnSpc", // 772 "compatMode", // 773 "complex", // 774 "concurrent", // 775 "concurrentCalc", // 776 "concurrentManualCount", // 777 "cond", // 778 "condense", // 779 "conditionalFormat", // 780 "conditionalFormats", // 781 "conditionalFormatting", // 782 "connectString", // 783 "connectangles", // 784 "connection", // 785 "connectionId", // 786 "connections", // 787 "connectloc", // 788 "connectlocs", // 789 "connectortype", // 790 "connecttype", // 791 "consecutive", // 792 "consecutiveHyphenLimit", // 793 "consolidation", // 794 "constr", // 795 "constrLst", // 796 "constrainbounds", // 797 "cont", // 798 "containsBlank", // 799 "containsDate", // 800 "containsInteger", // 801 "containsMixedTypes", // 802 "containsNonDate", // 803 "containsNumber", // 804 "containsSemiMixedTypes", // 805 "containsString", // 806 "content", // 807 "contextualSpacing", // 808 "continuationSeparator", // 809 "contourClr", // 810 "contourW", // 811 "contrast", // 812 "control", // 813 "control1", // 814 "control2", // 815 "controls", // 816 "convMailMergeEsc", // 817 "coordorigin", // 818 "coordsize", // 819 "copies", // 820 "copy", // 821 "count", // 822 "countASubtotal", // 823 "countBy", // 824 "countSubtotal", // 825 "cover", // 826 "cp", // 827 "cr", // 828 "crashSave", // 829 "createdVersion", // 830 "credentials", // 831 "cropbottom", // 832 "cropleft", // 833 "cropping", // 834 "cropright", // 835 "croptop", // 836 "crossAx", // 837 "crossBetween", // 838 "crosses", // 839 "crossesAt", // 840 "cryptAlgorithmClass", // 841 "cryptAlgorithmSid", // 842 "cryptAlgorithmType", // 843 "cryptProvider", // 844 "cryptProviderType", // 845 "cryptProviderTypeExt", // 846 "cryptProviderTypeExtSource", // 847 "cryptSpinCount", // 848 "cs", // 849 "csCatId", // 850 "csTypeId", // 851 "csb0", // 852 "csb1", // 853 "css", // 854 "cstate", // 855 "cstheme", // 856 "ct", // 857 "ctrlPr", // 858 "cubicBezTo", // 859 "culture", // 860 "current", // 861 "curve", // 862 "custAng", // 863 "custClr", // 864 "custClrLst", // 865 "custDash", // 866 "custData", // 867 "custDataLst", // 868 "custFlipHor", // 869 "custFlipVert", // 870 "custGeom", // 871 "custLinFactNeighborX", // 872 "custLinFactNeighborY", // 873 "custLinFactX", // 874 "custLinFactY", // 875 "custRadScaleInc", // 876 "custRadScaleRad", // 877 "custScaleX", // 878 "custScaleY", // 879 "custShow", // 880 "custShowLst", // 881 "custSplit", // 882 "custSzX", // 883 "custSzY", // 884 "custT", // 885 "custUnit", // 886 "customBuiltin", // 887 "customFilter", // 888 "customFilters", // 889 "customFormat", // 890 "customHeight", // 891 "customList", // 892 "customListSort", // 893 "customMarkFollows", // 894 "customMenu", // 895 "customPr", // 896 "customProperties", // 897 "customRollUp", // 898 "customSheetView", // 899 "customSheetViews", // 900 "customStyle", // 901 "customView", // 902 "customWidth", // 903 "customWorkbookView", // 904 "customWorkbookViews", // 905 "customXml", // 906 "customXmlDelRangeEnd", // 907 "customXmlDelRangeStart", // 908 "customXmlInsRangeEnd", // 909 "customXmlInsRangeStart", // 910 "customXmlMoveFromRangeEnd", // 911 "customXmlMoveFromRangeStart", // 912 "customXmlMoveToRangeEnd", // 913 "customXmlMoveToRangeStart", // 914 "customXmlPr", // 915 "cut", // 916 "cx", // 917 "cxn", // 918 "cxnId", // 919 "cxnLst", // 920 "cxnSp", // 921 "cxnSpLocks", // 922 "cy", // 923 "d", // 924 "dLbl", // 925 "dLblPos", // 926 "dLbls", // 927 "dPr", // 928 "dPt", // 929 "dTable", // 930 "dashstyle", // 931 "data", // 932 "dataBar", // 933 "dataBinding", // 934 "dataBound", // 935 "dataCaption", // 936 "dataCellStyle", // 937 "dataConsolidate", // 938 "dataDxfId", // 939 "dataExtractLoad", // 940 "dataField", // 941 "dataFields", // 942 "dataModel", // 943 "dataOnRows", // 944 "dataOnly", // 945 "dataPosition", // 946 "dataRef", // 947 "dataRefs", // 948 "dataSource", // 949 "dataSourceSort", // 950 "dataType", // 951 "dataValidation", // 952 "dataValidations", // 953 "databaseField", // 954 "datastoreItem", // 955 "date", // 956 "date1904", // 957 "dateAx", // 958 "dateFormat", // 959 "dateGroupItem", // 960 "dateTime", // 961 "dateTimeGrouping", // 962 "day", // 963 "dayLong", // 964 "dayShort", // 965 "dbPr", // 966 "ddList", // 967 "ddeItem", // 968 "ddeItems", // 969 "ddeLink", // 970 "ddeService", // 971 "ddeTopic", // 972 "decel", // 973 "decimal", // 974 "decimalSymbol", // 975 "decorated", // 976 "def", // 977 "defJc", // 978 "defLockedState", // 979 "defPPr", // 980 "defQFormat", // 981 "defRPr", // 982 "defSemiHidden", // 983 "defStyle", // 984 "defTabSz", // 985 "defUIPriority", // 986 "defUnhideWhenUsed", // 987 "default", // 988 "defaultAttributeDrillState", // 989 "defaultColWidth", // 990 "defaultGridColor", // 991 "defaultMemberUniqueName", // 992 "defaultPivotStyle", // 993 "defaultRowHeight", // 994 "defaultSubtotal", // 995 "defaultTabStop", // 996 "defaultTableStyle", // 997 "defaultTextStyle", // 998 "defaultThemeVersion", // 999 "definedName", // 1000 "definedNames", // 1001 "deg", // 1002 "degHide", // 1003 "degree", // 1004 "del", // 1005 "del1", // 1006 "del2", // 1007 "delInstrText", // 1008 "delText", // 1009 "delay", // 1010 "delete", // 1011 "deleteColumns", // 1012 "deleteRows", // 1013 "deleted", // 1014 "deletedField", // 1015 "delimited", // 1016 "delimiter", // 1017 "den", // 1018 "denormalized", // 1019 "depthPercent", // 1020 "desc", // 1021 "descending", // 1022 "descr", // 1023 "description", // 1024 "destId", // 1025 "destOrd", // 1026 "destination", // 1027 "destinationFile", // 1028 "detectmouseclick", // 1029 "dgm", // 1030 "dgmbasetextscale", // 1031 "dgmfontsize", // 1032 "dgmlayout", // 1033 "dgmlayoutmru", // 1034 "dgmnodekind", // 1035 "dgmscalex", // 1036 "dgmscaley", // 1037 "dgmstyle", // 1038 "diagonal", // 1039 "diagonalDown", // 1040 "diagonalUp", // 1041 "diagram", // 1042 "dialogsheet", // 1043 "diamond", // 1044 "diff", // 1045 "differentFirst", // 1046 "differentOddEven", // 1047 "diffusity", // 1048 "dimension", // 1049 "dimensionUniqueName", // 1050 "dimensions", // 1051 "dir", // 1052 "dirty", // 1053 "disableEdit", // 1054 "disableFieldList", // 1055 "disablePrompts", // 1056 "disableRefresh", // 1057 "discretePr", // 1058 "diskRevisions", // 1059 "dispBlanksAs", // 1060 "dispDef", // 1061 "dispEq", // 1062 "dispRSqr", // 1063 "dispUnits", // 1064 "dispUnitsLbl", // 1065 "displacedByCustomXml", // 1066 "display", // 1067 "displayBackgroundShape", // 1068 "displayFolder", // 1069 "displayHangulFixedWidth", // 1070 "displayHorizontalDrawingGridEvery", // 1071 "displayName", // 1072 "displayText", // 1073 "displayVerticalDrawingGridEvery", // 1074 "dissolve", // 1075 "dist", // 1076 "distB", // 1077 "distL", // 1078 "distR", // 1079 "distT", // 1080 "distance", // 1081 "div", // 1082 "divBdr", // 1083 "divId", // 1084 "divs", // 1085 "divsChild", // 1086 "dk1", // 1087 "dk2", // 1088 "dllVersion", // 1089 "dm", // 1090 "dn", // 1091 "doNotAutoCompressPictures", // 1092 "doNotAutofitConstrainedTables", // 1093 "doNotBreakConstrainedForcedTable", // 1094 "doNotBreakWrappedTables", // 1095 "doNotDemarcateInvalidXml", // 1096 "doNotDisplayPageBoundaries", // 1097 "doNotEmbedSmartTags", // 1098 "doNotExpandShiftReturn", // 1099 "doNotHyphenateCaps", // 1100 "doNotIncludeSubdocsInStats", // 1101 "doNotLeaveBackslashAlone", // 1102 "doNotOrganizeInFolder", // 1103 "doNotRelyOnCSS", // 1104 "doNotSaveAsSingleFile", // 1105 "doNotShadeFormData", // 1106 "doNotSnapToGridInCell", // 1107 "doNotSuppressBlankLines", // 1108 "doNotSuppressIndentation", // 1109 "doNotSuppressParagraphBorders", // 1110 "doNotTrackFormatting", // 1111 "doNotTrackMoves", // 1112 "doNotUseEastAsianBreakRules", // 1113 "doNotUseHTMLParagraphAutoSpacing", // 1114 "doNotUseIndentAsNumberingTabStop", // 1115 "doNotUseLongFileNames", // 1116 "doNotUseMarginsForDrawingGridOrigin", // 1117 "doNotValidateAgainstSchema", // 1118 "doNotVertAlignCellWithSp", // 1119 "doNotVertAlignInTxbx", // 1120 "doNotWrapTextWithPunct", // 1121 "docDefaults", // 1122 "docGrid", // 1123 "docLocation", // 1124 "docPart", // 1125 "docPartBody", // 1126 "docPartCategory", // 1127 "docPartGallery", // 1128 "docPartList", // 1129 "docPartObj", // 1130 "docPartPr", // 1131 "docPartUnique", // 1132 "docParts", // 1133 "docPr", // 1134 "docVar", // 1135 "docVars", // 1136 "document", // 1137 "documentProtection", // 1138 "documentType", // 1139 "double", // 1140 "doubleclicknotify", // 1141 "doughnutChart", // 1142 "downBars", // 1143 "dpi", // 1144 "dr", // 1145 "draft", // 1146 "dragOff", // 1147 "dragToCol", // 1148 "dragToData", // 1149 "dragToPage", // 1150 "dragToRow", // 1151 "drawing", // 1152 "drawingGridHorizontalOrigin", // 1153 "drawingGridHorizontalSpacing", // 1154 "drawingGridVerticalOrigin", // 1155 "drawingGridVerticalSpacing", // 1156 "drop", // 1157 "dropCap", // 1158 "dropDownList", // 1159 "dropLines", // 1160 "dropauto", // 1161 "ds", // 1162 "dstrike", // 1163 "dt", // 1164 "dt2D", // 1165 "dtr", // 1166 "duotone", // 1167 "dur", // 1168 "dvAspect", // 1169 "dx", // 1170 "dxaOrig", // 1171 "dxf", // 1172 "dxfId", // 1173 "dxfs", // 1174 "dy", // 1175 "dyaOrig", // 1176 "dynamicAddress", // 1177 "dynamicFilter", // 1178 "dz", // 1179 "e", // 1180 "ea", // 1181 "eaLnBrk", // 1182 "eastAsia", // 1183 "eastAsiaTheme", // 1184 "eastAsianLayout", // 1185 "eb", // 1186 "ed", // 1187 "edGrp", // 1188 "edge", // 1189 "edit", // 1190 "editAs", // 1191 "editData", // 1192 "editPage", // 1193 "editas", // 1194 "edited", // 1195 "effect", // 1196 "effectClrLst", // 1197 "effectDag", // 1198 "effectExtent", // 1199 "effectLst", // 1200 "effectRef", // 1201 "effectStyle", // 1202 "effectStyleLst", // 1203 "element", // 1204 "else", // 1205 "em", // 1206 "embed", // 1207 "embedBold", // 1208 "embedBoldItalic", // 1209 "embedItalic", // 1210 "embedRegular", // 1211 "embedSystemFonts", // 1212 "embedTrueTypeFonts", // 1213 "embeddedFont", // 1214 "embeddedFontLst", // 1215 "emboss", // 1216 "embosscolor", // 1217 "empty", // 1218 "emptyCellReference", // 1219 "enableDrill", // 1220 "enableFieldProperties", // 1221 "enableFormatConditionsCalculation", // 1222 "enableRefresh", // 1223 "enableWizard", // 1224 "enabled", // 1225 "encoding", // 1226 "end", // 1227 "endA", // 1228 "endAngle", // 1229 "endChr", // 1230 "endCondLst", // 1231 "endCxn", // 1232 "endDate", // 1233 "endNum", // 1234 "endOfListFormulaUpdate", // 1235 "endParaRPr", // 1236 "endPos", // 1237 "endSnd", // 1238 "endSync", // 1239 "endarrow", // 1240 "endarrowlength", // 1241 "endarrowwidth", // 1242 "endcap", // 1243 "endnote", // 1244 "endnotePr", // 1245 "endnoteRef", // 1246 "endnoteReference", // 1247 "endnotes", // 1248 "enforcement", // 1249 "entries", // 1250 "entry", // 1251 "entryMacro", // 1252 "eol", // 1253 "eqArr", // 1254 "eqArrPr", // 1255 "eqn", // 1256 "equalAverage", // 1257 "equalWidth", // 1258 "equation", // 1259 "equationxml", // 1260 "err", // 1261 "errBarType", // 1262 "errBars", // 1263 "errDir", // 1264 "errValType", // 1265 "error", // 1266 "errorCaption", // 1267 "errorStyle", // 1268 "errorTitle", // 1269 "errors", // 1270 "evalError", // 1271 "evalOrder", // 1272 "evenAndOddHeaders", // 1273 "evenFooter", // 1274 "evenHeader", // 1275 "evt", // 1276 "evtFilter", // 1277 "excl", // 1278 "exclusive", // 1279 "exitMacro", // 1280 "exp", // 1281 "explosion", // 1282 "ext", // 1283 "extLst", // 1284 "extend", // 1285 "extendable", // 1286 "extent", // 1287 "externalBook", // 1288 "externalData", // 1289 "externalLink", // 1290 "externalReference", // 1291 "externalReferences", // 1292 "extraClrScheme", // 1293 "extraClrSchemeLst", // 1294 "extrusion", // 1295 "extrusionClr", // 1296 "extrusionH", // 1297 "extrusionOk", // 1298 "extrusioncolor", // 1299 "extrusionok", // 1300 "f", // 1301 "fHdr", // 1302 "fLocksText", // 1303 "fLocksWithSheet", // 1304 "fName", // 1305 "fPr", // 1306 "fPrintsWithSheet", // 1307 "fPublished", // 1308 "facet", // 1309 "fact", // 1310 "fade", // 1311 "fadeDir", // 1312 "family", // 1313 "fc", // 1314 "ffData", // 1315 "fgClr", // 1316 "fgColor", // 1317 "fi", // 1318 "field", // 1319 "fieldGroup", // 1320 "fieldId", // 1321 "fieldIdWrapped", // 1322 "fieldListSortAscending", // 1323 "fieldMapData", // 1324 "fieldPosition", // 1325 "fieldPrintTitles", // 1326 "fieldUsage", // 1327 "fieldsUsage", // 1328 "fileRecoveryPr", // 1329 "fileSharing", // 1330 "fileType", // 1331 "fileVersion", // 1332 "filetime", // 1333 "fill", // 1334 "fillClrLst", // 1335 "fillFormulas", // 1336 "fillId", // 1337 "fillOverlay", // 1338 "fillRect", // 1339 "fillRef", // 1340 "fillStyleLst", // 1341 "fillToRect", // 1342 "fillcolor", // 1343 "filled", // 1344 "fillok", // 1345 "fills", // 1346 "filltype", // 1347 "filter", // 1348 "filterColumn", // 1349 "filterMode", // 1350 "filterPrivacy", // 1351 "filterUnique", // 1352 "filterVal", // 1353 "filters", // 1354 "first", // 1355 "firstBackgroundRefresh", // 1356 "firstCol", // 1357 "firstDataCol", // 1358 "firstDataRow", // 1359 "firstFooter", // 1360 "firstHeader", // 1361 "firstHeaderRow", // 1362 "firstLine", // 1363 "firstLineChars", // 1364 "firstPageNumber", // 1365 "firstRow", // 1366 "firstSheet", // 1367 "firstSliceAng", // 1368 "firstSlideNum", // 1369 "fitText", // 1370 "fitToHeight", // 1371 "fitToPage", // 1372 "fitToWidth", // 1373 "fitpath", // 1374 "fitshape", // 1375 "flatBorders", // 1376 "flatTx", // 1377 "fld", // 1378 "fldChar", // 1379 "fldCharType", // 1380 "fldData", // 1381 "fldLock", // 1382 "fldSimple", // 1383 "flip", // 1384 "flipH", // 1385 "flipV", // 1386 "floor", // 1387 "fltVal", // 1388 "fmla", // 1389 "fmt", // 1390 "fmtId", // 1391 "fmtScheme", // 1392 "fmtid", // 1393 "focus", // 1394 "focusposition", // 1395 "focussize", // 1396 "folHlink", // 1397 "followColorScheme", // 1398 "followedHyperlink", // 1399 "font", // 1400 "fontAlgn", // 1401 "fontId", // 1402 "fontKey", // 1403 "fontRef", // 1404 "fontScale", // 1405 "fontScheme", // 1406 "fontSz", // 1407 "fonts", // 1408 "footer", // 1409 "footerReference", // 1410 "footnote", // 1411 "footnoteLayoutLikeWW8", // 1412 "footnotePr", // 1413 "footnoteRef", // 1414 "footnoteReference", // 1415 "footnotes", // 1416 "for", // 1417 "forEach", // 1418 "forName", // 1419 "forceAA", // 1420 "forceFullCalc", // 1421 "forceUpgrade", // 1422 "forcedash", // 1423 "foredepth", // 1424 "forgetLastTabAlignment", // 1425 "formProt", // 1426 "format", // 1427 "formatCells", // 1428 "formatCode", // 1429 "formatColumns", // 1430 "formatRows", // 1431 "formats", // 1432 "formatting", // 1433 "formsDesign", // 1434 "formula", // 1435 "formula1", // 1436 "formula2", // 1437 "formulaRange", // 1438 "formulas", // 1439 "forward", // 1440 "fov", // 1441 "frame", // 1442 "frameLayout", // 1443 "framePr", // 1444 "frameSlides", // 1445 "frameset", // 1446 "framesetSplitbar", // 1447 "from", // 1448 "fromWordArt", // 1449 "ftr", // 1450 "fullCalcOnLoad", // 1451 "fullDate", // 1452 "fullPrecision", // 1453 "fullScrn", // 1454 "func", // 1455 "funcPr", // 1456 "function", // 1457 "functionGroup", // 1458 "functionGroupId", // 1459 "functionGroups", // 1460 "futureMetadata", // 1461 "g", // 1462 "gain", // 1463 "gallery", // 1464 "gamma", // 1465 "gap", // 1466 "gapDepth", // 1467 "gapWidth", // 1468 "gd", // 1469 "gdLst", // 1470 "gdRefAng", // 1471 "gdRefR", // 1472 "gdRefX", // 1473 "gdRefY", // 1474 "gfxdata", // 1475 "ghostCol", // 1476 "ghostRow", // 1477 "glossaryDocument", // 1478 "glow", // 1479 "goal", // 1480 "gradFill", // 1481 "gradientFill", // 1482 "gradientshapeok", // 1483 "grammar", // 1484 "grandCol", // 1485 "grandRow", // 1486 "grandTotalCaption", // 1487 "graphic", // 1488 "graphicData", // 1489 "graphicEl", // 1490 "graphicFrame", // 1491 "graphicFrameLocks", // 1492 "gray", // 1493 "grayscale", // 1494 "grayscl", // 1495 "green", // 1496 "greenMod", // 1497 "greenOff", // 1498 "gridAfter", // 1499 "gridBefore", // 1500 "gridCol", // 1501 "gridDropZones", // 1502 "gridLines", // 1503 "gridLinesSet", // 1504 "gridSpacing", // 1505 "gridSpan", // 1506 "group", // 1507 "groupBy", // 1508 "groupChr", // 1509 "groupChrPr", // 1510 "groupInterval", // 1511 "groupItems", // 1512 "groupLevel", // 1513 "groupLevels", // 1514 "groupMember", // 1515 "groupMembers", // 1516 "grouping", // 1517 "groups", // 1518 "grow", // 1519 "growAutofit", // 1520 "growShrinkType", // 1521 "grpFill", // 1522 "grpId", // 1523 "grpSp", // 1524 "grpSpLocks", // 1525 "grpSpPr", // 1526 "gs", // 1527 "gsLst", // 1528 "gte", // 1529 "guid", // 1530 "guide", // 1531 "guideLst", // 1532 "gutter", // 1533 "gutterAtTop", // 1534 "h", // 1535 "hAnchor", // 1536 "hAnsi", // 1537 "hAnsiTheme", // 1538 "hMerge", // 1539 "hMode", // 1540 "hPercent", // 1541 "hR", // 1542 "hRule", // 1543 "hSpace", // 1544 "handles", // 1545 "handoutMaster", // 1546 "handoutMasterId", // 1547 "handoutMasterIdLst", // 1548 "hanging", // 1549 "hangingChars", // 1550 "hangingPunct", // 1551 "hasCustomPrompt", // 1552 "hash", // 1553 "hashData", // 1554 "hdr", // 1555 "hdrShapeDefaults", // 1556 "headEnd", // 1557 "header", // 1558 "headerFooter", // 1559 "headerReference", // 1560 "headerRowBorderDxfId", // 1561 "headerRowCellStyle", // 1562 "headerRowCount", // 1563 "headerRowDxfId", // 1564 "headerSource", // 1565 "headers", // 1566 "headersInLastRefresh", // 1567 "heading", // 1568 "headings", // 1569 "help", // 1570 "helpText", // 1571 "hf", // 1572 "hiLowLines", // 1573 "hidden", // 1574 "hiddenButton", // 1575 "hiddenColumn", // 1576 "hiddenColumns", // 1577 "hiddenLevel", // 1578 "hiddenRow", // 1579 "hiddenRows", // 1580 "hiddenSlides", // 1581 "hideBot", // 1582 "hideGeom", // 1583 "hideGrammaticalErrors", // 1584 "hideLastTrans", // 1585 "hideLeft", // 1586 "hideMark", // 1587 "hideNewItems", // 1588 "hidePivotFieldList", // 1589 "hideRight", // 1590 "hideSpellingErrors", // 1591 "hideTop", // 1592 "hier", // 1593 "hierBranch", // 1594 "hierarchy", // 1595 "hierarchyUsage", // 1596 "highlight", // 1597 "highlightClick", // 1598 "hint", // 1599 "history", // 1600 "hlink", // 1601 "hlinkClick", // 1602 "hlinkHover", // 1603 "hlinkMouseOver", // 1604 "holeSize", // 1605 "horizontal", // 1606 "horizontalCentered", // 1607 "horizontalDpi", // 1608 "horzAnchor", // 1609 "horzBarState", // 1610 "horzOverflow", // 1611 "hour", // 1612 "how", // 1613 "hps", // 1614 "hpsBaseText", // 1615 "hpsRaise", // 1616 "hr", // 1617 "hralign", // 1618 "href", // 1619 "hrnoshade", // 1620 "hrpct", // 1621 "hrstd", // 1622 "hsl", // 1623 "hslClr", // 1624 "ht", // 1625 "htmlFormat", // 1626 "htmlPubPr", // 1627 "htmlTables", // 1628 "hue", // 1629 "hueDir", // 1630 "hueMod", // 1631 "hueOff", // 1632 "hyperlink", // 1633 "hyperlinks", // 1634 "hyphenationZone", // 1635 "i", // 1636 "i1", // 1637 "i2", // 1638 "i3", // 1639 "i4", // 1640 "i8", // 1641 "iCs", // 1642 "iLevel", // 1643 "iMeasureFld", // 1644 "iMeasureHier", // 1645 "icon", // 1646 "iconFilter", // 1647 "iconId", // 1648 "iconSet", // 1649 "id", // 1650 "idcntr", // 1651 "iddest", // 1652 "idmap", // 1653 "idref", // 1654 "idsrc", // 1655 "idx", // 1656 "if", // 1657 "ignoreMixedContent", // 1658 "ignoredError", // 1659 "ignoredErrors", // 1660 "ilvl", // 1661 "image", // 1662 "imagealignshape", // 1663 "imageaspect", // 1664 "imagedata", // 1665 "imagesize", // 1666 "imeMode", // 1667 "imgH", // 1668 "imgSz", // 1669 "imgW", // 1670 "immersive", // 1671 "imprint", // 1672 "in", // 1673 "includeHiddenRowCol", // 1674 "includeNewItemsInFilter", // 1675 "includePrintSettings", // 1676 "ind", // 1677 "indent", // 1678 "index", // 1679 "indexed", // 1680 "indexedColors", // 1681 "initials", // 1682 "ink", // 1683 "inkAnnotations", // 1684 "inkTgt", // 1685 "inline", // 1686 "innerShdw", // 1687 "inputCells", // 1688 "ins", // 1689 "insDel", // 1690 "insertBlankRow", // 1691 "insertColumns", // 1692 "insertHyperlinks", // 1693 "insertPageBreak", // 1694 "insertRow", // 1695 "insertRowShift", // 1696 "insertRows", // 1697 "inset", // 1698 "insetmode", // 1699 "insetpen", // 1700 "insetpenok", // 1701 "insideH", // 1702 "insideV", // 1703 "instr", // 1704 "instrText", // 1705 "int", // 1706 "intLim", // 1707 "intVal", // 1708 "integer", // 1709 "interSp", // 1710 "intercept", // 1711 "intermediate", // 1712 "interval", // 1713 "intraSp", // 1714 "inv", // 1715 "invGamma", // 1716 "invalEndChars", // 1717 "invalStChars", // 1718 "invalid", // 1719 "invalidUrl", // 1720 "invertIfNegative", // 1721 "invx", // 1722 "invy", // 1723 "is", // 1724 "isLgl", // 1725 "isNarration", // 1726 "isPhoto", // 1727 "iscomment", // 1728 "issignatureline", // 1729 "italic", // 1730 "item", // 1731 "itemID", // 1732 "itemPageCount", // 1733 "itemPrintTitles", // 1734 "items", // 1735 "iterate", // 1736 "iterateCount", // 1737 "iterateDelta", // 1738 "jc", // 1739 "joinstyle", // 1740 "justifyLastLine", // 1741 "k", // 1742 "keepAlive", // 1743 "keepChangeHistory", // 1744 "keepLines", // 1745 "keepNext", // 1746 "kern", // 1747 "key", // 1748 "keyAttribute", // 1749 "kinsoku", // 1750 "kiosk", // 1751 "kpi", // 1752 "kpis", // 1753 "kumimoji", // 1754 "kx", // 1755 "ky", // 1756 "l", // 1757 "lBounds", // 1758 "lIns", // 1759 "lMargin", // 1760 "label", // 1761 "labelOnly", // 1762 "lang", // 1763 "lastClr", // 1764 "lastCol", // 1765 "lastEdited", // 1766 "lastGuid", // 1767 "lastIdx", // 1768 "lastRenderedPageBreak", // 1769 "lastRow", // 1770 "lastValue", // 1771 "lastView", // 1772 "lat", // 1773 "latentStyles", // 1774 "latin", // 1775 "latinLnBrk", // 1776 "layout", // 1777 "layoutDef", // 1778 "layoutDefHdr", // 1779 "layoutDefHdrLst", // 1780 "layoutInCell", // 1781 "layoutNode", // 1782 "layoutRawTableWidth", // 1783 "layoutTableRowsApart", // 1784 "layoutTarget", // 1785 "lblAlgn", // 1786 "lblOffset", // 1787 "leader", // 1788 "leaderLines", // 1789 "left", // 1790 "leftChars", // 1791 "leftFromText", // 1792 "leftLabels", // 1793 "legacy", // 1794 "legacyDrawing", // 1795 "legacyDrawingHF", // 1796 "legacyIndent", // 1797 "legacySpace", // 1798 "legend", // 1799 "legendEntry", // 1800 "legendPos", // 1801 "len", // 1802 "length", // 1803 "lengthspecified", // 1804 "level", // 1805 "lid", // 1806 "lightRig", // 1807 "lightface", // 1808 "lightharsh", // 1809 "lightharsh2", // 1810 "lightlevel", // 1811 "lightlevel2", // 1812 "lightposition", // 1813 "lightposition2", // 1814 "lim", // 1815 "limLoc", // 1816 "limLow", // 1817 "limLowPr", // 1818 "limUpp", // 1819 "limUppPr", // 1820 "limo", // 1821 "lin", // 1822 "linClrLst", // 1823 "line", // 1824 "line3DChart", // 1825 "lineChart", // 1826 "linePitch", // 1827 "lineRule", // 1828 "lineTo", // 1829 "lineWrapLikeWord6", // 1830 "lines", // 1831 "linestyle", // 1832 "link", // 1833 "linkStyles", // 1834 "linkTarget", // 1835 "linkToQuery", // 1836 "linkedToFile", // 1837 "listDataValidation", // 1838 "listEntry", // 1839 "listItem", // 1840 "listSeparator", // 1841 "lit", // 1842 "lkTxEntry", // 1843 "ln", // 1844 "lnB", // 1845 "lnBlToTr", // 1846 "lnDef", // 1847 "lnL", // 1848 "lnNumType", // 1849 "lnR", // 1850 "lnRef", // 1851 "lnSpc", // 1852 "lnSpcReduction", // 1853 "lnStyleLst", // 1854 "lnT", // 1855 "lnTlToBr", // 1856 "lnTo", // 1857 "lo", // 1858 "loCatId", // 1859 "loTypeId", // 1860 "local", // 1861 "localConnection", // 1862 "localRefresh", // 1863 "localSheetId", // 1864 "location", // 1865 "lock", // 1866 "lockRevision", // 1867 "lockStructure", // 1868 "lockWindows", // 1869 "locked", // 1870 "lockedCanvas", // 1871 "lockrotationcenter", // 1872 "logBase", // 1873 "lon", // 1874 "longFileNames", // 1875 "longText", // 1876 "loop", // 1877 "lowestEdited", // 1878 "lpstr", // 1879 "lpwstr", // 1880 "lsdException", // 1881 "lstStyle", // 1882 "lt1", // 1883 "lt2", // 1884 "lum", // 1885 "lumMod", // 1886 "lumOff", // 1887 "lvl", // 1888 "lvl1pPr", // 1889 "lvl2pPr", // 1890 "lvl3pPr", // 1891 "lvl4pPr", // 1892 "lvl5pPr", // 1893 "lvl6pPr", // 1894 "lvl7pPr", // 1895 "lvl8pPr", // 1896 "lvl9pPr", // 1897 "lvlJc", // 1898 "lvlOverride", // 1899 "lvlPicBulletId", // 1900 "lvlRestart", // 1901 "lvlText", // 1902 "m", // 1903 "mPr", // 1904 "macro", // 1905 "mailAsAttachment", // 1906 "mailMerge", // 1907 "mailSubject", // 1908 "main", // 1909 "mainDocumentType", // 1910 "majorFont", // 1911 "majorGridlines", // 1912 "majorTickMark", // 1913 "majorTimeUnit", // 1914 "majorUnit", // 1915 "man", // 1916 "manifestLocation", // 1917 "manualBreakCount", // 1918 "manualLayout", // 1919 "map", // 1920 "mapId", // 1921 "mappedName", // 1922 "mappingCount", // 1923 "maps", // 1924 "marB", // 1925 "marBottom", // 1926 "marH", // 1927 "marL", // 1928 "marLeft", // 1929 "marR", // 1930 "marRight", // 1931 "marT", // 1932 "marTop", // 1933 "marW", // 1934 "marker", // 1935 "markup", // 1936 "master", // 1937 "masterClrMapping", // 1938 "masterRel", // 1939 "matchSrc", // 1940 "matchingName", // 1941 "mathFont", // 1942 "mathPr", // 1943 "matrix", // 1944 "max", // 1945 "maxAng", // 1946 "maxDate", // 1947 "maxDist", // 1948 "maxLength", // 1949 "maxR", // 1950 "maxRId", // 1951 "maxRank", // 1952 "maxSheetId", // 1953 "maxSubtotal", // 1954 "maxVal", // 1955 "maxValue", // 1956 "maxX", // 1957 "maxY", // 1958 "maximized", // 1959 "mc", // 1960 "mcJc", // 1961 "mcPr", // 1962 "mcs", // 1963 "mdx", // 1964 "mdxMetadata", // 1965 "mdxSubqueries", // 1966 "measure", // 1967 "measureFilter", // 1968 "measureGroup", // 1969 "measureGroups", // 1970 "measures", // 1971 "member", // 1972 "memberName", // 1973 "memberPropertyField", // 1974 "memberValueDatatype", // 1975 "members", // 1976 "merge", // 1977 "mergeCell", // 1978 "mergeCells", // 1979 "mergeInterval", // 1980 "mergeItem", // 1981 "metadata", // 1982 "metadataStrings", // 1983 "metadataType", // 1984 "metadataTypes", // 1985 "metal", // 1986 "meth", // 1987 "method", // 1988 "min", // 1989 "minAng", // 1990 "minDate", // 1991 "minLength", // 1992 "minR", // 1993 "minRId", // 1994 "minRefreshableVersion", // 1995 "minSubtotal", // 1996 "minSupportedVersion", // 1997 "minValue", // 1998 "minVer", // 1999 "minX", // 2000 "minY", // 2001 "minimized", // 2002 "minimumVersion", // 2003 "minorFont", // 2004 "minorGridlines", // 2005 "minorTickMark", // 2006 "minorTimeUnit", // 2007 "minorUnit", // 2008 "minus", // 2009 "minusx", // 2010 "minusy", // 2011 "minute", // 2012 "mirrorIndents", // 2013 "mirrorMargins", // 2014 "missingCaption", // 2015 "missingItemsLimit", // 2016 "miter", // 2017 "miterlimit", // 2018 "mod", // 2019 "modelId", // 2020 "modifyVerifier", // 2021 "month", // 2022 "monthLong", // 2023 "monthShort", // 2024 "moveFrom", // 2025 "moveFromRangeEnd", // 2026 "moveFromRangeStart", // 2027 "moveTo", // 2028 "moveToRangeEnd", // 2029 "moveToRangeStart", // 2030 "moveWith", // 2031 "movie", // 2032 "mp", // 2033 "mpFld", // 2034 "mpMap", // 2035 "mps", // 2036 "mr", // 2037 "mruColors", // 2038 "ms", // 2039 "multiLevelType", // 2040 "multiLine", // 2041 "multiLvlStrCache", // 2042 "multiLvlStrRef", // 2043 "multipleFieldFilters", // 2044 "multipleItemSelectionAllowed", // 2045 "mute", // 2046 "mwSmallCaps", // 2047 "n", // 2048 "name", // 2049 "nameLen", // 2050 "namespaceUri", // 2051 "namespaceuri", // 2052 "nary", // 2053 "naryLim", // 2054 "naryPr", // 2055 "nc", // 2056 "ndxf", // 2057 "neCell", // 2058 "new", // 2059 "newLength", // 2060 "newName", // 2061 "newsflash", // 2062 "next", // 2063 "nextAc", // 2064 "nextCondLst", // 2065 "nextId", // 2066 "nf", // 2067 "nlCheck", // 2068 "noAdjustHandles", // 2069 "noAutofit", // 2070 "noBorder", // 2071 "noBreak", // 2072 "noBreakHyphen", // 2073 "noChangeArrowheads", // 2074 "noChangeAspect", // 2075 "noChangeShapeType", // 2076 "noColumnBalance", // 2077 "noCrop", // 2078 "noDrilldown", // 2079 "noEditPoints", // 2080 "noEndCap", // 2081 "noEndnote", // 2082 "noExtraLineSpacing", // 2083 "noFill", // 2084 "noGrp", // 2085 "noLabel", // 2086 "noLeading", // 2087 "noLineBreaksAfter", // 2088 "noLineBreaksBefore", // 2089 "noMove", // 2090 "noMultiLvlLbl", // 2091 "noProof", // 2092 "noPunctuationKerning", // 2093 "noResize", // 2094 "noResizeAllowed", // 2095 "noRot", // 2096 "noSelect", // 2097 "noSpaceRaiseLower", // 2098 "noTabHangInd", // 2099 "noTextEdit", // 2100 "noUngrp", // 2101 "noWrap", // 2102 "nodePh", // 2103 "nodeType", // 2104 "nonAutoSortDefault", // 2105 "nor", // 2106 "norm", // 2107 "normAutofit", // 2108 "normalViewPr", // 2109 "normalizeH", // 2110 "notTrueType", // 2111 "notes", // 2112 "notesMaster", // 2113 "notesMasterId", // 2114 "notesMasterIdLst", // 2115 "notesStyle", // 2116 "notesSz", // 2117 "notesTextViewPr", // 2118 "notesViewPr", // 2119 "np", // 2120 "ns", // 2121 "nsid", // 2122 "null", // 2123 "num", // 2124 "numCache", // 2125 "numCol", // 2126 "numFmt", // 2127 "numFmtId", // 2128 "numFmts", // 2129 "numId", // 2130 "numIdMacAtCleanup", // 2131 "numLit", // 2132 "numPicBullet", // 2133 "numPicBulletId", // 2134 "numPr", // 2135 "numRef", // 2136 "numRestart", // 2137 "numSld", // 2138 "numStart", // 2139 "numStyleLink", // 2140 "numberStoredAsText", // 2141 "numbering", // 2142 "numberingChange", // 2143 "nvCxnSpPr", // 2144 "nvGraphicFramePr", // 2145 "nvGrpSpPr", // 2146 "nvPicPr", // 2147 "nvPr", // 2148 "nvSpPr", // 2149 "nwCell", // 2150 "o", // 2151 "oMath", // 2152 "oMathPara", // 2153 "oMathParaPr", // 2154 "objDist", // 2155 "object", // 2156 "objectDefaults", // 2157 "objects", // 2158 "oblob", // 2159 "obscured", // 2160 "oc", // 2161 "odcFile", // 2162 "oddFooter", // 2163 "oddHeader", // 2164 "odso", // 2165 "odxf", // 2166 "ofPieChart", // 2167 "ofPieType", // 2168 "off", // 2169 "offset", // 2170 "offset2", // 2171 "offsetFrom", // 2172 "olapPr", // 2173 "old", // 2174 "oldComment", // 2175 "oldCustomMenu", // 2176 "oldDescription", // 2177 "oldFormula", // 2178 "oldFunction", // 2179 "oldFunctionGroupId", // 2180 "oldHelp", // 2181 "oldHidden", // 2182 "oldLength", // 2183 "oldName", // 2184 "oldPh", // 2185 "oldQuotePrefix", // 2186 "oldShortcutKey", // 2187 "oldStatusBar", // 2188 "ole", // 2189 "oleChartEl", // 2190 "oleItem", // 2191 "oleItems", // 2192 "oleLink", // 2193 "oleObj", // 2194 "oleObject", // 2195 "oleObjects", // 2196 "oleSize", // 2197 "oleUpdate", // 2198 "oleicon", // 2199 "oleid", // 2200 "on", // 2201 "oneCellAnchor", // 2202 "oneField", // 2203 "oned", // 2204 "onlySync", // 2205 "onlyUseConnectionFile", // 2206 "op", // 2207 "opEmu", // 2208 "opacity", // 2209 "opacity2", // 2210 "operator", // 2211 "optimizeForBrowser", // 2212 "optimizeMemory", // 2213 "order", // 2214 "orgChart", // 2215 "organizeInFolders", // 2216 "orient", // 2217 "orientation", // 2218 "orientationangle", // 2219 "origin", // 2220 "original", // 2221 "ostorage", // 2222 "ostream", // 2223 "other", // 2224 "otherStyle", // 2225 "outerShdw", // 2226 "outline", // 2227 "outlineData", // 2228 "outlineLevel", // 2229 "outlineLevelCol", // 2230 "outlineLevelRow", // 2231 "outlineLvl", // 2232 "outlinePr", // 2233 "outlineSymbols", // 2234 "outlineViewPr", // 2235 "oval", // 2236 "overflowPunct", // 2237 "overlap", // 2238 "overlay", // 2239 "override", // 2240 "overrideClrMapping", // 2241 "p", // 2242 "pBdr", // 2243 "pLen", // 2244 "pPos", // 2245 "pPr", // 2246 "pPrChange", // 2247 "pPrDefault", // 2248 "pRg", // 2249 "pStyle", // 2250 "page", // 2251 "pageBreakBefore", // 2252 "pageField", // 2253 "pageFields", // 2254 "pageItem", // 2255 "pageMargins", // 2256 "pageOrder", // 2257 "pageOverThenDown", // 2258 "pageSetUpPr", // 2259 "pageSetup", // 2260 "pageStyle", // 2261 "pageWrap", // 2262 "pages", // 2263 "pane", // 2264 "panose", // 2265 "panose1", // 2266 "paperSize", // 2267 "paperSrc", // 2268 "par", // 2269 "parTransId", // 2270 "param", // 2271 "parameter", // 2272 "parameterType", // 2273 "parameters", // 2274 "parent", // 2275 "parentSet", // 2276 "parsePre", // 2277 "password", // 2278 "pasteAll", // 2279 "pasteBorders", // 2280 "pasteColWidths", // 2281 "pasteComments", // 2282 "pasteDataValidation", // 2283 "pasteFormats", // 2284 "pasteFormulas", // 2285 "pasteNumberFormats", // 2286 "pasteValues", // 2287 "path", // 2288 "pathEditMode", // 2289 "pathLst", // 2290 "pattFill", // 2291 "patternFill", // 2292 "patternType", // 2293 "penClr", // 2294 "percent", // 2295 "period", // 2296 "permEnd", // 2297 "permStart", // 2298 "personal", // 2299 "personalCompose", // 2300 "personalReply", // 2301 "personalView", // 2302 "perspective", // 2303 "pgBorders", // 2304 "pgMar", // 2305 "pgNum", // 2306 "pgNumType", // 2307 "pgSz", // 2308 "ph", // 2309 "phant", // 2310 "phantPr", // 2311 "phldr", // 2312 "phldrT", // 2313 "phonetic", // 2314 "phoneticPr", // 2315 "photoAlbum", // 2316 "pic", // 2317 "picLocks", // 2318 "pict", // 2319 "picture", // 2320 "pictureFormat", // 2321 "pictureOptions", // 2322 "pictureStackUnit", // 2323 "pid", // 2324 "pie3DChart", // 2325 "pieChart", // 2326 "pitch", // 2327 "pitchFamily", // 2328 "pivot", // 2329 "pivotArea", // 2330 "pivotAreas", // 2331 "pivotButton", // 2332 "pivotCache", // 2333 "pivotCacheDefinition", // 2334 "pivotCacheRecords", // 2335 "pivotCaches", // 2336 "pivotField", // 2337 "pivotFields", // 2338 "pivotFmt", // 2339 "pivotFmts", // 2340 "pivotHierarchies", // 2341 "pivotHierarchy", // 2342 "pivotSelection", // 2343 "pivotSource", // 2344 "pivotTableDefinition", // 2345 "pivotTableStyle", // 2346 "pivotTableStyleInfo", // 2347 "pivotTables", // 2348 "pixelsPerInch", // 2349 "placeholder", // 2350 "plane", // 2351 "plcHide", // 2352 "plotArea", // 2353 "plotVisOnly", // 2354 "plus", // 2355 "points", // 2356 "polar", // 2357 "polyline", // 2358 "pos", // 2359 "posOffset", // 2360 "position", // 2361 "positionH", // 2362 "positionV", // 2363 "post", // 2364 "postSp", // 2365 "prLst", // 2366 "prSet", // 2367 "preSp", // 2368 "preferPic", // 2369 "preferRelativeResize", // 2370 "preferSingleView", // 2371 "preferrelative", // 2372 "prefixMappings", // 2373 "presAssocID", // 2374 "presId", // 2375 "presLayoutVars", // 2376 "presName", // 2377 "presOf", // 2378 "presStyleCnt", // 2379 "presStyleIdx", // 2380 "presStyleLbl", // 2381 "present", // 2382 "presentation", // 2383 "presentationPr", // 2384 "preserve", // 2385 "preserveFormatting", // 2386 "preserveHistory", // 2387 "preserveSortFilterLayout", // 2388 "presetClass", // 2389 "presetID", // 2390 "presetSubtype", // 2391 "prevAc", // 2392 "prevCondLst", // 2393 "previousCol", // 2394 "previousRow", // 2395 "pri", // 2396 "print", // 2397 "printArea", // 2398 "printBodyTextBeforeHeader", // 2399 "printColBlack", // 2400 "printDrill", // 2401 "printFormsData", // 2402 "printFractionalCharacterWidth", // 2403 "printOptions", // 2404 "printPostScriptOverText", // 2405 "printSettings", // 2406 "printTwoOnOne", // 2407 "printerSettings", // 2408 "priority", // 2409 "prnPr", // 2410 "prnWhat", // 2411 "productSubtotal", // 2412 "progId", // 2413 "progress", // 2414 "prompt", // 2415 "promptTitle", // 2416 "promptedSolutions", // 2417 "proofErr", // 2418 "proofState", // 2419 "property", // 2420 "propertyName", // 2421 "protected", // 2422 "protectedRange", // 2423 "protectedRanges", // 2424 "protection", // 2425 "provid", // 2426 "proxy", // 2427 "prst", // 2428 "prstClr", // 2429 "prstDash", // 2430 "prstGeom", // 2431 "prstMaterial", // 2432 "prstShdw", // 2433 "prstTxWarp", // 2434 "pt", // 2435 "ptCount", // 2436 "ptLst", // 2437 "ptType", // 2438 "ptab", // 2439 "ptsTypes", // 2440 "pubBrowser", // 2441 "publishItems", // 2442 "publishToServer", // 2443 "published", // 2444 "pull", // 2445 "push", // 2446 "qFormat", // 2447 "qs", // 2448 "qsCatId", // 2449 "qsTypeId", // 2450 "quadBezTo", // 2451 "qualifier", // 2452 "query", // 2453 "queryCache", // 2454 "queryFailed", // 2455 "queryTable", // 2456 "queryTableDeletedFields", // 2457 "queryTableField", // 2458 "queryTableFieldId", // 2459 "queryTableFields", // 2460 "queryTableRefresh", // 2461 "quickTimeFile", // 2462 "quotePrefix", // 2463 "r", // 2464 "r1", // 2465 "r2", // 2466 "r4", // 2467 "r8", // 2468 "rAng", // 2469 "rAngAx", // 2470 "rCtr", // 2471 "rFont", // 2472 "rFonts", // 2473 "rId", // 2474 "rIns", // 2475 "rMargin", // 2476 "rPh", // 2477 "rPr", // 2478 "rPrChange", // 2479 "rPrDefault", // 2480 "rSp", // 2481 "rSpRule", // 2482 "rStyle", // 2483 "ra", // 2484 "rad", // 2485 "radPr", // 2486 "radarChart", // 2487 "radarStyle", // 2488 "radiusrange", // 2489 "raf", // 2490 "random", // 2491 "randomBar", // 2492 "rangePr", // 2493 "rangeSet", // 2494 "rangeSets", // 2495 "rank", // 2496 "rankBy", // 2497 "rc", // 2498 "rcc", // 2499 "rcft", // 2500 "rcmt", // 2501 "rctx", // 2502 "rcv", // 2503 "rdn", // 2504 "readModeInkLockDown", // 2505 "readOnlyRecommended", // 2506 "readingOrder", // 2507 "recipientData", // 2508 "recipients", // 2509 "recolor", // 2510 "recolortarget", // 2511 "recommended", // 2512 "reconnectionMethod", // 2513 "recordCount", // 2514 "rect", // 2515 "red", // 2516 "redMod", // 2517 "redOff", // 2518 "ref", // 2519 "ref3D", // 2520 "refFor", // 2521 "refForName", // 2522 "refMode", // 2523 "refPtType", // 2524 "refType", // 2525 "reference", // 2526 "references", // 2527 "refersTo", // 2528 "reflection", // 2529 "refreshAllConnections", // 2530 "refreshError", // 2531 "refreshOnChange", // 2532 "refreshOnLoad", // 2533 "refreshedBy", // 2534 "refreshedDate", // 2535 "refreshedVersion", // 2536 "regroupid", // 2537 "regrouptable", // 2538 "regular", // 2539 "rel", // 2540 "relIds", // 2541 "relOff", // 2542 "relSizeAnchor", // 2543 "relation", // 2544 "relationtable", // 2545 "relative", // 2546 "relativeFrom", // 2547 "relativeHeight", // 2548 "relativeIndent", // 2549 "relativeTo", // 2550 "relid", // 2551 "relyOnVML", // 2552 "relyOnVml", // 2553 "removeDataOnSave", // 2554 "removeDateAndTime", // 2555 "removePersonalInfoOnSave", // 2556 "removePersonalInformation", // 2557 "render", // 2558 "repairLoad", // 2559 "repeatCount", // 2560 "repeatDur", // 2561 "resId", // 2562 "reservationPassword", // 2563 "resizeGraphics", // 2564 "resizeHandles", // 2565 "restart", // 2566 "restoredLeft", // 2567 "restoredTop", // 2568 "result", // 2569 "rev", // 2570 "reverse", // 2571 "reviewed", // 2572 "reviewedList", // 2573 "revisionId", // 2574 "revisionView", // 2575 "revisions", // 2576 "revisionsPassword", // 2577 "rfmt", // 2578 "rgb", // 2579 "rgbColor", // 2580 "rich", // 2581 "richText", // 2582 "rig", // 2583 "right", // 2584 "rightChars", // 2585 "rightFromText", // 2586 "rightToLeft", // 2587 "ris", // 2588 "rm", // 2589 "rot", // 2590 "rotWithShape", // 2591 "rotX", // 2592 "rotY", // 2593 "rotate", // 2594 "rotation", // 2595 "rotationangle", // 2596 "rotationcenter", // 2597 "round", // 2598 "roundedCorners", // 2599 "roundrect", // 2600 "row", // 2601 "rowBreaks", // 2602 "rowColShift", // 2603 "rowDrillCount", // 2604 "rowFields", // 2605 "rowGrandTotals", // 2606 "rowHeaderCaption", // 2607 "rowHierarchiesUsage", // 2608 "rowHierarchyUsage", // 2609 "rowItems", // 2610 "rowNumbers", // 2611 "rowOff", // 2612 "rowPageCount", // 2613 "rowSpan", // 2614 "rows", // 2615 "rqt", // 2616 "rrc", // 2617 "rsid", // 2618 "rsidDel", // 2619 "rsidP", // 2620 "rsidR", // 2621 "rsidRDefault", // 2622 "rsidRPr", // 2623 "rsidRoot", // 2624 "rsidSect", // 2625 "rsidTr", // 2626 "rsids", // 2627 "rsnm", // 2628 "rt", // 2629 "rtl", // 2630 "rtlCol", // 2631 "rtlGutter", // 2632 "rtn", // 2633 "ruby", // 2634 "rubyAlign", // 2635 "rubyBase", // 2636 "rubyPr", // 2637 "rule", // 2638 "ruleLst", // 2639 "rules", // 2640 "rupBuild", // 2641 "s", // 2642 "sId", // 2643 "sPre", // 2644 "sPrePr", // 2645 "sSub", // 2646 "sSubPr", // 2647 "sSubSup", // 2648 "sSubSupPr", // 2649 "sSup", // 2650 "sSupPr", // 2651 "salt", // 2652 "saltData", // 2653 "sampData", // 2654 "sat", // 2655 "satMod", // 2656 "satOff", // 2657 "saveData", // 2658 "saveExternalLinkValues", // 2659 "saveFormsData", // 2660 "saveInvalidXml", // 2661 "savePassword", // 2662 "savePreviewPicture", // 2663 "saveSmartTagsAsXml", // 2664 "saveSubsetFonts", // 2665 "saveThroughXslt", // 2666 "saveXmlDataOnly", // 2667 "sb", // 2668 "scale", // 2669 "scaleToFitPaper", // 2670 "scaleWithDoc", // 2671 "scaled", // 2672 "scaling", // 2673 "scatterChart", // 2674 "scatterStyle", // 2675 "scenario", // 2676 "scenarios", // 2677 "scene3d", // 2678 "schema", // 2679 "schemaLibrary", // 2680 "schemaLocation", // 2681 "schemaRef", // 2682 "schemaRefs", // 2683 "scheme", // 2684 "schemeClr", // 2685 "scope", // 2686 "scr", // 2687 "scrgbClr", // 2688 "script", // 2689 "scrollbar", // 2690 "sd", // 2691 "sdt", // 2692 "sdtContent", // 2693 "sdtEndPr", // 2694 "sdtPr", // 2695 "seCell", // 2696 "second", // 2697 "secondPiePt", // 2698 "secondPieSize", // 2699 "sectPr", // 2700 "sectPrChange", // 2701 "securityDescriptor", // 2702 "selectFldWithFirstOrLastChar", // 2703 "selectLockedCells", // 2704 "selectUnlockedCells", // 2705 "selected", // 2706 "selection", // 2707 "semiHidden", // 2708 "semicolon", // 2709 "sendLocale", // 2710 "sep", // 2711 "sepChr", // 2712 "separator", // 2713 "seq", // 2714 "ser", // 2715 "serAx", // 2716 "serLines", // 2717 "series", // 2718 "seriesIdx", // 2719 "serverCommand", // 2720 "serverField", // 2721 "serverFill", // 2722 "serverFont", // 2723 "serverFontColor", // 2724 "serverFormat", // 2725 "serverFormats", // 2726 "serverNumberFormat", // 2727 "serverSldId", // 2728 "serverSldModifiedTime", // 2729 "serverZoom", // 2730 "set", // 2731 "setDefinition", // 2732 "sets", // 2733 "settings", // 2734 "shade", // 2735 "shadeToTitle", // 2736 "shadow", // 2737 "shadowcolor", // 2738 "shadowok", // 2739 "shape", // 2740 "shapeDefaults", // 2741 "shapeId", // 2742 "shapeLayoutLikeWW8", // 2743 "shapedefaults", // 2744 "shapeid", // 2745 "shapelayout", // 2746 "shapetype", // 2747 "shared", // 2748 "sharedItems", // 2749 "shd", // 2750 "sheet", // 2751 "sheetCalcPr", // 2752 "sheetData", // 2753 "sheetDataSet", // 2754 "sheetFormatPr", // 2755 "sheetId", // 2756 "sheetIdMap", // 2757 "sheetName", // 2758 "sheetNames", // 2759 "sheetPosition", // 2760 "sheetPr", // 2761 "sheetProtection", // 2762 "sheetView", // 2763 "sheetViews", // 2764 "sheets", // 2765 "shininess", // 2766 "shortcutKey", // 2767 "show", // 2768 "showAll", // 2769 "showAnimation", // 2770 "showAsCaption", // 2771 "showAsIcon", // 2772 "showAutoFilter", // 2773 "showBorderUnselectedTables", // 2774 "showBreaksInFrames", // 2775 "showBubbleSize", // 2776 "showButton", // 2777 "showCalcMbrs", // 2778 "showCaptions", // 2779 "showCatName", // 2780 "showCell", // 2781 "showColHeaders", // 2782 "showColStripes", // 2783 "showColumnStripes", // 2784 "showComments", // 2785 "showDLblsOverMax", // 2786 "showDataAs", // 2787 "showDataDropDown", // 2788 "showDataTips", // 2789 "showDrill", // 2790 "showDropDown", // 2791 "showDropDowns", // 2792 "showDropZones", // 2793 "showEmptyCol", // 2794 "showEmptyRow", // 2795 "showEnvelope", // 2796 "showError", // 2797 "showErrorMessage", // 2798 "showFirstColumn", // 2799 "showFormatting", // 2800 "showFormulaBar", // 2801 "showFormulas", // 2802 "showGridLines", // 2803 "showGuides", // 2804 "showHeader", // 2805 "showHeaders", // 2806 "showHorizontalScroll", // 2807 "showHorzBorder", // 2808 "showInFieldList", // 2809 "showInkAnnotation", // 2810 "showInputMessage", // 2811 "showItems", // 2812 "showKeys", // 2813 "showLastColumn", // 2814 "showLeaderLines", // 2815 "showLegendKey", // 2816 "showMasterPhAnim", // 2817 "showMasterSp", // 2818 "showMemberPropertyTips", // 2819 "showMissing", // 2820 "showMultipleLabel", // 2821 "showNarration", // 2822 "showNegBubbles", // 2823 "showObjects", // 2824 "showOutline", // 2825 "showOutlineIcons", // 2826 "showOutlineSymbols", // 2827 "showPageBreaks", // 2828 "showPercent", // 2829 "showPivotChartFilter", // 2830 "showPr", // 2831 "showPropAsCaption", // 2832 "showPropCell", // 2833 "showPropTip", // 2834 "showRowCol", // 2835 "showRowColHeaders", // 2836 "showRowHeaders", // 2837 "showRowStripes", // 2838 "showRuler", // 2839 "showScrollbar", // 2840 "showSerName", // 2841 "showSheetTabs", // 2842 "showSpeakerNotes", // 2843 "showSpecialPlsOnTitleSld", // 2844 "showStatusbar", // 2845 "showTip", // 2846 "showVal", // 2847 "showValue", // 2848 "showVertBorder", // 2849 "showVerticalScroll", // 2850 "showWhenStopped", // 2851 "showWhiteSpace", // 2852 "showXMLTags", // 2853 "showZeros", // 2854 "showingPlcHdr", // 2855 "showsigndate", // 2856 "shp", // 2857 "shrinkToFit", // 2858 "si", // 2859 "sibTransId", // 2860 "side", // 2861 "sideWall", // 2862 "sig", // 2863 "signatureline", // 2864 "signinginstructions", // 2865 "signinginstructionsset", // 2866 "sigprovurl", // 2867 "simplePos", // 2868 "singleSignOnId", // 2869 "singleXmlCell", // 2870 "singleXmlCells", // 2871 "singleclick", // 2872 "size", // 2873 "sizeAuto", // 2874 "sizeRepresents", // 2875 "skew", // 2876 "skewamt", // 2877 "skewangle", // 2878 "sld", // 2879 "sldAll", // 2880 "sldId", // 2881 "sldIdLst", // 2882 "sldLayout", // 2883 "sldLayoutId", // 2884 "sldLayoutIdLst", // 2885 "sldLst", // 2886 "sldMaster", // 2887 "sldMasterId", // 2888 "sldMasterIdLst", // 2889 "sldNum", // 2890 "sldRg", // 2891 "sldSyncPr", // 2892 "sldSz", // 2893 "sldTgt", // 2894 "slideViewPr", // 2895 "smallCaps", // 2896 "smallFrac", // 2897 "smartTag", // 2898 "smartTagPr", // 2899 "smartTagType", // 2900 "smartTagTypes", // 2901 "smartTags", // 2902 "smooth", // 2903 "smtClean", // 2904 "smtId", // 2905 "snapToGrid", // 2906 "snapToObjects", // 2907 "snapVertSplitter", // 2908 "snd", // 2909 "sndAc", // 2910 "sndTgt", // 2911 "softEdge", // 2912 "softHyphen", // 2913 "solidFill", // 2914 "solutionID", // 2915 "solveOrder", // 2916 "sort", // 2917 "sortBy", // 2918 "sortByTuple", // 2919 "sortCondition", // 2920 "sortMethod", // 2921 "sortState", // 2922 "sortType", // 2923 "sorterViewPr", // 2924 "source", // 2925 "sourceData", // 2926 "sourceFile", // 2927 "sourceFileName", // 2928 "sourceLinked", // 2929 "sourceObject", // 2930 "sourceRef", // 2931 "sourceSheetId", // 2932 "sourceType", // 2933 "sp", // 2934 "sp3d", // 2935 "spAutoFit", // 2936 "spDef", // 2937 "spLocks", // 2938 "spPr", // 2939 "spTgt", // 2940 "spTree", // 2941 "space", // 2942 "spaceForUL", // 2943 "spacing", // 2944 "spacingInWholePoints", // 2945 "spans", // 2946 "spc", // 2947 "spcAft", // 2948 "spcBef", // 2949 "spcCol", // 2950 "spcFirstLastPara", // 2951 "spcPct", // 2952 "spcPts", // 2953 "spd", // 2954 "specVanish", // 2955 "specularity", // 2956 "spelling", // 2957 "spid", // 2958 "spidmax", // 2959 "spinCount", // 2960 "split", // 2961 "splitAll", // 2962 "splitFirst", // 2963 "splitPgBreakAndParaMark", // 2964 "splitPos", // 2965 "splitType", // 2966 "spokes", // 2967 "spt", // 2968 "sqlType", // 2969 "sqref", // 2970 "src", // 2971 "srcId", // 2972 "srcOrd", // 2973 "srcRect", // 2974 "srgbClr", // 2975 "sst", // 2976 "st", // 2977 "stA", // 2978 "stAng", // 2979 "stCondLst", // 2980 "stCxn", // 2981 "stPos", // 2982 "stSnd", // 2983 "start", // 2984 "startAngle", // 2985 "startAt", // 2986 "startDate", // 2987 "startNum", // 2988 "startOverride", // 2989 "startarrow", // 2990 "startarrowlength", // 2991 "startarrowwidth", // 2992 "state", // 2993 "status", // 2994 "statusBar", // 2995 "statusText", // 2996 "stdDev", // 2997 "stdDevPSubtotal", // 2998 "stdDevSubtotal", // 2999 "step", // 3000 "stockChart", // 3001 "stop", // 3002 "stopIfTrue", // 3003 "storage", // 3004 "storeItemID", // 3005 "storeMappedDataAs", // 3006 "stp", // 3007 "strCache", // 3008 "strLit", // 3009 "strRef", // 3010 "strVal", // 3011 "stream", // 3012 "stretch", // 3013 "strictFirstAndLastChars", // 3014 "strike", // 3015 "strikeBLTR", // 3016 "strikeH", // 3017 "strikeTLBR", // 3018 "strikeV", // 3019 "string", // 3020 "stringValue1", // 3021 "stringValue2", // 3022 "strips", // 3023 "stroke", // 3024 "strokecolor", // 3025 "stroked", // 3026 "strokeok", // 3027 "strokeweight", // 3028 "sty", // 3029 "style", // 3030 "styleData", // 3031 "styleDef", // 3032 "styleDefHdr", // 3033 "styleDefHdrLst", // 3034 "styleId", // 3035 "styleLbl", // 3036 "styleLink", // 3037 "styleLockQFSet", // 3038 "styleLockTheme", // 3039 "styleName", // 3040 "stylePaneFormatFilter", // 3041 "stylePaneSortMethod", // 3042 "styleSheet", // 3043 "styles", // 3044 "sub", // 3045 "subDoc", // 3046 "subFontBySize", // 3047 "subHide", // 3048 "subSp", // 3049 "subTnLst", // 3050 "subsetted", // 3051 "subtotal", // 3052 "subtotalCaption", // 3053 "subtotalHiddenItems", // 3054 "subtotalTop", // 3055 "suff", // 3056 "suggestedsigner", // 3057 "suggestedsigner2", // 3058 "suggestedsigneremail", // 3059 "sumSubtotal", // 3060 "summaryBelow", // 3061 "summaryLength", // 3062 "summaryRight", // 3063 "sup", // 3064 "supHide", // 3065 "supportAdvancedDrill", // 3066 "supportSubquery", // 3067 "suppressAutoHyphens", // 3068 "suppressBottomSpacing", // 3069 "suppressLineNumbers", // 3070 "suppressOverlap", // 3071 "suppressSpBfAfterPgBrk", // 3072 "suppressSpacingAtTopOfPage", // 3073 "suppressTopSpacing", // 3074 "suppressTopSpacingWP", // 3075 "surface3DChart", // 3076 "surfaceChart", // 3077 "swAng", // 3078 "swCell", // 3079 "swapBordersFacingPages", // 3080 "switch", // 3081 "sx", // 3082 "sy", // 3083 "sym", // 3084 "symbol", // 3085 "syncBehavior", // 3086 "syncHorizontal", // 3087 "syncRef", // 3088 "syncVertical", // 3089 "sysClr", // 3090 "sz", // 3091 "szCs", // 3092 "t", // 3093 "t1", // 3094 "t2", // 3095 "tIns", // 3096 "tab", // 3097 "tabColor", // 3098 "tabLst", // 3099 "tabRatio", // 3100 "tabSelected", // 3101 "table", // 3102 "tableBorderDxfId", // 3103 "tableColumn", // 3104 "tableColumnId", // 3105 "tableColumns", // 3106 "tablePart", // 3107 "tableParts", // 3108 "tableStyle", // 3109 "tableStyleElement", // 3110 "tableStyleId", // 3111 "tableStyleInfo", // 3112 "tableStyles", // 3113 "tableType", // 3114 "tablelimits", // 3115 "tableproperties", // 3116 "tables", // 3117 "tabs", // 3118 "tag", // 3119 "tagLst", // 3120 "tags", // 3121 "tailEnd", // 3122 "target", // 3123 "targetScreenSize", // 3124 "targetScreenSz", // 3125 "targetscreensize", // 3126 "tav", // 3127 "tavLst", // 3128 "tbl", // 3129 "tblBg", // 3130 "tblBorders", // 3131 "tblCellMar", // 3132 "tblCellSpacing", // 3133 "tblGrid", // 3134 "tblGridChange", // 3135 "tblHeader", // 3136 "tblInd", // 3137 "tblLayout", // 3138 "tblLook", // 3139 "tblOverlap", // 3140 "tblPr", // 3141 "tblPrChange", // 3142 "tblPrEx", // 3143 "tblPrExChange", // 3144 "tblStyle", // 3145 "tblStyleColBandSize", // 3146 "tblStyleLst", // 3147 "tblStylePr", // 3148 "tblStyleRowBandSize", // 3149 "tblW", // 3150 "tblpPr", // 3151 "tblpX", // 3152 "tblpXSpec", // 3153 "tblpY", // 3154 "tblpYSpec", // 3155 "tc", // 3156 "tcBdr", // 3157 "tcBorders", // 3158 "tcFitText", // 3159 "tcMar", // 3160 "tcPr", // 3161 "tcPrChange", // 3162 "tcStyle", // 3163 "tcTxStyle", // 3164 "tcW", // 3165 "temporary", // 3166 "tentative", // 3167 "text", // 3168 "textAlignment", // 3169 "textDates", // 3170 "textDirection", // 3171 "textField", // 3172 "textFields", // 3173 "textInput", // 3174 "textPr", // 3175 "textRotation", // 3176 "textborder", // 3177 "textbox", // 3178 "textboxTightWrap", // 3179 "textboxrect", // 3180 "textdata", // 3181 "textlink", // 3182 "textpath", // 3183 "textpathok", // 3184 "tgtEl", // 3185 "tgtFrame", // 3186 "theme", // 3187 "themeColor", // 3188 "themeElements", // 3189 "themeFill", // 3190 "themeFillShade", // 3191 "themeFillTint", // 3192 "themeFontLang", // 3193 "themeManager", // 3194 "themeOverride", // 3195 "themeShade", // 3196 "themeTint", // 3197 "thickBot", // 3198 "thickBottom", // 3199 "thickTop", // 3200 "thicket", // 3201 "thickness", // 3202 "thousands", // 3203 "thresh", // 3204 "thruBlk", // 3205 "tickLblPos", // 3206 "tickLblSkip", // 3207 "tickMarkSkip", // 3208 "tile", // 3209 "tileRect", // 3210 "time", // 3211 "timePeriod", // 3212 "timing", // 3213 "tint", // 3214 "title", // 3215 "titlePg", // 3216 "titleStyle", // 3217 "tl2br", // 3218 "tm", // 3219 "tmAbs", // 3220 "tmFilter", // 3221 "tmPct", // 3222 "tmpl", // 3223 "tmplLst", // 3224 "tn", // 3225 "tnLst", // 3226 "to", // 3227 "tooltip", // 3228 "top", // 3229 "top10", // 3230 "topAutoShow", // 3231 "topFromText", // 3232 "topLabels", // 3233 "topLeftCell", // 3234 "topLinePunct", // 3235 "totalsRowBorderDxfId", // 3236 "totalsRowCellStyle", // 3237 "totalsRowCount", // 3238 "totalsRowDxfId", // 3239 "totalsRowFormula", // 3240 "totalsRowFunction", // 3241 "totalsRowLabel", // 3242 "totalsRowShown", // 3243 "tp", // 3244 "tpl", // 3245 "tplc", // 3246 "tpls", // 3247 "tr", // 3248 "tr2bl", // 3249 "trHeight", // 3250 "trPr", // 3251 "trPrChange", // 3252 "track", // 3253 "trackRevisions", // 3254 "transition", // 3255 "transitionEntry", // 3256 "transitionEvaluation", // 3257 "transp", // 3258 "trend", // 3259 "trendline", // 3260 "trendlineLbl", // 3261 "trendlineType", // 3262 "trim", // 3263 "truncateFontHeightsLikeWP6", // 3264 "tupleCache", // 3265 "twoCellAnchor", // 3266 "twoDigitTextYear", // 3267 "tx", // 3268 "tx1", // 3269 "tx2", // 3270 "txBody", // 3271 "txBox", // 3272 "txDef", // 3273 "txEffectClrLst", // 3274 "txEl", // 3275 "txFillClrLst", // 3276 "txLinClrLst", // 3277 "txPr", // 3278 "txSp", // 3279 "txStyles", // 3280 "txbxContent", // 3281 "ty", // 3282 "type", // 3283 "typeface", // 3284 "types", // 3285 "u", // 3286 "uBounds", // 3287 "uFill", // 3288 "uFillTx", // 3289 "uLn", // 3290 "uLnTx", // 3291 "ua", // 3292 "udl", // 3293 "ui1", // 3294 "ui2", // 3295 "ui4", // 3296 "ui8", // 3297 "uiCompat97To2003", // 3298 "uiExpand", // 3299 "uiPriority", // 3300 "uint", // 3301 "ulTrailSpace", // 3302 "un", // 3303 "unbalanced", // 3304 "unbalancedGroup", // 3305 "unboundColumnsLeft", // 3306 "unboundColumnsRight", // 3307 "underlineTabInNumList", // 3308 "undo", // 3309 "undone", // 3310 "ungrouping", // 3311 "unhideWhenUsed", // 3312 "uniqueCount", // 3313 "uniqueId", // 3314 "uniqueList", // 3315 "uniqueMemberProperty", // 3316 "uniqueName", // 3317 "uniqueParent", // 3318 "uniqueTag", // 3319 "unlockedFormula", // 3320 "up", // 3321 "upBars", // 3322 "upDownBars", // 3323 "updateAutomatic", // 3324 "updateFields", // 3325 "updateLinks", // 3326 "updatedVersion", // 3327 "upgradeOnRefresh", // 3328 "upright", // 3329 "uri", // 3330 "url", // 3331 "usb0", // 3332 "usb1", // 3333 "usb2", // 3334 "usb3", // 3335 "useA", // 3336 "useAltKinsokuLineBreakRules", // 3337 "useAnsiKerningPairs", // 3338 "useAutoFormatting", // 3339 "useBgFill", // 3340 "useDef", // 3341 "useFELayout", // 3342 "useFirstPageNumber", // 3343 "useLongFilenames", // 3344 "useNormalStyleForList", // 3345 "usePrinterDefaults", // 3346 "usePrinterMetrics", // 3347 "useSingleBorderforContiguousCells", // 3348 "useSpRect", // 3349 "useTimings", // 3350 "useWord2002TableStyleRules", // 3351 "useWord97LineBreakRules", // 3352 "useXSLTWhenSaving", // 3353 "user", // 3354 "userDrawn", // 3355 "userInfo", // 3356 "userInterface", // 3357 "userName", // 3358 "userShapes", // 3359 "userdrawn", // 3360 "userhidden", // 3361 "users", // 3362 "v", // 3363 "vAlign", // 3364 "vAnchor", // 3365 "vMerge", // 3366 "vMergeOrig", // 3367 "vSpace", // 3368 "vacatedStyle", // 3369 "val", // 3370 "valAx", // 3371 "value", // 3372 "valueMetadata", // 3373 "valueType", // 3374 "values", // 3375 "vanish", // 3376 "varLst", // 3377 "varPSubtotal", // 3378 "varScale", // 3379 "varSubtotal", // 3380 "variant", // 3381 "varyColors", // 3382 "vbProcedure", // 3383 "vector", // 3384 "vendorID", // 3385 "version", // 3386 "vert", // 3387 "vertAlign", // 3388 "vertAnchor", // 3389 "vertBarState", // 3390 "vertCompress", // 3391 "vertJc", // 3392 "vertOverflow", // 3393 "vertical", // 3394 "verticalCentered", // 3395 "verticalDpi", // 3396 "verticies", // 3397 "video", // 3398 "videoFile", // 3399 "view", // 3400 "view3D", // 3401 "viewMergedData", // 3402 "viewPr", // 3403 "viewpoint", // 3404 "viewpointorigin", // 3405 "visibility", // 3406 "visualTotals", // 3407 "vm", // 3408 "vml", // 3409 "vocabulary", // 3410 "vol", // 3411 "volType", // 3412 "volTypes", // 3413 "vstream", // 3414 "w", // 3415 "wAfter", // 3416 "wBefore", // 3417 "wMode", // 3418 "wR", // 3419 "wavAudioFile", // 3420 "webHidden", // 3421 "webPr", // 3422 "webPublishItem", // 3423 "webPublishItems", // 3424 "webPublishObject", // 3425 "webPublishObjects", // 3426 "webPublishing", // 3427 "webSettings", // 3428 "wedge", // 3429 "weight", // 3430 "wheel", // 3431 "whole", // 3432 "wholeTbl", // 3433 "widowControl", // 3434 "width", // 3435 "windowHeight", // 3436 "windowProtection", // 3437 "windowWidth", // 3438 "wipe", // 3439 "wireframe", // 3440 "wordWrap", // 3441 "workbook", // 3442 "workbookParameter", // 3443 "workbookPassword", // 3444 "workbookPr", // 3445 "workbookProtection", // 3446 "workbookView", // 3447 "workbookViewId", // 3448 "worksheet", // 3449 "worksheetSource", // 3450 "wpJustification", // 3451 "wpSpaceWidth", // 3452 "wrap", // 3453 "wrapIndent", // 3454 "wrapNone", // 3455 "wrapPolygon", // 3456 "wrapRight", // 3457 "wrapSquare", // 3458 "wrapText", // 3459 "wrapThrough", // 3460 "wrapTight", // 3461 "wrapTopAndBottom", // 3462 "wrapTrailSpaces", // 3463 "wrapcoords", // 3464 "writeProtection", // 3465 "wsDr", // 3466 "x", // 3467 "xAlign", // 3468 "xMode", // 3469 "xSplit", // 3470 "xVal", // 3471 "xWindow", // 3472 "xf", // 3473 "xfDxf", // 3474 "xfId", // 3475 "xfrm", // 3476 "xfrmType", // 3477 "xl2000", // 3478 "xl97", // 3479 "xlm", // 3480 "xml", // 3481 "xmlBased", // 3482 "xmlCellPr", // 3483 "xmlColumnPr", // 3484 "xmlDataType", // 3485 "xmlPr", // 3486 "xpath", // 3487 "xrange", // 3488 "xscale", // 3489 "y", // 3490 "yAlign", // 3491 "yMode", // 3492 "ySplit", // 3493 "yVal", // 3494 "yWindow", // 3495 "year", // 3496 "yearLong", // 3497 "yearShort", // 3498 "yrange", // 3499 "z", // 3500 "zOrder", // 3501 "zOrderOff", // 3502 "zeroAsc", // 3503 "zeroDesc", // 3504 "zeroHeight", // 3505 "zeroValues", // 3506 "zeroWid", // 3507 "zoom", // 3508 "zoomContents", // 3509 "zoomScale", // 3510 "zoomScaleNormal", // 3511 "zoomScalePageLayoutView", // 3512 "zoomScaleSheetLayoutView", // 3513 "zoomToFit" // 3514 }; size_t token_name_count = 3515; liborcus-0.9.2/src/liborcus/xml_map_tree.hpp0000644000175000017500000001604712535701143017617 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XML_MAP_TREE_HPP__ #define __ORCUS_XML_MAP_TREE_HPP__ #include "orcus/pstring.hpp" #include "orcus/spreadsheet/types.hpp" #include "orcus/exception.hpp" #include "orcus/types.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/string_pool.hpp" #include #include #include #include namespace orcus { class xmlns_repository; /** * Tree representing XML-to-sheet mapping for mapped XML import. */ class xml_map_tree : boost::noncopyable { xml_map_tree(); // disabled public: /** * Error indicating improper xpath syntax. */ class xpath_error : public general_error { public: xpath_error(const std::string& msg); }; /** * A single cell position. Used both for single cell as well as range * links. For a range link, this represents the upper-left cell of a * range. */ struct cell_position { pstring sheet; spreadsheet::row_t row; spreadsheet::col_t col; cell_position(); cell_position(const pstring& _sheet, spreadsheet::row_t _row, spreadsheet::col_t _col); cell_position(const cell_position& r); }; /** * Positions of opening and closing elements in xml stream. */ struct element_position { const char* open_begin; const char* open_end; const char* close_begin; const char* close_end; element_position(); }; struct cell_reference : boost::noncopyable { cell_position pos; cell_reference(); }; struct element; struct linkable; typedef boost::ptr_vector element_store_type; typedef std::vector element_list_type; typedef std::vector const_element_list_type; typedef std::vector const_linkable_list_type; struct range_reference : boost::noncopyable { cell_position pos; /** * List of elements comprising the fields, in order of appearance from * left to right. */ const_linkable_list_type field_nodes; /** * Total number of rows comprising data. This does not include the * label row at the top. */ spreadsheet::row_t row_size; range_reference(const cell_position& _pos); }; struct field_in_range { range_reference* ref; spreadsheet::col_t column_pos; }; typedef std::map range_ref_map_type; enum linkable_node_type { node_unknown, node_element, node_attribute }; enum reference_type { reference_unknown, reference_cell, reference_range_field }; enum element_type { element_unknown, element_linked, element_unlinked }; struct linkable : boost::noncopyable { xmlns_id_t ns; pstring name; linkable_node_type node_type; mutable pstring ns_alias; // namespace alias used in the content stream. linkable(xmlns_id_t _ns, const pstring& _name, linkable_node_type _node_type); }; struct attribute : public linkable { reference_type ref_type; union { cell_reference* cell_ref; field_in_range* field_ref; }; attribute(xmlns_id_t _ns, const pstring& _name, reference_type _ref_type); ~attribute(); }; typedef boost::ptr_vector attribute_store_type; struct element : public linkable { element_type elem_type; reference_type ref_type; union { element_store_type* child_elements; cell_reference* cell_ref; field_in_range* field_ref; }; mutable element_position stream_pos; // position of this element in the content stream attribute_store_type attributes; /** * Points to a range reference instance of which this element is a * parent. NULL if this element is not a parent element of any range * reference. */ range_reference* range_parent; element(xmlns_id_t _ns, const pstring& _name, element_type _elem_type, reference_type _ref_type); ~element(); const element* get_child(xmlns_id_t _ns, const pstring& _name) const; /** * Unlinked attribute anchor is an element that's not linked but has * one or more attributes that are linked. * * @return true if the element is an unlinked attribute anchor, false * otherwise. */ bool unlinked_attribute_anchor() const; }; public: /** * Wrapper class to allow walking through the element tree. */ class walker { typedef std::vector ref_element_stack_type; typedef std::vector name_stack_type; const xml_map_tree& m_parent; ref_element_stack_type m_stack; name_stack_type m_unlinked_stack; public: walker(const xml_map_tree& parent); walker(const walker& r); void reset(); const element* push_element(xmlns_id_t ns, const pstring& name); const element* pop_element(xmlns_id_t ns, const pstring& name); }; xml_map_tree(xmlns_repository& xmlns_repo); ~xml_map_tree(); void set_namespace_alias(const pstring& alias, const pstring& uri); xmlns_id_t get_namespace(const pstring& alias) const; void set_cell_link(const pstring& xpath, const cell_position& ref); void start_range(); void append_range_field_link(const pstring& xpath, const cell_position& pos); void commit_range(); const linkable* get_link(const pstring& xpath) const; walker get_tree_walker() const; range_ref_map_type& get_range_references(); pstring intern_string(const pstring& str) const; private: linkable* get_element_stack(const pstring& xpath, reference_type type, element_list_type& elem_stack); private: xmlns_context m_xmlns_cxt; /** * Element stack of current range parent element. This is used to * determine a common parent element for all field links of a current * range reference. */ element_list_type m_cur_range_parent; range_reference* mp_cur_range_ref; /** * All range references present in the tree. This container manages the * life cycles of stored range references. */ range_ref_map_type m_field_refs; /** pool of element names. */ mutable string_pool m_names; element* mp_root; }; std::ostream& operator<< (std::ostream& os, const xml_map_tree::cell_position& ref); std::ostream& operator<< (std::ostream& os, const xml_map_tree::linkable& link); bool operator< (const xml_map_tree::cell_position& left, const xml_map_tree::cell_position& right); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_types.hpp0000644000175000017500000000306212535701143017516 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_OOXML_TYPES_HPP #define ORCUS_OOXML_TYPES_HPP #include "orcus/pstring.hpp" #include #include #include namespace orcus { typedef const char* content_type_t; typedef const char* schema_t; /** * Part name (first) and content type (second). */ typedef ::std::pair xml_part_t; /** * Single OPC relationship that corresponds with a Relationship element in * .rels parts. */ struct opc_rel_t { pstring rid; pstring target; schema_t type; opc_rel_t() : type(NULL) {} opc_rel_t(const pstring& _rid, const pstring& _target, schema_t _type) : rid(_rid), target(_target), type(_type) {} }; /** * Used only to allow custom data associated with a relationship. */ struct opc_rel_extra { virtual ~opc_rel_extra() = 0; }; struct opc_rel_extras_t : boost::noncopyable { typedef boost::unordered_map map_type; /** * Key is a textual relation ID, while the value is an arbitrary data * associated with the relation ID. */ map_type data; opc_rel_extras_t(); ~opc_rel_extras_t(); void swap(opc_rel_extras_t& other); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_helper.hpp0000644000175000017500000000114612535701143017472 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include namespace orcus { bool to_rgb(const pstring& ps, spreadsheet::color_elem_t& alpha, spreadsheet::color_elem_t& red, spreadsheet::color_elem_t& gree, spreadsheet::color_elem_t& blue); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_tokens.cpp0000644000175000017500000000077112535701143020204 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xls_xml_tokens.hpp" namespace orcus { namespace { #include "xls_xml_tokens.inl" } tokens xls_xml_tokens = tokens(token_names, token_name_count); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_context.hpp0000644000175000017500000000332312535701143020366 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLS_XML_CONTEXT_HPP #define ORCUS_XLS_XML_CONTEXT_HPP #include "xml_context_base.hpp" #include "orcus/spreadsheet/types.hpp" #include "orcus/string_pool.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class import_factory; class import_sheet; }} class xls_xml_context : public xml_context_base { public: enum cell_type { ct_unknown = 0, ct_string, ct_number }; xls_xml_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory); virtual ~xls_xml_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: void push_cell(); private: string_pool m_pool; spreadsheet::iface::import_factory* mp_factory; spreadsheet::iface::import_sheet* mp_cur_sheet; spreadsheet::row_t m_cur_row; spreadsheet::col_t m_cur_col; cell_type m_cur_cell_type; std::vector m_cur_cell_string; double m_cur_cell_value; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_global.hpp0000644000175000017500000000223112535701143017607 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_OOXML_GLOBAL_HPP #define ORCUS_OOXML_GLOBAL_HPP #include "orcus/types.hpp" #include "ooxml_types.hpp" #include #include namespace orcus { struct opc_rel_t; struct xml_token_attr_t; /** * Function object to print relationship information. */ struct print_opc_rel : ::std::unary_function { void operator() (const opc_rel_t& v) const; }; /** * Given a directory path and a file name, return a full path that combines * the two while resolving any parent directory path ".." markers. * * @param dir_path directory path. It can optionally start with a '/', but * it must end with a '/'. * @param file_name file name. * * @return full file path. */ std::string resolve_file_path(const std::string& dir_path, const std::string& file_name); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/detection_result.hpp0000644000175000017500000000106412535701143020510 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_DETECTION_RESULT_HPP #define ORCUS_DETECTION_RESULT_HPP namespace orcus { class detection_result { bool m_result; public: detection_result(bool result); bool get_result() const; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/measurement.cpp0000644000175000017500000001303512535701143017455 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/measurement.hpp" #include "orcus/pstring.hpp" #include "orcus/exception.hpp" #include "orcus/parser_global.hpp" #include using namespace std; namespace orcus { namespace { long parse_integer(const char*& p, const char* p_end) { long ret = 0.0; bool negative_sign = false; // Check for presence of a sign. if (p != p_end) { switch (*p) { case '+': ++p; break; case '-': negative_sign = true; ++p; break; default: ; } } for (; p != p_end; ++p) { if (*p < '0' || '9' < *p) return negative_sign ? -ret : ret; ret *= 10; ret += *p - '0'; } return negative_sign ? -ret : ret; } } length_t::length_t() : unit(length_unit_unknown), value(0.0) {} std::string length_t::print() const { ostringstream os; os << value; switch (unit) { case length_unit_centimeter: os << " cm"; break; case length_unit_inch: os << " in"; break; case length_unit_point: os << " pt"; break; case length_unit_twip: os << " twip"; break; case length_unit_unknown: default: ; } return os.str(); } double to_double(const char* p, const char* p_end, const char** p_parse_ended) { double val = parse_numeric(p, p_end-p); if (p_parse_ended) *p_parse_ended = p; return val; } double to_double(const pstring& s) { const char* p = s.get(); const char* p_end = p + s.size(); return to_double(p, p_end, NULL); } long to_long(const char* p, const char* p_end, const char** p_parse_ended) { long val = parse_integer(p, p_end); if (p_parse_ended) *p_parse_ended = p; return val; } long to_long(const pstring& s) { const char* p = s.get(); const char* p_end = p + s.size(); return to_long(p, p_end, NULL); } bool to_bool(const pstring& s) { size_t n = s.size(); if (n == 1) // Any single char other than '0' is true. return *s.get() != '0'; if (n == 4) { // Check against 'true'. const char* p = s.get(); if (*p++ != 't' || *p++ != 'r' || *p++ != 'u' || *p != 'e') return false; return true; } return false; } length_t to_length(const pstring& str) { length_t ret; if (str.empty()) return ret; const char* p = str.get(); const char* p_start = p; const char* p_end = p_start + str.size(); ret.value = parse_numeric(p, p_end-p); // TODO: See if this part can be optimized. pstring tail(p, p_end-p); if (tail == "in") ret.unit = length_unit_inch; else if (tail == "cm") ret.unit = length_unit_centimeter; else if (tail == "pt") ret.unit = length_unit_point; return ret; } namespace { double convert_inch(double value, length_unit_t unit_to) { switch (unit_to) { case length_unit_twip: // inches to twips : 1 twip = 1/1440 inches return value * 1440.0; default: ; } throw general_error("convert_inch: unsupported unit of measurement."); } double convert_point(double value, length_unit_t unit_to) { // 72 points = 1 inch value /= 72.0; return convert_inch(value, unit_to); } double convert_centimeter(double value, length_unit_t unit_to) { switch (unit_to) { case length_unit_twip: // centimeters to twips : 2.54 cm = 1 inch = 1440 twips return value / 2.54 * 1440.0; default: ; } throw general_error("convert_centimeter: unsupported unit of measurement."); } double convert_twip(double value, length_unit_t unit_to) { switch (unit_to) { case length_unit_inch: // twips to inches : 1 twip = 1/1440 inches return value / 1440.0; default: ; } throw general_error("convert_twip: unsupported unit of measurement."); } /** * Since Excel's column width is based on the maximum digit width of font * used as the "Normal" style font, it's impossible to convert it accurately * without the font information. */ double convert_xlsx_column_digit(double value, length_unit_t unit_to) { // Convert to centimeters first. Here, we'll just assume that a single // digit always equals 1.9 millimeters. TODO: find a better way to convert // this. value *= 0.19; return convert_centimeter(value, unit_to); } } double convert(double value, length_unit_t unit_from, length_unit_t unit_to) { switch (unit_from) { case length_unit_point: return convert_point(value, unit_to); case length_unit_inch: return convert_inch(value, unit_to); case length_unit_centimeter: return convert_centimeter(value, unit_to); case length_unit_twip: return convert_twip(value, unit_to); case length_unit_xlsx_column_digit: return convert_xlsx_column_digit(value, unit_to); default: ; } throw general_error("convert: unsupported unit of measurement."); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_context.hpp0000644000175000017500000000267712535701143020524 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERICCONTEXT_HPP__ #define __ORCUS_GNUMERICCONTEXT_HPP__ #include "xml_context_base.hpp" #include #include namespace orcus { namespace spreadsheet { namespace iface { class import_factory; class import_sheet; }} class gnumeric_content_xml_context : public xml_context_base { public: gnumeric_content_xml_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory); virtual ~gnumeric_content_xml_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: private: spreadsheet::iface::import_factory* mp_factory; boost::scoped_ptr mp_child; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_detection_handler.cpp0000644000175000017500000000645612535701143022362 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xls_xml_detection_handler.hpp" #include "xls_xml_token_constants.hpp" #include "xls_xml_namespace_types.hpp" #include "xml_context_base.hpp" #include "detection_result.hpp" namespace orcus { namespace { /** * Try to parse the XML stream up to the 1st Worksheet element while * checking its structure along the way. If the structure up to that element * is correct, then we call it "detected". */ class xls_xml_detection_context : public xml_context_base { public: xls_xml_detection_context(session_context& session_cxt, const tokens& tokens) : xml_context_base(session_cxt, tokens) {} virtual bool can_handle_element(xmlns_id_t, xml_token_t) const { return true; } virtual xml_context_base* create_child_context(xmlns_id_t, xml_token_t) { return NULL; } virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_xls_xml_ss) { switch (name) { case XML_Workbook: xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); break; case XML_Styles: case XML_Worksheet: { xml_element_expected(parent, NS_xls_xml_ss, XML_Workbook); // All good. Let's call it detected. throw detection_result(true); } break; case XML_Style: xml_element_expected(parent, NS_xls_xml_ss, XML_Style); break; default: ; } } else if (ns == NS_xls_xml_o) { switch (name) { case XML_DocumentProperties: case XML_OfficeDocumentSettings: xml_element_expected(parent, NS_xls_xml_ss, XML_Workbook); break; default: ; } } else if (ns == NS_xls_xml_x) { switch (name) { case XML_ExcelWorkbook: xml_element_expected(parent, NS_xls_xml_ss, XML_Workbook); break; default: ; } } } virtual bool end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } virtual void characters(const pstring&, bool) { } virtual void end_child_context(xmlns_id_t, xml_token_t, xml_context_base*) { } }; } xls_xml_detection_handler::xls_xml_detection_handler( session_context& session_cxt, const tokens& tokens) : xml_stream_handler(new xls_xml_detection_context(session_cxt, tokens)) { } xls_xml_detection_handler::~xls_xml_detection_handler() {} void xls_xml_detection_handler::start_document() {} void xls_xml_detection_handler::end_document() {} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_schemas.cpp0000644000175000017500000000727312535701143020000 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ooxml_schemas.hpp" namespace orcus { schema_t SCH_mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"; schema_t SCH_opc_content_types = "http://schemas.openxmlformats.org/package/2006/content-types"; schema_t SCH_opc_rels = "http://schemas.openxmlformats.org/package/2006/relationships"; schema_t SCH_opc_rels_metadata_core_props = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"; schema_t SCH_od_rels_calc_chain = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain"; schema_t SCH_od_rels_connections = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections"; schema_t SCH_od_rels_printer_settings = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings"; schema_t SCH_od_rels_rev_headers = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/revisionHeaders"; schema_t SCH_od_rels_rev_log = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/revisionLog"; schema_t SCH_od_rels_shared_strings = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"; schema_t SCH_od_rels_styles = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; schema_t SCH_od_rels_theme = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"; schema_t SCH_od_rels_usernames = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/usernames"; schema_t SCH_od_rels_worksheet = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"; schema_t SCH_od_rels_extended_props = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"; schema_t SCH_od_rels_office_doc = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; schema_t SCH_od_rels_table = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"; schema_t SCH_od_rels_pivot_cache_def = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition"; schema_t SCH_od_rels_pivot_cache_rec = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords"; schema_t SCH_od_rels_pivot_table = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable"; schema_t SCH_xlsx_main = "http://schemas.openxmlformats.org/spreadsheetml/2006/main"; schema_t SCH_mso_x14ac = "http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"; namespace { schema_t schs[] = { SCH_mc, SCH_opc_content_types, SCH_opc_rels, SCH_opc_rels_metadata_core_props, SCH_od_rels_calc_chain, SCH_od_rels_connections, SCH_od_rels_printer_settings, SCH_od_rels_rev_headers, SCH_od_rels_rev_log, SCH_od_rels_shared_strings, SCH_od_rels_styles, SCH_od_rels_theme, SCH_od_rels_usernames, SCH_od_rels_worksheet, SCH_od_rels_extended_props, SCH_od_rels_office_doc, SCH_od_rels_table, SCH_od_rels_pivot_cache_def, SCH_od_rels_pivot_cache_rec, SCH_od_rels_pivot_table, SCH_xlsx_main, SCH_mso_x14ac, NULL }; } schema_t* SCH_all = schs; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/format_detection.cpp0000644000175000017500000000275312535701143020463 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/format_detection.hpp" #include #ifdef __ORCUS_ODS #define ODS_ENABLED 1 #else #define ODS_ENABLED 0 #endif #ifdef __ORCUS_XLSX #define XLSX_ENABLED 1 #else #define XLSX_ENABLED 0 #endif #ifdef __ORCUS_GNUMERIC #define GNUMERIC_ENABLED 1 #else #define GNUMERIC_ENABLED 0 #endif #ifdef __ORCUS_XLS_XML #define XLS_XML_ENABLED 1 #else #define XLS_XML_ENABLED 0 #endif #if ODS_ENABLED #include "orcus/orcus_ods.hpp" #endif #if XLSX_ENABLED #include "orcus/orcus_xlsx.hpp" #endif #if GNUMERIC_ENABLED #include "orcus/orcus_gnumeric.hpp" #endif #if XLS_XML_ENABLED #include "orcus/orcus_xls_xml.hpp" #endif using namespace std; namespace orcus { format_t detect(const unsigned char* buffer, size_t length) { #if ODS_ENABLED if (orcus_ods::detect(buffer, length)) return format_ods; #endif #if XLSX_ENABLED if (orcus_xlsx::detect(buffer, length)) return format_xlsx; #endif #if GNUMERIC_ENABLED if (orcus_gnumeric::detect(buffer, length)) return format_gnumeric; #endif #if XLS_XML_ENABLED if (orcus_xls_xml::detect(buffer, length)) return format_xls_xml; #endif return format_unknown; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/config.cpp0000644000175000017500000000070412535701142016373 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/config.hpp" namespace orcus { config::config() : debug(false), structure_check(true) {} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_namespace_types.hpp0000644000175000017500000000135012535701143022203 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERIC_NAMESPACE_TYPES_HPP__ #define __ORCUS_GNUMERIC_NAMESPACE_TYPES_HPP__ #include "orcus/types.hpp" namespace orcus { extern const xmlns_id_t NS_gnumeric_dc; extern const xmlns_id_t NS_gnumeric_gnm; extern const xmlns_id_t NS_gnumeric_ooo; extern const xmlns_id_t NS_gnumeric_xlink; extern const xmlns_id_t NS_gnumeric_xsi; extern const xmlns_id_t* NS_gnumeric_all; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_detection_handler.hpp0000644000175000017500000000144212535701143022355 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLS_XML_DETECTION_HANDLER_HPP #define ORCUS_XLS_XML_DETECTION_HANDLER_HPP #include "xml_stream_handler.hpp" namespace orcus { class tokens; struct session_context; class xls_xml_detection_handler : public xml_stream_handler { public: xls_xml_detection_handler(session_context& session_cxt, const tokens& tokens); virtual ~xls_xml_detection_handler(); virtual void start_document(); virtual void end_document(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_tokens.hpp0000644000175000017500000000101612535701143017652 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OOXML_TOKENS_HPP__ #define __ORCUS_OOXML_TOKENS_HPP__ #include "orcus/tokens.hpp" namespace orcus { extern tokens ooxml_tokens; extern tokens opc_tokens; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_types.hpp0000644000175000017500000000275212535701143017363 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XLSX_TYPES_HPP__ #define __ORCUS_XLSX_TYPES_HPP__ #include "ooxml_types.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_sheet; }} struct xlsx_rel_sheet_info : public opc_rel_extra { pstring name; size_t id; xlsx_rel_sheet_info() : id(0) {} virtual ~xlsx_rel_sheet_info() {} }; struct xlsx_rel_table_info : public opc_rel_extra { spreadsheet::iface::import_sheet* sheet_interface; xlsx_rel_table_info() : sheet_interface(NULL) {} virtual ~xlsx_rel_table_info() {} }; enum xlsx_cell_t { xlsx_ct_unknown = 0, xlsx_ct_boolean, xlsx_ct_error, xlsx_ct_numeric, xlsx_ct_inline_string, xlsx_ct_shared_string, xlsx_ct_formula_string, }; xlsx_cell_t to_xlsx_cell_type(const pstring& s); pstring to_string(xlsx_cell_t type); enum xlsx_rev_row_column_action_t { xlsx_rev_rca_unknown = 0, xlsx_rev_rca_delete_column, xlsx_rev_rca_delete_row, xlsx_rev_rca_insert_column, xlsx_rev_rca_insert_row }; xlsx_rev_row_column_action_t to_xlsx_rev_row_column_action_type(const pstring& s); pstring to_string(xlsx_rev_row_column_action_t type); } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_session_data.hpp0000644000175000017500000000411412535701143020665 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_SESSION_DATA_HPP #define ORCUS_XLSX_SESSION_DATA_HPP #include "session_context.hpp" #include "orcus/spreadsheet/types.hpp" #include #include namespace orcus { /** * Collection of global data that need to be persistent during a single * import session. */ struct xlsx_session_data : public session_context::custom_data { struct formula { spreadsheet::sheet_t sheet; spreadsheet::row_t row; spreadsheet::col_t column; std::string exp; std::string range; bool array; formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, const std::string& _exp); formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, const std::string& _exp, const std::string& _range); }; struct shared_formula { spreadsheet::sheet_t sheet; spreadsheet::row_t row; spreadsheet::col_t column; size_t identifier; std::string formula; std::string range; bool master; shared_formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, size_t _identifier); shared_formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, size_t _identifier, const std::string& _formula, const std::string& _range); }; typedef boost::ptr_vector formulas_type; typedef boost::ptr_vector shared_formulas_type; formulas_type m_formulas; shared_formulas_type m_shared_formulas; virtual ~xlsx_session_data(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_context_global.hpp0000644000175000017500000000356512535701143021030 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XML_CONTEXT_GLOBAL_HPP #define ORCUS_XML_CONTEXT_GLOBAL_HPP #include "orcus/types.hpp" #include "orcus/pstring.hpp" #include namespace orcus { class string_pool; /** * Use this just to get the value of a single attribute for a given element. */ class single_attr_getter : public std::unary_function { string_pool* m_pool; pstring m_value; xmlns_id_t m_ns; xml_token_t m_name; public: single_attr_getter(string_pool& pool, xmlns_id_t ns, xml_token_t name); void operator() (const xml_token_attr_t& attr); pstring get_value() const; static pstring get(const std::vector& attrs, string_pool& pool, xmlns_id_t ns, xml_token_t name); }; class single_long_attr_getter : public std::unary_function { long m_value; xmlns_id_t m_ns; xml_token_t m_name; public: single_long_attr_getter(xmlns_id_t ns, xml_token_t name); void operator() (const xml_token_attr_t& attr); long get_value() const; static long get(const std::vector& attrs, xmlns_id_t ns, xml_token_t name); }; class single_double_attr_getter : public std::unary_function { double m_value; xmlns_id_t m_ns; xml_token_t m_name; public: single_double_attr_getter(xmlns_id_t ns, xml_token_t name); void operator() (const xml_token_attr_t& attr); double get_value() const; static double get(const std::vector& attrs, xmlns_id_t ns, xml_token_t name); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_tokens.cpp0000644000175000017500000000077312535701143020331 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_tokens.hpp" namespace orcus { namespace { #include "gnumeric_tokens.inl" } tokens gnumeric_tokens = tokens(token_names, token_name_count); }/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/opc_token_constants.inl0000644000175000017500000000217212535701143021205 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const xml_token_t XML_ContentType = 1; const xml_token_t XML_Default = 2; const xml_token_t XML_Extension = 3; const xml_token_t XML_Format = 4; const xml_token_t XML_Id = 5; const xml_token_t XML_Override = 6; const xml_token_t XML_PartName = 7; const xml_token_t XML_Relationship = 8; const xml_token_t XML_RelationshipReference = 9; const xml_token_t XML_Relationships = 10; const xml_token_t XML_RelationshipsGroupReference = 11; const xml_token_t XML_SignatureTime = 12; const xml_token_t XML_SourceId = 13; const xml_token_t XML_SourceType = 14; const xml_token_t XML_Target = 15; const xml_token_t XML_TargetMode = 16; const xml_token_t XML_Type = 17; const xml_token_t XML_Types = 18; const xml_token_t XML_Value = 19; const xml_token_t XML_category = 20; const xml_token_t XML_contentStatus = 21; const xml_token_t XML_contentType = 22; const xml_token_t XML_coreProperties = 23; const xml_token_t XML_keywords = 24; const xml_token_t XML_lastModifiedBy = 25; const xml_token_t XML_lastPrinted = 26; const xml_token_t XML_revision = 27; const xml_token_t XML_version = 28; liborcus-0.9.2/src/liborcus/ods_content_xml_context.cpp0000644000175000017500000004613712535701143022104 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "ods_content_xml_context.hpp" #include "odf_token_constants.hpp" #include "odf_namespace_types.hpp" #include "odf_styles_context.hpp" #include "session_context.hpp" #include "ods_session_data.hpp" #include "orcus/global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include #include #include #include #include using namespace std; namespace orcus { namespace { typedef mdds::sorted_string_map cell_value_map_type; // Keys must be sorted. cell_value_map_type::entry cell_value_entries[] = { { ORCUS_ASCII("date"), ods_content_xml_context::vt_date }, { ORCUS_ASCII("float"), ods_content_xml_context::vt_float }, { ORCUS_ASCII("string"), ods_content_xml_context::vt_string } }; const cell_value_map_type& get_cell_value_map() { static cell_value_map_type cv_map( cell_value_entries, sizeof(cell_value_entries)/sizeof(cell_value_entries[0]), ods_content_xml_context::vt_unknown); return cv_map; } class null_date_attr_parser : public unary_function { public: null_date_attr_parser() {} null_date_attr_parser(const null_date_attr_parser& r) : m_date_value(r.m_date_value) { } void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_table && attr.name == XML_date_value) m_date_value = attr.value; } const pstring& get_date_value() const { return m_date_value; } private: pstring m_date_value; }; class table_attr_parser : public unary_function { public: table_attr_parser() {} table_attr_parser(const table_attr_parser& r) : m_name(r.m_name) { } void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_table && attr.name == XML_name) m_name = attr.value; } const pstring& get_name() const { return m_name; } private: pstring m_name; }; class column_attr_parser : public unary_function { pstring m_style_name; public: void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_table) { if (attr.name == XML_style_name) m_style_name = attr.value; } } const pstring& get_style_name() const { return m_style_name; } }; class row_attr_parser : public unary_function { long m_number_rows_repeated; pstring m_style_name; public: row_attr_parser() : m_number_rows_repeated(1) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_table) { switch (attr.name) { case XML_number_rows_repeated: m_number_rows_repeated = to_long(attr.value); break; case XML_style_name: m_style_name = attr.value; break; } } } long get_number_rows_repeated() const { return m_number_rows_repeated; } const pstring& get_style_name() const { return m_style_name; } }; class cell_attr_parser : public unary_function { public: cell_attr_parser(session_context& cxt, ods_content_xml_context::cell_attr& attr) : m_cxt(cxt), m_attr(attr) {} cell_attr_parser(const cell_attr_parser& r) : m_cxt(r.m_cxt), m_attr(r.m_attr) {} void operator() (const xml_token_attr_t& attr) { if (attr.value.empty()) return; if (attr.ns == NS_odf_table) process_ns_table(attr); if (attr.ns == NS_odf_office) process_ns_office(attr); } private: void process_formula(const pstring& str, bool transient) { if (str.empty()) return; // Formula is prefixed with formula type, followed by a ':' // then the actual formula content. // First, detect prefix if any. Only try up to the first 5 characters. const char* p0 = str.get(); const char* end = p0 + std::min(str.size(), 5); size_t prefix_size = 0; for (const char* p = p0; p != end; ++p) { if (*p == ':') { // Prefix separator found. prefix_size = p - p0; break; } if (!is_alpha(*p)) // Only alphabets are allowed in the prefix space. break; } pstring prefix, formula; if (prefix_size) { prefix = pstring(p0, prefix_size); const char* p = p0; p += prefix_size + 1; end = p0 + str.size(); formula = pstring(p, end - p); } else { // TODO : Handle cases where a formula doesn't have a prefix. } // Formula needs to begin with '='. if (formula.empty() || formula[0] != '=') return; // Remove the '='. formula = pstring(formula.get()+1, formula.size()-1); if (prefix == "of") { // ODF formula. No action needed. } m_attr.formula = formula; if (transient) m_attr.formula = m_cxt.m_string_pool.intern(m_attr.formula).first; } void process_ns_table(const xml_token_attr_t &attr) { switch (attr.name) { case XML_style_name: m_attr.style_name = attr.value; break; case XML_number_columns_repeated: m_attr.number_columns_repeated = to_long(attr.value); break; case XML_formula: process_formula(attr.value, attr.transient); break; default: ; } } void process_ns_office(const xml_token_attr_t &attr) { switch (attr.name) { case XML_value: { const char* end = attr.value.get() + attr.value.size(); char* endptr; double val = strtod(attr.value.get(), &endptr); if (endptr == end) m_attr.value = val; } break; case XML_value_type: { const cell_value_map_type& cv_map = get_cell_value_map(); m_attr.type = cv_map.find(attr.value.get(), attr.value.size()); } break; case XML_date_value: m_attr.date_value = attr.value; break; default: ; } } session_context& m_cxt; ods_content_xml_context::cell_attr& m_attr; }; } // ============================================================================ ods_content_xml_context::row_attr::row_attr() : number_rows_repeated(1) { } ods_content_xml_context::cell_attr::cell_attr() : number_columns_repeated(1), type(vt_unknown), value(0.0), formula_grammar(spreadsheet::formula_grammar_ods) { } // ============================================================================ ods_content_xml_context::ods_content_xml_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory) : xml_context_base(session_cxt, tokens), mp_factory(factory), m_row(0), m_col(0), m_para_index(0), m_has_content(false), m_styles(), m_child_para(session_cxt, tokens, factory->get_shared_strings(), m_styles) { } ods_content_xml_context::~ods_content_xml_context() { } bool ods_content_xml_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { if (ns == NS_odf_text && name == XML_p) return false; if (ns == NS_odf_office && name == XML_automatic_styles) return false; return true; } xml_context_base* ods_content_xml_context::create_child_context(xmlns_id_t ns, xml_token_t name) { if (ns == NS_odf_text && name == XML_p) { m_child_para.reset(); m_child_para.transfer_common(*this); return &m_child_para; } if (ns == NS_odf_office && name == XML_automatic_styles) { mp_child.reset(new automatic_styles_context(get_session_context(), get_tokens(), m_styles, mp_factory)); mp_child->transfer_common(*this); return mp_child.get(); } return NULL; } void ods_content_xml_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { if (ns == NS_odf_text && name == XML_p) { text_para_context* para_context = static_cast(child); m_has_content = !para_context->empty(); m_para_index = para_context->get_string_index(); } else if (ns == NS_odf_office && name == XML_automatic_styles) { cout << "styles picked up:" << endl; odf_styles_map_type::const_iterator it = m_styles.begin(), it_end = m_styles.end(); for (; it != it_end; ++it) { cout << " style: " << it->first << " [ "; switch (it->second->family) { case style_family_table_column: cout << "column width: " << it->second->column_data->width.print(); break; case style_family_table_row: cout << "row height: " << it->second->row_data->height.print(); break; case style_family_table_cell: { const odf_style::cell& cell = *it->second->cell_data; cout << "font ID: " << cell.font; spreadsheet::iface::import_styles* styles = mp_factory->get_styles(); if (styles) { styles->set_xf_font(cell.font); size_t xf_id = styles->commit_cell_xf(); m_cell_format_map.insert(name2id_type::value_type(it->first, xf_id)); } } break; case style_family_text: { const odf_style::text& data = *it->second->text_data; cout << "font ID: " << data.font; } break; default: ; } cout << " ]" << endl; } } } void ods_content_xml_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_odf_office) { switch (name) { case XML_body: break; case XML_spreadsheet: break; default: warn_unhandled(); } } else if (ns == NS_odf_table) { switch (name) { case XML_calculation_settings: break; case XML_null_date: xml_element_expected(parent, NS_odf_table, XML_calculation_settings); start_null_date(attrs); break; case XML_table: xml_element_expected(parent, NS_odf_office, XML_spreadsheet); start_table(attrs); break; case XML_table_column: xml_element_expected(parent, NS_odf_table, XML_table); start_column(attrs); break; case XML_table_row: xml_element_expected(parent, NS_odf_table, XML_table); start_row(attrs); break; case XML_table_cell: xml_element_expected(parent, NS_odf_table, XML_table_row); start_cell(attrs); break; default: warn_unhandled(); } } else warn_unhandled(); } bool ods_content_xml_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_odf_office) { switch (name) { case XML_body: break; case XML_spreadsheet: end_spreadsheet(); break; default: ; } } else if (ns == NS_odf_table) { switch (name) { case XML_calculation_settings: break; case XML_null_date: break; case XML_table: end_table(); break; case XML_table_column: end_column(); break; case XML_table_row: end_row(); break; case XML_table_cell: end_cell(); break; default: ; } } return pop_stack(ns, name); } void ods_content_xml_context::characters(const pstring& str, bool transient) { } void ods_content_xml_context::start_null_date(const xml_attrs_t& attrs) { spreadsheet::iface::import_global_settings* gs = mp_factory->get_global_settings(); if (!gs) // Global settings not available. No point going further. return; pstring null_date = for_each(attrs.begin(), attrs.end(), null_date_attr_parser()).get_date_value(); date_time_t val = to_date_time(null_date); gs->set_origin_date(val.year, val.month, val.day); } void ods_content_xml_context::start_table(const xml_attrs_t& attrs) { table_attr_parser parser = for_each(attrs.begin(), attrs.end(), table_attr_parser()); const pstring& name = parser.get_name(); m_tables.push_back(mp_factory->append_sheet(name.get(), name.size())); cout << "start table " << name << endl; m_row = m_col = 0; } void ods_content_xml_context::end_table() { cout << "end table" << endl; } void ods_content_xml_context::start_column(const xml_attrs_t& attrs) { spreadsheet::iface::import_sheet_properties* sheet_props = m_tables.back()->get_sheet_properties(); if (!sheet_props) return; column_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); odf_styles_map_type::const_iterator it = m_styles.find(func.get_style_name()); if (it == m_styles.end()) // Style by this name not found. return; const odf_style& style = *it->second; sheet_props->set_column_width(m_col, style.column_data->width.value, style.column_data->width.unit); } void ods_content_xml_context::end_column() { ++m_col; } void ods_content_xml_context::start_row(const xml_attrs_t& attrs) { m_col = 0; m_row_attr = row_attr(); row_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); m_row_attr.number_rows_repeated = func.get_number_rows_repeated(); // Pass row properties to the interface. spreadsheet::iface::import_sheet_properties* sheet_props = m_tables.back()->get_sheet_properties(); if (sheet_props) { odf_styles_map_type::const_iterator it = m_styles.find(func.get_style_name()); if (it != m_styles.end()) { const odf_style::row& row_data = *it->second->row_data; sheet_props->set_row_height(m_row, row_data.height.value, row_data.height.unit); } } } void ods_content_xml_context::end_row() { if (m_row_attr.number_rows_repeated > 1) { // TODO: repeat this row. // cout << "repeat this row " << m_row_attr.number_rows_repeated << " times" << endl; } m_row += m_row_attr.number_rows_repeated; } void ods_content_xml_context::start_cell(const xml_attrs_t& attrs) { m_cell_attr = cell_attr(); for_each(attrs.begin(), attrs.end(), cell_attr_parser(get_session_context(), m_cell_attr)); } void ods_content_xml_context::end_cell() { name2id_type::const_iterator it = m_cell_format_map.find(m_cell_attr.style_name); if (it != m_cell_format_map.end()) m_tables.back()->set_format(m_row, m_col, it->second); push_cell_value(); ++m_col; if (m_cell_attr.number_columns_repeated > 1) { int col_upper = m_col + m_cell_attr.number_columns_repeated - 2; for (; m_col <= col_upper; ++m_col) push_cell_value(); } m_has_content = false; } void ods_content_xml_context::push_cell_value() { spreadsheet::iface::import_sheet* sheet = m_tables.back(); bool has_formula = !m_cell_attr.formula.empty(); if (has_formula) { ods_session_data& ods_data = static_cast(*get_session_context().mp_data); ods_data.m_formulas.push_back( new ods_session_data::formula( m_tables.size()-1, m_row, m_col, m_cell_attr.formula_grammar, m_cell_attr.formula)); ods_session_data::formula& formula_data = ods_data.m_formulas.back(); // Store formula result. switch (m_cell_attr.type) { case vt_float: { formula_data.result.type = orcus::ods_session_data::rt_numeric; formula_data.result.numeric_value = m_cell_attr.value; } break; case vt_string: // TODO : pass string result here. We need to decide whether // to pass a string ID or a raw string. break; default: ; } return; } switch (m_cell_attr.type) { case vt_float: sheet->set_value(m_row, m_col, m_cell_attr.value); break; case vt_string: if (m_has_content) sheet->set_string(m_row, m_col, m_para_index); break; case vt_date: { date_time_t val = to_date_time(m_cell_attr.date_value); sheet->set_date_time( m_row, m_col, val.year, val.month, val.day, val.hour, val.minute, val.second); } break; default: ; } } void ods_content_xml_context::end_spreadsheet() { ods_session_data& ods_data = static_cast(*get_session_context().mp_data); // Push all formula cells. Formula cells needs to be processed after all // the sheet data have been imported, else 3D reference would fail to // resolve. ods_session_data::formulas_type::iterator it = ods_data.m_formulas.begin(), ite = ods_data.m_formulas.end(); for (; it != ite; ++it) { ods_session_data::formula& data = *it; if (data.sheet < 0 || static_cast(data.sheet) >= m_tables.size()) // Invalid sheet index. continue; spreadsheet::iface::import_sheet* sheet = m_tables[data.sheet]; sheet->set_formula( data.row, data.column, data.grammar, data.exp.get(), data.exp.size()); switch (data.result.type) { case ods_session_data::rt_numeric: sheet->set_formula_result(data.row, data.column, data.result.numeric_value); break; case ods_session_data::rt_string: case ods_session_data::rt_error: case ods_session_data::rt_none: default: ; } } // Clear the formula buffer. ods_data.m_formulas.clear(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_conditional_format_context.cpp0000644000175000017500000007036512535701143023636 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_conditional_format_context.hpp" #include "xlsx_helper.hpp" #include "xlsx_types.hpp" #include "ooxml_token_constants.hpp" #include "ooxml_namespace_types.hpp" #include "orcus/global.hpp" #include "orcus/exception.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/measurement.hpp" #include #include namespace orcus { namespace { class color_attr_parser : public std::unary_function { public: void operator()(const xml_token_attr_t& attr) { switch (attr.name) { case XML_rgb: { to_rgb(attr.value, m_alpha, m_red, m_green, m_blue); } break; default: break; } } void get_color(argb_color& color) { color.alpha = m_alpha; color.red = m_red; color.green = m_green; color.blue = m_blue; } private: spreadsheet::color_elem_t m_alpha; spreadsheet::color_elem_t m_red; spreadsheet::color_elem_t m_green; spreadsheet::color_elem_t m_blue; }; enum xlsx_cond_format_type { none = 0, expression, cellIs, colorScale, dataBar, iconSet, top10, uniqueValues, duplicateValues, containsText, notContainsText, beginsWith, endsWith, containsBlanks, notContainsBlanks, containsErrors, notContainsErrors, timePeriod, aboveAverage }; enum xlsx_cond_format_operator { operator_default = 0, operator_beginsWith, operator_between, operator_containsText, operator_endsWith, operator_equal, operator_greaterThan, operator_greaterThanOrEqual, operator_lessThan, operator_lessThanOrEqual, operator_notBetween, operator_notContains, operator_notEqual }; enum xlsx_cond_format_date { date_default = 0, date_last7Days, date_lastMonth, date_lastWeek, date_nextMonth, date_thisMonth, date_thisWeek, date_today, date_tomorrow, date_yesterday }; enum xlsx_cond_format_boolean { boolean_default = 0, boolean_true, boolean_false }; typedef mdds::sorted_string_map cond_format_type_map; typedef mdds::sorted_string_map cond_format_boolean_map; typedef mdds::sorted_string_map cond_format_operator_map; typedef mdds::sorted_string_map cond_format_date_map; cond_format_type_map::entry cond_format_type_entries[] = { { MDDS_ASCII("expression"), expression }, { MDDS_ASCII("cellIs"), cellIs }, { MDDS_ASCII("colorScale"), colorScale }, { MDDS_ASCII("dataBar"), dataBar }, { MDDS_ASCII("iconSet"), iconSet }, { MDDS_ASCII("top10"), top10 }, { MDDS_ASCII("uniqueValues"), uniqueValues }, { MDDS_ASCII("duplicateValues"), duplicateValues }, { MDDS_ASCII("containsText"), containsText }, { MDDS_ASCII("notContainsText"), notContainsText }, { MDDS_ASCII("beginsWith"), beginsWith }, { MDDS_ASCII("endsWith"), endsWith }, { MDDS_ASCII("containsBlanks"), containsBlanks }, { MDDS_ASCII("containsErrors"), containsErrors }, { MDDS_ASCII("notContainsErrors"), notContainsErrors }, { MDDS_ASCII("timePeriod"), timePeriod }, { MDDS_ASCII("aboveAverage"), aboveAverage }, }; cond_format_operator_map::entry cond_format_operator_entries[] = { { MDDS_ASCII("beginsWith"), operator_beginsWith }, { MDDS_ASCII("between"), operator_between }, { MDDS_ASCII("containsText"), operator_containsText }, { MDDS_ASCII("endsWith"), operator_endsWith }, { MDDS_ASCII("equal"), operator_equal }, { MDDS_ASCII("greaterThan"), operator_greaterThan }, { MDDS_ASCII("greaterThanOrEqual"), operator_greaterThanOrEqual }, { MDDS_ASCII("lessThan"), operator_lessThan }, { MDDS_ASCII("lessThanOrEqual"), operator_lessThanOrEqual }, { MDDS_ASCII("notBetween"), operator_notBetween }, { MDDS_ASCII("notContains"), operator_notContains }, { MDDS_ASCII("notEqual"), operator_notEqual } }; cond_format_date_map::entry cond_format_date_entries[] = { { MDDS_ASCII("last7Days"), date_last7Days }, { MDDS_ASCII("lastMonth"), date_lastMonth }, { MDDS_ASCII("lastWeek"), date_lastWeek }, { MDDS_ASCII("nextMonth"), date_nextMonth }, { MDDS_ASCII("thisMonth"), date_thisMonth }, { MDDS_ASCII("thisWeek"), date_thisWeek }, { MDDS_ASCII("today"), date_today }, { MDDS_ASCII("tomorrow"), date_tomorrow }, { MDDS_ASCII("yesterday"), date_yesterday }, }; cond_format_boolean_map::entry cond_format_boolean_entries[] = { { MDDS_ASCII("0"), boolean_false }, { MDDS_ASCII("1"), boolean_true }, { MDDS_ASCII("true"), boolean_false }, { MDDS_ASCII("false"), boolean_true } }; bool parse_boolean_flag(const xml_token_attr_t& attr, bool default_value) { static const cond_format_boolean_map boolean_map(cond_format_boolean_entries, sizeof(cond_format_boolean_entries)/sizeof(cond_format_boolean_entries[0]), boolean_default); xlsx_cond_format_boolean val = boolean_map.find(attr.value.get(), attr.value.size()); switch (val) { case boolean_default: return default_value; break; case boolean_true: return true; break; case boolean_false: return false; break; } return default_value; } struct cfRule_attr_parser : public std::unary_function { cfRule_attr_parser(spreadsheet::iface::import_conditional_format& cond_format): m_cond_format(cond_format), m_above_average(true), m_equal_average(false), m_percent(false), m_bottom(false) { } void operator()(const xml_token_attr_t& attr) { switch(attr.name) { case XML_type: { cond_format_type_map type_map(cond_format_type_entries, sizeof(cond_format_type_entries)/sizeof(cond_format_type_entries[0]), none); m_type = type_map.find(attr.value.get(), attr.value.size()); } break; case XML_dxfId: { // TODO: actually we need to translate between dxf id and xf id size_t dxf_id = to_long(attr.value); m_cond_format.set_xf_id(dxf_id); } break; case XML_aboveAverage: { m_above_average = parse_boolean_flag(attr, true); } break; case XML_percent: m_percent = parse_boolean_flag(attr, false); break; case XML_bottom: m_bottom = parse_boolean_flag(attr, false); break; case XML_operator: { cond_format_operator_map operator_map(cond_format_operator_entries, sizeof(cond_format_operator_entries)/sizeof(cond_format_operator_entries[0]), operator_default); m_operator = operator_map.find(attr.value.get(), attr.value.size()); } break; case XML_text: // do we need to worry about the transient flag here? m_text = attr.value; break; case XML_timePeriod: { cond_format_date_map date_map(cond_format_date_entries, sizeof(cond_format_date_entries)/sizeof(cond_format_date_entries[0]), date_default); m_date = date_map.find(attr.value.get(), attr.value.size()); } break; case XML_rank: // do we need to worry about the transient flag here? m_rank = attr.value; break; case XML_stdDev: // do we need to worry about the transient flag here? m_std_dev = attr.value; break; case XML_equalAverage: m_equal_average = parse_boolean_flag(attr, false); break; default: break; } } void set_type() { switch (m_type) { case expression: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_expression); break; case cellIs: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_expression); switch (m_operator) { case operator_beginsWith: m_cond_format.set_operator(spreadsheet::condition_operator_begins_with); break; case operator_between: m_cond_format.set_operator(spreadsheet::condition_operator_between); break; case operator_containsText: m_cond_format.set_operator(spreadsheet::condition_operator_contains); break; case operator_endsWith: m_cond_format.set_operator(spreadsheet::condition_operator_ends_with); break; case operator_equal: m_cond_format.set_operator(spreadsheet::condition_operator_equal); break; case operator_greaterThan: m_cond_format.set_operator(spreadsheet::condition_operator_greater); break; case operator_greaterThanOrEqual: m_cond_format.set_operator(spreadsheet::condition_operator_greater_equal); break; case operator_lessThan: m_cond_format.set_operator(spreadsheet::condition_operator_less); break; case operator_lessThanOrEqual: m_cond_format.set_operator(spreadsheet::condition_operator_less_equal); break; case operator_notBetween: m_cond_format.set_operator(spreadsheet::condition_operator_not_between); break; case operator_notContains: m_cond_format.set_operator(spreadsheet::condition_operator_not_contains); break; case operator_notEqual: m_cond_format.set_operator(spreadsheet::condition_operator_not_equal); break; default: break; } break; case colorScale: m_cond_format.set_type(spreadsheet::conditional_format_colorscale); break; case dataBar: m_cond_format.set_type(spreadsheet::conditional_format_databar); break; case iconSet: m_cond_format.set_type(spreadsheet::conditional_format_iconset); break; case top10: m_cond_format.set_type(spreadsheet::conditional_format_condition); if (m_bottom) { m_cond_format.set_operator(spreadsheet::condition_operator_bottom_n); } else { m_cond_format.set_operator(spreadsheet::condition_operator_top_n); } m_cond_format.set_formula(m_rank.get(), m_rank.size()); break; case uniqueValues: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_unique); break; case duplicateValues: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_duplicate); break; case containsText: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_contains); m_cond_format.set_formula(m_text.get(), m_text.size()); break; case notContainsText: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_not_contains); m_cond_format.set_formula(m_text.get(), m_text.size()); break; case beginsWith: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_begins_with); m_cond_format.set_formula(m_text.get(), m_text.size()); break; case endsWith: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_ends_with); m_cond_format.set_formula(m_text.get(), m_text.size()); break; case containsBlanks: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_contains_blanks); break; case containsErrors: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_contains_error); break; case notContainsErrors: m_cond_format.set_type(spreadsheet::conditional_format_condition); m_cond_format.set_operator(spreadsheet::condition_operator_contains_no_error); break; case timePeriod: m_cond_format.set_type(spreadsheet::conditional_format_date); switch (m_date) { case date_last7Days: m_cond_format.set_date(orcus::spreadsheet::condition_date_last_7_days); break; case date_lastMonth: m_cond_format.set_date(orcus::spreadsheet::condition_date_last_month); break; case date_lastWeek: m_cond_format.set_date(orcus::spreadsheet::condition_date_last_week); break; case date_nextMonth: m_cond_format.set_date(orcus::spreadsheet::condition_date_next_month); break; case date_thisMonth: m_cond_format.set_date(orcus::spreadsheet::condition_date_this_month); break; case date_thisWeek: m_cond_format.set_date(orcus::spreadsheet::condition_date_this_week); break; case date_today: m_cond_format.set_date(orcus::spreadsheet::condition_date_today); break; case date_tomorrow: m_cond_format.set_date(orcus::spreadsheet::condition_date_tomorrow); break; case date_yesterday: m_cond_format.set_date(orcus::spreadsheet::condition_date_yesterday); break; default: break; } break; case aboveAverage: m_cond_format.set_type(spreadsheet::conditional_format_condition); if (!m_std_dev.empty()) { // TODO: we need a way to mark that as std dev in the interfaces m_cond_format.set_formula(m_std_dev.get(), m_std_dev.size()); } if (m_above_average) { if (m_equal_average) { m_cond_format.set_operator(spreadsheet::condition_operator_above_equal_average); } else { m_cond_format.set_operator(spreadsheet::condition_operator_above_average); } } else { if (m_equal_average) { m_cond_format.set_operator(spreadsheet::condition_operator_below_equal_average); } else { m_cond_format.set_operator(spreadsheet::condition_operator_below_average); } } break; default: break; } } private: spreadsheet::iface::import_conditional_format& m_cond_format; xlsx_cond_format_type m_type; xlsx_cond_format_operator m_operator; xlsx_cond_format_date m_date; bool m_above_average; bool m_equal_average; bool m_percent; bool m_bottom; pstring m_text; pstring m_std_dev; pstring m_rank; }; struct conditional_formatting_attr_parser : public std::unary_function { conditional_formatting_attr_parser(spreadsheet::iface::import_conditional_format& cond_format): m_cond_format(cond_format) { } void operator()(const xml_token_attr_t& attr) { switch (attr.name) { case XML_sqref: m_cond_format.set_range(attr.value.get(), attr.value.size()); break; default: break; } } private: spreadsheet::iface::import_conditional_format& m_cond_format; }; enum xlsx_cond_format_cfvo_type { cfvo_default = 0, cfvo_num, cfvo_percent, cfvo_max, cfvo_min, cfvo_formula, cfvo_percentile }; typedef mdds::sorted_string_map cond_format_cfvo_type_map; cond_format_cfvo_type_map::entry cond_format_cfvo_entries[] = { { MDDS_ASCII("num"), cfvo_num }, { MDDS_ASCII("percent"), cfvo_percent }, { MDDS_ASCII("max"), cfvo_max }, { MDDS_ASCII("min"), cfvo_min }, { MDDS_ASCII("formula"), cfvo_formula }, { MDDS_ASCII("percentile"), cfvo_percentile }, }; } struct cfvo_values { cfvo_values(): m_include_equal(true), m_type(cfvo_default) { } bool m_include_equal; xlsx_cond_format_cfvo_type m_type; pstring m_value; }; namespace { struct cfvo_attr_parser : public std::unary_function { cfvo_attr_parser(string_pool& pool): m_string_pool(pool) { } void operator()(const xml_token_attr_t& attr) { switch (attr.name) { case XML_gte: m_values.m_include_equal = parse_boolean_flag(attr, true); break; case XML_type: { cond_format_cfvo_type_map cfvo_type_map(cond_format_cfvo_entries, sizeof(cond_format_cfvo_entries)/sizeof(cond_format_cfvo_entries[0]), cfvo_default); m_values.m_type = cfvo_type_map.find(attr.value.get(), attr.value.size()); } break; case XML_val: if (attr.transient) { m_values.m_value = m_string_pool.intern(attr.value).first; } else { m_values.m_value = attr.value; } break; default: break; } } cfvo_values get_values() { return m_values; } private: cfvo_values m_values; string_pool& m_string_pool; }; struct data_bar_attr_parser : public std::unary_function { data_bar_attr_parser(): m_show_value(true), m_min_length(10), m_max_length(90) { } void operator()(const xml_token_attr_t& attr) { switch (attr.name) { case XML_showValue: m_show_value = parse_boolean_flag(attr, true); break; case XML_maxLength: m_max_length = to_long(attr.value); break; case XML_minLength: m_min_length = to_long(attr.value); break; default: break; } } void import_data(spreadsheet::iface::import_conditional_format& cond_format) { cond_format.set_show_value(m_show_value); cond_format.set_min_databar_length(m_min_length); cond_format.set_max_databar_length(m_max_length); } private: bool m_show_value; size_t m_min_length; size_t m_max_length; }; struct icon_set_attr_parser : public std::unary_function { icon_set_attr_parser(): m_reverse(false), m_percent(true), m_show_value(true), icon_name("3Arrows") { } void operator()(const xml_token_attr_t& attr) { switch (attr.name) { case XML_iconSet: icon_name = attr.value; break; case XML_percent: m_percent = parse_boolean_flag(attr, true); break; case XML_reverse: m_reverse = parse_boolean_flag(attr, false); break; case XML_showValue: m_show_value = parse_boolean_flag(attr, true); break; default: break; } } void import_data(spreadsheet::iface::import_conditional_format& cond_format) { cond_format.set_show_value(m_show_value); cond_format.set_iconset_reverse(m_reverse); cond_format.set_icon_name(icon_name.get(), icon_name.size()); } private: bool m_reverse; bool m_percent; bool m_show_value; pstring icon_name; }; } xlsx_conditional_format_context::xlsx_conditional_format_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_conditional_format& import_cond_format): xml_context_base(session_cxt, tokens), m_cond_format(import_cond_format) { } xlsx_conditional_format_context::~xlsx_conditional_format_context() { } bool xlsx_conditional_format_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* xlsx_conditional_format_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void xlsx_conditional_format_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void xlsx_conditional_format_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); switch (name) { case XML_conditionalFormatting: { xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); std::for_each(attrs.begin(), attrs.end(), conditional_formatting_attr_parser(m_cond_format)); } break; case XML_cfRule: { xml_element_expected(parent, NS_ooxml_xlsx, XML_conditionalFormatting); cfRule_attr_parser parser = std::for_each(attrs.begin(), attrs.end(), cfRule_attr_parser(m_cond_format)); parser.set_type(); } break; case XML_cfvo: { cfvo_attr_parser parser = std::for_each(attrs.begin(), attrs.end(), cfvo_attr_parser(m_pool)); m_cfvo_values.push_back(parser.get_values()); } break; case XML_dataBar: { xml_element_expected(parent, NS_ooxml_xlsx, XML_cfRule); data_bar_attr_parser parser = std::for_each(attrs.begin(), attrs.end(), data_bar_attr_parser()); parser.import_data(m_cond_format); } break; case XML_iconSet: { xml_element_expected(parent, NS_ooxml_xlsx, XML_cfRule); icon_set_attr_parser parser = std::for_each(attrs.begin(), attrs.end(), icon_set_attr_parser()); parser.import_data(m_cond_format); } break; case XML_color: { color_attr_parser func = for_each(attrs.begin(), attrs.end(), color_attr_parser()); argb_color color; func.get_color(color); m_colors.push_back(color); } break; case XML_formula: break; case XML_colorScale: break; default: warn_unhandled(); } } namespace { void import_cfvo(const cfvo_values& values, spreadsheet::iface::import_conditional_format& cond_format) { if (!values.m_value.empty()) cond_format.set_formula(values.m_value.get(),values.m_value.size()); switch (values.m_type) { case cfvo_num: cond_format.set_condition_type(spreadsheet::condition_type_value); break; case cfvo_percent: cond_format.set_condition_type(spreadsheet::condition_type_percent); break; case cfvo_max: cond_format.set_condition_type(spreadsheet::condition_type_max); break; case cfvo_min: cond_format.set_condition_type(spreadsheet::condition_type_min); break; case cfvo_formula: cond_format.set_condition_type(spreadsheet::condition_type_formula); break; case cfvo_percentile: cond_format.set_condition_type(spreadsheet::condition_type_percentile); break; default: break; } } } bool xlsx_conditional_format_context::end_element(xmlns_id_t ns, xml_token_t name) { switch (name) { case XML_conditionalFormatting: { m_cond_format.commit_format(); } break; case XML_cfRule: { m_cond_format.commit_entry(); m_cfvo_values.clear(); m_colors.clear(); } break; case XML_cfvo: break; case XML_color: break; case XML_formula: { m_cond_format.set_formula(m_cur_str.get(), m_cur_str.size()); m_cond_format.commit_condition(); } break; case XML_dataBar: { if (m_colors.size() != 1) throw general_error("invalid dataBar record"); if (m_cfvo_values.size() != 2) throw general_error("invalid dataBar record"); argb_color& color = m_colors[0]; m_cond_format.set_databar_color_positive(color.alpha, color.red, color.green, color.blue); m_cond_format.set_databar_color_negative(color.alpha, color.red, color.green, color.blue); for (std::vector::const_iterator itr = m_cfvo_values.begin(); itr != m_cfvo_values.end(); ++itr) { import_cfvo(*itr, m_cond_format); m_cond_format.commit_condition(); } } break; case XML_iconSet: if (m_cfvo_values.size() < 2) throw general_error("invalid iconSet record"); for (std::vector::const_iterator itr = m_cfvo_values.begin(); itr != m_cfvo_values.end(); ++itr) { import_cfvo(*itr, m_cond_format); m_cond_format.commit_condition(); } break; case XML_colorScale: { if (m_cfvo_values.size() < 2) throw general_error("invalid colorScale record"); if (m_cfvo_values.size() != m_colors.size()) throw general_error("invalid colorScale record"); std::vector::const_iterator itrColor = m_colors.begin(); for (std::vector::const_iterator itr = m_cfvo_values.begin(); itr != m_cfvo_values.end(); ++itr, ++itrColor) { import_cfvo(*itr, m_cond_format); m_cond_format.set_color(itrColor->alpha, itrColor->red, itrColor->green, itrColor->blue); m_cond_format.commit_condition(); } } break; default: ; } m_cur_str.clear(); return pop_stack(ns, name); } void xlsx_conditional_format_context::characters(const pstring& str, bool transient) { m_cur_str = str; if (transient) m_cur_str = m_pool.intern(m_cur_str).first; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_session_data.cpp0000644000175000017500000000300112535701143020652 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_session_data.hpp" namespace orcus { xlsx_session_data::formula::formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, const std::string& _exp) : sheet(_sheet), row(_row), column(_column), exp(_exp), array(false) {} xlsx_session_data::formula::formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, const std::string& _exp, const std::string& _range) : sheet(_sheet), row(_row), column(_column), exp(_exp), range(_range), array(true) {} xlsx_session_data::shared_formula::shared_formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, size_t _identifier) : sheet(_sheet), row(_row), column(_column), identifier(_identifier), master(false) {} xlsx_session_data::shared_formula::shared_formula( spreadsheet::sheet_t _sheet, spreadsheet::row_t _row, spreadsheet::col_t _column, size_t _identifier, const std::string& _formula, const std::string& _range) : sheet(_sheet), row(_row), column(_column), identifier(_identifier), formula(_formula), range(_range), master(true) {} xlsx_session_data::~xlsx_session_data() { } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_token_constants.inl0000644000175000017500000002300512535701143022233 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const xml_token_t XML_AllowBlank = 1; const xml_token_t XML_AnswerR = 2; const xml_token_t XML_Area = 3; const xml_token_t XML_ArrowShapeA = 4; const xml_token_t XML_ArrowShapeB = 5; const xml_token_t XML_ArrowShapeC = 6; const xml_token_t XML_Attribute = 7; const xml_token_t XML_Attributes = 8; const xml_token_t XML_Author = 9; const xml_token_t XML_AutoScale = 10; const xml_token_t XML_Back = 11; const xml_token_t XML_Bold = 12; const xml_token_t XML_Bottom = 13; const xml_token_t XML_Calculation = 14; const xml_token_t XML_Cell = 15; const xml_token_t XML_CellComment = 16; const xml_token_t XML_Cells = 17; const xml_token_t XML_CellsStr = 18; const xml_token_t XML_Col = 19; const xml_token_t XML_ColInfo = 20; const xml_token_t XML_Collapsed = 21; const xml_token_t XML_Color = 22; const xml_token_t XML_Cols = 23; const xml_token_t XML_Comment = 24; const xml_token_t XML_Condition = 25; const xml_token_t XML_Constr = 26; const xml_token_t XML_Content = 27; const xml_token_t XML_Count = 28; const xml_token_t XML_CursorCol = 29; const xml_token_t XML_CursorRow = 30; const xml_token_t XML_DateConvention = 31; const xml_token_t XML_DefaultSizePts = 32; const xml_token_t XML_Diagonal = 33; const xml_token_t XML_Direction = 34; const xml_token_t XML_Discr = 35; const xml_token_t XML_DisplayFormulas = 36; const xml_token_t XML_DisplayOutlines = 37; const xml_token_t XML_EnableIteration = 38; const xml_token_t XML_Epoch = 39; const xml_token_t XML_ExprConvention = 40; const xml_token_t XML_ExprID = 41; const xml_token_t XML_Expression0 = 42; const xml_token_t XML_Expression1 = 43; const xml_token_t XML_Field = 44; const xml_token_t XML_FillColor = 45; const xml_token_t XML_Filter = 46; const xml_token_t XML_Filters = 47; const xml_token_t XML_FloatDigits = 48; const xml_token_t XML_FloatRadix = 49; const xml_token_t XML_Font = 50; const xml_token_t XML_Footer = 51; const xml_token_t XML_Fore = 52; const xml_token_t XML_Format = 53; const xml_token_t XML_FreezePanes = 54; const xml_token_t XML_FrozenTopLeft = 55; const xml_token_t XML_Full = 56; const xml_token_t XML_Geometry = 57; const xml_token_t XML_GogObject = 58; const xml_token_t XML_GridColor = 59; const xml_token_t XML_HAlign = 60; const xml_token_t XML_HardSize = 61; const xml_token_t XML_Header = 62; const xml_token_t XML_Height = 63; const xml_token_t XML_Hidden = 64; const xml_token_t XML_HideColHeader = 65; const xml_token_t XML_HideGrid = 66; const xml_token_t XML_HideRowHeader = 67; const xml_token_t XML_HideZero = 68; const xml_token_t XML_HyperLink = 69; const xml_token_t XML_Inc = 70; const xml_token_t XML_Indent = 71; const xml_token_t XML_Index = 72; const xml_token_t XML_Input = 73; const xml_token_t XML_InputMessage = 74; const xml_token_t XML_Inputs = 75; const xml_token_t XML_Italic = 76; const xml_token_t XML_IterationTolerance = 77; const xml_token_t XML_Label = 78; const xml_token_t XML_LabelFormat = 79; const xml_token_t XML_Lcol = 80; const xml_token_t XML_Left = 81; const xml_token_t XML_LimitsR = 82; const xml_token_t XML_Locked = 83; const xml_token_t XML_Lrow = 84; const xml_token_t XML_Major = 85; const xml_token_t XML_ManualRecalc = 86; const xml_token_t XML_MarginA = 87; const xml_token_t XML_MarginB = 88; const xml_token_t XML_Margins = 89; const xml_token_t XML_Max = 90; const xml_token_t XML_MaxCol = 91; const xml_token_t XML_MaxIter = 92; const xml_token_t XML_MaxIterations = 93; const xml_token_t XML_MaxRow = 94; const xml_token_t XML_MaxTime = 95; const xml_token_t XML_Merge = 96; const xml_token_t XML_MergedRegions = 97; const xml_token_t XML_Message = 98; const xml_token_t XML_Middle = 99; const xml_token_t XML_Min = 100; const xml_token_t XML_Minor = 101; const xml_token_t XML_ModelType = 102; const xml_token_t XML_Name = 103; const xml_token_t XML_Names = 104; const xml_token_t XML_No = 105; const xml_token_t XML_NonNeg = 106; const xml_token_t XML_ObjectAnchorType = 107; const xml_token_t XML_ObjectBound = 108; const xml_token_t XML_ObjectOffset = 109; const xml_token_t XML_Objects = 110; const xml_token_t XML_Op0 = 111; const xml_token_t XML_Op1 = 112; const xml_token_t XML_Operator = 113; const xml_token_t XML_Orient = 114; const xml_token_t XML_OutlineColor = 115; const xml_token_t XML_OutlineLevel = 116; const xml_token_t XML_OutlineSymbolsBelow = 117; const xml_token_t XML_OutlineSymbolsRight = 118; const xml_token_t XML_Output = 119; const xml_token_t XML_Page = 120; const xml_token_t XML_PatternColor = 121; const xml_token_t XML_PerformR = 122; const xml_token_t XML_Points = 123; const xml_token_t XML_PrefUnit = 124; const xml_token_t XML_Print = 125; const xml_token_t XML_PrintInformation = 126; const xml_token_t XML_ProblemType = 127; const xml_token_t XML_ProgramR = 128; const xml_token_t XML_Protected = 129; const xml_token_t XML_RTL_Layout = 130; const xml_token_t XML_Rcol = 131; const xml_token_t XML_Rev_Diagonal = 132; const xml_token_t XML_Right = 133; const xml_token_t XML_Rotation = 134; const xml_token_t XML_Row = 135; const xml_token_t XML_RowInfo = 136; const xml_token_t XML_Rows = 137; const xml_token_t XML_Rrow = 138; const xml_token_t XML_Scale = 139; const xml_token_t XML_Scenario = 140; const xml_token_t XML_Scenarios = 141; const xml_token_t XML_Script = 142; const xml_token_t XML_SelectedTab = 143; const xml_token_t XML_Selection = 144; const xml_token_t XML_Selections = 145; const xml_token_t XML_SensitivityR = 146; const xml_token_t XML_Shade = 147; const xml_token_t XML_Sheet = 148; const xml_token_t XML_SheetLayout = 149; const xml_token_t XML_SheetName = 150; const xml_token_t XML_SheetNameIndex = 151; const xml_token_t XML_SheetObjectBonobo = 152; const xml_token_t XML_SheetObjectFilled = 153; const xml_token_t XML_SheetObjectGraph = 154; const xml_token_t XML_SheetObjectImage = 155; const xml_token_t XML_SheetWidgetButton = 156; const xml_token_t XML_SheetWidgetCheckbox = 157; const xml_token_t XML_SheetWidgetCombo = 158; const xml_token_t XML_SheetWidgetFrame = 159; const xml_token_t XML_SheetWidgetLabel = 160; const xml_token_t XML_SheetWidgetList = 161; const xml_token_t XML_SheetWidgetScrollbar = 162; const xml_token_t XML_SheetWidgetSlider = 163; const xml_token_t XML_SheetWidgetSpinbutton = 164; const xml_token_t XML_SheetWidgetToggleButton = 165; const xml_token_t XML_Sheets = 166; const xml_token_t XML_ShowIter = 167; const xml_token_t XML_ShrinkToFit = 168; const xml_token_t XML_Solver = 169; const xml_token_t XML_StrikeThrough = 170; const xml_token_t XML_Style = 171; const xml_token_t XML_StyleBorder = 172; const xml_token_t XML_StyleRegion = 173; const xml_token_t XML_Styles = 174; const xml_token_t XML_TabColor = 175; const xml_token_t XML_TabTextColor = 176; const xml_token_t XML_TargetCol = 177; const xml_token_t XML_TargetRow = 178; const xml_token_t XML_Text = 179; const xml_token_t XML_TextFormat = 180; const xml_token_t XML_Title = 181; const xml_token_t XML_Top = 182; const xml_token_t XML_TopLeft = 183; const xml_token_t XML_Type = 184; const xml_token_t XML_UIData = 185; const xml_token_t XML_Underline = 186; const xml_token_t XML_UnfrozenTopLeft = 187; const xml_token_t XML_Unit = 188; const xml_token_t XML_UseDropdown = 189; const xml_token_t XML_VAlign = 190; const xml_token_t XML_Validation = 191; const xml_token_t XML_Value = 192; const xml_token_t XML_Value0 = 193; const xml_token_t XML_Value1 = 194; const xml_token_t XML_ValueFormat = 195; const xml_token_t XML_ValueType = 196; const xml_token_t XML_ValueType0 = 197; const xml_token_t XML_ValueType1 = 198; const xml_token_t XML_Version = 199; const xml_token_t XML_Visibility = 200; const xml_token_t XML_Width = 201; const xml_token_t XML_Workbook = 202; const xml_token_t XML_WrapText = 203; const xml_token_t XML_Zoom = 204; const xml_token_t XML_bottom = 205; const xml_token_t XML_break = 206; const xml_token_t XML_cols = 207; const xml_token_t XML_count = 208; const xml_token_t XML_crop_bottom = 209; const xml_token_t XML_crop_left = 210; const xml_token_t XML_crop_right = 211; const xml_token_t XML_crop_top = 212; const xml_token_t XML_data = 213; const xml_token_t XML_dimension = 214; const xml_token_t XML_do_not_print = 215; const xml_token_t XML_draft = 216; const xml_token_t XML_endCol = 217; const xml_token_t XML_endRow = 218; const xml_token_t XML_even_if_only_styles = 219; const xml_token_t XML_footer = 220; const xml_token_t XML_grid = 221; const xml_token_t XML_hPageBreaks = 222; const xml_token_t XML_hcenter = 223; const xml_token_t XML_header = 224; const xml_token_t XML_id = 225; const xml_token_t XML_image_type = 226; const xml_token_t XML_items = 227; const xml_token_t XML_left = 228; const xml_token_t XML_monochrome = 229; const xml_token_t XML_name = 230; const xml_token_t XML_order = 231; const xml_token_t XML_orientation = 232; const xml_token_t XML_paper = 233; const xml_token_t XML_percentage = 234; const xml_token_t XML_pos = 235; const xml_token_t XML_position = 236; const xml_token_t XML_print_to_uri = 237; const xml_token_t XML_print_range = 238; const xml_token_t XML_property = 239; const xml_token_t XML_repeat_left = 240; const xml_token_t XML_repeat_top = 241; const xml_token_t XML_right = 242; const xml_token_t XML_role = 243; const xml_token_t XML_rows = 244; const xml_token_t XML_size_bytes = 245; const xml_token_t XML_startCol = 246; const xml_token_t XML_startRow = 247; const xml_token_t XML_target = 248; const xml_token_t XML_tip = 249; const xml_token_t XML_titles = 250; const xml_token_t XML_top = 251; const xml_token_t XML_type = 252; const xml_token_t XML_vPageBreaks = 253; const xml_token_t XML_value = 254; const xml_token_t XML_vcenter = 255; liborcus-0.9.2/src/liborcus/gnumeric_sheet_context.cpp0000644000175000017500000006137012535701143021702 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_sheet_context.hpp" #include "gnumeric_cell_context.hpp" #include "gnumeric_token_constants.hpp" #include "gnumeric_namespace_types.hpp" #include "gnumeric_helper.hpp" #include "orcus/global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "gnumeric_helper.hpp" namespace orcus { namespace { class gnumeric_style_region_attr_parser : public std::unary_function { public: gnumeric_style_region_attr_parser(gnumeric_style_region& style_region_data): m_style_region_data(style_region_data) {} void operator() (const xml_token_attr_t& attr) { switch(attr.name) { case XML_startCol: { size_t n = atoi(attr.value.get()); m_style_region_data.start_col = n; } break; case XML_startRow: { size_t n = atoi(attr.value.get()); m_style_region_data.start_row = n; } break; case XML_endCol: { size_t n = atoi(attr.value.get()); m_style_region_data.end_col = n; } break; case XML_endRow: { size_t n = atoi(attr.value.get()); m_style_region_data.end_row = n; } break; default: ; } } private: gnumeric_style_region& m_style_region_data; }; class gnumeric_font_attr_parser : public std::unary_function { public: gnumeric_font_attr_parser(spreadsheet::iface::import_styles& styles) : m_styles(styles) {} void operator() (const xml_token_attr_t& attr) { switch(attr.name) { case XML_Unit: { double n = atoi(attr.value.get()); m_styles.set_font_size(n); } break; case XML_Bold: { bool b = atoi(attr.value.get()) != 0; m_styles.set_font_bold(b); } break; case XML_Italic: { bool b = atoi(attr.value.get()) != 0; m_styles.set_font_italic(b); } break; case XML_Underline: { int n = atoi(attr.value.get()); switch (n) { case 0: m_styles.set_font_underline(spreadsheet::underline_none); break; case 1: m_styles.set_font_underline(spreadsheet::underline_single); break; case 2: m_styles.set_font_underline(spreadsheet::underline_double); break; default: ; } } break; } } private: spreadsheet::iface::import_styles& m_styles; }; class gnumeric_style_attr_parser : public std::unary_function { public: gnumeric_style_attr_parser(spreadsheet::iface::import_styles& styles, gnumeric_color& front_color) : m_styles(styles), m_fill(false), m_protection(false), m_front_color(front_color) {} void operator() (const xml_token_attr_t& attr) { switch(attr.name) { case XML_Fore: { spreadsheet::color_elem_t red, green, blue; gnumeric_helper::parse_RGB_color_attribute(red, green, blue, attr.value); m_styles.set_fill_fg_color(0, red, green, blue); m_fill = true; m_front_color.red = red; m_front_color.blue = blue; m_front_color.green = green; } break; case XML_Back: { spreadsheet::color_elem_t red, green, blue; gnumeric_helper::parse_RGB_color_attribute(red, green, blue, attr.value); m_styles.set_fill_bg_color(0, red, green, blue); m_fill = true; } break; case XML_Hidden: { bool b = atoi(attr.value.get()); m_styles.set_cell_hidden(b); m_protection = true; } break; case XML_Locked: { bool b = atoi(attr.value.get()); m_styles.set_cell_locked(b); m_protection = true; } break; case XML_Format: { if (attr.value != "General") { m_styles.set_number_format_code(attr.value.get(), attr.value.size()); size_t index = m_styles.commit_number_format(); m_styles.set_xf_number_format(index); } } break; case XML_HAlign: { orcus::spreadsheet::hor_alignment_t hor_alignment = orcus::spreadsheet::hor_alignment_unknown; if (attr.value == "GNM_HALIGN_CENTER") hor_alignment = orcus::spreadsheet::hor_alignment_center; else if (attr.value == "GNM_HALIGN_RIGHT") hor_alignment = orcus::spreadsheet::hor_alignment_right; else if (attr.value == "GNM_HALIGN_LEFT") hor_alignment = orcus::spreadsheet::hor_alignment_left; else if (attr.value == "GNM_HALIGN_JUSTIFY") hor_alignment = orcus::spreadsheet::hor_alignment_justified; else if (attr.value == "GNM_HALIGN_DISTRIBUTED") hor_alignment = orcus::spreadsheet::hor_alignment_distributed; else if (attr.value == "GNM_HALIGN_FILL") hor_alignment = orcus::spreadsheet::hor_alignment_filled; if (hor_alignment != orcus::spreadsheet::hor_alignment_unknown) m_styles.set_xf_apply_alignment(true); m_styles.set_xf_horizontal_alignment(hor_alignment); } break; case XML_VAlign: { orcus::spreadsheet::ver_alignment_t ver_alignment = orcus::spreadsheet::ver_alignment_unknown; if (attr.value == "GNM_VALIGN_BOTTOM") ver_alignment = orcus::spreadsheet::ver_alignment_bottom; else if (attr.value == "GNM_VALIGN_TOP") ver_alignment = orcus::spreadsheet::ver_alignment_top; else if (attr.value == "GNM_VALIGN_CENTER") ver_alignment = orcus::spreadsheet::ver_alignment_middle; else if (attr.value == "GNM_VALIGN_JUSTIFY") ver_alignment = orcus::spreadsheet::ver_alignment_justified; else if (attr.value == "GNM_VALIGN_DISTRIBUTED") ver_alignment = orcus::spreadsheet::ver_alignment_distributed; if (ver_alignment != orcus::spreadsheet::ver_alignment_unknown) m_styles.set_xf_apply_alignment(true); m_styles.set_xf_vertical_alignment(ver_alignment); } break; } } bool is_protection_set() const { return m_protection; } bool is_fill_set() const { return m_fill; } private: spreadsheet::iface::import_styles& m_styles; bool m_fill; bool m_protection; gnumeric_color& m_front_color; }; spreadsheet::condition_operator_t get_condition_operator(int val) { switch(val) { case 0: return spreadsheet::condition_operator_between; case 1: return spreadsheet::condition_operator_not_between; case 2: return spreadsheet::condition_operator_equal; case 3: return spreadsheet::condition_operator_not_equal; case 4: return spreadsheet::condition_operator_greater; case 5: return spreadsheet::condition_operator_less; case 6: return spreadsheet::condition_operator_greater_equal; case 7: return spreadsheet::condition_operator_less_equal; case 8: return spreadsheet::condition_operator_expression; case 9: case 10: case 11: case 12: case 13: case 14: case 15: break; case 16: return spreadsheet::condition_operator_contains; case 17: return spreadsheet::condition_operator_not_contains; case 18: return spreadsheet::condition_operator_begins_with; case 19: break; case 20: return spreadsheet::condition_operator_ends_with; case 21: break; case 22: return spreadsheet::condition_operator_contains_error; case 23: return spreadsheet::condition_operator_contains_no_error; default: break; } return orcus::spreadsheet::condition_operator_unknown; } class gnumeric_condition_attr_parser : public std::unary_function { public: gnumeric_condition_attr_parser(spreadsheet::iface::import_conditional_format* cond_format): m_cond_format(cond_format) {} void operator()(const xml_token_attr_t& attr) { switch(attr.name) { case XML_Operator: { int val = atoi(attr.value.get()); spreadsheet::condition_operator_t op = get_condition_operator(val); m_cond_format->set_operator(op); } break; default: break; } } private: spreadsheet::iface::import_conditional_format* m_cond_format; }; class gnumeric_col_row_info : public std::unary_function { public: gnumeric_col_row_info() : m_position(0), m_num_repeated(1), m_size(0.0), m_hidden(false) {} void operator()(const xml_token_attr_t& attr) { switch (attr.name) { case XML_No: { size_t i = atoi(attr.value.get()); m_position = i; } break; case XML_Unit: { double n = atof(attr.value.get()); m_size = n; } break; case XML_Count: { size_t i = atoi(attr.value.get()); m_num_repeated = i; } break; case XML_Hidden: { bool b = atoi(attr.value.get()) != 0; m_hidden = b; } } } size_t get_position() const { return m_position; } size_t get_col_row_repeated() const { return m_num_repeated; } double get_size() const { return m_size; } bool is_hidden() const { return m_hidden; } private: size_t m_position; size_t m_num_repeated; double m_size; bool m_hidden; }; class gnumeric_autofilter_attr_parser : public std::unary_function { public: gnumeric_autofilter_attr_parser(spreadsheet::iface::import_auto_filter& auto_filter): m_auto_filter(auto_filter) {} void operator() (const xml_token_attr_t& attr) { switch(attr.name) { case XML_Area: m_auto_filter.set_range(attr.value.get(), attr.value.size()); break; default: ; } } private: spreadsheet::iface::import_auto_filter& m_auto_filter; }; enum gnumeric_filter_field_op_t { filter_equal, filter_greaterThan, filter_lessThan, filter_greaterThanEqual, filter_lessThanEqual, filter_notEqual, filter_op_invalid }; enum gnumeric_filter_field_type_t { filter_expr, filter_blanks, filter_nonblanks, filter_type_invalid }; class gnumeric_autofilter_field_attr_parser : public std::unary_function { public: gnumeric_autofilter_field_attr_parser(spreadsheet::iface::import_auto_filter& auto_filter): m_auto_filter(auto_filter), m_filter_field_type(filter_type_invalid), m_filter_op(filter_op_invalid) {} void operator() (const xml_token_attr_t& attr) { switch(attr.name) { case XML_Index: { spreadsheet::col_t col = atoi(attr.value.get()); m_auto_filter.set_column(col); } break; case XML_Type: { if (attr.value == "expr") m_filter_field_type = filter_expr; else if (attr.value == "blanks") m_filter_field_type = filter_blanks; else if (attr.value == "nonblanks") m_filter_field_type = filter_nonblanks; } break; case XML_Op0: { if (attr.value == "eq") m_filter_op = filter_equal; else if (attr.value == "gt") m_filter_op = filter_greaterThan; else if (attr.value == "lt") m_filter_op = filter_lessThan; else if (attr.value == "gte") m_filter_op = filter_greaterThanEqual; else if (attr.value == "lte") m_filter_op = filter_lessThanEqual; else if (attr.value == "ne") m_filter_op = filter_notEqual; } break; case XML_Value0: { m_filter_value_type = attr.value; } break; case XML_ValueType0: { m_filter_value = attr.value; } break; default: ; } } void finalize_filter_import() { switch (m_filter_field_type) { case filter_expr: import_expr(); break; case filter_type_invalid: break; default: break; } } private: void import_expr() { // only equal supported in API yet if (m_filter_op != filter_equal) return; // import condition for integer (30), double(40) and string (60) if (m_filter_value_type == "30" || m_filter_value_type == "40" || m_filter_value_type == "60" ) { m_auto_filter.append_column_match_value(m_filter_value.get(), m_filter_value.size()); } } spreadsheet::iface::import_auto_filter& m_auto_filter; gnumeric_filter_field_type_t m_filter_field_type; gnumeric_filter_field_op_t m_filter_op; pstring m_filter_value_type; pstring m_filter_value; }; } gnumeric_sheet_context::gnumeric_sheet_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory) : xml_context_base(session_cxt, tokens), mp_factory(factory), mp_sheet(NULL), mp_auto_filter(NULL) { } gnumeric_sheet_context::~gnumeric_sheet_context() { } bool gnumeric_sheet_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { if (ns == NS_gnumeric_gnm && name == XML_Cells) return false; return true; } xml_context_base* gnumeric_sheet_context::create_child_context(xmlns_id_t ns, xml_token_t name) { if (ns == NS_gnumeric_gnm && name == XML_Cells) { mp_child.reset(new gnumeric_cell_context(get_session_context(), get_tokens(), mp_factory, mp_sheet)); mp_child->transfer_common(*this); return mp_child.get(); } return NULL; } void gnumeric_sheet_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void gnumeric_sheet_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_gnumeric_gnm) { switch (name) { case XML_Font: start_font(attrs); break; case XML_Style: start_style(attrs); break; case XML_StyleRegion: start_style_region(attrs); break; case XML_ColInfo: start_col(attrs); break; case XML_RowInfo: start_row(attrs); break; case XML_Filters: // don't need any special handling break; case XML_Filter: { mp_auto_filter = mp_sheet->get_auto_filter(); if (mp_auto_filter) { std::for_each(attrs.begin(), attrs.end(), gnumeric_autofilter_attr_parser( *mp_auto_filter)); } } break; case XML_Field: { assert(parent.first == NS_gnumeric_gnm && parent.second == XML_Filter); if (mp_auto_filter) { gnumeric_autofilter_field_attr_parser parser = std::for_each(attrs.begin(), attrs.end(), gnumeric_autofilter_field_attr_parser( *mp_auto_filter)); parser.finalize_filter_import(); } } break; case XML_Condition: { if (!mp_region_data->contains_conditional_format) { mp_region_data->contains_conditional_format = true; end_style(false); } start_condition(attrs); } break; case XML_Expression0: case XML_Expression1: break; default: ; } } } bool gnumeric_sheet_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_gnumeric_gnm) { switch(name) { case XML_Name: { xml_token_pair_t parent = get_parent_element(); if(parent.first == NS_gnumeric_gnm && parent.second == XML_Sheet) end_table(); else warn_unhandled(); } break; case XML_Font: end_font(); break; case XML_Style: { xml_token_pair_t parent = get_parent_element(); if (parent.second == XML_Condition) { end_style(true); } else { // The conditional format entry contains a mandatory style element // Therefore when we have a conditional format the end_style method // is already called in start_element of the XML_Condition case. if (!mp_region_data->contains_conditional_format) { end_style(false); } } } break; case XML_Filter: if (mp_auto_filter) mp_auto_filter->commit(); break; case XML_Field: if (mp_auto_filter) mp_auto_filter->commit_column(); break; case XML_StyleRegion: end_style_region(); break; case XML_Condition: end_condition(); break; case XML_Expression0: case XML_Expression1: end_expression(); break; default: ; } } return pop_stack(ns, name); } void gnumeric_sheet_context::characters(const pstring& str, bool transient) { chars = str; } void gnumeric_sheet_context::start_font(const xml_attrs_t& attrs) { for_each(attrs.begin(), attrs.end(), gnumeric_font_attr_parser(*mp_factory->get_styles())); } void gnumeric_sheet_context::start_col(const xml_attrs_t& attrs) { gnumeric_col_row_info col_info = for_each(attrs.begin(), attrs.end(), gnumeric_col_row_info()); spreadsheet::iface::import_sheet_properties* p_sheet_props = mp_sheet->get_sheet_properties(); double col_size = col_info.get_size(); bool hidden = col_info.is_hidden(); for (size_t i = col_info.get_position(), n = col_info.get_col_row_repeated() + col_info.get_position(); i < n; ++i) { p_sheet_props->set_column_width(i, col_size, length_unit_point); p_sheet_props->set_column_hidden(i, hidden); } } void gnumeric_sheet_context::start_row(const xml_attrs_t& attrs) { gnumeric_col_row_info row_info = for_each(attrs.begin(), attrs.end(), gnumeric_col_row_info()); spreadsheet::iface::import_sheet_properties* p_sheet_props = mp_sheet->get_sheet_properties(); double row_size = row_info.get_size(); bool hidden = row_info.is_hidden(); for (size_t i = row_info.get_position(), n = row_info.get_col_row_repeated() + row_info.get_position(); i < n; ++i) { p_sheet_props->set_row_height(i, row_size, length_unit_point); p_sheet_props->set_row_hidden(i, hidden); } } void gnumeric_sheet_context::start_style(const xml_attrs_t& attrs) { const gnumeric_style_attr_parser& attr_parser = for_each(attrs.begin(), attrs.end(), gnumeric_style_attr_parser(*mp_factory->get_styles(), front_color)); spreadsheet::iface::import_styles& styles = *mp_factory->get_styles(); if (attr_parser.is_fill_set()) { size_t fill_id = styles.commit_fill(); styles.set_xf_fill(fill_id); } if (attr_parser.is_protection_set()) { size_t protection_id = styles.commit_cell_protection(); styles.set_xf_protection(protection_id); } } void gnumeric_sheet_context::start_style_region(const xml_attrs_t& attrs) { mp_region_data.reset(new gnumeric_style_region()); for_each(attrs.begin(), attrs.end(), gnumeric_style_region_attr_parser(*mp_region_data)); } void gnumeric_sheet_context::start_condition(const xml_attrs_t& attrs) { spreadsheet::iface::import_conditional_format* cond_format = mp_sheet->get_conditional_format(); if (cond_format) { for_each(attrs.begin(), attrs.end(), gnumeric_condition_attr_parser(cond_format)); } } void gnumeric_sheet_context::end_table() { mp_sheet = mp_factory->append_sheet(chars.get(), chars.size()); } void gnumeric_sheet_context::end_font() { spreadsheet::iface::import_styles& styles = *mp_factory->get_styles(); styles.set_font_color(0, front_color.red, front_color.green, front_color.blue); styles.set_font_name(chars.get(), chars.size()); size_t font_id = styles.commit_font(); styles.set_xf_font(font_id); } void gnumeric_sheet_context::end_style(bool conditional_format) { spreadsheet::iface::import_styles& styles = *mp_factory->get_styles(); size_t id = styles.commit_cell_xf(); if (!conditional_format) { mp_region_data->xf_id = id; } else { spreadsheet::iface::import_conditional_format* cond_format = mp_sheet->get_conditional_format(); if (cond_format) { cond_format->set_xf_id(id); } } } void gnumeric_sheet_context::end_style_region() { mp_sheet->set_format(mp_region_data->start_row, mp_region_data->start_col, mp_region_data->end_row, mp_region_data->end_col, mp_region_data->xf_id); if (mp_region_data->contains_conditional_format) { spreadsheet::iface::import_conditional_format* cond_format = mp_sheet->get_conditional_format(); if (cond_format) { cond_format->set_range(mp_region_data->start_row, mp_region_data->start_col, mp_region_data->end_row, mp_region_data->end_col); cond_format->commit_format(); } } mp_region_data.reset(); } void gnumeric_sheet_context::end_condition() { spreadsheet::iface::import_conditional_format* cond_format = mp_sheet->get_conditional_format(); if (cond_format) { cond_format->commit_entry(); } } void gnumeric_sheet_context::end_expression() { spreadsheet::iface::import_conditional_format* cond_format = mp_sheet->get_conditional_format(); if (cond_format) { cond_format->set_formula(chars.get(), chars.size()); cond_format->commit_condition(); } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_simple_stream_handler.cpp0000644000175000017500000000243412535701143022352 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_simple_stream_handler.hpp" #include "xml_context_base.hpp" #include namespace orcus { xml_simple_stream_handler::xml_simple_stream_handler(xml_context_base* context) : xml_stream_handler(context) { assert(context); } xml_simple_stream_handler::~xml_simple_stream_handler() { } xml_context_base& xml_simple_stream_handler::get_context() { return get_current_context(); } void xml_simple_stream_handler::start_document() { } void xml_simple_stream_handler::end_document() { } void xml_simple_stream_handler::start_element(const sax_token_parser_element& elem) { get_current_context().start_element(elem.ns, elem.name, elem.attrs); } void xml_simple_stream_handler::end_element(const sax_token_parser_element& elem) { get_current_context().end_element(elem.ns, elem.name); } void xml_simple_stream_handler::characters(const pstring& str, bool transient) { get_current_context().characters(str, transient); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/css_selector.cpp0000644000175000017500000001415012535701143017617 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/css_selector.hpp" #include namespace orcus { css_simple_selector_t::css_simple_selector_t() : pseudo_classes(0) {} void css_simple_selector_t::clear() { name.clear(); id.clear(); classes.clear(); pseudo_classes = 0; } bool css_simple_selector_t::empty() const { return name.empty() && id.empty() && classes.empty() && !pseudo_classes; } bool css_simple_selector_t::operator== (const css_simple_selector_t& r) const { if (name != r.name) return false; if (id != r.id) return false; if (classes != r.classes) return false; return pseudo_classes == r.pseudo_classes; } bool css_simple_selector_t::operator!= (const css_simple_selector_t& r) const { return !operator==(r); } size_t css_simple_selector_t::hash::operator() (const css_simple_selector_t& ss) const { static pstring::hash hasher; size_t val = hasher(ss.name); val += hasher(ss.id); classes_type::const_iterator it = ss.classes.begin(), ite = ss.classes.end(); for (; it != ite; ++it) val += hasher(*it); val += ss.pseudo_classes; return val; } bool css_chained_simple_selector_t::operator== (const css_chained_simple_selector_t& r) const { return combinator == r.combinator && simple_selector == r.simple_selector; } css_chained_simple_selector_t::css_chained_simple_selector_t() : combinator(css::combinator_descendant) {} css_chained_simple_selector_t::css_chained_simple_selector_t(const css_simple_selector_t& ss) : combinator(css::combinator_descendant), simple_selector(ss) {} css_chained_simple_selector_t::css_chained_simple_selector_t( css::combinator_t op, const css_simple_selector_t& ss) : combinator(op), simple_selector(ss) {} void css_selector_t::clear() { first.clear(); chained.clear(); } bool css_selector_t::operator== (const css_selector_t& r) const { return first == r.first && chained == r.chained; } css_property_value_t::css_property_value_t() : type(css::property_value_none), str(NULL) {} css_property_value_t::css_property_value_t(const css_property_value_t& r) : type(r.type) { switch (type) { case css::property_value_rgb: case css::property_value_rgba: red = r.red; green = r.green; blue = r.blue; alpha = r.alpha; break; case css::property_value_hsl: case css::property_value_hsla: hue = r.hue; saturation = r.saturation; lightness = r.lightness; alpha = r.alpha; break; case css::property_value_string: case css::property_value_url: str = r.str; length = r.length; break; case css::property_value_none: default: ; } } css_property_value_t::css_property_value_t(const pstring& str) : type(css::property_value_string), str(str.get()), length(str.size()) {} css_property_value_t& css_property_value_t::operator= (const css_property_value_t& r) { if (&r != this) std::memcpy(this, &r, sizeof(css_property_value_t)); return *this; } void css_property_value_t::swap(css_property_value_t& r) { unsigned char buf[sizeof(css_property_value_t)]; std::memcpy(buf, this, sizeof(css_property_value_t)); std::memcpy(this, &r, sizeof(css_property_value_t)); std::memcpy(&r, buf, sizeof(css_property_value_t)); } std::ostream& operator<< (std::ostream& os, const css_simple_selector_t& v) { os << v.name; css_simple_selector_t::classes_type::const_iterator it = v.classes.begin(), ite = v.classes.end(); for (; it != ite; ++it) os << '.' << *it; if (!v.id.empty()) os << '#' << v.id; if (v.pseudo_classes) os << css::pseudo_class_to_string(v.pseudo_classes); return os; } std::ostream& operator<< (std::ostream& os, const css_selector_t& v) { os << v.first; css_selector_t::chained_type::const_iterator it = v.chained.begin(), ite = v.chained.end(); for (; it != ite; ++it) { const css_chained_simple_selector_t& css = *it; os << ' '; switch (css.combinator) { case css::combinator_direct_child: os << "> "; break; case css::combinator_next_sibling: os << "+ "; break; case css::combinator_descendant: default: ; } os << css.simple_selector; } return os; } std::ostream& operator<< (std::ostream& os, const css_property_value_t& v) { const char* sep = ","; switch (v.type) { case css::property_value_hsl: os << "hsl(" << (int)v.hue << sep << (int)v.saturation << sep << (int)v.lightness << ")"; break; case css::property_value_hsla: os << "hsla(" << (int)v.hue << sep << (int)v.saturation << sep << (int)v.lightness << sep << v.alpha << ")"; break; case css::property_value_rgb: os << "rgb(" << (int)v.red << sep << (int)v.green << sep << (int)v.blue << ")"; break; case css::property_value_rgba: os << "rgba(" << (int)v.red << sep << (int)v.green << sep << (int)v.blue << sep << v.alpha << ")"; break; case css::property_value_string: os << pstring(v.str, v.length); break; case css::property_value_url: os << "url(" << pstring(v.str, v.length) << ")"; break; break; case css::property_value_none: default: ; } return os; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_namespace_types_cpp.inl0000644000175000017500000000470312535701143022004 0ustar renerenenamespace orcus { const xmlns_id_t NS_odf_anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0"; const xmlns_id_t NS_odf_chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0"; const xmlns_id_t NS_odf_config = "urn:oasis:names:tc:opendocument:xmlns:config:1.0"; const xmlns_id_t NS_odf_db = "urn:oasis:names:tc:opendocument:xmlns:database:1.0"; const xmlns_id_t NS_odf_dc = "http://purl.org/dc/elements/1.1/"; const xmlns_id_t NS_odf_dr3d = "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"; const xmlns_id_t NS_odf_draw = "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"; const xmlns_id_t NS_odf_fo = "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"; const xmlns_id_t NS_odf_form = "urn:oasis:names:tc:opendocument:xmlns:form:1.0"; const xmlns_id_t NS_odf_grddl = "http://www.w3.org/2003/g/data-view#"; const xmlns_id_t NS_odf_math = "http://www.w3.org/1998/Math/MathML"; const xmlns_id_t NS_odf_meta = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0"; const xmlns_id_t NS_odf_number = "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"; const xmlns_id_t NS_odf_office = "urn:oasis:names:tc:opendocument:xmlns:office:1.0"; const xmlns_id_t NS_odf_presentation = "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"; const xmlns_id_t NS_odf_script = "urn:oasis:names:tc:opendocument:xmlns:script:1.0"; const xmlns_id_t NS_odf_smil = "urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"; const xmlns_id_t NS_odf_style = "urn:oasis:names:tc:opendocument:xmlns:style:1.0"; const xmlns_id_t NS_odf_svg = "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"; const xmlns_id_t NS_odf_table = "urn:oasis:names:tc:opendocument:xmlns:table:1.0"; const xmlns_id_t NS_odf_text = "urn:oasis:names:tc:opendocument:xmlns:text:1.0"; const xmlns_id_t NS_odf_xforms = "http://www.w3.org/2002/xforms"; const xmlns_id_t NS_odf_xhtml = "http://www.w3.org/1999/xhtml"; const xmlns_id_t NS_odf_xlink = "http://www.w3.org/1999/xlink"; namespace { const xmlns_id_t odf_ns[] = { NS_odf_anim, NS_odf_chart, NS_odf_config, NS_odf_db, NS_odf_dc, NS_odf_dr3d, NS_odf_draw, NS_odf_fo, NS_odf_form, NS_odf_grddl, NS_odf_math, NS_odf_meta, NS_odf_number, NS_odf_office, NS_odf_presentation, NS_odf_script, NS_odf_smil, NS_odf_style, NS_odf_svg, NS_odf_table, NS_odf_text, NS_odf_xforms, NS_odf_xhtml, NS_odf_xlink, NULL }; } // anonymous const xmlns_id_t* NS_odf_all = odf_ns; } liborcus-0.9.2/src/liborcus/orcus_csv.cpp0000644000175000017500000000416412535701143017141 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_csv.hpp" #include "orcus/csv_parser.hpp" #include "orcus/pstring.hpp" #include "orcus/global.hpp" #include "orcus/stream.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include #include using namespace std; namespace orcus { namespace { class csv_handler { public: csv_handler(spreadsheet::iface::import_factory& factory) : m_factory(factory), mp_sheet(NULL), m_row(0), m_col(0) {} void begin_parse() { const char* sheet_name = "data"; mp_sheet = m_factory.append_sheet(sheet_name, strlen(sheet_name)); } void end_parse() {} void begin_row() {} void end_row() { ++m_row; m_col = 0; } void cell(const char* p, size_t n) { mp_sheet->set_auto(m_row, m_col, p, n); ++m_col; } private: spreadsheet::iface::import_factory& m_factory; spreadsheet::iface::import_sheet* mp_sheet; spreadsheet::row_t m_row; spreadsheet::col_t m_col; }; } orcus_csv::orcus_csv(spreadsheet::iface::import_factory* factory) : mp_factory(factory) {} void orcus_csv::read_file(const string& filepath) { string strm; load_file_content(filepath.c_str(), strm); parse(strm); mp_factory->finalize(); } const char* orcus_csv::get_name() const { static const char* name = "csv"; return name; } void orcus_csv::parse(const string& strm) { if (strm.empty()) return; csv_handler handler(*mp_factory); csv::parser_config config; config.delimiters.push_back(','); config.text_qualifier = '"'; csv_parser parser(&strm[0], strm.size(), handler, config); try { parser.parse(); } catch (const csv::parse_error& e) { cout << "parse failed: " << e.what() << endl; } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/dom_tree.cpp0000644000175000017500000002250512535701143016730 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/dom_tree.hpp" #include "orcus/exception.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/string_pool.hpp" #include #include #include #include using namespace std; namespace orcus { namespace { /** * Escape certain characters with backslash (\). */ void escape(ostream& os, const pstring& val) { if (val.empty()) return; const char* p = &val[0]; const char* p_end = p + val.size(); for (; p != p_end; ++p) { if (*p == '"') os << "\\\""; else if (*p == '\\') os << "\\\\"; else os << *p; } } typedef boost::unordered_map declarations_type; } struct dom_tree_impl { xmlns_context& m_ns_cxt; string_pool m_pool; pstring m_cur_decl_name; declarations_type m_decls; dom_tree::attrs_type m_doc_attrs; dom_tree::attrs_type m_cur_attrs; dom_tree::element_stack_type m_elem_stack; dom_tree::element* m_root; dom_tree_impl(xmlns_context& cxt) : m_ns_cxt(cxt), m_root(NULL) {} ~dom_tree_impl() { delete m_root; } }; dom_tree::entity_name::entity_name() : ns(XMLNS_UNKNOWN_ID) {} dom_tree::entity_name::entity_name(xmlns_id_t _ns, const pstring& _name) : ns(_ns), name(_name) {} void dom_tree::entity_name::print(std::ostream& os, const xmlns_context& cxt) const { if (ns) { size_t index = cxt.get_index(ns); if (index != index_not_found) os << "ns" << index << ':'; } os << name; } dom_tree::attr::attr(xmlns_id_t _ns, const pstring& _name, const pstring& _value) : name(_ns, _name), value(_value) {} void dom_tree::attr::print(std::ostream& os, const xmlns_context& cxt) const { name.print(os, cxt); os << "=\""; escape(os, value); os << '"'; } dom_tree::node::~node() {} dom_tree::element::element(xmlns_id_t _ns, const pstring& _name) : node(node_element), name(_ns, _name) {} void dom_tree::element::print(ostream& os, const xmlns_context& cxt) const { name.print(os, cxt); } dom_tree::element::~element() {} dom_tree::content::content(const pstring& _value) : node(node_content), value(_value) {} void dom_tree::content::print(ostream& os, const xmlns_context& /*cxt*/) const { os << '"'; escape(os, value); os << '"'; } dom_tree::content::~content() {} dom_tree::dom_tree(xmlns_context& cxt) : mp_impl(new dom_tree_impl(cxt)) {} dom_tree::~dom_tree() { delete mp_impl; } void dom_tree::start_declaration(const pstring& name) { mp_impl->m_cur_decl_name = name; } void dom_tree::end_declaration(const pstring& name) { assert(mp_impl->m_cur_decl_name == name); declarations_type& decls = mp_impl->m_decls; declarations_type::iterator it = decls.find(name); if (it == decls.end()) { // Insert a new entry for this name. std::pair r = decls.insert( declarations_type::value_type( mp_impl->m_pool.intern(name).first, mp_impl->m_cur_attrs)); if (!r.second) // Insertion failed. throw general_error("dom_tree::end_declaration: failed to insert a new declaration entry."); } else it->second = mp_impl->m_cur_attrs; mp_impl->m_cur_attrs.clear(); } void dom_tree::start_element(xmlns_id_t ns, const pstring& name) { // These strings must be persistent. pstring name_safe = mp_impl->m_pool.intern(name).first; element* p = NULL; if (!mp_impl->m_root) { // This must be the root element! mp_impl->m_root = new element(ns, name_safe); mp_impl->m_elem_stack.push_back(mp_impl->m_root); p = mp_impl->m_elem_stack.back(); p->attrs.swap(mp_impl->m_cur_attrs); return; } // Append new element as a child element of the current element. p = mp_impl->m_elem_stack.back(); p->child_nodes.push_back(new element(ns, name_safe)); p = static_cast(&p->child_nodes.back()); p->attrs.swap(mp_impl->m_cur_attrs); mp_impl->m_elem_stack.push_back(p); } void dom_tree::end_element(xmlns_id_t ns, const pstring& name) { const element* p = mp_impl->m_elem_stack.back(); if (p->name.ns != ns || p->name.name != name) throw general_error("non-matching end element."); mp_impl->m_elem_stack.pop_back(); } void dom_tree::set_characters(const pstring& val) { if (mp_impl->m_elem_stack.empty()) // No root element has been encountered. Ignore this. return; pstring val2 = val.trim(); if (val2.empty()) return; element* p = mp_impl->m_elem_stack.back(); val2 = mp_impl->m_pool.intern(val2).first; // Make sure the string is persistent. p->child_nodes.push_back(new content(val2)); } void dom_tree::set_attribute(xmlns_id_t ns, const pstring& name, const pstring& val) { // These strings must be persistent. pstring name2 = mp_impl->m_pool.intern(name).first; pstring val2 = mp_impl->m_pool.intern(val).first; mp_impl->m_cur_attrs.push_back(attr(ns, name2, val2)); } const dom_tree::attrs_type* dom_tree::get_declaration_attributes(const pstring& name) const { declarations_type::const_iterator it = mp_impl->m_decls.find(name); return it == mp_impl->m_decls.end() ? NULL : &it->second; } namespace { struct scope : boost::noncopyable { typedef std::vector nodes_type; string name; nodes_type nodes; nodes_type::const_iterator current_pos; scope(const string& _name, dom_tree::node* _node) : name(_name) { nodes.push_back(_node); current_pos = nodes.begin(); } scope(const string& _name) : name(_name) {} }; typedef boost::ptr_vector scopes_type; void print_scope(ostream& os, const scopes_type& scopes) { if (scopes.empty()) throw general_error("scope stack shouldn't be empty while dumping tree."); // Skip the first scope which is root. scopes_type::const_iterator it = scopes.begin(), it_end = scopes.end(); for (++it; it != it_end; ++it) os << "/" << it->name; } struct sort_by_name : std::binary_function { bool operator() (const dom_tree::attr& left, const dom_tree::attr& right) const { return left.name.name < right.name.name; } }; } void dom_tree::dump_compact(ostream& os) const { if (!mp_impl->m_root) return; // Dump namespaces first. mp_impl->m_ns_cxt.dump(os); scopes_type scopes; scopes.push_back(new scope(string(), mp_impl->m_root)); while (!scopes.empty()) { bool new_scope = false; // Iterate through all elements in the current scope. scope& cur_scope = scopes.back(); for (; cur_scope.current_pos != cur_scope.nodes.end(); ++cur_scope.current_pos) { const node* this_node = *cur_scope.current_pos; assert(this_node); print_scope(os, scopes); if (this_node->type == node_content) { // This is a text content. this_node->print(os, mp_impl->m_ns_cxt); os << endl; continue; } assert(this_node->type == node_element); const element* elem = static_cast(this_node); os << "/"; elem->print(os, mp_impl->m_ns_cxt); os << endl; { // Dump attributes. attrs_type attrs = elem->attrs; sort(attrs.begin(), attrs.end(), sort_by_name()); attrs_type::const_iterator it = attrs.begin(), it_end = attrs.end(); for (; it != it_end; ++it) { print_scope(os, scopes); os << "/"; elem->print(os, mp_impl->m_ns_cxt); os << "@"; it->print(os, mp_impl->m_ns_cxt); os << endl; } } if (elem->child_nodes.empty()) continue; // This element has child nodes. Push a new scope and populate it // with all child elements, but skip content nodes. dom_tree::nodes_type::const_iterator it = elem->child_nodes.begin(), it_end = elem->child_nodes.end(); scope::nodes_type nodes; for (; it != it_end; ++it) nodes.push_back(&(*it)); assert(!nodes.empty()); // Push a new scope, and restart the loop with the new scope. ++cur_scope.current_pos; ostringstream elem_name; elem->print(elem_name, mp_impl->m_ns_cxt); scopes.push_back(new scope(elem_name.str())); scope& child_scope = scopes.back(); child_scope.nodes.swap(nodes); child_scope.current_pos = child_scope.nodes.begin(); new_scope = true; break; } if (new_scope) continue; scopes.pop_back(); } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_helper.cpp0000644000175000017500000000325012535701143020276 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_helper.hpp" #include #include #include namespace orcus { using ::orcus::spreadsheet::color_elem_t; namespace { std::vector split_string(pstring str, char sep) { std::vector ret; size_t len = 0; const char* start = str.get(); for (size_t i = 0, n = str.size(); i < n; ++i) { if (str[i] == sep) { ret.push_back( pstring( start, len ) ); // if not at the end move the start string if (i < n-1) start = start + len + 1; len = 0; } else ++len; } ret.push_back( pstring( start, len ) ); return ret; } size_t parse_color_string(pstring str) { unsigned long col_value = strtol( str.get(), NULL, 16 ); col_value = col_value >> 8; // make sure that this actually worked assert( col_value <= 255 ); return static_cast(col_value); } } bool gnumeric_helper::parse_RGB_color_attribute(color_elem_t& red, color_elem_t& green, color_elem_t& blue, const pstring& attr) { std::vector color = split_string(attr, ':'); if (color.size() != 3) return false; red = parse_color_string(color[0]); green = parse_color_string(color[1]); blue = parse_color_string(color[2]); return true; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_handler.hpp0000644000175000017500000000330012535701143017622 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XLSX_HANDLER_HPP__ #define __ORCUS_XLSX_HANDLER_HPP__ #include "xml_stream_handler.hpp" #include "xml_context_base.hpp" #include "orcus/spreadsheet/types.hpp" #include #include namespace orcus { struct session_context; struct opc_rel_extras_t; namespace spreadsheet { namespace iface { class import_sheet; class import_table; }} class xlsx_sheet_xml_handler : public xml_stream_handler { public: xlsx_sheet_xml_handler( session_context& cxt, const tokens& tokens, spreadsheet::sheet_t sheet_id, spreadsheet::iface::import_sheet* import_sheet); virtual ~xlsx_sheet_xml_handler(); void pop_rel_extras(opc_rel_extras_t& other); }; class xlsx_table_xml_handler : public xml_stream_handler { public: xlsx_table_xml_handler( session_context& cxt, const tokens& tokens, spreadsheet::iface::import_table& table); }; class xlsx_pivot_cache_def_xml_handler : public xml_stream_handler { public: xlsx_pivot_cache_def_xml_handler(session_context& cxt, const tokens& tokens); }; class xlsx_pivot_cache_rec_xml_handler : public xml_stream_handler { public: xlsx_pivot_cache_rec_xml_handler(session_context& cxt, const tokens& tokens); }; class xlsx_pivot_table_xml_handler : public xml_stream_handler { public: xlsx_pivot_table_xml_handler(session_context& cxt, const tokens& tokens); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_tokens.hpp0000644000175000017500000000104712535701143017270 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ODF_TOKENS_HPP__ #define __ORCUS_ODF_TOKENS_HPP__ #include "orcus/tokens.hpp" namespace orcus { /** * Singleton instance containing all ODF tokens. */ extern tokens odf_tokens; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_stream_parser.hpp0000644000175000017500000000304212535701143020661 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XMLPARSER_HPP__ #define __ORCUS_XMLPARSER_HPP__ #include #include #include #include "orcus/xml_namespace.hpp" namespace orcus { struct config; class xml_stream_handler; class tokens; /** * This class does NOT store the stream content which is just a pointer to * the first char of the content stream. Make sure you finish parsing while * the content pointer is valid. */ class xml_stream_parser { public: class parse_error : public ::std::exception { public: parse_error(const ::std::string& msg); virtual ~parse_error() throw(); virtual const char* what() const throw(); private: ::std::string m_msg; }; xml_stream_parser( const config& opt, xmlns_repository& ns_repo, const tokens& tokens, const char* content, size_t size); ~xml_stream_parser(); void parse(); void set_handler(xml_stream_handler* handler); xml_stream_handler* get_handler() const; private: xml_stream_parser(); // disabled const config& m_config; xmlns_context m_ns_cxt; const tokens& m_tokens; xml_stream_handler* mp_handler; const char* m_content; size_t m_size; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/orcus_xlsx.cpp0000644000175000017500000004420012535701143017337 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xlsx.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/exception.hpp" #include "orcus/config.hpp" #include "xlsx_types.hpp" #include "xlsx_handler.hpp" #include "xlsx_context.hpp" #include "xlsx_workbook_context.hpp" #include "xlsx_revision_context.hpp" #include "ooxml_tokens.hpp" #include "xml_stream_parser.hpp" #include "xml_simple_stream_handler.hpp" #include "opc_reader.hpp" #include "ooxml_namespace_types.hpp" #include "xlsx_session_data.hpp" #include "opc_context.hpp" #include "ooxml_global.hpp" #include #include #include #include #include #include #include #include using namespace std; namespace orcus { namespace { struct print_sheet_info : unary_function, void> { void operator() (const pair& v) const { const xlsx_rel_sheet_info* info = static_cast(v.second); cout << "sheet name: " << info->name << " sheet id: " << info->id << " relationship id: " << v.first << endl; } }; } class xlsx_opc_handler : public opc_reader::part_handler { orcus_xlsx& m_parent; public: xlsx_opc_handler(orcus_xlsx& parent) : m_parent(parent) {} virtual ~xlsx_opc_handler() {} virtual bool handle_part( schema_t type, const std::string& dir_path, const std::string& file_name, opc_rel_extra* data) { if (type == SCH_od_rels_office_doc) { m_parent.read_workbook(dir_path, file_name); return true; } else if (type == SCH_od_rels_worksheet) { m_parent.read_sheet(dir_path, file_name, static_cast(data)); return true; } else if (type == SCH_od_rels_shared_strings) { m_parent.read_shared_strings(dir_path, file_name); return true; } else if (type == SCH_od_rels_styles) { m_parent.read_styles(dir_path, file_name); return true; } else if (type == SCH_od_rels_table) { m_parent.read_table(dir_path, file_name, static_cast(data)); return true; } else if (type == SCH_od_rels_pivot_cache_def) { m_parent.read_pivot_cache_def(dir_path, file_name); return true; } else if (type == SCH_od_rels_pivot_cache_rec) { m_parent.read_pivot_cache_rec(dir_path, file_name); return true; } else if (type == SCH_od_rels_pivot_table) { m_parent.read_pivot_table(dir_path, file_name); return true; } else if (type == SCH_od_rels_rev_headers) { m_parent.read_rev_headers(dir_path, file_name); return true; } else if (type == SCH_od_rels_rev_log) { m_parent.read_rev_log(dir_path, file_name); return true; } return false; } }; struct orcus_xlsx_impl { session_context m_cxt; xmlns_repository m_ns_repo; spreadsheet::iface::import_factory* mp_factory; xlsx_opc_handler m_opc_handler; opc_reader m_opc_reader; orcus_xlsx_impl(spreadsheet::iface::import_factory* factory, orcus_xlsx& parent) : m_cxt(new xlsx_session_data), mp_factory(factory), m_opc_handler(parent), m_opc_reader(parent.get_config(), m_ns_repo, m_cxt, m_opc_handler) {} }; orcus_xlsx::orcus_xlsx(spreadsheet::iface::import_factory* factory) : mp_impl(new orcus_xlsx_impl(factory, *this)) { mp_impl->m_ns_repo.add_predefined_values(NS_ooxml_all); mp_impl->m_ns_repo.add_predefined_values(NS_opc_all); mp_impl->m_ns_repo.add_predefined_values(NS_misc_all); } orcus_xlsx::~orcus_xlsx() { delete mp_impl; } bool orcus_xlsx::detect(const unsigned char* blob, size_t size) { zip_archive_stream_blob stream(blob, size); zip_archive archive(&stream); try { archive.load(); } catch (const zip_error&) { // Not a valid zip archive. return false; } // Find and parse [Content_Types].xml which is required for OPC package. vector buf; if (!archive.read_file_entry("[Content_Types].xml", buf)) // Failed to read the contnet types entry. return false; if (buf.empty()) return false; config opt; xmlns_repository ns_repo; ns_repo.add_predefined_values(NS_opc_all); session_context session_cxt; xml_stream_parser parser( opt, ns_repo, opc_tokens, reinterpret_cast(&buf[0]), buf.size()); xml_simple_stream_handler handler(new opc_content_types_context(session_cxt, opc_tokens)); parser.set_handler(&handler); parser.parse(); opc_content_types_context& context = static_cast(handler.get_context()); std::vector parts; context.pop_parts(parts); if (parts.empty()) return false; // See if we can find the workbook stream. xml_part_t workbook_part("/xl/workbook.xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"); return std::find(parts.begin(), parts.end(), workbook_part) != parts.end(); } void orcus_xlsx::read_file(const string& filepath) { mp_impl->m_opc_reader.read_file(filepath.c_str()); // Formulas need to be inserted to the document after the shared string // table get imported, because tokenization of formulas may add new shared // string instances. set_formulas_to_doc(); mp_impl->mp_factory->finalize(); } const char* orcus_xlsx::get_name() const { static const char* name = "xlsx"; return name; } void orcus_xlsx::set_formulas_to_doc() { xlsx_session_data& sdata = static_cast(*mp_impl->m_cxt.mp_data); // Insert shared formulas first. xlsx_session_data::shared_formulas_type::iterator its = sdata.m_shared_formulas.begin(), its_end = sdata.m_shared_formulas.end(); for (; its != its_end; ++its) { xlsx_session_data::shared_formula& sf = *its; spreadsheet::iface::import_sheet* sheet = mp_impl->mp_factory->get_sheet(sf.sheet); if (!sheet) continue; if (sf.master) { sheet->set_shared_formula( sf.row, sf.column, orcus::spreadsheet::formula_grammar_xlsx_2007, sf.identifier, &sf.formula[0], sf.formula.size(), &sf.range[0], sf.range.size()); } else { sheet->set_shared_formula(sf.row, sf.column, sf.identifier); } } // Insert regular (non-shared) formulas. xlsx_session_data::formulas_type::iterator it = sdata.m_formulas.begin(), it_end = sdata.m_formulas.end(); for (; it != it_end; ++it) { xlsx_session_data::formula& f = *it; spreadsheet::iface::import_sheet* sheet = mp_impl->mp_factory->get_sheet(f.sheet); if (!sheet) continue; if (f.array) { sheet->set_array_formula( f.row, f.column, spreadsheet::formula_grammar_xlsx_2007, &f.exp[0], f.exp.size(), &f.range[0], f.range.size()); } else { sheet->set_formula( f.row, f.column, orcus::spreadsheet::formula_grammar_xlsx_2007, &f.exp[0], f.exp.size()); } } } void orcus_xlsx::read_workbook(const string& dir_path, const string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) cout << "read_workbook: file path = " << filepath << endl; vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) return; if (buffer.empty()) return; ::boost::scoped_ptr handler( new xml_simple_stream_handler(new xlsx_workbook_context(mp_impl->m_cxt, ooxml_tokens))); xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); parser.set_handler(handler.get()); parser.parse(); // Get sheet info from the context instance. xlsx_workbook_context& context = static_cast(handler->get_context()); opc_rel_extras_t sheet_data; context.pop_sheet_info(sheet_data); if (get_config().debug) for_each(sheet_data.data.begin(), sheet_data.data.end(), print_sheet_info()); handler.reset(); mp_impl->m_opc_reader.check_relation_part(file_name, &sheet_data); } void orcus_xlsx::read_sheet(const string& dir_path, const string& file_name, xlsx_rel_sheet_info* data) { if (!data || !data->id) // Sheet ID must not be 0. return; string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_sheet: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) return; if (buffer.empty()) return; if (get_config().debug) { cout << "relationship sheet data: " << endl; cout << " sheet name: " << data->name << " sheet ID: " << data->id << endl; } spreadsheet::iface::import_sheet* sheet = mp_impl->mp_factory->append_sheet(data->name.get(), data->name.size()); if (!sheet) throw general_error("orcus_xlsx::read_sheet: failed to append sheet."); xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); boost::scoped_ptr handler( new xlsx_sheet_xml_handler(mp_impl->m_cxt, ooxml_tokens, data->id-1, sheet)); parser.set_handler(handler.get()); parser.parse(); opc_rel_extras_t table_info; handler->pop_rel_extras(table_info); handler.reset(); mp_impl->m_opc_reader.check_relation_part(file_name, &table_info); } void orcus_xlsx::read_shared_strings(const string& dir_path, const string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_shared_strings: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) return; if (buffer.empty()) return; xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); ::boost::scoped_ptr handler( new xml_simple_stream_handler( new xlsx_shared_strings_context(mp_impl->m_cxt, ooxml_tokens, mp_impl->mp_factory->get_shared_strings()))); parser.set_handler(handler.get()); parser.parse(); } void orcus_xlsx::read_styles(const string& dir_path, const string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_styles: file path = " << filepath << endl; } spreadsheet::iface::import_styles* styles = mp_impl->mp_factory->get_styles(); if (!styles) // Client code doesn't support styles. return; vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) return; if (buffer.empty()) return; xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); ::boost::scoped_ptr handler( new xml_simple_stream_handler( new xlsx_styles_context(mp_impl->m_cxt, ooxml_tokens, mp_impl->mp_factory->get_styles()))); parser.set_handler(handler.get()); parser.parse(); } void orcus_xlsx::read_table(const std::string& dir_path, const std::string& file_name, xlsx_rel_table_info* data) { if (!data || !data->sheet_interface) return; spreadsheet::iface::import_table* table = data->sheet_interface->get_table(); if (!table) // Client code doesn't support tables. No point going further. return; string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_table: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) { cerr << "failed to open zip stream: " << filepath << endl; return; } if (buffer.empty()) return; boost::scoped_ptr handler( new xlsx_table_xml_handler(mp_impl->m_cxt, ooxml_tokens, *table)); xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); parser.set_handler(handler.get()); parser.parse(); handler.reset(); } void orcus_xlsx::read_pivot_cache_def(const std::string& dir_path, const std::string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_pivot_cache_def: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) { cerr << "failed to open zip stream: " << filepath << endl; return; } if (buffer.empty()) return; boost::scoped_ptr handler( new xlsx_pivot_cache_def_xml_handler(mp_impl->m_cxt, ooxml_tokens)); xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); parser.set_handler(handler.get()); parser.parse(); handler.reset(); mp_impl->m_opc_reader.check_relation_part(file_name, NULL); } void orcus_xlsx::read_pivot_cache_rec(const std::string& dir_path, const std::string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_pivot_cache_rec: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) { cerr << "failed to open zip stream: " << filepath << endl; return; } if (buffer.empty()) return; boost::scoped_ptr handler( new xlsx_pivot_cache_rec_xml_handler(mp_impl->m_cxt, ooxml_tokens)); xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); parser.set_handler(handler.get()); parser.parse(); handler.reset(); } void orcus_xlsx::read_pivot_table(const std::string& dir_path, const std::string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_pivot_table: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) { cerr << "failed to open zip stream: " << filepath << endl; return; } if (buffer.empty()) return; boost::scoped_ptr handler( new xlsx_pivot_table_xml_handler(mp_impl->m_cxt, ooxml_tokens)); xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); parser.set_handler(handler.get()); parser.parse(); handler.reset(); mp_impl->m_opc_reader.check_relation_part(file_name, NULL); } void orcus_xlsx::read_rev_headers(const std::string& dir_path, const std::string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_rev_headers: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) { cerr << "failed to open zip stream: " << filepath << endl; return; } if (buffer.empty()) return; xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); boost::scoped_ptr handler( new xml_simple_stream_handler( new xlsx_revheaders_context(mp_impl->m_cxt, ooxml_tokens))); parser.set_handler(handler.get()); parser.parse(); handler.reset(); mp_impl->m_opc_reader.check_relation_part(file_name, NULL); } void orcus_xlsx::read_rev_log(const std::string& dir_path, const std::string& file_name) { string filepath = resolve_file_path(dir_path, file_name); if (get_config().debug) { cout << "---" << endl; cout << "read_rev_log: file path = " << filepath << endl; } vector buffer; if (!mp_impl->m_opc_reader.open_zip_stream(filepath, buffer)) { cerr << "failed to open zip stream: " << filepath << endl; return; } if (buffer.empty()) return; xml_stream_parser parser( get_config(), mp_impl->m_ns_repo, ooxml_tokens, reinterpret_cast(&buffer[0]), buffer.size()); boost::scoped_ptr handler( new xml_simple_stream_handler( new xlsx_revlog_context(mp_impl->m_cxt, ooxml_tokens))); parser.set_handler(handler.get()); parser.parse(); handler.reset(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/format_detection_test.cpp0000644000175000017500000000242512535701143021516 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/format_detection.hpp" #include "orcus/stream.hpp" #include #include #include using namespace orcus; using namespace std; void test_detect_formats() { struct { const char* path; format_t format; } tests[] = { { SRCDIR"/test/ods/raw-values-1/input.ods", format_ods }, { SRCDIR"/test/xlsx/raw-values-1/input.xlsx", format_xlsx }, { SRCDIR"/test/xls-xml/basic/input.xml", format_xls_xml }, { SRCDIR"/test/gnumeric/test.gnumeric", format_gnumeric } }; size_t n = sizeof(tests[0]) / sizeof(tests); for (size_t i = 0; i < n; ++i) { string strm; load_file_content(tests[i].path, strm); assert(!strm.empty()); format_t detected = detect(reinterpret_cast(&strm[0]), strm.size()); assert(detected == tests[i].format); } } int main() { test_detect_formats(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_context.cpp0000644000175000017500000002057512535701143020371 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xls_xml_context.hpp" #include "xls_xml_namespace_types.hpp" #include "xls_xml_token_constants.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/measurement.hpp" #include using namespace std; namespace orcus { namespace { class sheet_attr_parser : public unary_function { pstring m_name; public: void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_xls_xml_ss) { switch (attr.name) { case XML_Name: m_name = attr.value; break; default: ; } } } pstring get_name() const { return m_name; } }; class data_attr_parser : public unary_function { xls_xml_context::cell_type m_type; public: data_attr_parser() : m_type(xls_xml_context::ct_unknown) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_xls_xml_ss) { switch (attr.name) { case XML_Type: { if (attr.value == "String") m_type = xls_xml_context::ct_string; else if (attr.value == "Number") m_type = xls_xml_context::ct_number; } break; default: ; } } } xls_xml_context::cell_type get_cell_type() const { return m_type; } }; class row_attr_parser : public unary_function { long m_row_index; public: row_attr_parser() : m_row_index(-1) {} void operator() (const xml_token_attr_t& attr) { if (attr.value.empty()) return; if (attr.ns == NS_xls_xml_ss) { switch (attr.name) { case XML_Index: { const char* p = attr.value.get(); const char* p_end = p + attr.value.size(); m_row_index = to_long(p, p_end); } break; default: ; } } } long get_row_index() const { return m_row_index; } }; class cell_attr_parser : public unary_function { long m_col_index; public: cell_attr_parser() : m_col_index(-1) {} void operator() (const xml_token_attr_t& attr) { if (attr.value.empty()) return; if (attr.ns == NS_xls_xml_ss) { switch (attr.name) { case XML_Index: { const char* p = attr.value.get(); const char* p_end = p + attr.value.size(); m_col_index = to_long(p, p_end); } break; default: ; } } } long get_col_index() const { return m_col_index; } }; } xls_xml_context::xls_xml_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory) : xml_context_base(session_cxt, tokens), mp_factory(factory), mp_cur_sheet(NULL), m_cur_row(0), m_cur_col(0), m_cur_cell_type(ct_unknown), m_cur_cell_value(std::numeric_limits::quiet_NaN()) { } xls_xml_context::~xls_xml_context() { } bool xls_xml_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* xls_xml_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void xls_xml_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void xls_xml_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_xls_xml_ss) { switch (name) { case XML_Workbook: // Do nothing. break; case XML_Worksheet: { xml_element_expected(parent, NS_xls_xml_ss, XML_Workbook); pstring sheet_name = for_each(attrs.begin(), attrs.end(), sheet_attr_parser()).get_name(); mp_cur_sheet = mp_factory->append_sheet(sheet_name.get(), sheet_name.size()); m_cur_row = 0; m_cur_col = 0; } break; case XML_Table: xml_element_expected(parent, NS_xls_xml_ss, XML_Worksheet); break; case XML_Row: { xml_element_expected(parent, NS_xls_xml_ss, XML_Table); m_cur_col = 0; long row_index = for_each(attrs.begin(), attrs.end(), row_attr_parser()).get_row_index(); if (row_index > 0) { // 1-based row index. Convert it to a 0-based one. m_cur_row = row_index - 1; } } break; case XML_Cell: { xml_element_expected(parent, NS_xls_xml_ss, XML_Row); long col_index = for_each(attrs.begin(), attrs.end(), cell_attr_parser()).get_col_index(); if (col_index > 0) { // 1-based column index. Convert it to a 0-based one. m_cur_col = col_index - 1; } } break; case XML_Data: xml_element_expected(parent, NS_xls_xml_ss, XML_Cell); m_cur_cell_type = for_each(attrs.begin(), attrs.end(), data_attr_parser()).get_cell_type(); m_cur_cell_string.clear(); break; default: warn_unhandled(); } } else warn_unhandled(); } bool xls_xml_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_xls_xml_ss) { switch (name) { case XML_Row: ++m_cur_row; break; case XML_Cell: ++m_cur_col; break; case XML_Data: push_cell(); break; default: ; } } return pop_stack(ns, name); } void xls_xml_context::characters(const pstring& str, bool transient) { if (str.empty()) return; const xml_token_pair_t& elem = get_current_element(); if (elem.first == NS_xls_xml_ss && elem.second == XML_Data) { switch (m_cur_cell_type) { case ct_string: { if (transient) m_cur_cell_string.push_back(m_pool.intern(str).first); else m_cur_cell_string.push_back(str); } break; case ct_number: { const char* p = str.get(); m_cur_cell_value = to_double(p, p + str.size()); } break; default: ; } } } void xls_xml_context::push_cell() { switch (m_cur_cell_type) { case ct_number: mp_cur_sheet->set_value(m_cur_row, m_cur_col, m_cur_cell_value); break; case ct_string: { spreadsheet::iface::import_shared_strings* ss = mp_factory->get_shared_strings(); if (!ss) return; if (m_cur_cell_string.empty()) return; if (m_cur_cell_string.size() == 1) { const pstring& s = m_cur_cell_string.back(); mp_cur_sheet->set_string(m_cur_row, m_cur_col, ss->append(&s[0], s.size())); } else { string s; vector::const_iterator it = m_cur_cell_string.begin(), it_end = m_cur_cell_string.end(); for (; it != it_end; ++it) s += *it; mp_cur_sheet->set_string(m_cur_row, m_cur_col, ss->append(&s[0], s.size())); } m_cur_cell_string.clear(); } break; default: ; } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/opc_tokens.inl0000644000175000017500000000144512535701143017276 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const char* token_names[] = { "??", // 0 "ContentType", // 1 "Default", // 2 "Extension", // 3 "Format", // 4 "Id", // 5 "Override", // 6 "PartName", // 7 "Relationship", // 8 "RelationshipReference", // 9 "Relationships", // 10 "RelationshipsGroupReference", // 11 "SignatureTime", // 12 "SourceId", // 13 "SourceType", // 14 "Target", // 15 "TargetMode", // 16 "Type", // 17 "Types", // 18 "Value", // 19 "category", // 20 "contentStatus", // 21 "contentType", // 22 "coreProperties", // 23 "keywords", // 24 "lastModifiedBy", // 25 "lastPrinted", // 26 "revision", // 27 "version" // 28 }; size_t token_name_count = 29; liborcus-0.9.2/src/liborcus/ooxml_content_types.hpp0000644000175000017500000000346312535701143021255 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OOXML_CONTENT_TYPES_HPP__ #define __ORCUS_OOXML_CONTENT_TYPES_HPP__ #include "ooxml_types.hpp" namespace orcus { extern const content_type_t CT_ooxml_extended_properties; extern const content_type_t CT_ooxml_drawing; extern const content_type_t CT_ooxml_vml_drawing; extern const content_type_t CT_ooxml_xlsx_calc_chain; extern const content_type_t CT_ooxml_xlsx_comments; extern const content_type_t CT_ooxml_xlsx_connections; extern const content_type_t CT_ooxml_xlsx_external_link; extern const content_type_t CT_ooxml_xlsx_pivot_cache_def; extern const content_type_t CT_ooxml_xlsx_pivot_cache_rec; extern const content_type_t CT_ooxml_xlsx_pivot_table; extern const content_type_t CT_ooxml_xlsx_printer_settings; extern const content_type_t CT_ooxml_xlsx_query_table; extern const content_type_t CT_ooxml_xlsx_shared_strings; extern const content_type_t CT_ooxml_xlsx_sheet_main; extern const content_type_t CT_ooxml_xlsx_styles; extern const content_type_t CT_ooxml_xlsx_table; extern const content_type_t CT_ooxml_xlsx_worksheet; extern const content_type_t CT_ooxml_xlsx_usernames; extern const content_type_t CT_ooxml_xlsx_rev_headers; extern const content_type_t CT_ooxml_xlsx_rev_log; extern const content_type_t CT_ooxml_theme; extern const content_type_t CT_opc_core_properties; extern const content_type_t CT_opc_relationships; extern const content_type_t CT_xml; /** * Null-terminated array of all content types. */ extern const content_type_t* CT_all; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_sheet_context_test.cpp0000644000175000017500000001310712535701143022121 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mock_spreadsheet.hpp" #include "ooxml_namespace_types.hpp" #include "ooxml_tokens.hpp" #include "ooxml_schemas.hpp" #include "xlsx_sheet_context.hpp" #include "ooxml_token_constants.hpp" #include "xlsx_session_data.hpp" #include "orcus/types.hpp" #include "orcus/config.hpp" using namespace orcus; using namespace std; using namespace orcus::spreadsheet; using namespace orcus::spreadsheet::mock; namespace { class mock_sheet : public import_sheet { public: virtual void set_value(row_t row, col_t col, double val) { assert(row == -1); assert(col == 0); assert(val == 5.0); } virtual void set_bool(row_t row, col_t col, bool val) { assert(row == -1); assert(col == 0); assert(val == true); } virtual void set_array_formula(row_t row, col_t col, formula_grammar_t grammar, const char* s, size_t n, const char* s_range, size_t n_range) { assert(row == -1); assert(col == 0); assert(grammar == formula_grammar_xlsx_2007); assert(string(s, n) == "A1:A2"); assert(string(s_range, n_range) == "B3:B4"); } }; class mock_sheet_properties : public import_sheet_properties { public: void set_column_hidden(col_t col, bool hidden) { assert(col == 1); assert(hidden); } void set_row_hidden(row_t row, bool hidden) { assert(row == 3); assert(hidden); } }; class mock_sheet2 : public import_sheet { public: virtual import_sheet_properties* get_sheet_properties() { return &m_sheet_prop; } private: mock_sheet_properties m_sheet_prop; }; void test_cell_value() { mock_sheet sheet; session_context cxt(new xlsx_session_data); config opt; opt.structure_check = false; orcus::xlsx_sheet_context context(cxt, orcus::ooxml_tokens, 0, &sheet); context.set_config(opt); orcus::xmlns_id_t ns = NS_ooxml_xlsx; orcus::xml_token_t elem = XML_c; orcus::xml_attrs_t attrs; context.start_element(ns, elem, attrs); { xml_attrs_t val_attrs; context.start_element(ns, XML_v, val_attrs); context.characters("5", false); context.end_element(ns, XML_v); } context.end_element(ns, elem); } void test_cell_bool() { mock_sheet sheet; session_context cxt(new xlsx_session_data); config opt; opt.structure_check = false; orcus::xlsx_sheet_context context(cxt, orcus::ooxml_tokens, 0, &sheet); context.set_config(opt); orcus::xmlns_id_t ns = NS_ooxml_xlsx; orcus::xml_token_t elem = XML_c; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(NS_ooxml_xlsx, XML_t, "b", false)); context.start_element(ns, elem, attrs); { xml_attrs_t val_attrs; context.start_element(ns, XML_v, val_attrs); context.characters("1", false); context.end_element(ns, XML_v); } context.end_element(ns, elem); } void test_array_formula() { mock_sheet sheet; session_context cxt(new xlsx_session_data); config opt; opt.structure_check = false; orcus::xlsx_sheet_context context(cxt, orcus::ooxml_tokens, 0, &sheet); context.set_config(opt); orcus::xmlns_id_t ns = NS_ooxml_xlsx; orcus::xml_token_t elem = XML_c; orcus::xml_attrs_t attrs; context.start_element(ns, elem, attrs); { xml_attrs_t formula_attrs; formula_attrs.push_back(xml_token_attr_t(NS_ooxml_xlsx, XML_t, "array", false)); formula_attrs.push_back(xml_token_attr_t(NS_ooxml_xlsx, XML_ref, "B3:B4", false)); context.start_element(ns, XML_f, formula_attrs); context.characters("A1:A2", false); context.end_element(ns, XML_f); } { xml_attrs_t val_attrs; context.start_element(ns, XML_v, val_attrs); context.characters("5", false); context.end_element(ns, XML_v); } context.end_element(ns, elem); } void test_hidden_col() { mock_sheet2 sheet; session_context cxt(new xlsx_session_data); config opt; opt.structure_check = false; orcus::xlsx_sheet_context context(cxt, orcus::ooxml_tokens, 0, &sheet); context.set_config(opt); orcus::xmlns_id_t ns = NS_ooxml_xlsx; orcus::xml_token_t elem = XML_col; orcus::xml_attrs_t attrs; attrs.push_back(orcus::xml_token_attr_t(ns, XML_min, "2", false)); attrs.push_back(orcus::xml_token_attr_t(ns, XML_max, "2", false)); attrs.push_back(orcus::xml_token_attr_t(ns, XML_hidden, "1", false)); context.start_element(ns, elem, attrs); context.end_element(ns, elem); } void test_hidden_row() { mock_sheet2 sheet; session_context cxt(new xlsx_session_data); config opt; opt.structure_check = false; orcus::xlsx_sheet_context context(cxt, orcus::ooxml_tokens, 0, &sheet); context.set_config(opt); orcus::xmlns_id_t ns = NS_ooxml_xlsx; orcus::xml_token_t elem = XML_row; orcus::xml_attrs_t attrs; attrs.push_back(orcus::xml_token_attr_t(ns, XML_r, "4", false)); attrs.push_back(orcus::xml_token_attr_t(ns, XML_hidden, "1", false)); context.start_element(ns, elem, attrs); context.end_element(ns, elem); } } int main() { test_cell_value(); test_cell_bool(); test_array_formula(); test_hidden_col(); test_hidden_row(); return 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_workbook_context.hpp0000644000175000017500000000273112535701143021615 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_XLSX_WORKBOOK_CONTEXT_HPP__ #define __ORCUS_XLSX_WORKBOOK_CONTEXT_HPP__ #include "xml_context_base.hpp" #include "orcus/spreadsheet/types.hpp" #include "xlsx_types.hpp" #include namespace orcus { /** * Context for xl/workbook.xml. */ class xlsx_workbook_context : public xml_context_base { public: typedef boost::unordered_map< pstring, xlsx_rel_sheet_info, pstring::hash> sheet_info_type; xlsx_workbook_context(session_context& session_cxt, const tokens& tokens); virtual ~xlsx_workbook_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); void pop_sheet_info(opc_rel_extras_t& sheets); private: opc_rel_extras_t m_sheet_info; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_namespace_types.hpp0000644000175000017500000000170112535701143021530 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OOXML_NAMESPACE_TYPES_HPP__ #define __ORCUS_OOXML_NAMESPACE_TYPES_HPP__ #include "orcus/types.hpp" namespace orcus { extern const xmlns_id_t NS_ooxml_r; extern const xmlns_id_t NS_ooxml_xlsx; extern const xmlns_id_t NS_opc_ct; extern const xmlns_id_t NS_opc_rel; extern const xmlns_id_t NS_mc; /** * Null-terminated array of all ooxml namespaces. */ extern const xmlns_id_t* NS_ooxml_all; /** * Null-terminated array of all opc namespaces. */ extern const xmlns_id_t* NS_opc_all; /** * Null-terminated array of all the other namespaces. */ extern const xmlns_id_t* NS_misc_all; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_tokens.hpp0000644000175000017500000000076212535701143020211 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLS_XML_TOKENS_HPP #define ORCUS_XLS_XML_TOKENS_HPP #include "orcus/tokens.hpp" namespace orcus { extern tokens xls_xml_tokens; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_sheet_context_test.cpp0000644000175000017500000000537412535701143022743 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "gnumeric_sheet_context.hpp" #include "gnumeric_tokens.hpp" #include "gnumeric_namespace_types.hpp" #include "gnumeric_token_constants.hpp" #include "mock_spreadsheet.hpp" #include "session_context.hpp" #include "orcus/types.hpp" #include #include #include using namespace orcus; using namespace std; using namespace orcus::spreadsheet; using namespace orcus::spreadsheet::mock; class mock_sheet_properties : public import_sheet_properties { public: virtual void set_column_width(col_t col, double size, length_unit_t unit) { assert(col == 2); assert(size == 37.3); assert(unit == length_unit_point); } virtual void set_column_hidden(col_t, bool) { } virtual void set_row_height(row_t row, double size, length_unit_t unit) { assert(row == 4); assert(size == 7.3); assert(unit == length_unit_point); } virtual void set_row_hidden(row_t, bool) { } }; class mock_sheet : public import_sheet { public: virtual iface::import_sheet_properties* get_sheet_properties() { return &m_mock_properties; } private: mock_sheet_properties m_mock_properties; }; class mock_factory : public import_factory { public: virtual iface::import_sheet* append_sheet(const char*, size_t) { return &m_mock_sheet; } private: mock_sheet m_mock_sheet; }; void test_column_width() { mock_factory factory; session_context cxt; orcus::gnumeric_sheet_context context(cxt, orcus::gnumeric_tokens, &factory); orcus::xmlns_id_t ns = NS_gnumeric_gnm; orcus::xml_token_t parent = XML_Sheet; orcus::xml_attrs_t parent_attr; context.start_element(ns, parent, parent_attr); { orcus::xml_token_t elem = XML_Name; orcus::xml_attrs_t attrs; context.start_element(ns, elem, attrs); context.characters("test", false); context.end_element(ns, elem); } { orcus::xml_token_t elem = XML_ColInfo; orcus::xml_attrs_t attrs; attrs.push_back(xml_token_attr_t(ns, XML_No, "2", false)); attrs.push_back(xml_token_attr_t(ns, XML_Unit, "37.3", false)); attrs.push_back(xml_token_attr_t(ns, XML_Unit, "37.3", false)); context.start_element(ns, elem, attrs); context.end_element(ns, elem); } context.end_element(ns, parent); } int main() { test_column_width(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/ooxml_token_constants.inl0000644000175000017500000042233212535701143021566 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const xml_token_t XML_AbbreviatedCaseNumber = 1; const xml_token_t XML_Accel = 2; const xml_token_t XML_Accel2 = 3; const xml_token_t XML_AlbumTitle = 4; const xml_token_t XML_Anchor = 5; const xml_token_t XML_AppVersion = 6; const xml_token_t XML_Append = 7; const xml_token_t XML_Application = 8; const xml_token_t XML_Artist = 9; const xml_token_t XML_Author = 10; const xml_token_t XML_AutoFill = 11; const xml_token_t XML_AutoFit = 12; const xml_token_t XML_AutoLine = 13; const xml_token_t XML_AutoPict = 14; const xml_token_t XML_AutoScale = 15; const xml_token_t XML_BookAuthor = 16; const xml_token_t XML_BookTitle = 17; const xml_token_t XML_BroadcastTitle = 18; const xml_token_t XML_Broadcaster = 19; const xml_token_t XML_CF = 20; const xml_token_t XML_Camera = 21; const xml_token_t XML_Cancel = 22; const xml_token_t XML_CaseNumber = 23; const xml_token_t XML_ChapterNumber = 24; const xml_token_t XML_Characters = 25; const xml_token_t XML_CharactersWithSpaces = 26; const xml_token_t XML_Checked = 27; const xml_token_t XML_City = 28; const xml_token_t XML_ClientData = 29; const xml_token_t XML_ColHidden = 30; const xml_token_t XML_Colored = 31; const xml_token_t XML_Column = 32; const xml_token_t XML_Comments = 33; const xml_token_t XML_Company = 34; const xml_token_t XML_Compiler = 35; const xml_token_t XML_Composer = 36; const xml_token_t XML_Conductor = 37; const xml_token_t XML_ConferenceName = 38; const xml_token_t XML_ConnectionID = 39; const xml_token_t XML_Corporate = 40; const xml_token_t XML_Counsel = 41; const xml_token_t XML_CountryRegion = 42; const xml_token_t XML_Court = 43; const xml_token_t XML_DDE = 44; const xml_token_t XML_DataBinding = 45; const xml_token_t XML_DataBindingLoadMode = 46; const xml_token_t XML_DataBindingName = 47; const xml_token_t XML_Day = 48; const xml_token_t XML_DayAccessed = 49; const xml_token_t XML_Default = 50; const xml_token_t XML_DefaultSize = 51; const xml_token_t XML_Department = 52; const xml_token_t XML_DigSig = 53; const xml_token_t XML_Director = 54; const xml_token_t XML_Disabled = 55; const xml_token_t XML_Dismiss = 56; const xml_token_t XML_Distributor = 57; const xml_token_t XML_DocSecurity = 58; const xml_token_t XML_DrawAspect = 59; const xml_token_t XML_DropLines = 60; const xml_token_t XML_DropStyle = 61; const xml_token_t XML_Dx = 62; const xml_token_t XML_Edition = 63; const xml_token_t XML_Editor = 64; const xml_token_t XML_FieldCodes = 65; const xml_token_t XML_FileBinding = 66; const xml_token_t XML_FileBindingName = 67; const xml_token_t XML_First = 68; const xml_token_t XML_FirstButton = 69; const xml_token_t XML_FmlaGroup = 70; const xml_token_t XML_FmlaLink = 71; const xml_token_t XML_FmlaMacro = 72; const xml_token_t XML_FmlaPict = 73; const xml_token_t XML_FmlaRange = 74; const xml_token_t XML_FmlaTxbx = 75; const xml_token_t XML_Guid = 76; const xml_token_t XML_HLinks = 77; const xml_token_t XML_HeadingPairs = 78; const xml_token_t XML_Help = 79; const xml_token_t XML_HiddenSlides = 80; const xml_token_t XML_Horiz = 81; const xml_token_t XML_HyperlinkBase = 82; const xml_token_t XML_HyperlinksChanged = 83; const xml_token_t XML_ID = 84; const xml_token_t XML_Inc = 85; const xml_token_t XML_Institution = 86; const xml_token_t XML_InternetSiteTitle = 87; const xml_token_t XML_Interviewee = 88; const xml_token_t XML_Interviewer = 89; const xml_token_t XML_Inventor = 90; const xml_token_t XML_Issue = 91; const xml_token_t XML_JournalName = 92; const xml_token_t XML_JustLastX = 93; const xml_token_t XML_LCID = 94; const xml_token_t XML_LCT = 95; const xml_token_t XML_Last = 96; const xml_token_t XML_Lines = 97; const xml_token_t XML_LinkType = 98; const xml_token_t XML_LinksUpToDate = 99; const xml_token_t XML_ListItem = 100; const xml_token_t XML_LockText = 101; const xml_token_t XML_Locked = 102; const xml_token_t XML_LockedField = 103; const xml_token_t XML_MMClips = 104; const xml_token_t XML_Manager = 105; const xml_token_t XML_Map = 106; const xml_token_t XML_MapInfo = 107; const xml_token_t XML_MapOCX = 108; const xml_token_t XML_Max = 109; const xml_token_t XML_Medium = 110; const xml_token_t XML_Middle = 111; const xml_token_t XML_Min = 112; const xml_token_t XML_Month = 113; const xml_token_t XML_MonthAccessed = 114; const xml_token_t XML_MoveWithCells = 115; const xml_token_t XML_MultiLine = 116; const xml_token_t XML_MultiSel = 117; const xml_token_t XML_Name = 118; const xml_token_t XML_NameList = 119; const xml_token_t XML_Namespace = 120; const xml_token_t XML_NoThreeD = 121; const xml_token_t XML_NoThreeD2 = 122; const xml_token_t XML_Notes = 123; const xml_token_t XML_NumberVolumes = 124; const xml_token_t XML_OLEObject = 125; const xml_token_t XML_ObjectID = 126; const xml_token_t XML_ObjectType = 127; const xml_token_t XML_Page = 128; const xml_token_t XML_Pages = 129; const xml_token_t XML_Paragraphs = 130; const xml_token_t XML_PatentNumber = 131; const xml_token_t XML_Performer = 132; const xml_token_t XML_PeriodicalTitle = 133; const xml_token_t XML_Person = 134; const xml_token_t XML_PresentationFormat = 135; const xml_token_t XML_PreserveFormat = 136; const xml_token_t XML_PreserveSortAFLayout = 137; const xml_token_t XML_PrintObject = 138; const xml_token_t XML_ProducerName = 139; const xml_token_t XML_ProductionCompany = 140; const xml_token_t XML_ProgID = 141; const xml_token_t XML_Properties = 142; const xml_token_t XML_PublicationTitle = 143; const xml_token_t XML_Publisher = 144; const xml_token_t XML_RecalcAlways = 145; const xml_token_t XML_RecordingNumber = 146; const xml_token_t XML_RefOrder = 147; const xml_token_t XML_Reporter = 148; const xml_token_t XML_RootElement = 149; const xml_token_t XML_Row = 150; const xml_token_t XML_RowHidden = 151; const xml_token_t XML_ScaleCrop = 152; const xml_token_t XML_Schema = 153; const xml_token_t XML_SchemaID = 154; const xml_token_t XML_SchemaRef = 155; const xml_token_t XML_ScriptExtended = 156; const xml_token_t XML_ScriptLanguage = 157; const xml_token_t XML_ScriptLocation = 158; const xml_token_t XML_ScriptText = 159; const xml_token_t XML_SecretEdit = 160; const xml_token_t XML_Sel = 161; const xml_token_t XML_SelType = 162; const xml_token_t XML_SelectedStyle = 163; const xml_token_t XML_SelectionNamespaces = 164; const xml_token_t XML_ShapeID = 165; const xml_token_t XML_SharedDoc = 166; const xml_token_t XML_ShortTitle = 167; const xml_token_t XML_ShowImportExportValidationErrors = 168; const xml_token_t XML_SizeWithCells = 169; const xml_token_t XML_Slides = 170; const xml_token_t XML_Source = 171; const xml_token_t XML_SourceType = 172; const xml_token_t XML_Sources = 173; const xml_token_t XML_StandardNumber = 174; const xml_token_t XML_StateProvince = 175; const xml_token_t XML_Station = 176; const xml_token_t XML_StyleName = 177; const xml_token_t XML_Tag = 178; const xml_token_t XML_Template = 179; const xml_token_t XML_TextHAlign = 180; const xml_token_t XML_TextVAlign = 181; const xml_token_t XML_Theater = 182; const xml_token_t XML_ThesisType = 183; const xml_token_t XML_Title = 184; const xml_token_t XML_TitlesOfParts = 185; const xml_token_t XML_TotalTime = 186; const xml_token_t XML_Translator = 187; const xml_token_t XML_Type = 188; const xml_token_t XML_UIObj = 189; const xml_token_t XML_URI = 190; const xml_token_t XML_URL = 191; const xml_token_t XML_UpdateMode = 192; const xml_token_t XML_VScroll = 193; const xml_token_t XML_VTEdit = 194; const xml_token_t XML_Val = 195; const xml_token_t XML_ValidIds = 196; const xml_token_t XML_Version = 197; const xml_token_t XML_Visible = 198; const xml_token_t XML_Volume = 199; const xml_token_t XML_WidthMin = 200; const xml_token_t XML_Words = 201; const xml_token_t XML_Writer = 202; const xml_token_t XML_Year = 203; const xml_token_t XML_YearAccessed = 204; const xml_token_t XML_a = 205; const xml_token_t XML_aboveAverage = 206; const xml_token_t XML_absSizeAnchor = 207; const xml_token_t XML_absoluteAnchor = 208; const xml_token_t XML_abstractNum = 209; const xml_token_t XML_abstractNumId = 210; const xml_token_t XML_aca = 211; const xml_token_t XML_acc = 212; const xml_token_t XML_accPr = 213; const xml_token_t XML_accel = 214; const xml_token_t XML_accent1 = 215; const xml_token_t XML_accent2 = 216; const xml_token_t XML_accent3 = 217; const xml_token_t XML_accent4 = 218; const xml_token_t XML_accent5 = 219; const xml_token_t XML_accent6 = 220; const xml_token_t XML_accentbar = 221; const xml_token_t XML_accumulate = 222; const xml_token_t XML_action = 223; const xml_token_t XML_active = 224; const xml_token_t XML_activeCell = 225; const xml_token_t XML_activeCellId = 226; const xml_token_t XML_activeCol = 227; const xml_token_t XML_activePane = 228; const xml_token_t XML_activeRecord = 229; const xml_token_t XML_activeRow = 230; const xml_token_t XML_activeSheetId = 231; const xml_token_t XML_activeTab = 232; const xml_token_t XML_activeWritingStyle = 233; const xml_token_t XML_actualPg = 234; const xml_token_t XML_additionalCharacteristics = 235; const xml_token_t XML_additive = 236; const xml_token_t XML_addlxml = 237; const xml_token_t XML_addressFieldName = 238; const xml_token_t XML_adj = 239; const xml_token_t XML_adjLst = 240; const xml_token_t XML_adjust = 241; const xml_token_t XML_adjustColumnWidth = 242; const xml_token_t XML_adjustLineHeightInTable = 243; const xml_token_t XML_adjustRightInd = 244; const xml_token_t XML_adjusthandles = 245; const xml_token_t XML_advAuto = 246; const xml_token_t XML_advClick = 247; const xml_token_t XML_advTm = 248; const xml_token_t XML_advise = 249; const xml_token_t XML_after = 250; const xml_token_t XML_afterAutospacing = 251; const xml_token_t XML_afterEffect = 252; const xml_token_t XML_afterLines = 253; const xml_token_t XML_ahLst = 254; const xml_token_t XML_ahPolar = 255; const xml_token_t XML_ahXY = 256; const xml_token_t XML_alg = 257; const xml_token_t XML_algIdExt = 258; const xml_token_t XML_algIdExtSource = 259; const xml_token_t XML_algn = 260; const xml_token_t XML_alias = 261; const xml_token_t XML_aliases = 262; const xml_token_t XML_align = 263; const xml_token_t XML_alignBordersAndEdges = 264; const xml_token_t XML_alignTablesRowByRow = 265; const xml_token_t XML_alignWithMargins = 266; const xml_token_t XML_alignment = 267; const xml_token_t XML_alignshape = 268; const xml_token_t XML_all = 269; const xml_token_t XML_allCaption = 270; const xml_token_t XML_allDrilled = 271; const xml_token_t XML_allUniqueName = 272; const xml_token_t XML_allowBlank = 273; const xml_token_t XML_allowOverlap = 274; const xml_token_t XML_allowPNG = 275; const xml_token_t XML_allowPng = 276; const xml_token_t XML_allowRefreshQuery = 277; const xml_token_t XML_allowSpaceOfSameStyleInTable = 278; const xml_token_t XML_allowcomments = 279; const xml_token_t XML_allowincell = 280; const xml_token_t XML_allowoverlap = 281; const xml_token_t XML_aln = 282; const xml_token_t XML_alnAt = 283; const xml_token_t XML_alnScr = 284; const xml_token_t XML_alpha = 285; const xml_token_t XML_alphaBiLevel = 286; const xml_token_t XML_alphaCeiling = 287; const xml_token_t XML_alphaFloor = 288; const xml_token_t XML_alphaInv = 289; const xml_token_t XML_alphaMod = 290; const xml_token_t XML_alphaModFix = 291; const xml_token_t XML_alphaOff = 292; const xml_token_t XML_alphaOutset = 293; const xml_token_t XML_alphaRepl = 294; const xml_token_t XML_alt = 295; const xml_token_t XML_altChunk = 296; const xml_token_t XML_altChunkPr = 297; const xml_token_t XML_altLang = 298; const xml_token_t XML_altName = 299; const xml_token_t XML_althref = 300; const xml_token_t XML_alwaysMergeEmptyNamespace = 301; const xml_token_t XML_alwaysShow = 302; const xml_token_t XML_alwaysShowPlaceholderText = 303; const xml_token_t XML_amt = 304; const xml_token_t XML_anchor = 305; const xml_token_t XML_anchorCtr = 306; const xml_token_t XML_anchorLock = 307; const xml_token_t XML_anchorlock = 308; const xml_token_t XML_anchorx = 309; const xml_token_t XML_anchory = 310; const xml_token_t XML_and = 311; const xml_token_t XML_ang = 312; const xml_token_t XML_angle = 313; const xml_token_t XML_anim = 314; const xml_token_t XML_animBg = 315; const xml_token_t XML_animClr = 316; const xml_token_t XML_animEffect = 317; const xml_token_t XML_animLvl = 318; const xml_token_t XML_animMotion = 319; const xml_token_t XML_animOne = 320; const xml_token_t XML_animRot = 321; const xml_token_t XML_animScale = 322; const xml_token_t XML_annotation = 323; const xml_token_t XML_annotationRef = 324; const xml_token_t XML_appName = 325; const xml_token_t XML_applyAlignment = 326; const xml_token_t XML_applyAlignmentFormats = 327; const xml_token_t XML_applyBorder = 328; const xml_token_t XML_applyBorderFormats = 329; const xml_token_t XML_applyBreakingRules = 330; const xml_token_t XML_applyFill = 331; const xml_token_t XML_applyFont = 332; const xml_token_t XML_applyFontFormats = 333; const xml_token_t XML_applyNumberFormat = 334; const xml_token_t XML_applyNumberFormats = 335; const xml_token_t XML_applyPatternFormats = 336; const xml_token_t XML_applyProtection = 337; const xml_token_t XML_applyStyles = 338; const xml_token_t XML_applyToEnd = 339; const xml_token_t XML_applyToFront = 340; const xml_token_t XML_applyToSides = 341; const xml_token_t XML_applyWidthHeightFormats = 342; const xml_token_t XML_arc = 343; const xml_token_t XML_arcTo = 344; const xml_token_t XML_arcsize = 345; const xml_token_t XML_area3DChart = 346; const xml_token_t XML_areaChart = 347; const xml_token_t XML_arg = 348; const xml_token_t XML_argPr = 349; const xml_token_t XML_argSz = 350; const xml_token_t XML_array = 351; const xml_token_t XML_arrowok = 352; const xml_token_t XML_ascii = 353; const xml_token_t XML_asciiTheme = 354; const xml_token_t XML_aspect = 355; const xml_token_t XML_aspectratio = 356; const xml_token_t XML_assign = 357; const xml_token_t XML_asteriskTotals = 358; const xml_token_t XML_attachedSchema = 359; const xml_token_t XML_attachedTemplate = 360; const xml_token_t XML_attr = 361; const xml_token_t XML_attrName = 362; const xml_token_t XML_attrNameLst = 363; const xml_token_t XML_attribute = 364; const xml_token_t XML_audio = 365; const xml_token_t XML_audioCd = 366; const xml_token_t XML_audioFile = 367; const xml_token_t XML_author = 368; const xml_token_t XML_authorId = 369; const xml_token_t XML_authors = 370; const xml_token_t XML_auto = 371; const xml_token_t XML_autoAdjust = 372; const xml_token_t XML_autoCaption = 373; const xml_token_t XML_autoCaptions = 374; const xml_token_t XML_autoCompressPictures = 375; const xml_token_t XML_autoEnd = 376; const xml_token_t XML_autoFilter = 377; const xml_token_t XML_autoFilterDateGrouping = 378; const xml_token_t XML_autoFormatId = 379; const xml_token_t XML_autoFormatOverride = 380; const xml_token_t XML_autoHyphenation = 381; const xml_token_t XML_autoLoad = 382; const xml_token_t XML_autoPage = 383; const xml_token_t XML_autoPageBreaks = 384; const xml_token_t XML_autoRecover = 385; const xml_token_t XML_autoRedefine = 386; const xml_token_t XML_autoRepublish = 387; const xml_token_t XML_autoRev = 388; const xml_token_t XML_autoShow = 389; const xml_token_t XML_autoSortScope = 390; const xml_token_t XML_autoSpaceDE = 391; const xml_token_t XML_autoSpaceDN = 392; const xml_token_t XML_autoSpaceLikeWord95 = 393; const xml_token_t XML_autoStart = 394; const xml_token_t XML_autoTitleDeleted = 395; const xml_token_t XML_autoUpdate = 396; const xml_token_t XML_autoUpdateAnimBg = 397; const xml_token_t XML_autofitToFirstFixedWidthCell = 398; const xml_token_t XML_autoformat = 399; const xml_token_t XML_autolayout = 400; const xml_token_t XML_autorotationcenter = 401; const xml_token_t XML_avLst = 402; const xml_token_t XML_avgSubtotal = 403; const xml_token_t XML_axId = 404; const xml_token_t XML_axPos = 405; const xml_token_t XML_axis = 406; const xml_token_t XML_b = 407; const xml_token_t XML_bCs = 408; const xml_token_t XML_bIns = 409; const xml_token_t XML_backWall = 410; const xml_token_t XML_backdepth = 411; const xml_token_t XML_backdrop = 412; const xml_token_t XML_background = 413; const xml_token_t XML_backgroundQuery = 414; const xml_token_t XML_backgroundRefresh = 415; const xml_token_t XML_backupFile = 416; const xml_token_t XML_backward = 417; const xml_token_t XML_backwards = 418; const xml_token_t XML_balanceSingleByteDoubleByteWidth = 419; const xml_token_t XML_band1H = 420; const xml_token_t XML_band1V = 421; const xml_token_t XML_band2H = 422; const xml_token_t XML_band2V = 423; const xml_token_t XML_bandCol = 424; const xml_token_t XML_bandFmt = 425; const xml_token_t XML_bandFmts = 426; const xml_token_t XML_bandRow = 427; const xml_token_t XML_bar = 428; const xml_token_t XML_bar3DChart = 429; const xml_token_t XML_barChart = 430; const xml_token_t XML_barDir = 431; const xml_token_t XML_barPr = 432; const xml_token_t XML_base = 433; const xml_token_t XML_baseColWidth = 434; const xml_token_t XML_baseField = 435; const xml_token_t XML_baseItem = 436; const xml_token_t XML_baseJc = 437; const xml_token_t XML_baseTimeUnit = 438; const xml_token_t XML_baseType = 439; const xml_token_t XML_basedOn = 440; const xml_token_t XML_baseline = 441; const xml_token_t XML_bc = 442; const xml_token_t XML_bdr = 443; const xml_token_t XML_before = 444; const xml_token_t XML_beforeAutospacing = 445; const xml_token_t XML_beforeLines = 446; const xml_token_t XML_begChr = 447; const xml_token_t XML_behavior = 448; const xml_token_t XML_behaviors = 449; const xml_token_t XML_behindDoc = 450; const xml_token_t XML_bestFit = 451; const xml_token_t XML_between = 452; const xml_token_t XML_bevel = 453; const xml_token_t XML_bevelB = 454; const xml_token_t XML_bevelT = 455; const xml_token_t XML_bg = 456; const xml_token_t XML_bg1 = 457; const xml_token_t XML_bg2 = 458; const xml_token_t XML_bgClr = 459; const xml_token_t XML_bgColor = 460; const xml_token_t XML_bgFillStyleLst = 461; const xml_token_t XML_bgPr = 462; const xml_token_t XML_bgRef = 463; const xml_token_t XML_biLevel = 464; const xml_token_t XML_bibliography = 465; const xml_token_t XML_bidi = 466; const xml_token_t XML_bidiVisual = 467; const xml_token_t XML_bilevel = 468; const xml_token_t XML_bk = 469; const xml_token_t XML_blackAndWhite = 470; const xml_token_t XML_blacklevel = 471; const xml_token_t XML_blank = 472; const xml_token_t XML_bld = 473; const xml_token_t XML_bldAsOne = 474; const xml_token_t XML_bldChart = 475; const xml_token_t XML_bldDgm = 476; const xml_token_t XML_bldGraphic = 477; const xml_token_t XML_bldLst = 478; const xml_token_t XML_bldLvl = 479; const xml_token_t XML_bldOleChart = 480; const xml_token_t XML_bldP = 481; const xml_token_t XML_bldStep = 482; const xml_token_t XML_bldSub = 483; const xml_token_t XML_blend = 484; const xml_token_t XML_blinds = 485; const xml_token_t XML_blip = 486; const xml_token_t XML_blipFill = 487; const xml_token_t XML_blipPhldr = 488; const xml_token_t XML_blob = 489; const xml_token_t XML_blockQuote = 490; const xml_token_t XML_blue = 491; const xml_token_t XML_blueMod = 492; const xml_token_t XML_blueOff = 493; const xml_token_t XML_blur = 494; const xml_token_t XML_blurRad = 495; const xml_token_t XML_bmk = 496; const xml_token_t XML_body = 497; const xml_token_t XML_bodyDiv = 498; const xml_token_t XML_bodyPr = 499; const xml_token_t XML_bodyStyle = 500; const xml_token_t XML_bold = 501; const xml_token_t XML_boldItalic = 502; const xml_token_t XML_bookFoldPrinting = 503; const xml_token_t XML_bookFoldPrintingSheets = 504; const xml_token_t XML_bookFoldRevPrinting = 505; const xml_token_t XML_bookViews = 506; const xml_token_t XML_bookmarkEnd = 507; const xml_token_t XML_bookmarkIdSeed = 508; const xml_token_t XML_bookmarkStart = 509; const xml_token_t XML_bool = 510; const xml_token_t XML_boolVal = 511; const xml_token_t XML_boolean = 512; const xml_token_t XML_border = 513; const xml_token_t XML_borderBox = 514; const xml_token_t XML_borderBoxPr = 515; const xml_token_t XML_borderId = 516; const xml_token_t XML_borderbottom = 517; const xml_token_t XML_borderbottomcolor = 518; const xml_token_t XML_borderleft = 519; const xml_token_t XML_borderleftcolor = 520; const xml_token_t XML_borderright = 521; const xml_token_t XML_borderrightcolor = 522; const xml_token_t XML_borders = 523; const xml_token_t XML_bordersDoNotSurroundFooter = 524; const xml_token_t XML_bordersDoNotSurroundHeader = 525; const xml_token_t XML_bordertop = 526; const xml_token_t XML_bordertopcolor = 527; const xml_token_t XML_bottom = 528; const xml_token_t XML_bottomFromText = 529; const xml_token_t XML_box = 530; const xml_token_t XML_boxPr = 531; const xml_token_t XML_br = 532; const xml_token_t XML_bright = 533; const xml_token_t XML_brightness = 534; const xml_token_t XML_brk = 535; const xml_token_t XML_brkBin = 536; const xml_token_t XML_brkBinSub = 537; const xml_token_t XML_browse = 538; const xml_token_t XML_bstr = 539; const xml_token_t XML_buAutoNum = 540; const xml_token_t XML_buBlip = 541; const xml_token_t XML_buChar = 542; const xml_token_t XML_buClr = 543; const xml_token_t XML_buClrTx = 544; const xml_token_t XML_buFont = 545; const xml_token_t XML_buFontTx = 546; const xml_token_t XML_buNone = 547; const xml_token_t XML_buSzPct = 548; const xml_token_t XML_buSzPts = 549; const xml_token_t XML_buSzTx = 550; const xml_token_t XML_bubble3D = 551; const xml_token_t XML_bubbleChart = 552; const xml_token_t XML_bubbleScale = 553; const xml_token_t XML_bubbleSize = 554; const xml_token_t XML_build = 555; const xml_token_t XML_builtIn = 556; const xml_token_t XML_builtInGroupCount = 557; const xml_token_t XML_builtInUnit = 558; const xml_token_t XML_builtinId = 559; const xml_token_t XML_bullet = 560; const xml_token_t XML_bulletEnabled = 561; const xml_token_t XML_button = 562; const xml_token_t XML_bw = 563; const xml_token_t XML_bwMode = 564; const xml_token_t XML_bwmode = 565; const xml_token_t XML_bwnormal = 566; const xml_token_t XML_bwpure = 567; const xml_token_t XML_bx = 568; const xml_token_t XML_by = 569; const xml_token_t XML_byPosition = 570; const xml_token_t XML_c = 571; const xml_token_t XML_cBhvr = 572; const xml_token_t XML_cGp = 573; const xml_token_t XML_cGpRule = 574; const xml_token_t XML_cMediaNode = 575; const xml_token_t XML_cNvCxnSpPr = 576; const xml_token_t XML_cNvGraphicFramePr = 577; const xml_token_t XML_cNvGrpSpPr = 578; const xml_token_t XML_cNvPicPr = 579; const xml_token_t XML_cNvPr = 580; const xml_token_t XML_cNvSpPr = 581; const xml_token_t XML_cSld = 582; const xml_token_t XML_cSldViewPr = 583; const xml_token_t XML_cSp = 584; const xml_token_t XML_cTn = 585; const xml_token_t XML_cViewPr = 586; const xml_token_t XML_ca = 587; const xml_token_t XML_cacheField = 588; const xml_token_t XML_cacheFields = 589; const xml_token_t XML_cacheHierarchies = 590; const xml_token_t XML_cacheHierarchy = 591; const xml_token_t XML_cacheId = 592; const xml_token_t XML_cacheIndex = 593; const xml_token_t XML_cacheSource = 594; const xml_token_t XML_cachedColBalance = 595; const xml_token_t XML_calcChain = 596; const xml_token_t XML_calcCompleted = 597; const xml_token_t XML_calcId = 598; const xml_token_t XML_calcMode = 599; const xml_token_t XML_calcOnExit = 600; const xml_token_t XML_calcOnSave = 601; const xml_token_t XML_calcPr = 602; const xml_token_t XML_calcmode = 603; const xml_token_t XML_calculatedColumn = 604; const xml_token_t XML_calculatedColumnFormula = 605; const xml_token_t XML_calculatedItem = 606; const xml_token_t XML_calculatedItems = 607; const xml_token_t XML_calculatedMember = 608; const xml_token_t XML_calculatedMembers = 609; const xml_token_t XML_calendar = 610; const xml_token_t XML_calendarType = 611; const xml_token_t XML_callout = 612; const xml_token_t XML_camera = 613; const xml_token_t XML_cantSplit = 614; const xml_token_t XML_cap = 615; const xml_token_t XML_caps = 616; const xml_token_t XML_caption = 617; const xml_token_t XML_captions = 618; const xml_token_t XML_caseSensitive = 619; const xml_token_t XML_cat = 620; const xml_token_t XML_catAx = 621; const xml_token_t XML_catLst = 622; const xml_token_t XML_category = 623; const xml_token_t XML_categoryIdx = 624; const xml_token_t XML_cell = 625; const xml_token_t XML_cell3D = 626; const xml_token_t XML_cellColor = 627; const xml_token_t XML_cellComments = 628; const xml_token_t XML_cellDel = 629; const xml_token_t XML_cellIns = 630; const xml_token_t XML_cellMerge = 631; const xml_token_t XML_cellMeta = 632; const xml_token_t XML_cellMetadata = 633; const xml_token_t XML_cellSmartTag = 634; const xml_token_t XML_cellSmartTagPr = 635; const xml_token_t XML_cellSmartTags = 636; const xml_token_t XML_cellStyle = 637; const xml_token_t XML_cellStyleXfs = 638; const xml_token_t XML_cellStyles = 639; const xml_token_t XML_cellWatch = 640; const xml_token_t XML_cellWatches = 641; const xml_token_t XML_cellXfs = 642; const xml_token_t XML_cf = 643; const xml_token_t XML_cfRule = 644; const xml_token_t XML_cfvo = 645; const xml_token_t XML_chExt = 646; const xml_token_t XML_chMax = 647; const xml_token_t XML_chOff = 648; const xml_token_t XML_chOrder = 649; const xml_token_t XML_chPref = 650; const xml_token_t XML_changesSavedWin = 651; const xml_token_t XML_chapNum = 652; const xml_token_t XML_chapSep = 653; const xml_token_t XML_chapStyle = 654; const xml_token_t XML_char = 655; const xml_token_t XML_charRg = 656; const xml_token_t XML_charSpace = 657; const xml_token_t XML_characterSpacingControl = 658; const xml_token_t XML_characteristic = 659; const xml_token_t XML_charset = 660; const xml_token_t XML_chart = 661; const xml_token_t XML_chartFormat = 662; const xml_token_t XML_chartFormats = 663; const xml_token_t XML_chartObject = 664; const xml_token_t XML_chartSpace = 665; const xml_token_t XML_chartsheet = 666; const xml_token_t XML_checkBox = 667; const xml_token_t XML_checkCompatibility = 668; const xml_token_t XML_checkErrors = 669; const xml_token_t XML_checkStyle = 670; const xml_token_t XML_checked = 671; const xml_token_t XML_checker = 672; const xml_token_t XML_childTnLst = 673; const xml_token_t XML_choose = 674; const xml_token_t XML_chr = 675; const xml_token_t XML_chromakey = 676; const xml_token_t XML_circle = 677; const xml_token_t XML_citation = 678; const xml_token_t XML_class = 679; const xml_token_t XML_clear = 680; const xml_token_t XML_clearAll = 681; const xml_token_t XML_clearComments = 682; const xml_token_t XML_clearContents = 683; const xml_token_t XML_clearFormats = 684; const xml_token_t XML_click = 685; const xml_token_t XML_clickAndTypeStyle = 686; const xml_token_t XML_clientData = 687; const xml_token_t XML_clientInsertedTime = 688; const xml_token_t XML_clip = 689; const xml_token_t XML_clippath = 690; const xml_token_t XML_clipped = 691; const xml_token_t XML_cliptowrap = 692; const xml_token_t XML_close = 693; const xml_token_t XML_clr = 694; const xml_token_t XML_clrChange = 695; const xml_token_t XML_clrData = 696; const xml_token_t XML_clrFrom = 697; const xml_token_t XML_clrIdx = 698; const xml_token_t XML_clrMap = 699; const xml_token_t XML_clrMapOvr = 700; const xml_token_t XML_clrMode = 701; const xml_token_t XML_clrMru = 702; const xml_token_t XML_clrRepl = 703; const xml_token_t XML_clrScheme = 704; const xml_token_t XML_clrSchemeMapping = 705; const xml_token_t XML_clrSpc = 706; const xml_token_t XML_clrTo = 707; const xml_token_t XML_clrVal = 708; const xml_token_t XML_clsid = 709; const xml_token_t XML_cm = 710; const xml_token_t XML_cmAuthor = 711; const xml_token_t XML_cmAuthorLst = 712; const xml_token_t XML_cmLst = 713; const xml_token_t XML_cmd = 714; const xml_token_t XML_cmpd = 715; const xml_token_t XML_cnfStyle = 716; const xml_token_t XML_cnt = 717; const xml_token_t XML_code = 718; const xml_token_t XML_codeName = 719; const xml_token_t XML_codePage = 720; const xml_token_t XML_coerce = 721; const xml_token_t XML_coherent3DOff = 722; const xml_token_t XML_col = 723; const xml_token_t XML_colBreaks = 724; const xml_token_t XML_colDelim = 725; const xml_token_t XML_colFields = 726; const xml_token_t XML_colFirst = 727; const xml_token_t XML_colGrandTotals = 728; const xml_token_t XML_colHeaderCaption = 729; const xml_token_t XML_colHierarchiesUsage = 730; const xml_token_t XML_colHierarchyUsage = 731; const xml_token_t XML_colId = 732; const xml_token_t XML_colItems = 733; const xml_token_t XML_colLast = 734; const xml_token_t XML_colOff = 735; const xml_token_t XML_colPageCount = 736; const xml_token_t XML_collapse = 737; const xml_token_t XML_collapsed = 738; const xml_token_t XML_collapsedLevelsAreSubtotals = 739; const xml_token_t XML_color = 740; const xml_token_t XML_color2 = 741; const xml_token_t XML_colorFilter = 742; const xml_token_t XML_colorId = 743; const xml_token_t XML_colorScale = 744; const xml_token_t XML_colormenu = 745; const xml_token_t XML_colormode = 746; const xml_token_t XML_colormru = 747; const xml_token_t XML_colors = 748; const xml_token_t XML_colorsDef = 749; const xml_token_t XML_colorsDefHdr = 750; const xml_token_t XML_colorsDefHdrLst = 751; const xml_token_t XML_cols = 752; const xml_token_t XML_column = 753; const xml_token_t XML_columnSort = 754; const xml_token_t XML_comb = 755; const xml_token_t XML_combine = 756; const xml_token_t XML_combineBrackets = 757; const xml_token_t XML_comboBox = 758; const xml_token_t XML_comma = 759; const xml_token_t XML_command = 760; const xml_token_t XML_commandType = 761; const xml_token_t XML_comment = 762; const xml_token_t XML_commentList = 763; const xml_token_t XML_commentRangeEnd = 764; const xml_token_t XML_commentRangeStart = 765; const xml_token_t XML_commentReference = 766; const xml_token_t XML_comments = 767; const xml_token_t XML_comp = 768; const xml_token_t XML_compact = 769; const xml_token_t XML_compactData = 770; const xml_token_t XML_compat = 771; const xml_token_t XML_compatLnSpc = 772; const xml_token_t XML_compatMode = 773; const xml_token_t XML_complex = 774; const xml_token_t XML_concurrent = 775; const xml_token_t XML_concurrentCalc = 776; const xml_token_t XML_concurrentManualCount = 777; const xml_token_t XML_cond = 778; const xml_token_t XML_condense = 779; const xml_token_t XML_conditionalFormat = 780; const xml_token_t XML_conditionalFormats = 781; const xml_token_t XML_conditionalFormatting = 782; const xml_token_t XML_connectString = 783; const xml_token_t XML_connectangles = 784; const xml_token_t XML_connection = 785; const xml_token_t XML_connectionId = 786; const xml_token_t XML_connections = 787; const xml_token_t XML_connectloc = 788; const xml_token_t XML_connectlocs = 789; const xml_token_t XML_connectortype = 790; const xml_token_t XML_connecttype = 791; const xml_token_t XML_consecutive = 792; const xml_token_t XML_consecutiveHyphenLimit = 793; const xml_token_t XML_consolidation = 794; const xml_token_t XML_constr = 795; const xml_token_t XML_constrLst = 796; const xml_token_t XML_constrainbounds = 797; const xml_token_t XML_cont = 798; const xml_token_t XML_containsBlank = 799; const xml_token_t XML_containsDate = 800; const xml_token_t XML_containsInteger = 801; const xml_token_t XML_containsMixedTypes = 802; const xml_token_t XML_containsNonDate = 803; const xml_token_t XML_containsNumber = 804; const xml_token_t XML_containsSemiMixedTypes = 805; const xml_token_t XML_containsString = 806; const xml_token_t XML_content = 807; const xml_token_t XML_contextualSpacing = 808; const xml_token_t XML_continuationSeparator = 809; const xml_token_t XML_contourClr = 810; const xml_token_t XML_contourW = 811; const xml_token_t XML_contrast = 812; const xml_token_t XML_control = 813; const xml_token_t XML_control1 = 814; const xml_token_t XML_control2 = 815; const xml_token_t XML_controls = 816; const xml_token_t XML_convMailMergeEsc = 817; const xml_token_t XML_coordorigin = 818; const xml_token_t XML_coordsize = 819; const xml_token_t XML_copies = 820; const xml_token_t XML_copy = 821; const xml_token_t XML_count = 822; const xml_token_t XML_countASubtotal = 823; const xml_token_t XML_countBy = 824; const xml_token_t XML_countSubtotal = 825; const xml_token_t XML_cover = 826; const xml_token_t XML_cp = 827; const xml_token_t XML_cr = 828; const xml_token_t XML_crashSave = 829; const xml_token_t XML_createdVersion = 830; const xml_token_t XML_credentials = 831; const xml_token_t XML_cropbottom = 832; const xml_token_t XML_cropleft = 833; const xml_token_t XML_cropping = 834; const xml_token_t XML_cropright = 835; const xml_token_t XML_croptop = 836; const xml_token_t XML_crossAx = 837; const xml_token_t XML_crossBetween = 838; const xml_token_t XML_crosses = 839; const xml_token_t XML_crossesAt = 840; const xml_token_t XML_cryptAlgorithmClass = 841; const xml_token_t XML_cryptAlgorithmSid = 842; const xml_token_t XML_cryptAlgorithmType = 843; const xml_token_t XML_cryptProvider = 844; const xml_token_t XML_cryptProviderType = 845; const xml_token_t XML_cryptProviderTypeExt = 846; const xml_token_t XML_cryptProviderTypeExtSource = 847; const xml_token_t XML_cryptSpinCount = 848; const xml_token_t XML_cs = 849; const xml_token_t XML_csCatId = 850; const xml_token_t XML_csTypeId = 851; const xml_token_t XML_csb0 = 852; const xml_token_t XML_csb1 = 853; const xml_token_t XML_css = 854; const xml_token_t XML_cstate = 855; const xml_token_t XML_cstheme = 856; const xml_token_t XML_ct = 857; const xml_token_t XML_ctrlPr = 858; const xml_token_t XML_cubicBezTo = 859; const xml_token_t XML_culture = 860; const xml_token_t XML_current = 861; const xml_token_t XML_curve = 862; const xml_token_t XML_custAng = 863; const xml_token_t XML_custClr = 864; const xml_token_t XML_custClrLst = 865; const xml_token_t XML_custDash = 866; const xml_token_t XML_custData = 867; const xml_token_t XML_custDataLst = 868; const xml_token_t XML_custFlipHor = 869; const xml_token_t XML_custFlipVert = 870; const xml_token_t XML_custGeom = 871; const xml_token_t XML_custLinFactNeighborX = 872; const xml_token_t XML_custLinFactNeighborY = 873; const xml_token_t XML_custLinFactX = 874; const xml_token_t XML_custLinFactY = 875; const xml_token_t XML_custRadScaleInc = 876; const xml_token_t XML_custRadScaleRad = 877; const xml_token_t XML_custScaleX = 878; const xml_token_t XML_custScaleY = 879; const xml_token_t XML_custShow = 880; const xml_token_t XML_custShowLst = 881; const xml_token_t XML_custSplit = 882; const xml_token_t XML_custSzX = 883; const xml_token_t XML_custSzY = 884; const xml_token_t XML_custT = 885; const xml_token_t XML_custUnit = 886; const xml_token_t XML_customBuiltin = 887; const xml_token_t XML_customFilter = 888; const xml_token_t XML_customFilters = 889; const xml_token_t XML_customFormat = 890; const xml_token_t XML_customHeight = 891; const xml_token_t XML_customList = 892; const xml_token_t XML_customListSort = 893; const xml_token_t XML_customMarkFollows = 894; const xml_token_t XML_customMenu = 895; const xml_token_t XML_customPr = 896; const xml_token_t XML_customProperties = 897; const xml_token_t XML_customRollUp = 898; const xml_token_t XML_customSheetView = 899; const xml_token_t XML_customSheetViews = 900; const xml_token_t XML_customStyle = 901; const xml_token_t XML_customView = 902; const xml_token_t XML_customWidth = 903; const xml_token_t XML_customWorkbookView = 904; const xml_token_t XML_customWorkbookViews = 905; const xml_token_t XML_customXml = 906; const xml_token_t XML_customXmlDelRangeEnd = 907; const xml_token_t XML_customXmlDelRangeStart = 908; const xml_token_t XML_customXmlInsRangeEnd = 909; const xml_token_t XML_customXmlInsRangeStart = 910; const xml_token_t XML_customXmlMoveFromRangeEnd = 911; const xml_token_t XML_customXmlMoveFromRangeStart = 912; const xml_token_t XML_customXmlMoveToRangeEnd = 913; const xml_token_t XML_customXmlMoveToRangeStart = 914; const xml_token_t XML_customXmlPr = 915; const xml_token_t XML_cut = 916; const xml_token_t XML_cx = 917; const xml_token_t XML_cxn = 918; const xml_token_t XML_cxnId = 919; const xml_token_t XML_cxnLst = 920; const xml_token_t XML_cxnSp = 921; const xml_token_t XML_cxnSpLocks = 922; const xml_token_t XML_cy = 923; const xml_token_t XML_d = 924; const xml_token_t XML_dLbl = 925; const xml_token_t XML_dLblPos = 926; const xml_token_t XML_dLbls = 927; const xml_token_t XML_dPr = 928; const xml_token_t XML_dPt = 929; const xml_token_t XML_dTable = 930; const xml_token_t XML_dashstyle = 931; const xml_token_t XML_data = 932; const xml_token_t XML_dataBar = 933; const xml_token_t XML_dataBinding = 934; const xml_token_t XML_dataBound = 935; const xml_token_t XML_dataCaption = 936; const xml_token_t XML_dataCellStyle = 937; const xml_token_t XML_dataConsolidate = 938; const xml_token_t XML_dataDxfId = 939; const xml_token_t XML_dataExtractLoad = 940; const xml_token_t XML_dataField = 941; const xml_token_t XML_dataFields = 942; const xml_token_t XML_dataModel = 943; const xml_token_t XML_dataOnRows = 944; const xml_token_t XML_dataOnly = 945; const xml_token_t XML_dataPosition = 946; const xml_token_t XML_dataRef = 947; const xml_token_t XML_dataRefs = 948; const xml_token_t XML_dataSource = 949; const xml_token_t XML_dataSourceSort = 950; const xml_token_t XML_dataType = 951; const xml_token_t XML_dataValidation = 952; const xml_token_t XML_dataValidations = 953; const xml_token_t XML_databaseField = 954; const xml_token_t XML_datastoreItem = 955; const xml_token_t XML_date = 956; const xml_token_t XML_date1904 = 957; const xml_token_t XML_dateAx = 958; const xml_token_t XML_dateFormat = 959; const xml_token_t XML_dateGroupItem = 960; const xml_token_t XML_dateTime = 961; const xml_token_t XML_dateTimeGrouping = 962; const xml_token_t XML_day = 963; const xml_token_t XML_dayLong = 964; const xml_token_t XML_dayShort = 965; const xml_token_t XML_dbPr = 966; const xml_token_t XML_ddList = 967; const xml_token_t XML_ddeItem = 968; const xml_token_t XML_ddeItems = 969; const xml_token_t XML_ddeLink = 970; const xml_token_t XML_ddeService = 971; const xml_token_t XML_ddeTopic = 972; const xml_token_t XML_decel = 973; const xml_token_t XML_decimal = 974; const xml_token_t XML_decimalSymbol = 975; const xml_token_t XML_decorated = 976; const xml_token_t XML_def = 977; const xml_token_t XML_defJc = 978; const xml_token_t XML_defLockedState = 979; const xml_token_t XML_defPPr = 980; const xml_token_t XML_defQFormat = 981; const xml_token_t XML_defRPr = 982; const xml_token_t XML_defSemiHidden = 983; const xml_token_t XML_defStyle = 984; const xml_token_t XML_defTabSz = 985; const xml_token_t XML_defUIPriority = 986; const xml_token_t XML_defUnhideWhenUsed = 987; const xml_token_t XML_default = 988; const xml_token_t XML_defaultAttributeDrillState = 989; const xml_token_t XML_defaultColWidth = 990; const xml_token_t XML_defaultGridColor = 991; const xml_token_t XML_defaultMemberUniqueName = 992; const xml_token_t XML_defaultPivotStyle = 993; const xml_token_t XML_defaultRowHeight = 994; const xml_token_t XML_defaultSubtotal = 995; const xml_token_t XML_defaultTabStop = 996; const xml_token_t XML_defaultTableStyle = 997; const xml_token_t XML_defaultTextStyle = 998; const xml_token_t XML_defaultThemeVersion = 999; const xml_token_t XML_definedName = 1000; const xml_token_t XML_definedNames = 1001; const xml_token_t XML_deg = 1002; const xml_token_t XML_degHide = 1003; const xml_token_t XML_degree = 1004; const xml_token_t XML_del = 1005; const xml_token_t XML_del1 = 1006; const xml_token_t XML_del2 = 1007; const xml_token_t XML_delInstrText = 1008; const xml_token_t XML_delText = 1009; const xml_token_t XML_delay = 1010; const xml_token_t XML_delete = 1011; const xml_token_t XML_deleteColumns = 1012; const xml_token_t XML_deleteRows = 1013; const xml_token_t XML_deleted = 1014; const xml_token_t XML_deletedField = 1015; const xml_token_t XML_delimited = 1016; const xml_token_t XML_delimiter = 1017; const xml_token_t XML_den = 1018; const xml_token_t XML_denormalized = 1019; const xml_token_t XML_depthPercent = 1020; const xml_token_t XML_desc = 1021; const xml_token_t XML_descending = 1022; const xml_token_t XML_descr = 1023; const xml_token_t XML_description = 1024; const xml_token_t XML_destId = 1025; const xml_token_t XML_destOrd = 1026; const xml_token_t XML_destination = 1027; const xml_token_t XML_destinationFile = 1028; const xml_token_t XML_detectmouseclick = 1029; const xml_token_t XML_dgm = 1030; const xml_token_t XML_dgmbasetextscale = 1031; const xml_token_t XML_dgmfontsize = 1032; const xml_token_t XML_dgmlayout = 1033; const xml_token_t XML_dgmlayoutmru = 1034; const xml_token_t XML_dgmnodekind = 1035; const xml_token_t XML_dgmscalex = 1036; const xml_token_t XML_dgmscaley = 1037; const xml_token_t XML_dgmstyle = 1038; const xml_token_t XML_diagonal = 1039; const xml_token_t XML_diagonalDown = 1040; const xml_token_t XML_diagonalUp = 1041; const xml_token_t XML_diagram = 1042; const xml_token_t XML_dialogsheet = 1043; const xml_token_t XML_diamond = 1044; const xml_token_t XML_diff = 1045; const xml_token_t XML_differentFirst = 1046; const xml_token_t XML_differentOddEven = 1047; const xml_token_t XML_diffusity = 1048; const xml_token_t XML_dimension = 1049; const xml_token_t XML_dimensionUniqueName = 1050; const xml_token_t XML_dimensions = 1051; const xml_token_t XML_dir = 1052; const xml_token_t XML_dirty = 1053; const xml_token_t XML_disableEdit = 1054; const xml_token_t XML_disableFieldList = 1055; const xml_token_t XML_disablePrompts = 1056; const xml_token_t XML_disableRefresh = 1057; const xml_token_t XML_discretePr = 1058; const xml_token_t XML_diskRevisions = 1059; const xml_token_t XML_dispBlanksAs = 1060; const xml_token_t XML_dispDef = 1061; const xml_token_t XML_dispEq = 1062; const xml_token_t XML_dispRSqr = 1063; const xml_token_t XML_dispUnits = 1064; const xml_token_t XML_dispUnitsLbl = 1065; const xml_token_t XML_displacedByCustomXml = 1066; const xml_token_t XML_display = 1067; const xml_token_t XML_displayBackgroundShape = 1068; const xml_token_t XML_displayFolder = 1069; const xml_token_t XML_displayHangulFixedWidth = 1070; const xml_token_t XML_displayHorizontalDrawingGridEvery = 1071; const xml_token_t XML_displayName = 1072; const xml_token_t XML_displayText = 1073; const xml_token_t XML_displayVerticalDrawingGridEvery = 1074; const xml_token_t XML_dissolve = 1075; const xml_token_t XML_dist = 1076; const xml_token_t XML_distB = 1077; const xml_token_t XML_distL = 1078; const xml_token_t XML_distR = 1079; const xml_token_t XML_distT = 1080; const xml_token_t XML_distance = 1081; const xml_token_t XML_div = 1082; const xml_token_t XML_divBdr = 1083; const xml_token_t XML_divId = 1084; const xml_token_t XML_divs = 1085; const xml_token_t XML_divsChild = 1086; const xml_token_t XML_dk1 = 1087; const xml_token_t XML_dk2 = 1088; const xml_token_t XML_dllVersion = 1089; const xml_token_t XML_dm = 1090; const xml_token_t XML_dn = 1091; const xml_token_t XML_doNotAutoCompressPictures = 1092; const xml_token_t XML_doNotAutofitConstrainedTables = 1093; const xml_token_t XML_doNotBreakConstrainedForcedTable = 1094; const xml_token_t XML_doNotBreakWrappedTables = 1095; const xml_token_t XML_doNotDemarcateInvalidXml = 1096; const xml_token_t XML_doNotDisplayPageBoundaries = 1097; const xml_token_t XML_doNotEmbedSmartTags = 1098; const xml_token_t XML_doNotExpandShiftReturn = 1099; const xml_token_t XML_doNotHyphenateCaps = 1100; const xml_token_t XML_doNotIncludeSubdocsInStats = 1101; const xml_token_t XML_doNotLeaveBackslashAlone = 1102; const xml_token_t XML_doNotOrganizeInFolder = 1103; const xml_token_t XML_doNotRelyOnCSS = 1104; const xml_token_t XML_doNotSaveAsSingleFile = 1105; const xml_token_t XML_doNotShadeFormData = 1106; const xml_token_t XML_doNotSnapToGridInCell = 1107; const xml_token_t XML_doNotSuppressBlankLines = 1108; const xml_token_t XML_doNotSuppressIndentation = 1109; const xml_token_t XML_doNotSuppressParagraphBorders = 1110; const xml_token_t XML_doNotTrackFormatting = 1111; const xml_token_t XML_doNotTrackMoves = 1112; const xml_token_t XML_doNotUseEastAsianBreakRules = 1113; const xml_token_t XML_doNotUseHTMLParagraphAutoSpacing = 1114; const xml_token_t XML_doNotUseIndentAsNumberingTabStop = 1115; const xml_token_t XML_doNotUseLongFileNames = 1116; const xml_token_t XML_doNotUseMarginsForDrawingGridOrigin = 1117; const xml_token_t XML_doNotValidateAgainstSchema = 1118; const xml_token_t XML_doNotVertAlignCellWithSp = 1119; const xml_token_t XML_doNotVertAlignInTxbx = 1120; const xml_token_t XML_doNotWrapTextWithPunct = 1121; const xml_token_t XML_docDefaults = 1122; const xml_token_t XML_docGrid = 1123; const xml_token_t XML_docLocation = 1124; const xml_token_t XML_docPart = 1125; const xml_token_t XML_docPartBody = 1126; const xml_token_t XML_docPartCategory = 1127; const xml_token_t XML_docPartGallery = 1128; const xml_token_t XML_docPartList = 1129; const xml_token_t XML_docPartObj = 1130; const xml_token_t XML_docPartPr = 1131; const xml_token_t XML_docPartUnique = 1132; const xml_token_t XML_docParts = 1133; const xml_token_t XML_docPr = 1134; const xml_token_t XML_docVar = 1135; const xml_token_t XML_docVars = 1136; const xml_token_t XML_document = 1137; const xml_token_t XML_documentProtection = 1138; const xml_token_t XML_documentType = 1139; const xml_token_t XML_double = 1140; const xml_token_t XML_doubleclicknotify = 1141; const xml_token_t XML_doughnutChart = 1142; const xml_token_t XML_downBars = 1143; const xml_token_t XML_dpi = 1144; const xml_token_t XML_dr = 1145; const xml_token_t XML_draft = 1146; const xml_token_t XML_dragOff = 1147; const xml_token_t XML_dragToCol = 1148; const xml_token_t XML_dragToData = 1149; const xml_token_t XML_dragToPage = 1150; const xml_token_t XML_dragToRow = 1151; const xml_token_t XML_drawing = 1152; const xml_token_t XML_drawingGridHorizontalOrigin = 1153; const xml_token_t XML_drawingGridHorizontalSpacing = 1154; const xml_token_t XML_drawingGridVerticalOrigin = 1155; const xml_token_t XML_drawingGridVerticalSpacing = 1156; const xml_token_t XML_drop = 1157; const xml_token_t XML_dropCap = 1158; const xml_token_t XML_dropDownList = 1159; const xml_token_t XML_dropLines = 1160; const xml_token_t XML_dropauto = 1161; const xml_token_t XML_ds = 1162; const xml_token_t XML_dstrike = 1163; const xml_token_t XML_dt = 1164; const xml_token_t XML_dt2D = 1165; const xml_token_t XML_dtr = 1166; const xml_token_t XML_duotone = 1167; const xml_token_t XML_dur = 1168; const xml_token_t XML_dvAspect = 1169; const xml_token_t XML_dx = 1170; const xml_token_t XML_dxaOrig = 1171; const xml_token_t XML_dxf = 1172; const xml_token_t XML_dxfId = 1173; const xml_token_t XML_dxfs = 1174; const xml_token_t XML_dy = 1175; const xml_token_t XML_dyaOrig = 1176; const xml_token_t XML_dynamicAddress = 1177; const xml_token_t XML_dynamicFilter = 1178; const xml_token_t XML_dz = 1179; const xml_token_t XML_e = 1180; const xml_token_t XML_ea = 1181; const xml_token_t XML_eaLnBrk = 1182; const xml_token_t XML_eastAsia = 1183; const xml_token_t XML_eastAsiaTheme = 1184; const xml_token_t XML_eastAsianLayout = 1185; const xml_token_t XML_eb = 1186; const xml_token_t XML_ed = 1187; const xml_token_t XML_edGrp = 1188; const xml_token_t XML_edge = 1189; const xml_token_t XML_edit = 1190; const xml_token_t XML_editAs = 1191; const xml_token_t XML_editData = 1192; const xml_token_t XML_editPage = 1193; const xml_token_t XML_editas = 1194; const xml_token_t XML_edited = 1195; const xml_token_t XML_effect = 1196; const xml_token_t XML_effectClrLst = 1197; const xml_token_t XML_effectDag = 1198; const xml_token_t XML_effectExtent = 1199; const xml_token_t XML_effectLst = 1200; const xml_token_t XML_effectRef = 1201; const xml_token_t XML_effectStyle = 1202; const xml_token_t XML_effectStyleLst = 1203; const xml_token_t XML_element = 1204; const xml_token_t XML_else = 1205; const xml_token_t XML_em = 1206; const xml_token_t XML_embed = 1207; const xml_token_t XML_embedBold = 1208; const xml_token_t XML_embedBoldItalic = 1209; const xml_token_t XML_embedItalic = 1210; const xml_token_t XML_embedRegular = 1211; const xml_token_t XML_embedSystemFonts = 1212; const xml_token_t XML_embedTrueTypeFonts = 1213; const xml_token_t XML_embeddedFont = 1214; const xml_token_t XML_embeddedFontLst = 1215; const xml_token_t XML_emboss = 1216; const xml_token_t XML_embosscolor = 1217; const xml_token_t XML_empty = 1218; const xml_token_t XML_emptyCellReference = 1219; const xml_token_t XML_enableDrill = 1220; const xml_token_t XML_enableFieldProperties = 1221; const xml_token_t XML_enableFormatConditionsCalculation = 1222; const xml_token_t XML_enableRefresh = 1223; const xml_token_t XML_enableWizard = 1224; const xml_token_t XML_enabled = 1225; const xml_token_t XML_encoding = 1226; const xml_token_t XML_end = 1227; const xml_token_t XML_endA = 1228; const xml_token_t XML_endAngle = 1229; const xml_token_t XML_endChr = 1230; const xml_token_t XML_endCondLst = 1231; const xml_token_t XML_endCxn = 1232; const xml_token_t XML_endDate = 1233; const xml_token_t XML_endNum = 1234; const xml_token_t XML_endOfListFormulaUpdate = 1235; const xml_token_t XML_endParaRPr = 1236; const xml_token_t XML_endPos = 1237; const xml_token_t XML_endSnd = 1238; const xml_token_t XML_endSync = 1239; const xml_token_t XML_endarrow = 1240; const xml_token_t XML_endarrowlength = 1241; const xml_token_t XML_endarrowwidth = 1242; const xml_token_t XML_endcap = 1243; const xml_token_t XML_endnote = 1244; const xml_token_t XML_endnotePr = 1245; const xml_token_t XML_endnoteRef = 1246; const xml_token_t XML_endnoteReference = 1247; const xml_token_t XML_endnotes = 1248; const xml_token_t XML_enforcement = 1249; const xml_token_t XML_entries = 1250; const xml_token_t XML_entry = 1251; const xml_token_t XML_entryMacro = 1252; const xml_token_t XML_eol = 1253; const xml_token_t XML_eqArr = 1254; const xml_token_t XML_eqArrPr = 1255; const xml_token_t XML_eqn = 1256; const xml_token_t XML_equalAverage = 1257; const xml_token_t XML_equalWidth = 1258; const xml_token_t XML_equation = 1259; const xml_token_t XML_equationxml = 1260; const xml_token_t XML_err = 1261; const xml_token_t XML_errBarType = 1262; const xml_token_t XML_errBars = 1263; const xml_token_t XML_errDir = 1264; const xml_token_t XML_errValType = 1265; const xml_token_t XML_error = 1266; const xml_token_t XML_errorCaption = 1267; const xml_token_t XML_errorStyle = 1268; const xml_token_t XML_errorTitle = 1269; const xml_token_t XML_errors = 1270; const xml_token_t XML_evalError = 1271; const xml_token_t XML_evalOrder = 1272; const xml_token_t XML_evenAndOddHeaders = 1273; const xml_token_t XML_evenFooter = 1274; const xml_token_t XML_evenHeader = 1275; const xml_token_t XML_evt = 1276; const xml_token_t XML_evtFilter = 1277; const xml_token_t XML_excl = 1278; const xml_token_t XML_exclusive = 1279; const xml_token_t XML_exitMacro = 1280; const xml_token_t XML_exp = 1281; const xml_token_t XML_explosion = 1282; const xml_token_t XML_ext = 1283; const xml_token_t XML_extLst = 1284; const xml_token_t XML_extend = 1285; const xml_token_t XML_extendable = 1286; const xml_token_t XML_extent = 1287; const xml_token_t XML_externalBook = 1288; const xml_token_t XML_externalData = 1289; const xml_token_t XML_externalLink = 1290; const xml_token_t XML_externalReference = 1291; const xml_token_t XML_externalReferences = 1292; const xml_token_t XML_extraClrScheme = 1293; const xml_token_t XML_extraClrSchemeLst = 1294; const xml_token_t XML_extrusion = 1295; const xml_token_t XML_extrusionClr = 1296; const xml_token_t XML_extrusionH = 1297; const xml_token_t XML_extrusionOk = 1298; const xml_token_t XML_extrusioncolor = 1299; const xml_token_t XML_extrusionok = 1300; const xml_token_t XML_f = 1301; const xml_token_t XML_fHdr = 1302; const xml_token_t XML_fLocksText = 1303; const xml_token_t XML_fLocksWithSheet = 1304; const xml_token_t XML_fName = 1305; const xml_token_t XML_fPr = 1306; const xml_token_t XML_fPrintsWithSheet = 1307; const xml_token_t XML_fPublished = 1308; const xml_token_t XML_facet = 1309; const xml_token_t XML_fact = 1310; const xml_token_t XML_fade = 1311; const xml_token_t XML_fadeDir = 1312; const xml_token_t XML_family = 1313; const xml_token_t XML_fc = 1314; const xml_token_t XML_ffData = 1315; const xml_token_t XML_fgClr = 1316; const xml_token_t XML_fgColor = 1317; const xml_token_t XML_fi = 1318; const xml_token_t XML_field = 1319; const xml_token_t XML_fieldGroup = 1320; const xml_token_t XML_fieldId = 1321; const xml_token_t XML_fieldIdWrapped = 1322; const xml_token_t XML_fieldListSortAscending = 1323; const xml_token_t XML_fieldMapData = 1324; const xml_token_t XML_fieldPosition = 1325; const xml_token_t XML_fieldPrintTitles = 1326; const xml_token_t XML_fieldUsage = 1327; const xml_token_t XML_fieldsUsage = 1328; const xml_token_t XML_fileRecoveryPr = 1329; const xml_token_t XML_fileSharing = 1330; const xml_token_t XML_fileType = 1331; const xml_token_t XML_fileVersion = 1332; const xml_token_t XML_filetime = 1333; const xml_token_t XML_fill = 1334; const xml_token_t XML_fillClrLst = 1335; const xml_token_t XML_fillFormulas = 1336; const xml_token_t XML_fillId = 1337; const xml_token_t XML_fillOverlay = 1338; const xml_token_t XML_fillRect = 1339; const xml_token_t XML_fillRef = 1340; const xml_token_t XML_fillStyleLst = 1341; const xml_token_t XML_fillToRect = 1342; const xml_token_t XML_fillcolor = 1343; const xml_token_t XML_filled = 1344; const xml_token_t XML_fillok = 1345; const xml_token_t XML_fills = 1346; const xml_token_t XML_filltype = 1347; const xml_token_t XML_filter = 1348; const xml_token_t XML_filterColumn = 1349; const xml_token_t XML_filterMode = 1350; const xml_token_t XML_filterPrivacy = 1351; const xml_token_t XML_filterUnique = 1352; const xml_token_t XML_filterVal = 1353; const xml_token_t XML_filters = 1354; const xml_token_t XML_first = 1355; const xml_token_t XML_firstBackgroundRefresh = 1356; const xml_token_t XML_firstCol = 1357; const xml_token_t XML_firstDataCol = 1358; const xml_token_t XML_firstDataRow = 1359; const xml_token_t XML_firstFooter = 1360; const xml_token_t XML_firstHeader = 1361; const xml_token_t XML_firstHeaderRow = 1362; const xml_token_t XML_firstLine = 1363; const xml_token_t XML_firstLineChars = 1364; const xml_token_t XML_firstPageNumber = 1365; const xml_token_t XML_firstRow = 1366; const xml_token_t XML_firstSheet = 1367; const xml_token_t XML_firstSliceAng = 1368; const xml_token_t XML_firstSlideNum = 1369; const xml_token_t XML_fitText = 1370; const xml_token_t XML_fitToHeight = 1371; const xml_token_t XML_fitToPage = 1372; const xml_token_t XML_fitToWidth = 1373; const xml_token_t XML_fitpath = 1374; const xml_token_t XML_fitshape = 1375; const xml_token_t XML_flatBorders = 1376; const xml_token_t XML_flatTx = 1377; const xml_token_t XML_fld = 1378; const xml_token_t XML_fldChar = 1379; const xml_token_t XML_fldCharType = 1380; const xml_token_t XML_fldData = 1381; const xml_token_t XML_fldLock = 1382; const xml_token_t XML_fldSimple = 1383; const xml_token_t XML_flip = 1384; const xml_token_t XML_flipH = 1385; const xml_token_t XML_flipV = 1386; const xml_token_t XML_floor = 1387; const xml_token_t XML_fltVal = 1388; const xml_token_t XML_fmla = 1389; const xml_token_t XML_fmt = 1390; const xml_token_t XML_fmtId = 1391; const xml_token_t XML_fmtScheme = 1392; const xml_token_t XML_fmtid = 1393; const xml_token_t XML_focus = 1394; const xml_token_t XML_focusposition = 1395; const xml_token_t XML_focussize = 1396; const xml_token_t XML_folHlink = 1397; const xml_token_t XML_followColorScheme = 1398; const xml_token_t XML_followedHyperlink = 1399; const xml_token_t XML_font = 1400; const xml_token_t XML_fontAlgn = 1401; const xml_token_t XML_fontId = 1402; const xml_token_t XML_fontKey = 1403; const xml_token_t XML_fontRef = 1404; const xml_token_t XML_fontScale = 1405; const xml_token_t XML_fontScheme = 1406; const xml_token_t XML_fontSz = 1407; const xml_token_t XML_fonts = 1408; const xml_token_t XML_footer = 1409; const xml_token_t XML_footerReference = 1410; const xml_token_t XML_footnote = 1411; const xml_token_t XML_footnoteLayoutLikeWW8 = 1412; const xml_token_t XML_footnotePr = 1413; const xml_token_t XML_footnoteRef = 1414; const xml_token_t XML_footnoteReference = 1415; const xml_token_t XML_footnotes = 1416; const xml_token_t XML_for = 1417; const xml_token_t XML_forEach = 1418; const xml_token_t XML_forName = 1419; const xml_token_t XML_forceAA = 1420; const xml_token_t XML_forceFullCalc = 1421; const xml_token_t XML_forceUpgrade = 1422; const xml_token_t XML_forcedash = 1423; const xml_token_t XML_foredepth = 1424; const xml_token_t XML_forgetLastTabAlignment = 1425; const xml_token_t XML_formProt = 1426; const xml_token_t XML_format = 1427; const xml_token_t XML_formatCells = 1428; const xml_token_t XML_formatCode = 1429; const xml_token_t XML_formatColumns = 1430; const xml_token_t XML_formatRows = 1431; const xml_token_t XML_formats = 1432; const xml_token_t XML_formatting = 1433; const xml_token_t XML_formsDesign = 1434; const xml_token_t XML_formula = 1435; const xml_token_t XML_formula1 = 1436; const xml_token_t XML_formula2 = 1437; const xml_token_t XML_formulaRange = 1438; const xml_token_t XML_formulas = 1439; const xml_token_t XML_forward = 1440; const xml_token_t XML_fov = 1441; const xml_token_t XML_frame = 1442; const xml_token_t XML_frameLayout = 1443; const xml_token_t XML_framePr = 1444; const xml_token_t XML_frameSlides = 1445; const xml_token_t XML_frameset = 1446; const xml_token_t XML_framesetSplitbar = 1447; const xml_token_t XML_from = 1448; const xml_token_t XML_fromWordArt = 1449; const xml_token_t XML_ftr = 1450; const xml_token_t XML_fullCalcOnLoad = 1451; const xml_token_t XML_fullDate = 1452; const xml_token_t XML_fullPrecision = 1453; const xml_token_t XML_fullScrn = 1454; const xml_token_t XML_func = 1455; const xml_token_t XML_funcPr = 1456; const xml_token_t XML_function = 1457; const xml_token_t XML_functionGroup = 1458; const xml_token_t XML_functionGroupId = 1459; const xml_token_t XML_functionGroups = 1460; const xml_token_t XML_futureMetadata = 1461; const xml_token_t XML_g = 1462; const xml_token_t XML_gain = 1463; const xml_token_t XML_gallery = 1464; const xml_token_t XML_gamma = 1465; const xml_token_t XML_gap = 1466; const xml_token_t XML_gapDepth = 1467; const xml_token_t XML_gapWidth = 1468; const xml_token_t XML_gd = 1469; const xml_token_t XML_gdLst = 1470; const xml_token_t XML_gdRefAng = 1471; const xml_token_t XML_gdRefR = 1472; const xml_token_t XML_gdRefX = 1473; const xml_token_t XML_gdRefY = 1474; const xml_token_t XML_gfxdata = 1475; const xml_token_t XML_ghostCol = 1476; const xml_token_t XML_ghostRow = 1477; const xml_token_t XML_glossaryDocument = 1478; const xml_token_t XML_glow = 1479; const xml_token_t XML_goal = 1480; const xml_token_t XML_gradFill = 1481; const xml_token_t XML_gradientFill = 1482; const xml_token_t XML_gradientshapeok = 1483; const xml_token_t XML_grammar = 1484; const xml_token_t XML_grandCol = 1485; const xml_token_t XML_grandRow = 1486; const xml_token_t XML_grandTotalCaption = 1487; const xml_token_t XML_graphic = 1488; const xml_token_t XML_graphicData = 1489; const xml_token_t XML_graphicEl = 1490; const xml_token_t XML_graphicFrame = 1491; const xml_token_t XML_graphicFrameLocks = 1492; const xml_token_t XML_gray = 1493; const xml_token_t XML_grayscale = 1494; const xml_token_t XML_grayscl = 1495; const xml_token_t XML_green = 1496; const xml_token_t XML_greenMod = 1497; const xml_token_t XML_greenOff = 1498; const xml_token_t XML_gridAfter = 1499; const xml_token_t XML_gridBefore = 1500; const xml_token_t XML_gridCol = 1501; const xml_token_t XML_gridDropZones = 1502; const xml_token_t XML_gridLines = 1503; const xml_token_t XML_gridLinesSet = 1504; const xml_token_t XML_gridSpacing = 1505; const xml_token_t XML_gridSpan = 1506; const xml_token_t XML_group = 1507; const xml_token_t XML_groupBy = 1508; const xml_token_t XML_groupChr = 1509; const xml_token_t XML_groupChrPr = 1510; const xml_token_t XML_groupInterval = 1511; const xml_token_t XML_groupItems = 1512; const xml_token_t XML_groupLevel = 1513; const xml_token_t XML_groupLevels = 1514; const xml_token_t XML_groupMember = 1515; const xml_token_t XML_groupMembers = 1516; const xml_token_t XML_grouping = 1517; const xml_token_t XML_groups = 1518; const xml_token_t XML_grow = 1519; const xml_token_t XML_growAutofit = 1520; const xml_token_t XML_growShrinkType = 1521; const xml_token_t XML_grpFill = 1522; const xml_token_t XML_grpId = 1523; const xml_token_t XML_grpSp = 1524; const xml_token_t XML_grpSpLocks = 1525; const xml_token_t XML_grpSpPr = 1526; const xml_token_t XML_gs = 1527; const xml_token_t XML_gsLst = 1528; const xml_token_t XML_gte = 1529; const xml_token_t XML_guid = 1530; const xml_token_t XML_guide = 1531; const xml_token_t XML_guideLst = 1532; const xml_token_t XML_gutter = 1533; const xml_token_t XML_gutterAtTop = 1534; const xml_token_t XML_h = 1535; const xml_token_t XML_hAnchor = 1536; const xml_token_t XML_hAnsi = 1537; const xml_token_t XML_hAnsiTheme = 1538; const xml_token_t XML_hMerge = 1539; const xml_token_t XML_hMode = 1540; const xml_token_t XML_hPercent = 1541; const xml_token_t XML_hR = 1542; const xml_token_t XML_hRule = 1543; const xml_token_t XML_hSpace = 1544; const xml_token_t XML_handles = 1545; const xml_token_t XML_handoutMaster = 1546; const xml_token_t XML_handoutMasterId = 1547; const xml_token_t XML_handoutMasterIdLst = 1548; const xml_token_t XML_hanging = 1549; const xml_token_t XML_hangingChars = 1550; const xml_token_t XML_hangingPunct = 1551; const xml_token_t XML_hasCustomPrompt = 1552; const xml_token_t XML_hash = 1553; const xml_token_t XML_hashData = 1554; const xml_token_t XML_hdr = 1555; const xml_token_t XML_hdrShapeDefaults = 1556; const xml_token_t XML_headEnd = 1557; const xml_token_t XML_header = 1558; const xml_token_t XML_headerFooter = 1559; const xml_token_t XML_headerReference = 1560; const xml_token_t XML_headerRowBorderDxfId = 1561; const xml_token_t XML_headerRowCellStyle = 1562; const xml_token_t XML_headerRowCount = 1563; const xml_token_t XML_headerRowDxfId = 1564; const xml_token_t XML_headerSource = 1565; const xml_token_t XML_headers = 1566; const xml_token_t XML_headersInLastRefresh = 1567; const xml_token_t XML_heading = 1568; const xml_token_t XML_headings = 1569; const xml_token_t XML_help = 1570; const xml_token_t XML_helpText = 1571; const xml_token_t XML_hf = 1572; const xml_token_t XML_hiLowLines = 1573; const xml_token_t XML_hidden = 1574; const xml_token_t XML_hiddenButton = 1575; const xml_token_t XML_hiddenColumn = 1576; const xml_token_t XML_hiddenColumns = 1577; const xml_token_t XML_hiddenLevel = 1578; const xml_token_t XML_hiddenRow = 1579; const xml_token_t XML_hiddenRows = 1580; const xml_token_t XML_hiddenSlides = 1581; const xml_token_t XML_hideBot = 1582; const xml_token_t XML_hideGeom = 1583; const xml_token_t XML_hideGrammaticalErrors = 1584; const xml_token_t XML_hideLastTrans = 1585; const xml_token_t XML_hideLeft = 1586; const xml_token_t XML_hideMark = 1587; const xml_token_t XML_hideNewItems = 1588; const xml_token_t XML_hidePivotFieldList = 1589; const xml_token_t XML_hideRight = 1590; const xml_token_t XML_hideSpellingErrors = 1591; const xml_token_t XML_hideTop = 1592; const xml_token_t XML_hier = 1593; const xml_token_t XML_hierBranch = 1594; const xml_token_t XML_hierarchy = 1595; const xml_token_t XML_hierarchyUsage = 1596; const xml_token_t XML_highlight = 1597; const xml_token_t XML_highlightClick = 1598; const xml_token_t XML_hint = 1599; const xml_token_t XML_history = 1600; const xml_token_t XML_hlink = 1601; const xml_token_t XML_hlinkClick = 1602; const xml_token_t XML_hlinkHover = 1603; const xml_token_t XML_hlinkMouseOver = 1604; const xml_token_t XML_holeSize = 1605; const xml_token_t XML_horizontal = 1606; const xml_token_t XML_horizontalCentered = 1607; const xml_token_t XML_horizontalDpi = 1608; const xml_token_t XML_horzAnchor = 1609; const xml_token_t XML_horzBarState = 1610; const xml_token_t XML_horzOverflow = 1611; const xml_token_t XML_hour = 1612; const xml_token_t XML_how = 1613; const xml_token_t XML_hps = 1614; const xml_token_t XML_hpsBaseText = 1615; const xml_token_t XML_hpsRaise = 1616; const xml_token_t XML_hr = 1617; const xml_token_t XML_hralign = 1618; const xml_token_t XML_href = 1619; const xml_token_t XML_hrnoshade = 1620; const xml_token_t XML_hrpct = 1621; const xml_token_t XML_hrstd = 1622; const xml_token_t XML_hsl = 1623; const xml_token_t XML_hslClr = 1624; const xml_token_t XML_ht = 1625; const xml_token_t XML_htmlFormat = 1626; const xml_token_t XML_htmlPubPr = 1627; const xml_token_t XML_htmlTables = 1628; const xml_token_t XML_hue = 1629; const xml_token_t XML_hueDir = 1630; const xml_token_t XML_hueMod = 1631; const xml_token_t XML_hueOff = 1632; const xml_token_t XML_hyperlink = 1633; const xml_token_t XML_hyperlinks = 1634; const xml_token_t XML_hyphenationZone = 1635; const xml_token_t XML_i = 1636; const xml_token_t XML_i1 = 1637; const xml_token_t XML_i2 = 1638; const xml_token_t XML_i3 = 1639; const xml_token_t XML_i4 = 1640; const xml_token_t XML_i8 = 1641; const xml_token_t XML_iCs = 1642; const xml_token_t XML_iLevel = 1643; const xml_token_t XML_iMeasureFld = 1644; const xml_token_t XML_iMeasureHier = 1645; const xml_token_t XML_icon = 1646; const xml_token_t XML_iconFilter = 1647; const xml_token_t XML_iconId = 1648; const xml_token_t XML_iconSet = 1649; const xml_token_t XML_id = 1650; const xml_token_t XML_idcntr = 1651; const xml_token_t XML_iddest = 1652; const xml_token_t XML_idmap = 1653; const xml_token_t XML_idref = 1654; const xml_token_t XML_idsrc = 1655; const xml_token_t XML_idx = 1656; const xml_token_t XML_if = 1657; const xml_token_t XML_ignoreMixedContent = 1658; const xml_token_t XML_ignoredError = 1659; const xml_token_t XML_ignoredErrors = 1660; const xml_token_t XML_ilvl = 1661; const xml_token_t XML_image = 1662; const xml_token_t XML_imagealignshape = 1663; const xml_token_t XML_imageaspect = 1664; const xml_token_t XML_imagedata = 1665; const xml_token_t XML_imagesize = 1666; const xml_token_t XML_imeMode = 1667; const xml_token_t XML_imgH = 1668; const xml_token_t XML_imgSz = 1669; const xml_token_t XML_imgW = 1670; const xml_token_t XML_immersive = 1671; const xml_token_t XML_imprint = 1672; const xml_token_t XML_in = 1673; const xml_token_t XML_includeHiddenRowCol = 1674; const xml_token_t XML_includeNewItemsInFilter = 1675; const xml_token_t XML_includePrintSettings = 1676; const xml_token_t XML_ind = 1677; const xml_token_t XML_indent = 1678; const xml_token_t XML_index = 1679; const xml_token_t XML_indexed = 1680; const xml_token_t XML_indexedColors = 1681; const xml_token_t XML_initials = 1682; const xml_token_t XML_ink = 1683; const xml_token_t XML_inkAnnotations = 1684; const xml_token_t XML_inkTgt = 1685; const xml_token_t XML_inline = 1686; const xml_token_t XML_innerShdw = 1687; const xml_token_t XML_inputCells = 1688; const xml_token_t XML_ins = 1689; const xml_token_t XML_insDel = 1690; const xml_token_t XML_insertBlankRow = 1691; const xml_token_t XML_insertColumns = 1692; const xml_token_t XML_insertHyperlinks = 1693; const xml_token_t XML_insertPageBreak = 1694; const xml_token_t XML_insertRow = 1695; const xml_token_t XML_insertRowShift = 1696; const xml_token_t XML_insertRows = 1697; const xml_token_t XML_inset = 1698; const xml_token_t XML_insetmode = 1699; const xml_token_t XML_insetpen = 1700; const xml_token_t XML_insetpenok = 1701; const xml_token_t XML_insideH = 1702; const xml_token_t XML_insideV = 1703; const xml_token_t XML_instr = 1704; const xml_token_t XML_instrText = 1705; const xml_token_t XML_int = 1706; const xml_token_t XML_intLim = 1707; const xml_token_t XML_intVal = 1708; const xml_token_t XML_integer = 1709; const xml_token_t XML_interSp = 1710; const xml_token_t XML_intercept = 1711; const xml_token_t XML_intermediate = 1712; const xml_token_t XML_interval = 1713; const xml_token_t XML_intraSp = 1714; const xml_token_t XML_inv = 1715; const xml_token_t XML_invGamma = 1716; const xml_token_t XML_invalEndChars = 1717; const xml_token_t XML_invalStChars = 1718; const xml_token_t XML_invalid = 1719; const xml_token_t XML_invalidUrl = 1720; const xml_token_t XML_invertIfNegative = 1721; const xml_token_t XML_invx = 1722; const xml_token_t XML_invy = 1723; const xml_token_t XML_is = 1724; const xml_token_t XML_isLgl = 1725; const xml_token_t XML_isNarration = 1726; const xml_token_t XML_isPhoto = 1727; const xml_token_t XML_iscomment = 1728; const xml_token_t XML_issignatureline = 1729; const xml_token_t XML_italic = 1730; const xml_token_t XML_item = 1731; const xml_token_t XML_itemID = 1732; const xml_token_t XML_itemPageCount = 1733; const xml_token_t XML_itemPrintTitles = 1734; const xml_token_t XML_items = 1735; const xml_token_t XML_iterate = 1736; const xml_token_t XML_iterateCount = 1737; const xml_token_t XML_iterateDelta = 1738; const xml_token_t XML_jc = 1739; const xml_token_t XML_joinstyle = 1740; const xml_token_t XML_justifyLastLine = 1741; const xml_token_t XML_k = 1742; const xml_token_t XML_keepAlive = 1743; const xml_token_t XML_keepChangeHistory = 1744; const xml_token_t XML_keepLines = 1745; const xml_token_t XML_keepNext = 1746; const xml_token_t XML_kern = 1747; const xml_token_t XML_key = 1748; const xml_token_t XML_keyAttribute = 1749; const xml_token_t XML_kinsoku = 1750; const xml_token_t XML_kiosk = 1751; const xml_token_t XML_kpi = 1752; const xml_token_t XML_kpis = 1753; const xml_token_t XML_kumimoji = 1754; const xml_token_t XML_kx = 1755; const xml_token_t XML_ky = 1756; const xml_token_t XML_l = 1757; const xml_token_t XML_lBounds = 1758; const xml_token_t XML_lIns = 1759; const xml_token_t XML_lMargin = 1760; const xml_token_t XML_label = 1761; const xml_token_t XML_labelOnly = 1762; const xml_token_t XML_lang = 1763; const xml_token_t XML_lastClr = 1764; const xml_token_t XML_lastCol = 1765; const xml_token_t XML_lastEdited = 1766; const xml_token_t XML_lastGuid = 1767; const xml_token_t XML_lastIdx = 1768; const xml_token_t XML_lastRenderedPageBreak = 1769; const xml_token_t XML_lastRow = 1770; const xml_token_t XML_lastValue = 1771; const xml_token_t XML_lastView = 1772; const xml_token_t XML_lat = 1773; const xml_token_t XML_latentStyles = 1774; const xml_token_t XML_latin = 1775; const xml_token_t XML_latinLnBrk = 1776; const xml_token_t XML_layout = 1777; const xml_token_t XML_layoutDef = 1778; const xml_token_t XML_layoutDefHdr = 1779; const xml_token_t XML_layoutDefHdrLst = 1780; const xml_token_t XML_layoutInCell = 1781; const xml_token_t XML_layoutNode = 1782; const xml_token_t XML_layoutRawTableWidth = 1783; const xml_token_t XML_layoutTableRowsApart = 1784; const xml_token_t XML_layoutTarget = 1785; const xml_token_t XML_lblAlgn = 1786; const xml_token_t XML_lblOffset = 1787; const xml_token_t XML_leader = 1788; const xml_token_t XML_leaderLines = 1789; const xml_token_t XML_left = 1790; const xml_token_t XML_leftChars = 1791; const xml_token_t XML_leftFromText = 1792; const xml_token_t XML_leftLabels = 1793; const xml_token_t XML_legacy = 1794; const xml_token_t XML_legacyDrawing = 1795; const xml_token_t XML_legacyDrawingHF = 1796; const xml_token_t XML_legacyIndent = 1797; const xml_token_t XML_legacySpace = 1798; const xml_token_t XML_legend = 1799; const xml_token_t XML_legendEntry = 1800; const xml_token_t XML_legendPos = 1801; const xml_token_t XML_len = 1802; const xml_token_t XML_length = 1803; const xml_token_t XML_lengthspecified = 1804; const xml_token_t XML_level = 1805; const xml_token_t XML_lid = 1806; const xml_token_t XML_lightRig = 1807; const xml_token_t XML_lightface = 1808; const xml_token_t XML_lightharsh = 1809; const xml_token_t XML_lightharsh2 = 1810; const xml_token_t XML_lightlevel = 1811; const xml_token_t XML_lightlevel2 = 1812; const xml_token_t XML_lightposition = 1813; const xml_token_t XML_lightposition2 = 1814; const xml_token_t XML_lim = 1815; const xml_token_t XML_limLoc = 1816; const xml_token_t XML_limLow = 1817; const xml_token_t XML_limLowPr = 1818; const xml_token_t XML_limUpp = 1819; const xml_token_t XML_limUppPr = 1820; const xml_token_t XML_limo = 1821; const xml_token_t XML_lin = 1822; const xml_token_t XML_linClrLst = 1823; const xml_token_t XML_line = 1824; const xml_token_t XML_line3DChart = 1825; const xml_token_t XML_lineChart = 1826; const xml_token_t XML_linePitch = 1827; const xml_token_t XML_lineRule = 1828; const xml_token_t XML_lineTo = 1829; const xml_token_t XML_lineWrapLikeWord6 = 1830; const xml_token_t XML_lines = 1831; const xml_token_t XML_linestyle = 1832; const xml_token_t XML_link = 1833; const xml_token_t XML_linkStyles = 1834; const xml_token_t XML_linkTarget = 1835; const xml_token_t XML_linkToQuery = 1836; const xml_token_t XML_linkedToFile = 1837; const xml_token_t XML_listDataValidation = 1838; const xml_token_t XML_listEntry = 1839; const xml_token_t XML_listItem = 1840; const xml_token_t XML_listSeparator = 1841; const xml_token_t XML_lit = 1842; const xml_token_t XML_lkTxEntry = 1843; const xml_token_t XML_ln = 1844; const xml_token_t XML_lnB = 1845; const xml_token_t XML_lnBlToTr = 1846; const xml_token_t XML_lnDef = 1847; const xml_token_t XML_lnL = 1848; const xml_token_t XML_lnNumType = 1849; const xml_token_t XML_lnR = 1850; const xml_token_t XML_lnRef = 1851; const xml_token_t XML_lnSpc = 1852; const xml_token_t XML_lnSpcReduction = 1853; const xml_token_t XML_lnStyleLst = 1854; const xml_token_t XML_lnT = 1855; const xml_token_t XML_lnTlToBr = 1856; const xml_token_t XML_lnTo = 1857; const xml_token_t XML_lo = 1858; const xml_token_t XML_loCatId = 1859; const xml_token_t XML_loTypeId = 1860; const xml_token_t XML_local = 1861; const xml_token_t XML_localConnection = 1862; const xml_token_t XML_localRefresh = 1863; const xml_token_t XML_localSheetId = 1864; const xml_token_t XML_location = 1865; const xml_token_t XML_lock = 1866; const xml_token_t XML_lockRevision = 1867; const xml_token_t XML_lockStructure = 1868; const xml_token_t XML_lockWindows = 1869; const xml_token_t XML_locked = 1870; const xml_token_t XML_lockedCanvas = 1871; const xml_token_t XML_lockrotationcenter = 1872; const xml_token_t XML_logBase = 1873; const xml_token_t XML_lon = 1874; const xml_token_t XML_longFileNames = 1875; const xml_token_t XML_longText = 1876; const xml_token_t XML_loop = 1877; const xml_token_t XML_lowestEdited = 1878; const xml_token_t XML_lpstr = 1879; const xml_token_t XML_lpwstr = 1880; const xml_token_t XML_lsdException = 1881; const xml_token_t XML_lstStyle = 1882; const xml_token_t XML_lt1 = 1883; const xml_token_t XML_lt2 = 1884; const xml_token_t XML_lum = 1885; const xml_token_t XML_lumMod = 1886; const xml_token_t XML_lumOff = 1887; const xml_token_t XML_lvl = 1888; const xml_token_t XML_lvl1pPr = 1889; const xml_token_t XML_lvl2pPr = 1890; const xml_token_t XML_lvl3pPr = 1891; const xml_token_t XML_lvl4pPr = 1892; const xml_token_t XML_lvl5pPr = 1893; const xml_token_t XML_lvl6pPr = 1894; const xml_token_t XML_lvl7pPr = 1895; const xml_token_t XML_lvl8pPr = 1896; const xml_token_t XML_lvl9pPr = 1897; const xml_token_t XML_lvlJc = 1898; const xml_token_t XML_lvlOverride = 1899; const xml_token_t XML_lvlPicBulletId = 1900; const xml_token_t XML_lvlRestart = 1901; const xml_token_t XML_lvlText = 1902; const xml_token_t XML_m = 1903; const xml_token_t XML_mPr = 1904; const xml_token_t XML_macro = 1905; const xml_token_t XML_mailAsAttachment = 1906; const xml_token_t XML_mailMerge = 1907; const xml_token_t XML_mailSubject = 1908; const xml_token_t XML_main = 1909; const xml_token_t XML_mainDocumentType = 1910; const xml_token_t XML_majorFont = 1911; const xml_token_t XML_majorGridlines = 1912; const xml_token_t XML_majorTickMark = 1913; const xml_token_t XML_majorTimeUnit = 1914; const xml_token_t XML_majorUnit = 1915; const xml_token_t XML_man = 1916; const xml_token_t XML_manifestLocation = 1917; const xml_token_t XML_manualBreakCount = 1918; const xml_token_t XML_manualLayout = 1919; const xml_token_t XML_map = 1920; const xml_token_t XML_mapId = 1921; const xml_token_t XML_mappedName = 1922; const xml_token_t XML_mappingCount = 1923; const xml_token_t XML_maps = 1924; const xml_token_t XML_marB = 1925; const xml_token_t XML_marBottom = 1926; const xml_token_t XML_marH = 1927; const xml_token_t XML_marL = 1928; const xml_token_t XML_marLeft = 1929; const xml_token_t XML_marR = 1930; const xml_token_t XML_marRight = 1931; const xml_token_t XML_marT = 1932; const xml_token_t XML_marTop = 1933; const xml_token_t XML_marW = 1934; const xml_token_t XML_marker = 1935; const xml_token_t XML_markup = 1936; const xml_token_t XML_master = 1937; const xml_token_t XML_masterClrMapping = 1938; const xml_token_t XML_masterRel = 1939; const xml_token_t XML_matchSrc = 1940; const xml_token_t XML_matchingName = 1941; const xml_token_t XML_mathFont = 1942; const xml_token_t XML_mathPr = 1943; const xml_token_t XML_matrix = 1944; const xml_token_t XML_max = 1945; const xml_token_t XML_maxAng = 1946; const xml_token_t XML_maxDate = 1947; const xml_token_t XML_maxDist = 1948; const xml_token_t XML_maxLength = 1949; const xml_token_t XML_maxR = 1950; const xml_token_t XML_maxRId = 1951; const xml_token_t XML_maxRank = 1952; const xml_token_t XML_maxSheetId = 1953; const xml_token_t XML_maxSubtotal = 1954; const xml_token_t XML_maxVal = 1955; const xml_token_t XML_maxValue = 1956; const xml_token_t XML_maxX = 1957; const xml_token_t XML_maxY = 1958; const xml_token_t XML_maximized = 1959; const xml_token_t XML_mc = 1960; const xml_token_t XML_mcJc = 1961; const xml_token_t XML_mcPr = 1962; const xml_token_t XML_mcs = 1963; const xml_token_t XML_mdx = 1964; const xml_token_t XML_mdxMetadata = 1965; const xml_token_t XML_mdxSubqueries = 1966; const xml_token_t XML_measure = 1967; const xml_token_t XML_measureFilter = 1968; const xml_token_t XML_measureGroup = 1969; const xml_token_t XML_measureGroups = 1970; const xml_token_t XML_measures = 1971; const xml_token_t XML_member = 1972; const xml_token_t XML_memberName = 1973; const xml_token_t XML_memberPropertyField = 1974; const xml_token_t XML_memberValueDatatype = 1975; const xml_token_t XML_members = 1976; const xml_token_t XML_merge = 1977; const xml_token_t XML_mergeCell = 1978; const xml_token_t XML_mergeCells = 1979; const xml_token_t XML_mergeInterval = 1980; const xml_token_t XML_mergeItem = 1981; const xml_token_t XML_metadata = 1982; const xml_token_t XML_metadataStrings = 1983; const xml_token_t XML_metadataType = 1984; const xml_token_t XML_metadataTypes = 1985; const xml_token_t XML_metal = 1986; const xml_token_t XML_meth = 1987; const xml_token_t XML_method = 1988; const xml_token_t XML_min = 1989; const xml_token_t XML_minAng = 1990; const xml_token_t XML_minDate = 1991; const xml_token_t XML_minLength = 1992; const xml_token_t XML_minR = 1993; const xml_token_t XML_minRId = 1994; const xml_token_t XML_minRefreshableVersion = 1995; const xml_token_t XML_minSubtotal = 1996; const xml_token_t XML_minSupportedVersion = 1997; const xml_token_t XML_minValue = 1998; const xml_token_t XML_minVer = 1999; const xml_token_t XML_minX = 2000; const xml_token_t XML_minY = 2001; const xml_token_t XML_minimized = 2002; const xml_token_t XML_minimumVersion = 2003; const xml_token_t XML_minorFont = 2004; const xml_token_t XML_minorGridlines = 2005; const xml_token_t XML_minorTickMark = 2006; const xml_token_t XML_minorTimeUnit = 2007; const xml_token_t XML_minorUnit = 2008; const xml_token_t XML_minus = 2009; const xml_token_t XML_minusx = 2010; const xml_token_t XML_minusy = 2011; const xml_token_t XML_minute = 2012; const xml_token_t XML_mirrorIndents = 2013; const xml_token_t XML_mirrorMargins = 2014; const xml_token_t XML_missingCaption = 2015; const xml_token_t XML_missingItemsLimit = 2016; const xml_token_t XML_miter = 2017; const xml_token_t XML_miterlimit = 2018; const xml_token_t XML_mod = 2019; const xml_token_t XML_modelId = 2020; const xml_token_t XML_modifyVerifier = 2021; const xml_token_t XML_month = 2022; const xml_token_t XML_monthLong = 2023; const xml_token_t XML_monthShort = 2024; const xml_token_t XML_moveFrom = 2025; const xml_token_t XML_moveFromRangeEnd = 2026; const xml_token_t XML_moveFromRangeStart = 2027; const xml_token_t XML_moveTo = 2028; const xml_token_t XML_moveToRangeEnd = 2029; const xml_token_t XML_moveToRangeStart = 2030; const xml_token_t XML_moveWith = 2031; const xml_token_t XML_movie = 2032; const xml_token_t XML_mp = 2033; const xml_token_t XML_mpFld = 2034; const xml_token_t XML_mpMap = 2035; const xml_token_t XML_mps = 2036; const xml_token_t XML_mr = 2037; const xml_token_t XML_mruColors = 2038; const xml_token_t XML_ms = 2039; const xml_token_t XML_multiLevelType = 2040; const xml_token_t XML_multiLine = 2041; const xml_token_t XML_multiLvlStrCache = 2042; const xml_token_t XML_multiLvlStrRef = 2043; const xml_token_t XML_multipleFieldFilters = 2044; const xml_token_t XML_multipleItemSelectionAllowed = 2045; const xml_token_t XML_mute = 2046; const xml_token_t XML_mwSmallCaps = 2047; const xml_token_t XML_n = 2048; const xml_token_t XML_name = 2049; const xml_token_t XML_nameLen = 2050; const xml_token_t XML_namespaceUri = 2051; const xml_token_t XML_namespaceuri = 2052; const xml_token_t XML_nary = 2053; const xml_token_t XML_naryLim = 2054; const xml_token_t XML_naryPr = 2055; const xml_token_t XML_nc = 2056; const xml_token_t XML_ndxf = 2057; const xml_token_t XML_neCell = 2058; const xml_token_t XML_new = 2059; const xml_token_t XML_newLength = 2060; const xml_token_t XML_newName = 2061; const xml_token_t XML_newsflash = 2062; const xml_token_t XML_next = 2063; const xml_token_t XML_nextAc = 2064; const xml_token_t XML_nextCondLst = 2065; const xml_token_t XML_nextId = 2066; const xml_token_t XML_nf = 2067; const xml_token_t XML_nlCheck = 2068; const xml_token_t XML_noAdjustHandles = 2069; const xml_token_t XML_noAutofit = 2070; const xml_token_t XML_noBorder = 2071; const xml_token_t XML_noBreak = 2072; const xml_token_t XML_noBreakHyphen = 2073; const xml_token_t XML_noChangeArrowheads = 2074; const xml_token_t XML_noChangeAspect = 2075; const xml_token_t XML_noChangeShapeType = 2076; const xml_token_t XML_noColumnBalance = 2077; const xml_token_t XML_noCrop = 2078; const xml_token_t XML_noDrilldown = 2079; const xml_token_t XML_noEditPoints = 2080; const xml_token_t XML_noEndCap = 2081; const xml_token_t XML_noEndnote = 2082; const xml_token_t XML_noExtraLineSpacing = 2083; const xml_token_t XML_noFill = 2084; const xml_token_t XML_noGrp = 2085; const xml_token_t XML_noLabel = 2086; const xml_token_t XML_noLeading = 2087; const xml_token_t XML_noLineBreaksAfter = 2088; const xml_token_t XML_noLineBreaksBefore = 2089; const xml_token_t XML_noMove = 2090; const xml_token_t XML_noMultiLvlLbl = 2091; const xml_token_t XML_noProof = 2092; const xml_token_t XML_noPunctuationKerning = 2093; const xml_token_t XML_noResize = 2094; const xml_token_t XML_noResizeAllowed = 2095; const xml_token_t XML_noRot = 2096; const xml_token_t XML_noSelect = 2097; const xml_token_t XML_noSpaceRaiseLower = 2098; const xml_token_t XML_noTabHangInd = 2099; const xml_token_t XML_noTextEdit = 2100; const xml_token_t XML_noUngrp = 2101; const xml_token_t XML_noWrap = 2102; const xml_token_t XML_nodePh = 2103; const xml_token_t XML_nodeType = 2104; const xml_token_t XML_nonAutoSortDefault = 2105; const xml_token_t XML_nor = 2106; const xml_token_t XML_norm = 2107; const xml_token_t XML_normAutofit = 2108; const xml_token_t XML_normalViewPr = 2109; const xml_token_t XML_normalizeH = 2110; const xml_token_t XML_notTrueType = 2111; const xml_token_t XML_notes = 2112; const xml_token_t XML_notesMaster = 2113; const xml_token_t XML_notesMasterId = 2114; const xml_token_t XML_notesMasterIdLst = 2115; const xml_token_t XML_notesStyle = 2116; const xml_token_t XML_notesSz = 2117; const xml_token_t XML_notesTextViewPr = 2118; const xml_token_t XML_notesViewPr = 2119; const xml_token_t XML_np = 2120; const xml_token_t XML_ns = 2121; const xml_token_t XML_nsid = 2122; const xml_token_t XML_null = 2123; const xml_token_t XML_num = 2124; const xml_token_t XML_numCache = 2125; const xml_token_t XML_numCol = 2126; const xml_token_t XML_numFmt = 2127; const xml_token_t XML_numFmtId = 2128; const xml_token_t XML_numFmts = 2129; const xml_token_t XML_numId = 2130; const xml_token_t XML_numIdMacAtCleanup = 2131; const xml_token_t XML_numLit = 2132; const xml_token_t XML_numPicBullet = 2133; const xml_token_t XML_numPicBulletId = 2134; const xml_token_t XML_numPr = 2135; const xml_token_t XML_numRef = 2136; const xml_token_t XML_numRestart = 2137; const xml_token_t XML_numSld = 2138; const xml_token_t XML_numStart = 2139; const xml_token_t XML_numStyleLink = 2140; const xml_token_t XML_numberStoredAsText = 2141; const xml_token_t XML_numbering = 2142; const xml_token_t XML_numberingChange = 2143; const xml_token_t XML_nvCxnSpPr = 2144; const xml_token_t XML_nvGraphicFramePr = 2145; const xml_token_t XML_nvGrpSpPr = 2146; const xml_token_t XML_nvPicPr = 2147; const xml_token_t XML_nvPr = 2148; const xml_token_t XML_nvSpPr = 2149; const xml_token_t XML_nwCell = 2150; const xml_token_t XML_o = 2151; const xml_token_t XML_oMath = 2152; const xml_token_t XML_oMathPara = 2153; const xml_token_t XML_oMathParaPr = 2154; const xml_token_t XML_objDist = 2155; const xml_token_t XML_object = 2156; const xml_token_t XML_objectDefaults = 2157; const xml_token_t XML_objects = 2158; const xml_token_t XML_oblob = 2159; const xml_token_t XML_obscured = 2160; const xml_token_t XML_oc = 2161; const xml_token_t XML_odcFile = 2162; const xml_token_t XML_oddFooter = 2163; const xml_token_t XML_oddHeader = 2164; const xml_token_t XML_odso = 2165; const xml_token_t XML_odxf = 2166; const xml_token_t XML_ofPieChart = 2167; const xml_token_t XML_ofPieType = 2168; const xml_token_t XML_off = 2169; const xml_token_t XML_offset = 2170; const xml_token_t XML_offset2 = 2171; const xml_token_t XML_offsetFrom = 2172; const xml_token_t XML_olapPr = 2173; const xml_token_t XML_old = 2174; const xml_token_t XML_oldComment = 2175; const xml_token_t XML_oldCustomMenu = 2176; const xml_token_t XML_oldDescription = 2177; const xml_token_t XML_oldFormula = 2178; const xml_token_t XML_oldFunction = 2179; const xml_token_t XML_oldFunctionGroupId = 2180; const xml_token_t XML_oldHelp = 2181; const xml_token_t XML_oldHidden = 2182; const xml_token_t XML_oldLength = 2183; const xml_token_t XML_oldName = 2184; const xml_token_t XML_oldPh = 2185; const xml_token_t XML_oldQuotePrefix = 2186; const xml_token_t XML_oldShortcutKey = 2187; const xml_token_t XML_oldStatusBar = 2188; const xml_token_t XML_ole = 2189; const xml_token_t XML_oleChartEl = 2190; const xml_token_t XML_oleItem = 2191; const xml_token_t XML_oleItems = 2192; const xml_token_t XML_oleLink = 2193; const xml_token_t XML_oleObj = 2194; const xml_token_t XML_oleObject = 2195; const xml_token_t XML_oleObjects = 2196; const xml_token_t XML_oleSize = 2197; const xml_token_t XML_oleUpdate = 2198; const xml_token_t XML_oleicon = 2199; const xml_token_t XML_oleid = 2200; const xml_token_t XML_on = 2201; const xml_token_t XML_oneCellAnchor = 2202; const xml_token_t XML_oneField = 2203; const xml_token_t XML_oned = 2204; const xml_token_t XML_onlySync = 2205; const xml_token_t XML_onlyUseConnectionFile = 2206; const xml_token_t XML_op = 2207; const xml_token_t XML_opEmu = 2208; const xml_token_t XML_opacity = 2209; const xml_token_t XML_opacity2 = 2210; const xml_token_t XML_operator = 2211; const xml_token_t XML_optimizeForBrowser = 2212; const xml_token_t XML_optimizeMemory = 2213; const xml_token_t XML_order = 2214; const xml_token_t XML_orgChart = 2215; const xml_token_t XML_organizeInFolders = 2216; const xml_token_t XML_orient = 2217; const xml_token_t XML_orientation = 2218; const xml_token_t XML_orientationangle = 2219; const xml_token_t XML_origin = 2220; const xml_token_t XML_original = 2221; const xml_token_t XML_ostorage = 2222; const xml_token_t XML_ostream = 2223; const xml_token_t XML_other = 2224; const xml_token_t XML_otherStyle = 2225; const xml_token_t XML_outerShdw = 2226; const xml_token_t XML_outline = 2227; const xml_token_t XML_outlineData = 2228; const xml_token_t XML_outlineLevel = 2229; const xml_token_t XML_outlineLevelCol = 2230; const xml_token_t XML_outlineLevelRow = 2231; const xml_token_t XML_outlineLvl = 2232; const xml_token_t XML_outlinePr = 2233; const xml_token_t XML_outlineSymbols = 2234; const xml_token_t XML_outlineViewPr = 2235; const xml_token_t XML_oval = 2236; const xml_token_t XML_overflowPunct = 2237; const xml_token_t XML_overlap = 2238; const xml_token_t XML_overlay = 2239; const xml_token_t XML_override = 2240; const xml_token_t XML_overrideClrMapping = 2241; const xml_token_t XML_p = 2242; const xml_token_t XML_pBdr = 2243; const xml_token_t XML_pLen = 2244; const xml_token_t XML_pPos = 2245; const xml_token_t XML_pPr = 2246; const xml_token_t XML_pPrChange = 2247; const xml_token_t XML_pPrDefault = 2248; const xml_token_t XML_pRg = 2249; const xml_token_t XML_pStyle = 2250; const xml_token_t XML_page = 2251; const xml_token_t XML_pageBreakBefore = 2252; const xml_token_t XML_pageField = 2253; const xml_token_t XML_pageFields = 2254; const xml_token_t XML_pageItem = 2255; const xml_token_t XML_pageMargins = 2256; const xml_token_t XML_pageOrder = 2257; const xml_token_t XML_pageOverThenDown = 2258; const xml_token_t XML_pageSetUpPr = 2259; const xml_token_t XML_pageSetup = 2260; const xml_token_t XML_pageStyle = 2261; const xml_token_t XML_pageWrap = 2262; const xml_token_t XML_pages = 2263; const xml_token_t XML_pane = 2264; const xml_token_t XML_panose = 2265; const xml_token_t XML_panose1 = 2266; const xml_token_t XML_paperSize = 2267; const xml_token_t XML_paperSrc = 2268; const xml_token_t XML_par = 2269; const xml_token_t XML_parTransId = 2270; const xml_token_t XML_param = 2271; const xml_token_t XML_parameter = 2272; const xml_token_t XML_parameterType = 2273; const xml_token_t XML_parameters = 2274; const xml_token_t XML_parent = 2275; const xml_token_t XML_parentSet = 2276; const xml_token_t XML_parsePre = 2277; const xml_token_t XML_password = 2278; const xml_token_t XML_pasteAll = 2279; const xml_token_t XML_pasteBorders = 2280; const xml_token_t XML_pasteColWidths = 2281; const xml_token_t XML_pasteComments = 2282; const xml_token_t XML_pasteDataValidation = 2283; const xml_token_t XML_pasteFormats = 2284; const xml_token_t XML_pasteFormulas = 2285; const xml_token_t XML_pasteNumberFormats = 2286; const xml_token_t XML_pasteValues = 2287; const xml_token_t XML_path = 2288; const xml_token_t XML_pathEditMode = 2289; const xml_token_t XML_pathLst = 2290; const xml_token_t XML_pattFill = 2291; const xml_token_t XML_patternFill = 2292; const xml_token_t XML_patternType = 2293; const xml_token_t XML_penClr = 2294; const xml_token_t XML_percent = 2295; const xml_token_t XML_period = 2296; const xml_token_t XML_permEnd = 2297; const xml_token_t XML_permStart = 2298; const xml_token_t XML_personal = 2299; const xml_token_t XML_personalCompose = 2300; const xml_token_t XML_personalReply = 2301; const xml_token_t XML_personalView = 2302; const xml_token_t XML_perspective = 2303; const xml_token_t XML_pgBorders = 2304; const xml_token_t XML_pgMar = 2305; const xml_token_t XML_pgNum = 2306; const xml_token_t XML_pgNumType = 2307; const xml_token_t XML_pgSz = 2308; const xml_token_t XML_ph = 2309; const xml_token_t XML_phant = 2310; const xml_token_t XML_phantPr = 2311; const xml_token_t XML_phldr = 2312; const xml_token_t XML_phldrT = 2313; const xml_token_t XML_phonetic = 2314; const xml_token_t XML_phoneticPr = 2315; const xml_token_t XML_photoAlbum = 2316; const xml_token_t XML_pic = 2317; const xml_token_t XML_picLocks = 2318; const xml_token_t XML_pict = 2319; const xml_token_t XML_picture = 2320; const xml_token_t XML_pictureFormat = 2321; const xml_token_t XML_pictureOptions = 2322; const xml_token_t XML_pictureStackUnit = 2323; const xml_token_t XML_pid = 2324; const xml_token_t XML_pie3DChart = 2325; const xml_token_t XML_pieChart = 2326; const xml_token_t XML_pitch = 2327; const xml_token_t XML_pitchFamily = 2328; const xml_token_t XML_pivot = 2329; const xml_token_t XML_pivotArea = 2330; const xml_token_t XML_pivotAreas = 2331; const xml_token_t XML_pivotButton = 2332; const xml_token_t XML_pivotCache = 2333; const xml_token_t XML_pivotCacheDefinition = 2334; const xml_token_t XML_pivotCacheRecords = 2335; const xml_token_t XML_pivotCaches = 2336; const xml_token_t XML_pivotField = 2337; const xml_token_t XML_pivotFields = 2338; const xml_token_t XML_pivotFmt = 2339; const xml_token_t XML_pivotFmts = 2340; const xml_token_t XML_pivotHierarchies = 2341; const xml_token_t XML_pivotHierarchy = 2342; const xml_token_t XML_pivotSelection = 2343; const xml_token_t XML_pivotSource = 2344; const xml_token_t XML_pivotTableDefinition = 2345; const xml_token_t XML_pivotTableStyle = 2346; const xml_token_t XML_pivotTableStyleInfo = 2347; const xml_token_t XML_pivotTables = 2348; const xml_token_t XML_pixelsPerInch = 2349; const xml_token_t XML_placeholder = 2350; const xml_token_t XML_plane = 2351; const xml_token_t XML_plcHide = 2352; const xml_token_t XML_plotArea = 2353; const xml_token_t XML_plotVisOnly = 2354; const xml_token_t XML_plus = 2355; const xml_token_t XML_points = 2356; const xml_token_t XML_polar = 2357; const xml_token_t XML_polyline = 2358; const xml_token_t XML_pos = 2359; const xml_token_t XML_posOffset = 2360; const xml_token_t XML_position = 2361; const xml_token_t XML_positionH = 2362; const xml_token_t XML_positionV = 2363; const xml_token_t XML_post = 2364; const xml_token_t XML_postSp = 2365; const xml_token_t XML_prLst = 2366; const xml_token_t XML_prSet = 2367; const xml_token_t XML_preSp = 2368; const xml_token_t XML_preferPic = 2369; const xml_token_t XML_preferRelativeResize = 2370; const xml_token_t XML_preferSingleView = 2371; const xml_token_t XML_preferrelative = 2372; const xml_token_t XML_prefixMappings = 2373; const xml_token_t XML_presAssocID = 2374; const xml_token_t XML_presId = 2375; const xml_token_t XML_presLayoutVars = 2376; const xml_token_t XML_presName = 2377; const xml_token_t XML_presOf = 2378; const xml_token_t XML_presStyleCnt = 2379; const xml_token_t XML_presStyleIdx = 2380; const xml_token_t XML_presStyleLbl = 2381; const xml_token_t XML_present = 2382; const xml_token_t XML_presentation = 2383; const xml_token_t XML_presentationPr = 2384; const xml_token_t XML_preserve = 2385; const xml_token_t XML_preserveFormatting = 2386; const xml_token_t XML_preserveHistory = 2387; const xml_token_t XML_preserveSortFilterLayout = 2388; const xml_token_t XML_presetClass = 2389; const xml_token_t XML_presetID = 2390; const xml_token_t XML_presetSubtype = 2391; const xml_token_t XML_prevAc = 2392; const xml_token_t XML_prevCondLst = 2393; const xml_token_t XML_previousCol = 2394; const xml_token_t XML_previousRow = 2395; const xml_token_t XML_pri = 2396; const xml_token_t XML_print = 2397; const xml_token_t XML_printArea = 2398; const xml_token_t XML_printBodyTextBeforeHeader = 2399; const xml_token_t XML_printColBlack = 2400; const xml_token_t XML_printDrill = 2401; const xml_token_t XML_printFormsData = 2402; const xml_token_t XML_printFractionalCharacterWidth = 2403; const xml_token_t XML_printOptions = 2404; const xml_token_t XML_printPostScriptOverText = 2405; const xml_token_t XML_printSettings = 2406; const xml_token_t XML_printTwoOnOne = 2407; const xml_token_t XML_printerSettings = 2408; const xml_token_t XML_priority = 2409; const xml_token_t XML_prnPr = 2410; const xml_token_t XML_prnWhat = 2411; const xml_token_t XML_productSubtotal = 2412; const xml_token_t XML_progId = 2413; const xml_token_t XML_progress = 2414; const xml_token_t XML_prompt = 2415; const xml_token_t XML_promptTitle = 2416; const xml_token_t XML_promptedSolutions = 2417; const xml_token_t XML_proofErr = 2418; const xml_token_t XML_proofState = 2419; const xml_token_t XML_property = 2420; const xml_token_t XML_propertyName = 2421; const xml_token_t XML_protected = 2422; const xml_token_t XML_protectedRange = 2423; const xml_token_t XML_protectedRanges = 2424; const xml_token_t XML_protection = 2425; const xml_token_t XML_provid = 2426; const xml_token_t XML_proxy = 2427; const xml_token_t XML_prst = 2428; const xml_token_t XML_prstClr = 2429; const xml_token_t XML_prstDash = 2430; const xml_token_t XML_prstGeom = 2431; const xml_token_t XML_prstMaterial = 2432; const xml_token_t XML_prstShdw = 2433; const xml_token_t XML_prstTxWarp = 2434; const xml_token_t XML_pt = 2435; const xml_token_t XML_ptCount = 2436; const xml_token_t XML_ptLst = 2437; const xml_token_t XML_ptType = 2438; const xml_token_t XML_ptab = 2439; const xml_token_t XML_ptsTypes = 2440; const xml_token_t XML_pubBrowser = 2441; const xml_token_t XML_publishItems = 2442; const xml_token_t XML_publishToServer = 2443; const xml_token_t XML_published = 2444; const xml_token_t XML_pull = 2445; const xml_token_t XML_push = 2446; const xml_token_t XML_qFormat = 2447; const xml_token_t XML_qs = 2448; const xml_token_t XML_qsCatId = 2449; const xml_token_t XML_qsTypeId = 2450; const xml_token_t XML_quadBezTo = 2451; const xml_token_t XML_qualifier = 2452; const xml_token_t XML_query = 2453; const xml_token_t XML_queryCache = 2454; const xml_token_t XML_queryFailed = 2455; const xml_token_t XML_queryTable = 2456; const xml_token_t XML_queryTableDeletedFields = 2457; const xml_token_t XML_queryTableField = 2458; const xml_token_t XML_queryTableFieldId = 2459; const xml_token_t XML_queryTableFields = 2460; const xml_token_t XML_queryTableRefresh = 2461; const xml_token_t XML_quickTimeFile = 2462; const xml_token_t XML_quotePrefix = 2463; const xml_token_t XML_r = 2464; const xml_token_t XML_r1 = 2465; const xml_token_t XML_r2 = 2466; const xml_token_t XML_r4 = 2467; const xml_token_t XML_r8 = 2468; const xml_token_t XML_rAng = 2469; const xml_token_t XML_rAngAx = 2470; const xml_token_t XML_rCtr = 2471; const xml_token_t XML_rFont = 2472; const xml_token_t XML_rFonts = 2473; const xml_token_t XML_rId = 2474; const xml_token_t XML_rIns = 2475; const xml_token_t XML_rMargin = 2476; const xml_token_t XML_rPh = 2477; const xml_token_t XML_rPr = 2478; const xml_token_t XML_rPrChange = 2479; const xml_token_t XML_rPrDefault = 2480; const xml_token_t XML_rSp = 2481; const xml_token_t XML_rSpRule = 2482; const xml_token_t XML_rStyle = 2483; const xml_token_t XML_ra = 2484; const xml_token_t XML_rad = 2485; const xml_token_t XML_radPr = 2486; const xml_token_t XML_radarChart = 2487; const xml_token_t XML_radarStyle = 2488; const xml_token_t XML_radiusrange = 2489; const xml_token_t XML_raf = 2490; const xml_token_t XML_random = 2491; const xml_token_t XML_randomBar = 2492; const xml_token_t XML_rangePr = 2493; const xml_token_t XML_rangeSet = 2494; const xml_token_t XML_rangeSets = 2495; const xml_token_t XML_rank = 2496; const xml_token_t XML_rankBy = 2497; const xml_token_t XML_rc = 2498; const xml_token_t XML_rcc = 2499; const xml_token_t XML_rcft = 2500; const xml_token_t XML_rcmt = 2501; const xml_token_t XML_rctx = 2502; const xml_token_t XML_rcv = 2503; const xml_token_t XML_rdn = 2504; const xml_token_t XML_readModeInkLockDown = 2505; const xml_token_t XML_readOnlyRecommended = 2506; const xml_token_t XML_readingOrder = 2507; const xml_token_t XML_recipientData = 2508; const xml_token_t XML_recipients = 2509; const xml_token_t XML_recolor = 2510; const xml_token_t XML_recolortarget = 2511; const xml_token_t XML_recommended = 2512; const xml_token_t XML_reconnectionMethod = 2513; const xml_token_t XML_recordCount = 2514; const xml_token_t XML_rect = 2515; const xml_token_t XML_red = 2516; const xml_token_t XML_redMod = 2517; const xml_token_t XML_redOff = 2518; const xml_token_t XML_ref = 2519; const xml_token_t XML_ref3D = 2520; const xml_token_t XML_refFor = 2521; const xml_token_t XML_refForName = 2522; const xml_token_t XML_refMode = 2523; const xml_token_t XML_refPtType = 2524; const xml_token_t XML_refType = 2525; const xml_token_t XML_reference = 2526; const xml_token_t XML_references = 2527; const xml_token_t XML_refersTo = 2528; const xml_token_t XML_reflection = 2529; const xml_token_t XML_refreshAllConnections = 2530; const xml_token_t XML_refreshError = 2531; const xml_token_t XML_refreshOnChange = 2532; const xml_token_t XML_refreshOnLoad = 2533; const xml_token_t XML_refreshedBy = 2534; const xml_token_t XML_refreshedDate = 2535; const xml_token_t XML_refreshedVersion = 2536; const xml_token_t XML_regroupid = 2537; const xml_token_t XML_regrouptable = 2538; const xml_token_t XML_regular = 2539; const xml_token_t XML_rel = 2540; const xml_token_t XML_relIds = 2541; const xml_token_t XML_relOff = 2542; const xml_token_t XML_relSizeAnchor = 2543; const xml_token_t XML_relation = 2544; const xml_token_t XML_relationtable = 2545; const xml_token_t XML_relative = 2546; const xml_token_t XML_relativeFrom = 2547; const xml_token_t XML_relativeHeight = 2548; const xml_token_t XML_relativeIndent = 2549; const xml_token_t XML_relativeTo = 2550; const xml_token_t XML_relid = 2551; const xml_token_t XML_relyOnVML = 2552; const xml_token_t XML_relyOnVml = 2553; const xml_token_t XML_removeDataOnSave = 2554; const xml_token_t XML_removeDateAndTime = 2555; const xml_token_t XML_removePersonalInfoOnSave = 2556; const xml_token_t XML_removePersonalInformation = 2557; const xml_token_t XML_render = 2558; const xml_token_t XML_repairLoad = 2559; const xml_token_t XML_repeatCount = 2560; const xml_token_t XML_repeatDur = 2561; const xml_token_t XML_resId = 2562; const xml_token_t XML_reservationPassword = 2563; const xml_token_t XML_resizeGraphics = 2564; const xml_token_t XML_resizeHandles = 2565; const xml_token_t XML_restart = 2566; const xml_token_t XML_restoredLeft = 2567; const xml_token_t XML_restoredTop = 2568; const xml_token_t XML_result = 2569; const xml_token_t XML_rev = 2570; const xml_token_t XML_reverse = 2571; const xml_token_t XML_reviewed = 2572; const xml_token_t XML_reviewedList = 2573; const xml_token_t XML_revisionId = 2574; const xml_token_t XML_revisionView = 2575; const xml_token_t XML_revisions = 2576; const xml_token_t XML_revisionsPassword = 2577; const xml_token_t XML_rfmt = 2578; const xml_token_t XML_rgb = 2579; const xml_token_t XML_rgbColor = 2580; const xml_token_t XML_rich = 2581; const xml_token_t XML_richText = 2582; const xml_token_t XML_rig = 2583; const xml_token_t XML_right = 2584; const xml_token_t XML_rightChars = 2585; const xml_token_t XML_rightFromText = 2586; const xml_token_t XML_rightToLeft = 2587; const xml_token_t XML_ris = 2588; const xml_token_t XML_rm = 2589; const xml_token_t XML_rot = 2590; const xml_token_t XML_rotWithShape = 2591; const xml_token_t XML_rotX = 2592; const xml_token_t XML_rotY = 2593; const xml_token_t XML_rotate = 2594; const xml_token_t XML_rotation = 2595; const xml_token_t XML_rotationangle = 2596; const xml_token_t XML_rotationcenter = 2597; const xml_token_t XML_round = 2598; const xml_token_t XML_roundedCorners = 2599; const xml_token_t XML_roundrect = 2600; const xml_token_t XML_row = 2601; const xml_token_t XML_rowBreaks = 2602; const xml_token_t XML_rowColShift = 2603; const xml_token_t XML_rowDrillCount = 2604; const xml_token_t XML_rowFields = 2605; const xml_token_t XML_rowGrandTotals = 2606; const xml_token_t XML_rowHeaderCaption = 2607; const xml_token_t XML_rowHierarchiesUsage = 2608; const xml_token_t XML_rowHierarchyUsage = 2609; const xml_token_t XML_rowItems = 2610; const xml_token_t XML_rowNumbers = 2611; const xml_token_t XML_rowOff = 2612; const xml_token_t XML_rowPageCount = 2613; const xml_token_t XML_rowSpan = 2614; const xml_token_t XML_rows = 2615; const xml_token_t XML_rqt = 2616; const xml_token_t XML_rrc = 2617; const xml_token_t XML_rsid = 2618; const xml_token_t XML_rsidDel = 2619; const xml_token_t XML_rsidP = 2620; const xml_token_t XML_rsidR = 2621; const xml_token_t XML_rsidRDefault = 2622; const xml_token_t XML_rsidRPr = 2623; const xml_token_t XML_rsidRoot = 2624; const xml_token_t XML_rsidSect = 2625; const xml_token_t XML_rsidTr = 2626; const xml_token_t XML_rsids = 2627; const xml_token_t XML_rsnm = 2628; const xml_token_t XML_rt = 2629; const xml_token_t XML_rtl = 2630; const xml_token_t XML_rtlCol = 2631; const xml_token_t XML_rtlGutter = 2632; const xml_token_t XML_rtn = 2633; const xml_token_t XML_ruby = 2634; const xml_token_t XML_rubyAlign = 2635; const xml_token_t XML_rubyBase = 2636; const xml_token_t XML_rubyPr = 2637; const xml_token_t XML_rule = 2638; const xml_token_t XML_ruleLst = 2639; const xml_token_t XML_rules = 2640; const xml_token_t XML_rupBuild = 2641; const xml_token_t XML_s = 2642; const xml_token_t XML_sId = 2643; const xml_token_t XML_sPre = 2644; const xml_token_t XML_sPrePr = 2645; const xml_token_t XML_sSub = 2646; const xml_token_t XML_sSubPr = 2647; const xml_token_t XML_sSubSup = 2648; const xml_token_t XML_sSubSupPr = 2649; const xml_token_t XML_sSup = 2650; const xml_token_t XML_sSupPr = 2651; const xml_token_t XML_salt = 2652; const xml_token_t XML_saltData = 2653; const xml_token_t XML_sampData = 2654; const xml_token_t XML_sat = 2655; const xml_token_t XML_satMod = 2656; const xml_token_t XML_satOff = 2657; const xml_token_t XML_saveData = 2658; const xml_token_t XML_saveExternalLinkValues = 2659; const xml_token_t XML_saveFormsData = 2660; const xml_token_t XML_saveInvalidXml = 2661; const xml_token_t XML_savePassword = 2662; const xml_token_t XML_savePreviewPicture = 2663; const xml_token_t XML_saveSmartTagsAsXml = 2664; const xml_token_t XML_saveSubsetFonts = 2665; const xml_token_t XML_saveThroughXslt = 2666; const xml_token_t XML_saveXmlDataOnly = 2667; const xml_token_t XML_sb = 2668; const xml_token_t XML_scale = 2669; const xml_token_t XML_scaleToFitPaper = 2670; const xml_token_t XML_scaleWithDoc = 2671; const xml_token_t XML_scaled = 2672; const xml_token_t XML_scaling = 2673; const xml_token_t XML_scatterChart = 2674; const xml_token_t XML_scatterStyle = 2675; const xml_token_t XML_scenario = 2676; const xml_token_t XML_scenarios = 2677; const xml_token_t XML_scene3d = 2678; const xml_token_t XML_schema = 2679; const xml_token_t XML_schemaLibrary = 2680; const xml_token_t XML_schemaLocation = 2681; const xml_token_t XML_schemaRef = 2682; const xml_token_t XML_schemaRefs = 2683; const xml_token_t XML_scheme = 2684; const xml_token_t XML_schemeClr = 2685; const xml_token_t XML_scope = 2686; const xml_token_t XML_scr = 2687; const xml_token_t XML_scrgbClr = 2688; const xml_token_t XML_script = 2689; const xml_token_t XML_scrollbar = 2690; const xml_token_t XML_sd = 2691; const xml_token_t XML_sdt = 2692; const xml_token_t XML_sdtContent = 2693; const xml_token_t XML_sdtEndPr = 2694; const xml_token_t XML_sdtPr = 2695; const xml_token_t XML_seCell = 2696; const xml_token_t XML_second = 2697; const xml_token_t XML_secondPiePt = 2698; const xml_token_t XML_secondPieSize = 2699; const xml_token_t XML_sectPr = 2700; const xml_token_t XML_sectPrChange = 2701; const xml_token_t XML_securityDescriptor = 2702; const xml_token_t XML_selectFldWithFirstOrLastChar = 2703; const xml_token_t XML_selectLockedCells = 2704; const xml_token_t XML_selectUnlockedCells = 2705; const xml_token_t XML_selected = 2706; const xml_token_t XML_selection = 2707; const xml_token_t XML_semiHidden = 2708; const xml_token_t XML_semicolon = 2709; const xml_token_t XML_sendLocale = 2710; const xml_token_t XML_sep = 2711; const xml_token_t XML_sepChr = 2712; const xml_token_t XML_separator = 2713; const xml_token_t XML_seq = 2714; const xml_token_t XML_ser = 2715; const xml_token_t XML_serAx = 2716; const xml_token_t XML_serLines = 2717; const xml_token_t XML_series = 2718; const xml_token_t XML_seriesIdx = 2719; const xml_token_t XML_serverCommand = 2720; const xml_token_t XML_serverField = 2721; const xml_token_t XML_serverFill = 2722; const xml_token_t XML_serverFont = 2723; const xml_token_t XML_serverFontColor = 2724; const xml_token_t XML_serverFormat = 2725; const xml_token_t XML_serverFormats = 2726; const xml_token_t XML_serverNumberFormat = 2727; const xml_token_t XML_serverSldId = 2728; const xml_token_t XML_serverSldModifiedTime = 2729; const xml_token_t XML_serverZoom = 2730; const xml_token_t XML_set = 2731; const xml_token_t XML_setDefinition = 2732; const xml_token_t XML_sets = 2733; const xml_token_t XML_settings = 2734; const xml_token_t XML_shade = 2735; const xml_token_t XML_shadeToTitle = 2736; const xml_token_t XML_shadow = 2737; const xml_token_t XML_shadowcolor = 2738; const xml_token_t XML_shadowok = 2739; const xml_token_t XML_shape = 2740; const xml_token_t XML_shapeDefaults = 2741; const xml_token_t XML_shapeId = 2742; const xml_token_t XML_shapeLayoutLikeWW8 = 2743; const xml_token_t XML_shapedefaults = 2744; const xml_token_t XML_shapeid = 2745; const xml_token_t XML_shapelayout = 2746; const xml_token_t XML_shapetype = 2747; const xml_token_t XML_shared = 2748; const xml_token_t XML_sharedItems = 2749; const xml_token_t XML_shd = 2750; const xml_token_t XML_sheet = 2751; const xml_token_t XML_sheetCalcPr = 2752; const xml_token_t XML_sheetData = 2753; const xml_token_t XML_sheetDataSet = 2754; const xml_token_t XML_sheetFormatPr = 2755; const xml_token_t XML_sheetId = 2756; const xml_token_t XML_sheetIdMap = 2757; const xml_token_t XML_sheetName = 2758; const xml_token_t XML_sheetNames = 2759; const xml_token_t XML_sheetPosition = 2760; const xml_token_t XML_sheetPr = 2761; const xml_token_t XML_sheetProtection = 2762; const xml_token_t XML_sheetView = 2763; const xml_token_t XML_sheetViews = 2764; const xml_token_t XML_sheets = 2765; const xml_token_t XML_shininess = 2766; const xml_token_t XML_shortcutKey = 2767; const xml_token_t XML_show = 2768; const xml_token_t XML_showAll = 2769; const xml_token_t XML_showAnimation = 2770; const xml_token_t XML_showAsCaption = 2771; const xml_token_t XML_showAsIcon = 2772; const xml_token_t XML_showAutoFilter = 2773; const xml_token_t XML_showBorderUnselectedTables = 2774; const xml_token_t XML_showBreaksInFrames = 2775; const xml_token_t XML_showBubbleSize = 2776; const xml_token_t XML_showButton = 2777; const xml_token_t XML_showCalcMbrs = 2778; const xml_token_t XML_showCaptions = 2779; const xml_token_t XML_showCatName = 2780; const xml_token_t XML_showCell = 2781; const xml_token_t XML_showColHeaders = 2782; const xml_token_t XML_showColStripes = 2783; const xml_token_t XML_showColumnStripes = 2784; const xml_token_t XML_showComments = 2785; const xml_token_t XML_showDLblsOverMax = 2786; const xml_token_t XML_showDataAs = 2787; const xml_token_t XML_showDataDropDown = 2788; const xml_token_t XML_showDataTips = 2789; const xml_token_t XML_showDrill = 2790; const xml_token_t XML_showDropDown = 2791; const xml_token_t XML_showDropDowns = 2792; const xml_token_t XML_showDropZones = 2793; const xml_token_t XML_showEmptyCol = 2794; const xml_token_t XML_showEmptyRow = 2795; const xml_token_t XML_showEnvelope = 2796; const xml_token_t XML_showError = 2797; const xml_token_t XML_showErrorMessage = 2798; const xml_token_t XML_showFirstColumn = 2799; const xml_token_t XML_showFormatting = 2800; const xml_token_t XML_showFormulaBar = 2801; const xml_token_t XML_showFormulas = 2802; const xml_token_t XML_showGridLines = 2803; const xml_token_t XML_showGuides = 2804; const xml_token_t XML_showHeader = 2805; const xml_token_t XML_showHeaders = 2806; const xml_token_t XML_showHorizontalScroll = 2807; const xml_token_t XML_showHorzBorder = 2808; const xml_token_t XML_showInFieldList = 2809; const xml_token_t XML_showInkAnnotation = 2810; const xml_token_t XML_showInputMessage = 2811; const xml_token_t XML_showItems = 2812; const xml_token_t XML_showKeys = 2813; const xml_token_t XML_showLastColumn = 2814; const xml_token_t XML_showLeaderLines = 2815; const xml_token_t XML_showLegendKey = 2816; const xml_token_t XML_showMasterPhAnim = 2817; const xml_token_t XML_showMasterSp = 2818; const xml_token_t XML_showMemberPropertyTips = 2819; const xml_token_t XML_showMissing = 2820; const xml_token_t XML_showMultipleLabel = 2821; const xml_token_t XML_showNarration = 2822; const xml_token_t XML_showNegBubbles = 2823; const xml_token_t XML_showObjects = 2824; const xml_token_t XML_showOutline = 2825; const xml_token_t XML_showOutlineIcons = 2826; const xml_token_t XML_showOutlineSymbols = 2827; const xml_token_t XML_showPageBreaks = 2828; const xml_token_t XML_showPercent = 2829; const xml_token_t XML_showPivotChartFilter = 2830; const xml_token_t XML_showPr = 2831; const xml_token_t XML_showPropAsCaption = 2832; const xml_token_t XML_showPropCell = 2833; const xml_token_t XML_showPropTip = 2834; const xml_token_t XML_showRowCol = 2835; const xml_token_t XML_showRowColHeaders = 2836; const xml_token_t XML_showRowHeaders = 2837; const xml_token_t XML_showRowStripes = 2838; const xml_token_t XML_showRuler = 2839; const xml_token_t XML_showScrollbar = 2840; const xml_token_t XML_showSerName = 2841; const xml_token_t XML_showSheetTabs = 2842; const xml_token_t XML_showSpeakerNotes = 2843; const xml_token_t XML_showSpecialPlsOnTitleSld = 2844; const xml_token_t XML_showStatusbar = 2845; const xml_token_t XML_showTip = 2846; const xml_token_t XML_showVal = 2847; const xml_token_t XML_showValue = 2848; const xml_token_t XML_showVertBorder = 2849; const xml_token_t XML_showVerticalScroll = 2850; const xml_token_t XML_showWhenStopped = 2851; const xml_token_t XML_showWhiteSpace = 2852; const xml_token_t XML_showXMLTags = 2853; const xml_token_t XML_showZeros = 2854; const xml_token_t XML_showingPlcHdr = 2855; const xml_token_t XML_showsigndate = 2856; const xml_token_t XML_shp = 2857; const xml_token_t XML_shrinkToFit = 2858; const xml_token_t XML_si = 2859; const xml_token_t XML_sibTransId = 2860; const xml_token_t XML_side = 2861; const xml_token_t XML_sideWall = 2862; const xml_token_t XML_sig = 2863; const xml_token_t XML_signatureline = 2864; const xml_token_t XML_signinginstructions = 2865; const xml_token_t XML_signinginstructionsset = 2866; const xml_token_t XML_sigprovurl = 2867; const xml_token_t XML_simplePos = 2868; const xml_token_t XML_singleSignOnId = 2869; const xml_token_t XML_singleXmlCell = 2870; const xml_token_t XML_singleXmlCells = 2871; const xml_token_t XML_singleclick = 2872; const xml_token_t XML_size = 2873; const xml_token_t XML_sizeAuto = 2874; const xml_token_t XML_sizeRepresents = 2875; const xml_token_t XML_skew = 2876; const xml_token_t XML_skewamt = 2877; const xml_token_t XML_skewangle = 2878; const xml_token_t XML_sld = 2879; const xml_token_t XML_sldAll = 2880; const xml_token_t XML_sldId = 2881; const xml_token_t XML_sldIdLst = 2882; const xml_token_t XML_sldLayout = 2883; const xml_token_t XML_sldLayoutId = 2884; const xml_token_t XML_sldLayoutIdLst = 2885; const xml_token_t XML_sldLst = 2886; const xml_token_t XML_sldMaster = 2887; const xml_token_t XML_sldMasterId = 2888; const xml_token_t XML_sldMasterIdLst = 2889; const xml_token_t XML_sldNum = 2890; const xml_token_t XML_sldRg = 2891; const xml_token_t XML_sldSyncPr = 2892; const xml_token_t XML_sldSz = 2893; const xml_token_t XML_sldTgt = 2894; const xml_token_t XML_slideViewPr = 2895; const xml_token_t XML_smallCaps = 2896; const xml_token_t XML_smallFrac = 2897; const xml_token_t XML_smartTag = 2898; const xml_token_t XML_smartTagPr = 2899; const xml_token_t XML_smartTagType = 2900; const xml_token_t XML_smartTagTypes = 2901; const xml_token_t XML_smartTags = 2902; const xml_token_t XML_smooth = 2903; const xml_token_t XML_smtClean = 2904; const xml_token_t XML_smtId = 2905; const xml_token_t XML_snapToGrid = 2906; const xml_token_t XML_snapToObjects = 2907; const xml_token_t XML_snapVertSplitter = 2908; const xml_token_t XML_snd = 2909; const xml_token_t XML_sndAc = 2910; const xml_token_t XML_sndTgt = 2911; const xml_token_t XML_softEdge = 2912; const xml_token_t XML_softHyphen = 2913; const xml_token_t XML_solidFill = 2914; const xml_token_t XML_solutionID = 2915; const xml_token_t XML_solveOrder = 2916; const xml_token_t XML_sort = 2917; const xml_token_t XML_sortBy = 2918; const xml_token_t XML_sortByTuple = 2919; const xml_token_t XML_sortCondition = 2920; const xml_token_t XML_sortMethod = 2921; const xml_token_t XML_sortState = 2922; const xml_token_t XML_sortType = 2923; const xml_token_t XML_sorterViewPr = 2924; const xml_token_t XML_source = 2925; const xml_token_t XML_sourceData = 2926; const xml_token_t XML_sourceFile = 2927; const xml_token_t XML_sourceFileName = 2928; const xml_token_t XML_sourceLinked = 2929; const xml_token_t XML_sourceObject = 2930; const xml_token_t XML_sourceRef = 2931; const xml_token_t XML_sourceSheetId = 2932; const xml_token_t XML_sourceType = 2933; const xml_token_t XML_sp = 2934; const xml_token_t XML_sp3d = 2935; const xml_token_t XML_spAutoFit = 2936; const xml_token_t XML_spDef = 2937; const xml_token_t XML_spLocks = 2938; const xml_token_t XML_spPr = 2939; const xml_token_t XML_spTgt = 2940; const xml_token_t XML_spTree = 2941; const xml_token_t XML_space = 2942; const xml_token_t XML_spaceForUL = 2943; const xml_token_t XML_spacing = 2944; const xml_token_t XML_spacingInWholePoints = 2945; const xml_token_t XML_spans = 2946; const xml_token_t XML_spc = 2947; const xml_token_t XML_spcAft = 2948; const xml_token_t XML_spcBef = 2949; const xml_token_t XML_spcCol = 2950; const xml_token_t XML_spcFirstLastPara = 2951; const xml_token_t XML_spcPct = 2952; const xml_token_t XML_spcPts = 2953; const xml_token_t XML_spd = 2954; const xml_token_t XML_specVanish = 2955; const xml_token_t XML_specularity = 2956; const xml_token_t XML_spelling = 2957; const xml_token_t XML_spid = 2958; const xml_token_t XML_spidmax = 2959; const xml_token_t XML_spinCount = 2960; const xml_token_t XML_split = 2961; const xml_token_t XML_splitAll = 2962; const xml_token_t XML_splitFirst = 2963; const xml_token_t XML_splitPgBreakAndParaMark = 2964; const xml_token_t XML_splitPos = 2965; const xml_token_t XML_splitType = 2966; const xml_token_t XML_spokes = 2967; const xml_token_t XML_spt = 2968; const xml_token_t XML_sqlType = 2969; const xml_token_t XML_sqref = 2970; const xml_token_t XML_src = 2971; const xml_token_t XML_srcId = 2972; const xml_token_t XML_srcOrd = 2973; const xml_token_t XML_srcRect = 2974; const xml_token_t XML_srgbClr = 2975; const xml_token_t XML_sst = 2976; const xml_token_t XML_st = 2977; const xml_token_t XML_stA = 2978; const xml_token_t XML_stAng = 2979; const xml_token_t XML_stCondLst = 2980; const xml_token_t XML_stCxn = 2981; const xml_token_t XML_stPos = 2982; const xml_token_t XML_stSnd = 2983; const xml_token_t XML_start = 2984; const xml_token_t XML_startAngle = 2985; const xml_token_t XML_startAt = 2986; const xml_token_t XML_startDate = 2987; const xml_token_t XML_startNum = 2988; const xml_token_t XML_startOverride = 2989; const xml_token_t XML_startarrow = 2990; const xml_token_t XML_startarrowlength = 2991; const xml_token_t XML_startarrowwidth = 2992; const xml_token_t XML_state = 2993; const xml_token_t XML_status = 2994; const xml_token_t XML_statusBar = 2995; const xml_token_t XML_statusText = 2996; const xml_token_t XML_stdDev = 2997; const xml_token_t XML_stdDevPSubtotal = 2998; const xml_token_t XML_stdDevSubtotal = 2999; const xml_token_t XML_step = 3000; const xml_token_t XML_stockChart = 3001; const xml_token_t XML_stop = 3002; const xml_token_t XML_stopIfTrue = 3003; const xml_token_t XML_storage = 3004; const xml_token_t XML_storeItemID = 3005; const xml_token_t XML_storeMappedDataAs = 3006; const xml_token_t XML_stp = 3007; const xml_token_t XML_strCache = 3008; const xml_token_t XML_strLit = 3009; const xml_token_t XML_strRef = 3010; const xml_token_t XML_strVal = 3011; const xml_token_t XML_stream = 3012; const xml_token_t XML_stretch = 3013; const xml_token_t XML_strictFirstAndLastChars = 3014; const xml_token_t XML_strike = 3015; const xml_token_t XML_strikeBLTR = 3016; const xml_token_t XML_strikeH = 3017; const xml_token_t XML_strikeTLBR = 3018; const xml_token_t XML_strikeV = 3019; const xml_token_t XML_string = 3020; const xml_token_t XML_stringValue1 = 3021; const xml_token_t XML_stringValue2 = 3022; const xml_token_t XML_strips = 3023; const xml_token_t XML_stroke = 3024; const xml_token_t XML_strokecolor = 3025; const xml_token_t XML_stroked = 3026; const xml_token_t XML_strokeok = 3027; const xml_token_t XML_strokeweight = 3028; const xml_token_t XML_sty = 3029; const xml_token_t XML_style = 3030; const xml_token_t XML_styleData = 3031; const xml_token_t XML_styleDef = 3032; const xml_token_t XML_styleDefHdr = 3033; const xml_token_t XML_styleDefHdrLst = 3034; const xml_token_t XML_styleId = 3035; const xml_token_t XML_styleLbl = 3036; const xml_token_t XML_styleLink = 3037; const xml_token_t XML_styleLockQFSet = 3038; const xml_token_t XML_styleLockTheme = 3039; const xml_token_t XML_styleName = 3040; const xml_token_t XML_stylePaneFormatFilter = 3041; const xml_token_t XML_stylePaneSortMethod = 3042; const xml_token_t XML_styleSheet = 3043; const xml_token_t XML_styles = 3044; const xml_token_t XML_sub = 3045; const xml_token_t XML_subDoc = 3046; const xml_token_t XML_subFontBySize = 3047; const xml_token_t XML_subHide = 3048; const xml_token_t XML_subSp = 3049; const xml_token_t XML_subTnLst = 3050; const xml_token_t XML_subsetted = 3051; const xml_token_t XML_subtotal = 3052; const xml_token_t XML_subtotalCaption = 3053; const xml_token_t XML_subtotalHiddenItems = 3054; const xml_token_t XML_subtotalTop = 3055; const xml_token_t XML_suff = 3056; const xml_token_t XML_suggestedsigner = 3057; const xml_token_t XML_suggestedsigner2 = 3058; const xml_token_t XML_suggestedsigneremail = 3059; const xml_token_t XML_sumSubtotal = 3060; const xml_token_t XML_summaryBelow = 3061; const xml_token_t XML_summaryLength = 3062; const xml_token_t XML_summaryRight = 3063; const xml_token_t XML_sup = 3064; const xml_token_t XML_supHide = 3065; const xml_token_t XML_supportAdvancedDrill = 3066; const xml_token_t XML_supportSubquery = 3067; const xml_token_t XML_suppressAutoHyphens = 3068; const xml_token_t XML_suppressBottomSpacing = 3069; const xml_token_t XML_suppressLineNumbers = 3070; const xml_token_t XML_suppressOverlap = 3071; const xml_token_t XML_suppressSpBfAfterPgBrk = 3072; const xml_token_t XML_suppressSpacingAtTopOfPage = 3073; const xml_token_t XML_suppressTopSpacing = 3074; const xml_token_t XML_suppressTopSpacingWP = 3075; const xml_token_t XML_surface3DChart = 3076; const xml_token_t XML_surfaceChart = 3077; const xml_token_t XML_swAng = 3078; const xml_token_t XML_swCell = 3079; const xml_token_t XML_swapBordersFacingPages = 3080; const xml_token_t XML_switch = 3081; const xml_token_t XML_sx = 3082; const xml_token_t XML_sy = 3083; const xml_token_t XML_sym = 3084; const xml_token_t XML_symbol = 3085; const xml_token_t XML_syncBehavior = 3086; const xml_token_t XML_syncHorizontal = 3087; const xml_token_t XML_syncRef = 3088; const xml_token_t XML_syncVertical = 3089; const xml_token_t XML_sysClr = 3090; const xml_token_t XML_sz = 3091; const xml_token_t XML_szCs = 3092; const xml_token_t XML_t = 3093; const xml_token_t XML_t1 = 3094; const xml_token_t XML_t2 = 3095; const xml_token_t XML_tIns = 3096; const xml_token_t XML_tab = 3097; const xml_token_t XML_tabColor = 3098; const xml_token_t XML_tabLst = 3099; const xml_token_t XML_tabRatio = 3100; const xml_token_t XML_tabSelected = 3101; const xml_token_t XML_table = 3102; const xml_token_t XML_tableBorderDxfId = 3103; const xml_token_t XML_tableColumn = 3104; const xml_token_t XML_tableColumnId = 3105; const xml_token_t XML_tableColumns = 3106; const xml_token_t XML_tablePart = 3107; const xml_token_t XML_tableParts = 3108; const xml_token_t XML_tableStyle = 3109; const xml_token_t XML_tableStyleElement = 3110; const xml_token_t XML_tableStyleId = 3111; const xml_token_t XML_tableStyleInfo = 3112; const xml_token_t XML_tableStyles = 3113; const xml_token_t XML_tableType = 3114; const xml_token_t XML_tablelimits = 3115; const xml_token_t XML_tableproperties = 3116; const xml_token_t XML_tables = 3117; const xml_token_t XML_tabs = 3118; const xml_token_t XML_tag = 3119; const xml_token_t XML_tagLst = 3120; const xml_token_t XML_tags = 3121; const xml_token_t XML_tailEnd = 3122; const xml_token_t XML_target = 3123; const xml_token_t XML_targetScreenSize = 3124; const xml_token_t XML_targetScreenSz = 3125; const xml_token_t XML_targetscreensize = 3126; const xml_token_t XML_tav = 3127; const xml_token_t XML_tavLst = 3128; const xml_token_t XML_tbl = 3129; const xml_token_t XML_tblBg = 3130; const xml_token_t XML_tblBorders = 3131; const xml_token_t XML_tblCellMar = 3132; const xml_token_t XML_tblCellSpacing = 3133; const xml_token_t XML_tblGrid = 3134; const xml_token_t XML_tblGridChange = 3135; const xml_token_t XML_tblHeader = 3136; const xml_token_t XML_tblInd = 3137; const xml_token_t XML_tblLayout = 3138; const xml_token_t XML_tblLook = 3139; const xml_token_t XML_tblOverlap = 3140; const xml_token_t XML_tblPr = 3141; const xml_token_t XML_tblPrChange = 3142; const xml_token_t XML_tblPrEx = 3143; const xml_token_t XML_tblPrExChange = 3144; const xml_token_t XML_tblStyle = 3145; const xml_token_t XML_tblStyleColBandSize = 3146; const xml_token_t XML_tblStyleLst = 3147; const xml_token_t XML_tblStylePr = 3148; const xml_token_t XML_tblStyleRowBandSize = 3149; const xml_token_t XML_tblW = 3150; const xml_token_t XML_tblpPr = 3151; const xml_token_t XML_tblpX = 3152; const xml_token_t XML_tblpXSpec = 3153; const xml_token_t XML_tblpY = 3154; const xml_token_t XML_tblpYSpec = 3155; const xml_token_t XML_tc = 3156; const xml_token_t XML_tcBdr = 3157; const xml_token_t XML_tcBorders = 3158; const xml_token_t XML_tcFitText = 3159; const xml_token_t XML_tcMar = 3160; const xml_token_t XML_tcPr = 3161; const xml_token_t XML_tcPrChange = 3162; const xml_token_t XML_tcStyle = 3163; const xml_token_t XML_tcTxStyle = 3164; const xml_token_t XML_tcW = 3165; const xml_token_t XML_temporary = 3166; const xml_token_t XML_tentative = 3167; const xml_token_t XML_text = 3168; const xml_token_t XML_textAlignment = 3169; const xml_token_t XML_textDates = 3170; const xml_token_t XML_textDirection = 3171; const xml_token_t XML_textField = 3172; const xml_token_t XML_textFields = 3173; const xml_token_t XML_textInput = 3174; const xml_token_t XML_textPr = 3175; const xml_token_t XML_textRotation = 3176; const xml_token_t XML_textborder = 3177; const xml_token_t XML_textbox = 3178; const xml_token_t XML_textboxTightWrap = 3179; const xml_token_t XML_textboxrect = 3180; const xml_token_t XML_textdata = 3181; const xml_token_t XML_textlink = 3182; const xml_token_t XML_textpath = 3183; const xml_token_t XML_textpathok = 3184; const xml_token_t XML_tgtEl = 3185; const xml_token_t XML_tgtFrame = 3186; const xml_token_t XML_theme = 3187; const xml_token_t XML_themeColor = 3188; const xml_token_t XML_themeElements = 3189; const xml_token_t XML_themeFill = 3190; const xml_token_t XML_themeFillShade = 3191; const xml_token_t XML_themeFillTint = 3192; const xml_token_t XML_themeFontLang = 3193; const xml_token_t XML_themeManager = 3194; const xml_token_t XML_themeOverride = 3195; const xml_token_t XML_themeShade = 3196; const xml_token_t XML_themeTint = 3197; const xml_token_t XML_thickBot = 3198; const xml_token_t XML_thickBottom = 3199; const xml_token_t XML_thickTop = 3200; const xml_token_t XML_thicket = 3201; const xml_token_t XML_thickness = 3202; const xml_token_t XML_thousands = 3203; const xml_token_t XML_thresh = 3204; const xml_token_t XML_thruBlk = 3205; const xml_token_t XML_tickLblPos = 3206; const xml_token_t XML_tickLblSkip = 3207; const xml_token_t XML_tickMarkSkip = 3208; const xml_token_t XML_tile = 3209; const xml_token_t XML_tileRect = 3210; const xml_token_t XML_time = 3211; const xml_token_t XML_timePeriod = 3212; const xml_token_t XML_timing = 3213; const xml_token_t XML_tint = 3214; const xml_token_t XML_title = 3215; const xml_token_t XML_titlePg = 3216; const xml_token_t XML_titleStyle = 3217; const xml_token_t XML_tl2br = 3218; const xml_token_t XML_tm = 3219; const xml_token_t XML_tmAbs = 3220; const xml_token_t XML_tmFilter = 3221; const xml_token_t XML_tmPct = 3222; const xml_token_t XML_tmpl = 3223; const xml_token_t XML_tmplLst = 3224; const xml_token_t XML_tn = 3225; const xml_token_t XML_tnLst = 3226; const xml_token_t XML_to = 3227; const xml_token_t XML_tooltip = 3228; const xml_token_t XML_top = 3229; const xml_token_t XML_top10 = 3230; const xml_token_t XML_topAutoShow = 3231; const xml_token_t XML_topFromText = 3232; const xml_token_t XML_topLabels = 3233; const xml_token_t XML_topLeftCell = 3234; const xml_token_t XML_topLinePunct = 3235; const xml_token_t XML_totalsRowBorderDxfId = 3236; const xml_token_t XML_totalsRowCellStyle = 3237; const xml_token_t XML_totalsRowCount = 3238; const xml_token_t XML_totalsRowDxfId = 3239; const xml_token_t XML_totalsRowFormula = 3240; const xml_token_t XML_totalsRowFunction = 3241; const xml_token_t XML_totalsRowLabel = 3242; const xml_token_t XML_totalsRowShown = 3243; const xml_token_t XML_tp = 3244; const xml_token_t XML_tpl = 3245; const xml_token_t XML_tplc = 3246; const xml_token_t XML_tpls = 3247; const xml_token_t XML_tr = 3248; const xml_token_t XML_tr2bl = 3249; const xml_token_t XML_trHeight = 3250; const xml_token_t XML_trPr = 3251; const xml_token_t XML_trPrChange = 3252; const xml_token_t XML_track = 3253; const xml_token_t XML_trackRevisions = 3254; const xml_token_t XML_transition = 3255; const xml_token_t XML_transitionEntry = 3256; const xml_token_t XML_transitionEvaluation = 3257; const xml_token_t XML_transp = 3258; const xml_token_t XML_trend = 3259; const xml_token_t XML_trendline = 3260; const xml_token_t XML_trendlineLbl = 3261; const xml_token_t XML_trendlineType = 3262; const xml_token_t XML_trim = 3263; const xml_token_t XML_truncateFontHeightsLikeWP6 = 3264; const xml_token_t XML_tupleCache = 3265; const xml_token_t XML_twoCellAnchor = 3266; const xml_token_t XML_twoDigitTextYear = 3267; const xml_token_t XML_tx = 3268; const xml_token_t XML_tx1 = 3269; const xml_token_t XML_tx2 = 3270; const xml_token_t XML_txBody = 3271; const xml_token_t XML_txBox = 3272; const xml_token_t XML_txDef = 3273; const xml_token_t XML_txEffectClrLst = 3274; const xml_token_t XML_txEl = 3275; const xml_token_t XML_txFillClrLst = 3276; const xml_token_t XML_txLinClrLst = 3277; const xml_token_t XML_txPr = 3278; const xml_token_t XML_txSp = 3279; const xml_token_t XML_txStyles = 3280; const xml_token_t XML_txbxContent = 3281; const xml_token_t XML_ty = 3282; const xml_token_t XML_type = 3283; const xml_token_t XML_typeface = 3284; const xml_token_t XML_types = 3285; const xml_token_t XML_u = 3286; const xml_token_t XML_uBounds = 3287; const xml_token_t XML_uFill = 3288; const xml_token_t XML_uFillTx = 3289; const xml_token_t XML_uLn = 3290; const xml_token_t XML_uLnTx = 3291; const xml_token_t XML_ua = 3292; const xml_token_t XML_udl = 3293; const xml_token_t XML_ui1 = 3294; const xml_token_t XML_ui2 = 3295; const xml_token_t XML_ui4 = 3296; const xml_token_t XML_ui8 = 3297; const xml_token_t XML_uiCompat97To2003 = 3298; const xml_token_t XML_uiExpand = 3299; const xml_token_t XML_uiPriority = 3300; const xml_token_t XML_uint = 3301; const xml_token_t XML_ulTrailSpace = 3302; const xml_token_t XML_un = 3303; const xml_token_t XML_unbalanced = 3304; const xml_token_t XML_unbalancedGroup = 3305; const xml_token_t XML_unboundColumnsLeft = 3306; const xml_token_t XML_unboundColumnsRight = 3307; const xml_token_t XML_underlineTabInNumList = 3308; const xml_token_t XML_undo = 3309; const xml_token_t XML_undone = 3310; const xml_token_t XML_ungrouping = 3311; const xml_token_t XML_unhideWhenUsed = 3312; const xml_token_t XML_uniqueCount = 3313; const xml_token_t XML_uniqueId = 3314; const xml_token_t XML_uniqueList = 3315; const xml_token_t XML_uniqueMemberProperty = 3316; const xml_token_t XML_uniqueName = 3317; const xml_token_t XML_uniqueParent = 3318; const xml_token_t XML_uniqueTag = 3319; const xml_token_t XML_unlockedFormula = 3320; const xml_token_t XML_up = 3321; const xml_token_t XML_upBars = 3322; const xml_token_t XML_upDownBars = 3323; const xml_token_t XML_updateAutomatic = 3324; const xml_token_t XML_updateFields = 3325; const xml_token_t XML_updateLinks = 3326; const xml_token_t XML_updatedVersion = 3327; const xml_token_t XML_upgradeOnRefresh = 3328; const xml_token_t XML_upright = 3329; const xml_token_t XML_uri = 3330; const xml_token_t XML_url = 3331; const xml_token_t XML_usb0 = 3332; const xml_token_t XML_usb1 = 3333; const xml_token_t XML_usb2 = 3334; const xml_token_t XML_usb3 = 3335; const xml_token_t XML_useA = 3336; const xml_token_t XML_useAltKinsokuLineBreakRules = 3337; const xml_token_t XML_useAnsiKerningPairs = 3338; const xml_token_t XML_useAutoFormatting = 3339; const xml_token_t XML_useBgFill = 3340; const xml_token_t XML_useDef = 3341; const xml_token_t XML_useFELayout = 3342; const xml_token_t XML_useFirstPageNumber = 3343; const xml_token_t XML_useLongFilenames = 3344; const xml_token_t XML_useNormalStyleForList = 3345; const xml_token_t XML_usePrinterDefaults = 3346; const xml_token_t XML_usePrinterMetrics = 3347; const xml_token_t XML_useSingleBorderforContiguousCells = 3348; const xml_token_t XML_useSpRect = 3349; const xml_token_t XML_useTimings = 3350; const xml_token_t XML_useWord2002TableStyleRules = 3351; const xml_token_t XML_useWord97LineBreakRules = 3352; const xml_token_t XML_useXSLTWhenSaving = 3353; const xml_token_t XML_user = 3354; const xml_token_t XML_userDrawn = 3355; const xml_token_t XML_userInfo = 3356; const xml_token_t XML_userInterface = 3357; const xml_token_t XML_userName = 3358; const xml_token_t XML_userShapes = 3359; const xml_token_t XML_userdrawn = 3360; const xml_token_t XML_userhidden = 3361; const xml_token_t XML_users = 3362; const xml_token_t XML_v = 3363; const xml_token_t XML_vAlign = 3364; const xml_token_t XML_vAnchor = 3365; const xml_token_t XML_vMerge = 3366; const xml_token_t XML_vMergeOrig = 3367; const xml_token_t XML_vSpace = 3368; const xml_token_t XML_vacatedStyle = 3369; const xml_token_t XML_val = 3370; const xml_token_t XML_valAx = 3371; const xml_token_t XML_value = 3372; const xml_token_t XML_valueMetadata = 3373; const xml_token_t XML_valueType = 3374; const xml_token_t XML_values = 3375; const xml_token_t XML_vanish = 3376; const xml_token_t XML_varLst = 3377; const xml_token_t XML_varPSubtotal = 3378; const xml_token_t XML_varScale = 3379; const xml_token_t XML_varSubtotal = 3380; const xml_token_t XML_variant = 3381; const xml_token_t XML_varyColors = 3382; const xml_token_t XML_vbProcedure = 3383; const xml_token_t XML_vector = 3384; const xml_token_t XML_vendorID = 3385; const xml_token_t XML_version = 3386; const xml_token_t XML_vert = 3387; const xml_token_t XML_vertAlign = 3388; const xml_token_t XML_vertAnchor = 3389; const xml_token_t XML_vertBarState = 3390; const xml_token_t XML_vertCompress = 3391; const xml_token_t XML_vertJc = 3392; const xml_token_t XML_vertOverflow = 3393; const xml_token_t XML_vertical = 3394; const xml_token_t XML_verticalCentered = 3395; const xml_token_t XML_verticalDpi = 3396; const xml_token_t XML_verticies = 3397; const xml_token_t XML_video = 3398; const xml_token_t XML_videoFile = 3399; const xml_token_t XML_view = 3400; const xml_token_t XML_view3D = 3401; const xml_token_t XML_viewMergedData = 3402; const xml_token_t XML_viewPr = 3403; const xml_token_t XML_viewpoint = 3404; const xml_token_t XML_viewpointorigin = 3405; const xml_token_t XML_visibility = 3406; const xml_token_t XML_visualTotals = 3407; const xml_token_t XML_vm = 3408; const xml_token_t XML_vml = 3409; const xml_token_t XML_vocabulary = 3410; const xml_token_t XML_vol = 3411; const xml_token_t XML_volType = 3412; const xml_token_t XML_volTypes = 3413; const xml_token_t XML_vstream = 3414; const xml_token_t XML_w = 3415; const xml_token_t XML_wAfter = 3416; const xml_token_t XML_wBefore = 3417; const xml_token_t XML_wMode = 3418; const xml_token_t XML_wR = 3419; const xml_token_t XML_wavAudioFile = 3420; const xml_token_t XML_webHidden = 3421; const xml_token_t XML_webPr = 3422; const xml_token_t XML_webPublishItem = 3423; const xml_token_t XML_webPublishItems = 3424; const xml_token_t XML_webPublishObject = 3425; const xml_token_t XML_webPublishObjects = 3426; const xml_token_t XML_webPublishing = 3427; const xml_token_t XML_webSettings = 3428; const xml_token_t XML_wedge = 3429; const xml_token_t XML_weight = 3430; const xml_token_t XML_wheel = 3431; const xml_token_t XML_whole = 3432; const xml_token_t XML_wholeTbl = 3433; const xml_token_t XML_widowControl = 3434; const xml_token_t XML_width = 3435; const xml_token_t XML_windowHeight = 3436; const xml_token_t XML_windowProtection = 3437; const xml_token_t XML_windowWidth = 3438; const xml_token_t XML_wipe = 3439; const xml_token_t XML_wireframe = 3440; const xml_token_t XML_wordWrap = 3441; const xml_token_t XML_workbook = 3442; const xml_token_t XML_workbookParameter = 3443; const xml_token_t XML_workbookPassword = 3444; const xml_token_t XML_workbookPr = 3445; const xml_token_t XML_workbookProtection = 3446; const xml_token_t XML_workbookView = 3447; const xml_token_t XML_workbookViewId = 3448; const xml_token_t XML_worksheet = 3449; const xml_token_t XML_worksheetSource = 3450; const xml_token_t XML_wpJustification = 3451; const xml_token_t XML_wpSpaceWidth = 3452; const xml_token_t XML_wrap = 3453; const xml_token_t XML_wrapIndent = 3454; const xml_token_t XML_wrapNone = 3455; const xml_token_t XML_wrapPolygon = 3456; const xml_token_t XML_wrapRight = 3457; const xml_token_t XML_wrapSquare = 3458; const xml_token_t XML_wrapText = 3459; const xml_token_t XML_wrapThrough = 3460; const xml_token_t XML_wrapTight = 3461; const xml_token_t XML_wrapTopAndBottom = 3462; const xml_token_t XML_wrapTrailSpaces = 3463; const xml_token_t XML_wrapcoords = 3464; const xml_token_t XML_writeProtection = 3465; const xml_token_t XML_wsDr = 3466; const xml_token_t XML_x = 3467; const xml_token_t XML_xAlign = 3468; const xml_token_t XML_xMode = 3469; const xml_token_t XML_xSplit = 3470; const xml_token_t XML_xVal = 3471; const xml_token_t XML_xWindow = 3472; const xml_token_t XML_xf = 3473; const xml_token_t XML_xfDxf = 3474; const xml_token_t XML_xfId = 3475; const xml_token_t XML_xfrm = 3476; const xml_token_t XML_xfrmType = 3477; const xml_token_t XML_xl2000 = 3478; const xml_token_t XML_xl97 = 3479; const xml_token_t XML_xlm = 3480; const xml_token_t XML_xml = 3481; const xml_token_t XML_xmlBased = 3482; const xml_token_t XML_xmlCellPr = 3483; const xml_token_t XML_xmlColumnPr = 3484; const xml_token_t XML_xmlDataType = 3485; const xml_token_t XML_xmlPr = 3486; const xml_token_t XML_xpath = 3487; const xml_token_t XML_xrange = 3488; const xml_token_t XML_xscale = 3489; const xml_token_t XML_y = 3490; const xml_token_t XML_yAlign = 3491; const xml_token_t XML_yMode = 3492; const xml_token_t XML_ySplit = 3493; const xml_token_t XML_yVal = 3494; const xml_token_t XML_yWindow = 3495; const xml_token_t XML_year = 3496; const xml_token_t XML_yearLong = 3497; const xml_token_t XML_yearShort = 3498; const xml_token_t XML_yrange = 3499; const xml_token_t XML_z = 3500; const xml_token_t XML_zOrder = 3501; const xml_token_t XML_zOrderOff = 3502; const xml_token_t XML_zeroAsc = 3503; const xml_token_t XML_zeroDesc = 3504; const xml_token_t XML_zeroHeight = 3505; const xml_token_t XML_zeroValues = 3506; const xml_token_t XML_zeroWid = 3507; const xml_token_t XML_zoom = 3508; const xml_token_t XML_zoomContents = 3509; const xml_token_t XML_zoomScale = 3510; const xml_token_t XML_zoomScaleNormal = 3511; const xml_token_t XML_zoomScalePageLayoutView = 3512; const xml_token_t XML_zoomScaleSheetLayoutView = 3513; const xml_token_t XML_zoomToFit = 3514; liborcus-0.9.2/src/liborcus/opc_reader.hpp0000644000175000017500000000672612535701143017251 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_OPC_READER_HPP__ #define __ORCUS_OPC_READER_HPP__ #include "orcus/env.hpp" #include "orcus/zip_archive.hpp" #include "orcus/zip_archive_stream.hpp" #include "ooxml_schemas.hpp" #include "xml_simple_stream_handler.hpp" #include #include #include #include #include namespace orcus { struct config; class xmlns_repository; struct session_context; struct opc_rel_extra; /** * Class to handle parsing through all xml parts stored in a file packaged * according to the Open Package Convention (OPC). */ class opc_reader : boost::noncopyable { typedef std::vector dir_stack_type; typedef boost::unordered_set part_set_type; public: /** * Interface class for the user of opc_reader to receive callback to * handle each xml part. */ class part_handler { public: virtual ~part_handler() = 0; /** * Client code needs to implement this method to handle each xml part. * * @param type schema type signifying the content type stored in this * part. * @param dir_path directory path relative to package root. * @param file_name name of the xml part without the directory path. * @param data extra data passed on from the client code. * * @return true if handled, false if not handled. */ virtual bool handle_part( schema_t type, const std::string& dir_path, const std::string& file_name, opc_rel_extra* data) = 0; }; opc_reader(const config& opt, xmlns_repository& ns_repo, session_context& session_cxt, part_handler& handler); void read_file(const char* fpath); bool open_zip_stream(const std::string& path, std::vector& buf); /** * Read an xml part inside package. The path is relative to the relation * file. * * @param path the path to the xml part. * @param type schema type. */ void read_part(const pstring& path, const schema_t type, opc_rel_extra* data); /** * Check if a relation file exists for a given xml part, and if it does, * read and process it. * * @param file_name name of the current xml part. * @param extras optional extra data file for client code to pass on to * the next xml part(s). */ void check_relation_part(const std::string& file_name, opc_rel_extras_t* extras); private: void list_content() const; void read_content(); void read_content_types(); void read_relations(const char* path, std::vector& rels); std::string get_current_dir() const; private: const config& m_config; xmlns_repository& m_ns_repo; session_context& m_session_cxt; part_handler& m_handler; boost::scoped_ptr m_archive; boost::scoped_ptr m_archive_stream; xml_simple_stream_handler m_opc_rel_handler; std::vector m_parts; std::vector m_ext_defaults; dir_stack_type m_dir_stack; part_set_type m_handled_parts; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_namespace_types.cpp0000644000175000017500000000156212535701143022060 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xls_xml_namespace_types.hpp" namespace orcus { const xmlns_id_t NS_xls_xml_ss = "urn:schemas-microsoft-com:office:spreadsheet"; const xmlns_id_t NS_xls_xml_o ="urn:schemas-microsoft-com:office:office"; const xmlns_id_t NS_xls_xml_x ="urn:schemas-microsoft-com:office:excel"; const xmlns_id_t NS_xls_xml_html ="http://www.w3.org/TR/REC-html40"; namespace { xmlns_id_t xls_xml_ns[] = { NS_xls_xml_ss, NS_xls_xml_o, NS_xls_xml_x, NS_xls_xml_html, NULL }; } const xmlns_id_t* NS_xls_xml_all = xls_xml_ns; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_tokens.inl0000644000175000017500000006053612535701143020211 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const char* token_names[] = { "??", // 0 "AcceptLabelsInFormulas", // 1 "Action", // 2 "ActiveChart", // 3 "ActiveCol", // 4 "ActiveColumn", // 5 "ActivePane", // 6 "ActiveRow", // 7 "ActiveRows", // 8 "ActiveSheet", // 9 "Aggregate", // 10 "AlertVersion", // 11 "Alignment", // 12 "AllItemName", // 13 "AllowDeleteCols", // 14 "AllowDeleteRows", // 15 "AllowFilter", // 16 "AllowFormatCells", // 17 "AllowInsertCols", // 18 "AllowInsertHyperlinks", // 19 "AllowInsertRows", // 20 "AllowSizeCols", // 21 "AllowSizeRows", // 22 "AllowSort", // 23 "AllowUsePivotTables", // 24 "AlternateMethod", // 25 "AppName", // 26 "Append", // 27 "ApplyAutomaticOutlineStyles", // 28 "Area", // 29 "ArrayRange", // 30 "Async", // 31 "Attribute", // 32 "AttributeType", // 33 "Authentication", // 34 "Author", // 35 "AutoFilter", // 36 "AutoFilterAnd", // 37 "AutoFilterColumn", // 38 "AutoFilterCondition", // 39 "AutoFilterOr", // 40 "AutoFitHeight", // 41 "AutoFitWidth", // 42 "AutoFormatAlignment", // 43 "AutoFormatBorder", // 44 "AutoFormatFont", // 45 "AutoFormatName", // 46 "AutoFormatNumber", // 47 "AutoFormatPattern", // 48 "AutoFormatWidth", // 49 "AutoRepublish", // 50 "AutoShowCount", // 51 "AutoShowField", // 52 "AutoShowRange", // 53 "AutoShowType", // 54 "AutoSortField", // 55 "AutoSortOrder", // 56 "BackgroundQuery", // 57 "BaseField", // 58 "BaseItem", // 59 "Basic", // 60 "Behavior", // 61 "Binding", // 62 "BlackAndWhite", // 63 "BlankLineAfterItems", // 64 "BlockTotal", // 65 "Bold", // 66 "Boolean", // 67 "Border", // 68 "Borders", // 69 "Bottom", // 70 "BoundField", // 71 "Bytes", // 72 "CacheDetails", // 73 "CacheFile", // 74 "CacheIndex", // 75 "CachePosition", // 76 "CalculatedMember", // 77 "Calculation", // 78 "CantGetUniqueItems", // 79 "Caption", // 80 "CaptionAlignment", // 81 "CaseSensitive", // 82 "Category", // 83 "Cell", // 84 "CellRangeList", // 85 "CellsExpanded", // 86 "CellsExpandedSeqNum", // 87 "CellsNotExpanded", // 88 "CenterHorizontal", // 89 "CenterVertical", // 90 "Cf", // 91 "CharSet", // 92 "Characters", // 93 "CharactersWithSpaces", // 94 "ClientParameter", // 95 "ClientParameterBinding", // 96 "ClientParameterBindings", // 97 "ClientParameterValue", // 98 "Clipped", // 99 "CodeName", // 100 "Col1", // 101 "Col10", // 102 "Col11", // 103 "Col12", // 104 "Col13", // 105 "Col14", // 106 "Col15", // 107 "Col16", // 108 "Col17", // 109 "Col18", // 110 "Col19", // 111 "Col2", // 112 "Col20", // 113 "Col3", // 114 "Col4", // 115 "Col5", // 116 "Col6", // 117 "Col7", // 118 "Col8", // 119 "Col9", // 120 "ColBreak", // 121 "ColBreaks", // 122 "ColFirst", // 123 "ColLast", // 124 "Color", // 125 "Column", // 126 "ColumnInfo", // 127 "ColumnInputCell", // 128 "ColumnName", // 129 "ComboHide", // 130 "Comma", // 131 "CommandText", // 132 "CommandTextOrignal", // 133 "CommandType", // 134 "Comment", // 135 "CommentsLayout", // 136 "Company", // 137 "ComponentOptions", // 138 "Condition", // 139 "ConditionalFormatting", // 140 "Connection", // 141 "ConnectionInfo", // 142 "ConnectionString", // 143 "Consecutive", // 144 "ConsolidationReference", // 145 "Count", // 146 "CountOfSameItems", // 147 "CreateBackup", // 148 "Created", // 149 "Credential", // 150 "CredentialBinding", // 151 "CredentialValue", // 152 "Crn", // 153 "CubeField", // 154 "CubeSource", // 155 "CurrentPage", // 156 "Custom", // 157 "CustomDocumentProperties", // 158 "Data", // 159 "DataAxisEmpty", // 160 "DataField", // 161 "DataMember", // 162 "DataSource", // 163 "DataTable", // 164 "DataType", // 165 "DataValidation", // 166 "DataValueEditing", // 167 "Date1904", // 168 "Decimal", // 169 "DefaultColumnWidth", // 170 "DefaultItem", // 171 "DefaultRowHeight", // 172 "DefaultValue", // 173 "DefaultVersion", // 174 "DeletedTitle", // 175 "Delimiters", // 176 "Descending", // 177 "Description", // 178 "DetailFormat", // 179 "DetailMaxHeight", // 180 "DetailMaxWidth", // 181 "DetailRowHeight", // 182 "DetailSortOrder", // 183 "DetailWidth", // 184 "Dimension", // 185 "DisableDateRecognition", // 186 "DisableDrillDown", // 187 "DisableEdit", // 188 "DisableFieldDialog", // 189 "DisableRefresh", // 190 "DisableWizard", // 191 "DisplayDrawingObjects", // 192 "DisplayEmptyMembers", // 193 "DisplayErrorString", // 194 "DisplayFieldList", // 195 "DisplayFormulas", // 196 "DisplayIn", // 197 "DisplayInkNotes", // 198 "DisplayPageBreak", // 199 "DisplayRightToLeft", // 200 "DivID", // 201 "DoNotCalculateBeforeSave", // 202 "DoNotDisplayColHeaders", // 203 "DoNotDisplayGridlines", // 204 "DoNotDisplayHeadings", // 205 "DoNotDisplayOutline", // 206 "DoNotDisplayRowHeaders", // 207 "DoNotDisplayZeros", // 208 "DoNotJoinDelimiters", // 209 "DoNotPersist", // 210 "DoNotPersistSort", // 211 "DoNotPersstAF", // 212 "DoNotPromptForFile", // 213 "DoNotSaveLinkValues", // 214 "DocumentProperties", // 215 "DontShowInFieldList", // 216 "DownloadComponents", // 217 "DraftQuality", // 218 "DrawAspect", // 219 "DrilledLevel", // 220 "DrilledMember", // 221 "EditWebPage", // 222 "ElementType", // 223 "EmbedSaveSmartTags", // 224 "EnableMultiplePageItems", // 225 "EnableRedirections", // 226 "EnableSelection", // 227 "Encode", // 228 "EntirePage", // 229 "Entry", // 230 "Error", // 231 "ErrorHide", // 232 "ErrorMessage", // 233 "ErrorString", // 234 "ErrorStyle", // 235 "ErrorTitle", // 236 "ExcelName", // 237 "ExcelType", // 238 "ExcelWorkbook", // 239 "ExcelWorksheetType", // 240 "Expanded", // 241 "ExpandedColumnCount", // 242 "ExpandedRowCount", // 243 "ExternName", // 244 "ExtraLeftColumns", // 245 "ExtraRightColumns", // 246 "Family", // 247 "Field", // 248 "FieldLabelFormat", // 249 "FieldListBottom", // 250 "FieldListLeft", // 251 "FieldListRight", // 252 "FieldListTop", // 253 "FieldStart", // 254 "FieldType", // 255 "File", // 256 "FileName", // 257 "FillDown", // 258 "Filled", // 259 "FilterCaption", // 260 "FilterMember", // 261 "FilterOn", // 262 "FirstVisibleSheet", // 263 "FitHeight", // 264 "FitToPage", // 265 "FitWidth", // 266 "Font", // 267 "FontName", // 268 "Footer", // 269 "Format", // 270 "FormatSettings", // 271 "FormatType", // 272 "Formula", // 273 "FormulaIndex", // 274 "FormulaV10", // 275 "FreezePanes", // 276 "FrozenNoSplit", // 277 "FullColumns", // 278 "FullRows", // 279 "Function", // 280 "FunctionGroup", // 281 "FunctionGroupIndex", // 282 "FuturePersist", // 283 "FutureVer", // 284 "GrandTotalString", // 285 "GridlineColor", // 286 "GridlineColorIndex", // 287 "Gridlines", // 288 "GroupBy", // 289 "GroupDefinition", // 290 "GroupEnd", // 291 "GroupEndAuto", // 292 "GroupLevel", // 293 "GroupMember", // 294 "GroupNumber", // 295 "GroupStart", // 296 "GroupStartAuto", // 297 "GroupType", // 298 "GroupedWidth", // 299 "Guid", // 300 "HRef", // 301 "HRefScreenTip", // 302 "HTMLFormat", // 303 "HTMLTables", // 304 "HasNoAutoFormat", // 305 "HasNoRecords", // 306 "Header", // 307 "HeaderRange", // 308 "HeaderRow", // 309 "Height", // 310 "Hidden", // 311 "HideDetail", // 312 "HideDropDowns", // 313 "HideFormula", // 314 "HideHorizontalScrollBar", // 315 "HideInactiveListBorder", // 316 "HideOfficeLogo", // 317 "HidePivotTableFieldList", // 318 "HideTotalsAnnotation", // 319 "HideVerticalScrollBar", // 320 "HideWorkbookTabs", // 321 "Horizontal", // 322 "HorizontalResolution", // 323 "Href", // 324 "HtmlType", // 325 "HyperlinkBase", // 326 "ID", // 327 "IMEMode", // 328 "Id", // 329 "IdWrapped", // 330 "If", // 331 "ImmediateItemsOnDrop", // 332 "Indent", // 333 "Index", // 334 "IndividualCellBorders", // 335 "InputHide", // 336 "InputMessage", // 337 "InputTitle", // 338 "InsertEntireRows", // 339 "InstanceShape", // 340 "Interior", // 341 "IntlMacro", // 342 "Invalid", // 343 "InvertedColumnMember", // 344 "InvertedRowMember", // 345 "IsGroupLevel", // 346 "IsMemberProperty", // 347 "IsNotFiltered", // 348 "Italic", // 349 "Item", // 350 "ItemType", // 351 "Iteration", // 352 "KeyboardShortcut", // 353 "Keywords", // 354 "Label", // 355 "LastAuthor", // 356 "LastPrinted", // 357 "LastSaved", // 358 "Layout", // 359 "LayoutForm", // 360 "LayoutPageBreak", // 361 "LayoutSubtotalLocation", // 362 "LeafColumnMember", // 363 "LeafRowMember", // 364 "Left", // 365 "LeftCell", // 366 "LeftColumnRightPane", // 367 "LeftColumnVisible", // 368 "LeftToRight", // 369 "LengthLevelUniqueName", // 370 "Level", // 371 "LineStyle", // 372 "Lines", // 373 "LoadMode", // 374 "LocalConnection", // 375 "Location", // 376 "LocationOfComponents", // 377 "Macro", // 378 "MainFile", // 379 "Maintain", // 380 "MajorVersion", // 381 "Manager", // 382 "Map", // 383 "MapChildItems", // 384 "MapID", // 385 "MapInfo", // 386 "Mapdata", // 387 "Margin", // 388 "Max", // 389 "MaxChange", // 390 "MaxHeight", // 391 "MaxIterations", // 392 "MaxWidth", // 393 "Measure", // 394 "Member", // 395 "MemberExpand", // 396 "MemberFormat", // 397 "MemberName", // 398 "MemberPropertiesOrder", // 399 "MemberProperty", // 400 "MemberPropertyParent", // 401 "MergeAcross", // 402 "MergeDown", // 403 "MergeLabels", // 404 "Min", // 405 "MinorVersion", // 406 "Missing", // 407 "MissingItemsLimit", // 408 "Moper", // 409 "MoveAfterReturn", // 410 "Name", // 411 "NamedCell", // 412 "NamedRange", // 413 "Names", // 414 "Namespace", // 415 "NewAsync", // 416 "NewItemsHidden", // 417 "NextId", // 418 "NextSheetNumber", // 419 "NoAutoFit", // 420 "NoAutoFormatWidth", // 421 "NoAutoPage", // 422 "NoAutoRecover", // 423 "NoAutofit", // 424 "NoColumnGrand", // 425 "NoDetailAutoFit", // 426 "NoDisplayNullString", // 427 "NoDragToColumn", // 428 "NoDragToData", // 429 "NoDragToHide", // 430 "NoDragToPage", // 431 "NoDragToRow", // 432 "NoInserts", // 433 "NoPreserveFormatting", // 434 "NoPrintRepeatItems", // 435 "NoPrinterInfo", // 436 "NoRefreshCache", // 437 "NoRowGrand", // 438 "NoSaveData", // 439 "NoSummaryColumnsRightDetail", // 440 "NoSummaryRowsBelowDetail", // 441 "NoTextToColumns", // 442 "NoTitles", // 443 "NoToggleDataHeader", // 444 "NoViewCalculatedMembers", // 445 "NonDefaultName", // 446 "NotInverted", // 447 "NotVisible", // 448 "NullString", // 449 "Number", // 450 "NumberFormat", // 451 "NumberOfCopies", // 452 "OLEObject", // 453 "OWCVersion", // 454 "ObjectID", // 455 "OfficeDocumentSettings", // 456 "OleLink", // 457 "Operator", // 458 "OptimizeCache", // 459 "Orientation", // 460 "Outline", // 461 "OverwriteCells", // 462 "PLCaption", // 463 "PLDataOrientation", // 464 "PLExport", // 465 "PLGroupType", // 466 "PLName", // 467 "PLPivotField", // 468 "PLPosition", // 469 "PLSubtotal", // 470 "PLTPivotItem", // 471 "PLTotal", // 472 "PTFormat", // 473 "PTFormula", // 474 "PTLineItem", // 475 "PTLineItems", // 476 "PTPivotData", // 477 "PTRule", // 478 "PTSource", // 479 "PageBreakZoom", // 480 "PageBreaks", // 481 "PageFieldOrder", // 482 "PageFieldStyle", // 483 "PageFieldWrapCount", // 484 "PageMargins", // 485 "PageSetup", // 486 "Pages", // 487 "Pane", // 488 "Panes", // 489 "PaperSizeIndex", // 490 "Paragraphs", // 491 "Parameter", // 492 "ParameterType", // 493 "ParameterValue", // 494 "Parent", // 495 "ParentField", // 496 "ParentIsOther", // 497 "ParentName", // 498 "ParentUniqueName", // 499 "ParseFormulaAsV10", // 500 "ParseRuleAsV10", // 501 "PasteFormula", // 502 "PasteRefersTo", // 503 "Path", // 504 "Pattern", // 505 "PatternColor", // 506 "PivotAxis", // 507 "PivotCache", // 508 "PivotField", // 509 "PivotItem", // 510 "PivotTable", // 511 "PivotView", // 512 "Position", // 513 "PrecisionAsDisplayed", // 514 "PresentationFormat", // 515 "Print", // 516 "PrintErrors", // 517 "PrintSetTitles", // 518 "ProgID", // 519 "PromptString", // 520 "ProtectContents", // 521 "ProtectObjects", // 522 "ProtectScenarios", // 523 "ProtectStructure", // 524 "ProtectWindows", // 525 "Protected", // 526 "Protection", // 527 "Proxy", // 528 "PublishObject", // 529 "PublishObjects", // 530 "Purpose", // 531 "QTSource", // 532 "Qualifier", // 533 "Query97", // 534 "QuerySource", // 535 "QueryTable", // 536 "QueryType", // 537 "Range", // 538 "RangeSelection", // 539 "ReadOnly", // 540 "ReadingOrder", // 541 "RefModeR1C1", // 542 "Reference", // 543 "RefersTo", // 544 "RefreshDate", // 545 "RefreshDateCopy", // 546 "RefreshInfo", // 547 "RefreshName", // 548 "RefreshOnChange", // 549 "RefreshOnFileOpen", // 550 "RefreshTimeSpan", // 551 "RefreshedInXl9", // 552 "Resource", // 553 "Revision", // 554 "Right", // 555 "RightToLeft", // 556 "RobustConnect", // 557 "RootElement", // 558 "Rotate", // 559 "Rotation", // 560 "Row", // 561 "RowBreak", // 562 "RowBreaks", // 563 "RowColHeadings", // 564 "RowInputCell", // 565 "RowLast", // 566 "RowNumbers", // 567 "Rule", // 568 "RuleType", // 569 "RuleV10", // 570 "SOAPAction", // 571 "SQLType", // 572 "Scale", // 573 "Schema", // 574 "SchemaID", // 575 "SchemaRef", // 576 "Selected", // 577 "SelectedSheets", // 578 "Selection", // 579 "SelectionNamespaces", // 580 "SemiColon", // 581 "SeqNum", // 582 "Sequence", // 583 "ServerBased", // 584 "ServerSortOrder", // 585 "Set", // 586 "Shadow", // 587 "ShapeID", // 588 "SheetIndex", // 589 "SheetName", // 590 "ShowAllItems", // 591 "ShowAlways", // 592 "ShowCellBackgroundFromOLAP", // 593 "ShowImportExportValidationErrors", // 594 "ShowPageBreakZoom", // 595 "ShowPageMultipleItemLabel", // 596 "ShowTotals", // 597 "ShrinkToFit", // 598 "Size", // 599 "SmallGrid", // 600 "SmartTagType", // 601 "SmartTags", // 602 "SolveOrder", // 603 "Sort", // 604 "SortKey", // 605 "SortOrder", // 606 "Sorting", // 607 "Source", // 608 "SourceConnectionFile", // 609 "SourceConsolidation", // 610 "SourceDataFile", // 611 "SourceHierarchy", // 612 "SourceHierarchyLevel", // 613 "SourceName", // 614 "SourceType", // 615 "Space", // 616 "SpaceAbove", // 617 "SpaceBelow", // 618 "Span", // 619 "SplitHorizontal", // 620 "SplitVertical", // 621 "SpreadsheetAutoFit", // 622 "StandardWidth", // 623 "StartPageNumber", // 624 "StartRow", // 625 "StrikeThrough", // 626 "Style", // 627 "StyleID", // 628 "Styles", // 629 "SubType", // 630 "Subject", // 631 "Subtotal", // 632 "SubtotalFormat", // 633 "SubtotalHiddenPageItems", // 634 "SubtotalName", // 635 "SupBook", // 636 "Synchronous", // 637 "Tab", // 638 "TabColorIndex", // 639 "TabRatio", // 640 "Table", // 641 "TableStyle", // 642 "Tag", // 643 "Text", // 644 "TextQualifier", // 645 "TextWizardSettings", // 646 "ThousandSeparator", // 647 "Ticked", // 648 "Title", // 649 "Toolbar", // 650 "TooltipInfo", // 651 "Top", // 652 "TopCell", // 653 "TopRowBottomPane", // 654 "TopRowVisible", // 655 "TotalAlignment", // 656 "TotalAllMembers", // 657 "TotalCaptionAlignment", // 658 "TotalFormat", // 659 "TotalTime", // 660 "TotalWidth", // 661 "TransitionExpressionEvaluation", // 662 "TransitionFormulaEntry", // 663 "Type", // 664 "URLString", // 665 "Uncalced", // 666 "Underline", // 667 "UniqueName", // 668 "Unsynced", // 669 "UseBlank", // 670 "UseLocalConnection", // 671 "UseSameSettings", // 672 "User", // 673 "VMLFrame", // 674 "VacatedStyle", // 675 "ValidPrinterInfo", // 676 "Value", // 677 "Value1", // 678 "Value2", // 679 "Version", // 680 "VersionLastEdit", // 681 "VersionLastRefresh", // 682 "VersionLastUpdate", // 683 "VersionRefreshableMin", // 684 "VersionUpdateableMin", // 685 "Vertical", // 686 "VerticalAlign", // 687 "VerticalResolution", // 688 "VerticalText", // 689 "ViewableRange", // 690 "Visible", // 691 "VisualTotals", // 692 "WantAdvise", // 693 "WantPict", // 694 "Watch", // 695 "Watches", // 696 "WebPostString", // 697 "Weight", // 698 "Width", // 699 "WindowHeight", // 700 "WindowHidden", // 701 "WindowIconic", // 702 "WindowTopX", // 703 "WindowTopY", // 704 "WindowWidth", // 705 "Windows", // 706 "Words", // 707 "Workbook", // 708 "WorkbookOptions", // 709 "Worksheet", // 710 "WorksheetOptions", // 711 "WorksheetSource", // 712 "WrapText", // 713 "XPath", // 714 "XSDType", // 715 "Xct", // 716 "ZeroHeight", // 717 "Zoom", // 718 "accentbar", // 719 "adj", // 720 "adjusthandles", // 721 "alignshape", // 722 "allowincell", // 723 "allowoverlap", // 724 "alt", // 725 "althref", // 726 "angle", // 727 "arc", // 728 "arcsize", // 729 "arrowok", // 730 "aspect", // 731 "aspectratio", // 732 "attribute", // 733 "autorotationcenter", // 734 "backdepth", // 735 "background", // 736 "bilevel", // 737 "blacklevel", // 738 "borderbottomcolor", // 739 "borderleftcolor", // 740 "borderrightcolor", // 741 "bordertopcolor", // 742 "brightness", // 743 "bullet", // 744 "button", // 745 "bwmode", // 746 "bwnormal", // 747 "bwpure", // 748 "callout", // 749 "caption", // 750 "chromakey", // 751 "class", // 752 "clip", // 753 "color", // 754 "color2", // 755 "colormenu", // 756 "colormode", // 757 "colormru", // 758 "colors", // 759 "complex", // 760 "connectangles", // 761 "connectloc", // 762 "connectlocs", // 763 "connectortype", // 764 "connecttype", // 765 "content", // 766 "control1", // 767 "control2", // 768 "coordorigin", // 769 "coordsize", // 770 "cropbottom", // 771 "cropleft", // 772 "cropping", // 773 "cropright", // 774 "croptop", // 775 "curve", // 776 "dashstyle", // 777 "data", // 778 "datatype", // 779 "detectmouseclick", // 780 "diffusity", // 781 "displaycustomheaders", // 782 "distance", // 783 "doubleclicknotify", // 784 "drop", // 785 "dropauto", // 786 "dt", // 787 "edge", // 788 "editas", // 789 "embosscolor", // 790 "end", // 791 "endAngle", // 792 "endarrow", // 793 "endarrowlength", // 794 "endarrowwidth", // 795 "endcap", // 796 "entry", // 797 "eqn", // 798 "ext", // 799 "extends", // 800 "extrusion", // 801 "extrusioncolor", // 802 "extrusionok", // 803 "f", // 804 "facet", // 805 "fill", // 806 "fillcolor", // 807 "filled", // 808 "fillok", // 809 "filltype", // 810 "fitpath", // 811 "fitshape", // 812 "focus", // 813 "focusposition", // 814 "focussize", // 815 "forcedash", // 816 "foredepth", // 817 "formulas", // 818 "from", // 819 "gain", // 820 "gamma", // 821 "gap", // 822 "gradientshapeok", // 823 "grayscale", // 824 "group", // 825 "grouping", // 826 "h", // 827 "handles", // 828 "hidden", // 829 "how", // 830 "hr", // 831 "hralign", // 832 "href", // 833 "hrheight", // 834 "hrnoshade", // 835 "hrpct", // 836 "hrstd", // 837 "hrwidth", // 838 "id", // 839 "idmap", // 840 "idref", // 841 "image", // 842 "imagealignshape", // 843 "imageaspect", // 844 "imagedata", // 845 "imagesize", // 846 "inset", // 847 "insetmode", // 848 "invx", // 849 "invy", // 850 "joinstyle", // 851 "length", // 852 "lengthspecified", // 853 "lightface", // 854 "lightharsh", // 855 "lightharsh2", // 856 "lightlevel", // 857 "lightlevel2", // 858 "lightposition", // 859 "lightposition2", // 860 "limo", // 861 "line", // 862 "linestyle", // 863 "lock", // 864 "lockrotationcenter", // 865 "map", // 866 "master", // 867 "matrix", // 868 "maxLength", // 869 "metal", // 870 "method", // 871 "minusx", // 872 "minusy", // 873 "miterlimit", // 874 "movie", // 875 "name", // 876 "namespaceuri", // 877 "new", // 878 "obscured", // 879 "offset", // 880 "offset2", // 881 "old", // 882 "ole", // 883 "oleicon", // 884 "oleid", // 885 "on", // 886 "oned", // 887 "onmouseover", // 888 "opacity", // 889 "opacity2", // 890 "orientation", // 891 "orientationangle", // 892 "origin", // 893 "oval", // 894 "password", // 895 "path", // 896 "phonetictext", // 897 "plane", // 898 "points", // 899 "polar", // 900 "polyline", // 901 "position", // 902 "preferrelative", // 903 "print", // 904 "proxy", // 905 "r", // 906 "radiusrange", // 907 "rect", // 908 "regroupid", // 909 "regrouptable", // 910 "relativeposition", // 911 "render", // 912 "rotation", // 913 "rotationangle", // 914 "rotationcenter", // 915 "roundrect", // 916 "row", // 917 "ruleinitiator", // 918 "ruleproxy", // 919 "rules", // 920 "selection", // 921 "shadow", // 922 "shadowcolor", // 923 "shadowok", // 924 "shape", // 925 "shapedefaults", // 926 "shapelayout", // 927 "shapetype", // 928 "shininess", // 929 "singleclick", // 930 "size", // 931 "skew", // 932 "skewamt", // 933 "skewangle", // 934 "specularity", // 935 "spid", // 936 "spidmax", // 937 "spt", // 938 "src", // 939 "start", // 940 "startAngle", // 941 "startarrow", // 942 "startarrowlength", // 943 "startarrowwidth", // 944 "string", // 945 "stroke", // 946 "strokecolor", // 947 "stroked", // 948 "strokeok", // 949 "strokeweight", // 950 "style", // 951 "switch", // 952 "tablelimits", // 953 "tableproperties", // 954 "target", // 955 "targetscreensize", // 956 "text", // 957 "textborder", // 958 "textbox", // 959 "textboxrect", // 960 "textpath", // 961 "textpathok", // 962 "title", // 963 "to", // 964 "trim", // 965 "type", // 966 "url", // 967 "useExplicit", // 968 "userId", // 969 "userdrawn", // 970 "userhidden", // 971 "v", // 972 "verticies", // 973 "viewpoint", // 974 "viewpointorigin", // 975 "visible", // 976 "weight", // 977 "worksheetoptions", // 978 "wrapcoords", // 979 "xrange", // 980 "xscale", // 981 "yrange" // 982 }; size_t token_name_count = 983; liborcus-0.9.2/src/liborcus/ods_content_xml_context.hpp0000644000175000017500000000556712535701143022113 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ODSCONTEXT_HPP__ #define __ORCUS_ODSCONTEXT_HPP__ #include "xml_context_base.hpp" #include "odf_para_context.hpp" #include "odf_styles.hpp" #include "orcus/spreadsheet/types.hpp" #include #include #include namespace orcus { namespace spreadsheet { namespace iface { class import_factory; class import_sheet; }} class ods_content_xml_context : public xml_context_base { typedef boost::unordered_map name2id_type; public: struct row_attr { long number_rows_repeated; row_attr(); }; enum cell_value_type { vt_unknown, vt_float, vt_string, vt_date }; struct cell_attr { long number_columns_repeated; cell_value_type type; double value; pstring date_value; pstring style_name; pstring formula; spreadsheet::formula_grammar_t formula_grammar; cell_attr(); }; ods_content_xml_context(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory); virtual ~ods_content_xml_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: void start_null_date(const xml_attrs_t& attrs); void start_table(const xml_attrs_t& attrs); void end_table(); void start_column(const xml_attrs_t& attrs); void end_column(); void start_row(const xml_attrs_t& attrs); void end_row(); void start_cell(const xml_attrs_t& attrs); void end_cell(); void push_cell_value(); void end_spreadsheet(); private: spreadsheet::iface::import_factory* mp_factory; std::vector m_tables; boost::scoped_ptr mp_child; row_attr m_row_attr; cell_attr m_cell_attr; /// attributes of current cell. int m_row; int m_col; size_t m_para_index; bool m_has_content; odf_styles_map_type m_styles; /// map storing all automatic styles by their names. name2id_type m_cell_format_map; /// map of style names to cell format (xf) IDs. text_para_context m_child_para; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_revision_context.cpp0000644000175000017500000004443512535701143021620 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_revision_context.hpp" #include "ooxml_namespace_types.hpp" #include "ooxml_token_constants.hpp" #include "session_context.hpp" #include "xml_context_global.hpp" #include "orcus/measurement.hpp" #include "orcus/string_pool.hpp" #include "orcus/global.hpp" #include using namespace std; namespace orcus { namespace { class headers_attr_parser : public unary_function { pstring m_guid; long m_highest_revid; long m_version; bool m_disk_revisions; public: headers_attr_parser() : m_highest_revid(-1), m_version(-1), m_disk_revisions(false) {} pstring get_last_guid() const { return m_guid; } long get_highest_revid() const { return m_highest_revid; } long get_version() const { return m_version; } bool is_disk_revisions() const { return m_disk_revisions; } void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) // All attributes are in the xlsx namespace. return; switch (attr.name) { case XML_guid: // guid should never be transient as it's not supposed to contain any encoded characters. // TODO : We should convert guid to a numeric value here. m_guid = attr.value; break; case XML_diskRevisions: m_disk_revisions = to_long(attr.value) != 0; break; case XML_revisionId: m_highest_revid = to_long(attr.value); break; case XML_version: m_version = to_long(attr.value); break; default: ; } } }; class header_attr_parser : public unary_function { string_pool* m_pool; pstring m_guid; pstring m_username; pstring m_rid; date_time_t m_date_time; long m_next_sheet_id; long m_min_revid; long m_max_revid; public: header_attr_parser(string_pool& pool) : m_pool(&pool), m_next_sheet_id(-1), m_min_revid(-1), m_max_revid(-1) {} pstring get_guid() const { return m_guid; } pstring get_username() const { return m_username; } pstring get_rid() const { return m_rid; } date_time_t get_date_time() const { return m_date_time; } long get_next_sheet_id() const { return m_next_sheet_id; } long get_min_revid() const { return m_min_revid; } long get_max_revid() const { return m_max_revid; } void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_ooxml_xlsx) { switch (attr.name) { case XML_guid: m_guid = attr.value; break; case XML_dateTime: m_date_time = to_date_time(attr.value); break; case XML_maxSheetId: m_next_sheet_id = to_long(attr.value); break; case XML_userName: m_username = attr.value; if (attr.transient) m_username = m_pool->intern(m_username).first; break; case XML_minRId: m_min_revid = to_long(attr.value); break; case XML_maxRId: m_max_revid = to_long(attr.value); break; default: ; } } else if (attr.ns == NS_ooxml_r && attr.name == XML_id) { // Pick up a rel id here. if (attr.transient) // Rel ID's should never be transient. return; m_rid = attr.value; } } }; } xlsx_revheaders_context::xlsx_revheaders_context(session_context& session_cxt, const tokens& tokens) : xml_context_base(session_cxt, tokens) {} xlsx_revheaders_context::~xlsx_revheaders_context() {} bool xlsx_revheaders_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const { return true; } xml_context_base* xlsx_revheaders_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) { return NULL; } void xlsx_revheaders_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) { } void xlsx_revheaders_context::start_element(xmlns_id_t ns, xml_token_t name, const vector& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_ooxml_xlsx) { switch (name) { case XML_headers: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); headers_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); cout << "* last guid: " << func.get_last_guid() << endl; cout << "* highest revision ID: " << func.get_highest_revid() << endl; cout << "* version: " << func.get_version() << endl; cout << "* disk revisions: " << func.is_disk_revisions() << endl; } break; case XML_header: { xml_element_expected(parent, NS_ooxml_xlsx, XML_headers); header_attr_parser func(get_session_context().m_string_pool); func = for_each(attrs.begin(), attrs.end(), func); cout << "* revision header (guid:" << func.get_guid() << ")" << endl; cout << " - timestamp: " << func.get_date_time().to_string() << endl; cout << " - user name: " << func.get_username() << endl; if (func.get_min_revid() != -1 && func.get_max_revid() != -1) cout << " - revision range: " << func.get_min_revid() << "-" << func.get_max_revid() << endl; long next_sheet = func.get_next_sheet_id(); if (next_sheet != -1) cout << " - next available sheet: " << (next_sheet - 1) << endl; cout << " - revision log rid: " << func.get_rid() << endl; // TODO : Intern the rid here when passing it to the revision log stream. } break; case XML_sheetIdMap: { xml_element_expected(parent, NS_ooxml_xlsx, XML_header); m_cur_sheet_ids.clear(); long n = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); if (n > 0) m_cur_sheet_ids.reserve(n); } break; case XML_sheetId: { xml_element_expected(parent, NS_ooxml_xlsx, XML_sheetIdMap); long val = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_val); if (val > 0) m_cur_sheet_ids.push_back(val-1); // convert from 1-based to 0-based. } break; default: warn_unhandled(); } } } bool xlsx_revheaders_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_ooxml_xlsx) { switch (name) { case XML_sheetIdMap: { cout << " - sheet indices: "; for (size_t i = 0; i < m_cur_sheet_ids.size(); ++i) cout << m_cur_sheet_ids[i] << " "; cout << endl; } break; default: ; } } return pop_stack(ns, name); } void xlsx_revheaders_context::characters(const pstring& /*str*/, bool /*transient*/) { } namespace { class rcc_attr_parser : public unary_function { long m_revision_id; long m_sheet_id; public: rcc_attr_parser() : m_revision_id(-1), m_sheet_id(-1) {} long get_revision_id() const { return m_revision_id; } long get_sheet_id() const { return m_sheet_id; } void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_rId: // revision ID m_revision_id = to_long(attr.value); break; case XML_sId: // sheet ID m_sheet_id = to_long(attr.value); break; default: ; } } }; class rrc_attr_parser : public unary_function { long m_revision_id; long m_sheet_id; pstring m_ref; xlsx_rev_row_column_action_t m_action_type; bool m_end_of_list; public: rrc_attr_parser() : m_revision_id(-1), m_sheet_id(-1), m_action_type(xlsx_rev_rca_unknown), m_end_of_list(false) {} long get_revision_id() const { return m_revision_id; } long get_sheet_id() const { return m_sheet_id; } bool is_end_of_list() const { return m_end_of_list; } pstring get_ref() const { return m_ref; } xlsx_rev_row_column_action_t get_action_type() const { return m_action_type; } void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_rId: // revision ID m_revision_id = to_long(attr.value); break; case XML_sId: // sheet ID m_sheet_id = to_long(attr.value); break; case XML_eol: m_end_of_list = to_long(attr.value) > 0; break; case XML_ref: if (!attr.transient) m_ref = attr.value; break; case XML_action: m_action_type = to_xlsx_rev_row_column_action_type(attr.value); break; default: ; } } }; class cell_data_attr_parser : public unary_function { pstring m_ref; xlsx_cell_t m_type; public: cell_data_attr_parser() : m_type(xlsx_ct_numeric) {} pstring get_ref() const { return m_ref; } xlsx_cell_t get_cell_type() const { return m_type; } void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_r: if (!attr.transient) m_ref = attr.value; break; case XML_t: m_type = to_xlsx_cell_type(attr.value); default: ; } } }; } xlsx_revlog_context::xlsx_revlog_context(session_context& session_cxt, const tokens& tokens) : xml_context_base(session_cxt, tokens), m_cur_value(std::numeric_limits::quiet_NaN()), m_cur_cell_type(xlsx_ct_unknown), m_cur_formula(false) { } xlsx_revlog_context::~xlsx_revlog_context() {} bool xlsx_revlog_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const { return true; } xml_context_base* xlsx_revlog_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) { return NULL; } void xlsx_revlog_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) { } void xlsx_revlog_context::start_element(xmlns_id_t ns, xml_token_t name, const vector& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_ooxml_xlsx) { switch (name) { case XML_revisions: xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); break; case XML_raf: // revision auto format xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rcc: { // revision cell change xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); rcc_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); cout << "* revision id: " << func.get_revision_id() << " type: cell change" << endl; cout << " - sheet index: " << func.get_sheet_id() << endl; m_cur_cell_type = xlsx_ct_unknown; } break; case XML_rcft: // revision merge conflict xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rcmt: // revision cell comment xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rcv: // revision custom view xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rdn: // revision defined name xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rfmt: // revision format xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_ris: // revision insert sheet xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rm: // revision cell move xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rqt: // revision query table xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_rrc: { // revision row column insert delete xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); rrc_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); cout << "* revision id: " << func.get_revision_id() << " type: row column insert delete" << endl; cout << " - sheet index: " << func.get_sheet_id() << endl; cout << " - action type: " << to_string(func.get_action_type()) << endl; cout << " - range: " << func.get_ref() << endl; cout << " - end of list: " << (func.is_end_of_list() ? "true":"false") << endl; } break; case XML_rsnm: // revision sheet name xml_element_expected(parent, NS_ooxml_xlsx, XML_revisions); break; case XML_oc: // old cell data xml_element_expected(parent, NS_ooxml_xlsx, XML_rcc); break; case XML_nc: { // new cell data xml_element_expected(parent, NS_ooxml_xlsx, XML_rcc); cell_data_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); m_cur_cell_type = func.get_cell_type(); m_cur_formula = false; m_cur_value = 0.0; m_cur_string.clear(); cout << " - new cell position: " << func.get_ref() << endl; cout << " - new cell type: " << to_string(m_cur_cell_type) << endl; } break; case XML_f: { xml_elem_stack_t elems; elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_oc)); elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_nc)); xml_element_expected(parent, elems); } break; case XML_v: { xml_elem_stack_t elems; elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_oc)); elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_nc)); xml_element_expected(parent, elems); } break; case XML_is: { xml_elem_stack_t elems; elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_oc)); elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_nc)); xml_element_expected(parent, elems); } break; case XML_t: { xml_elem_stack_t elems; elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_is)); elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_r)); xml_element_expected(parent, elems); } break; default: warn_unhandled(); } } } bool xlsx_revlog_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_ooxml_xlsx) { switch (name) { case XML_nc: { cout << " - new cell value: "; switch (m_cur_cell_type) { case xlsx_ct_boolean: if (m_cur_value != 0.0) cout << "true"; else cout << "false"; break; case xlsx_ct_numeric: if (m_cur_formula) cout << m_cur_string; else cout << m_cur_value; break; case xlsx_ct_inline_string: cout << m_cur_string; break; default: ; } cout << endl; } break; default: ; } } return pop_stack(ns, name); } void xlsx_revlog_context::characters(const pstring& str, bool transient) { const xml_token_pair_t& elem = get_current_element(); if (elem.first == NS_ooxml_xlsx) { switch (elem.second) { case XML_v: m_cur_value = to_double(str); break; case XML_f: m_cur_formula = true; // fall through to get the string. case XML_t: m_cur_string = str; if (transient) m_cur_string = get_session_context().m_string_pool.intern(m_cur_string).first; break; default: ; } } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_table_context.hpp0000644000175000017500000000255612535701143021054 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_TABLE_CONTEXT_HPP #define ORCUS_XLSX_TABLE_CONTEXT_HPP #include "xml_context_base.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class import_table; }} class xlsx_table_context : public xml_context_base { public: xlsx_table_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_table& table); virtual ~xlsx_table_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: spreadsheet::iface::import_table& m_table; boost::scoped_ptr mp_child; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_styles_context.cpp0000644000175000017500000002433412535701143021053 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "odf_styles_context.hpp" #include "odf_namespace_types.hpp" #include "odf_token_constants.hpp" #include "orcus/measurement.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include using namespace std; namespace orcus { namespace { class style_attr_parser : public std::unary_function { const style_value_converter* m_converter; pstring m_name; odf_style_family m_family; public: style_attr_parser(const style_value_converter* converter) : m_converter(converter), m_family(style_family_unknown) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_style) { switch (attr.name) { case XML_name: m_name = attr.value; break; case XML_family: m_family = m_converter->to_style_family(attr.value); break; } } } const pstring& get_name() const { return m_name; } odf_style_family get_family() const { return m_family; } }; class col_prop_attr_parser : public std::unary_function { length_t m_width; public: void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_style) { switch (attr.name) { case XML_column_width: m_width = to_length(attr.value); break; } } } const length_t& get_width() const { return m_width; } }; class row_prop_attr_parser : public std::unary_function { length_t m_height; public: void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_style) { switch (attr.name) { case XML_row_height: m_height = to_length(attr.value); break; } } } const length_t& get_height() const { return m_height; } }; class text_prop_attr_parser : std::unary_function { pstring m_font_name; length_t m_font_size; bool m_bold; bool m_italic; public: text_prop_attr_parser() : m_bold(false), m_italic(false) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_odf_style) { switch (attr.name) { case XML_font_name: m_font_name = attr.value; break; default: ; } } else if (attr.ns == NS_odf_fo) { switch (attr.name) { case XML_font_size: m_font_size = to_length(attr.value); break; case XML_font_style: m_italic = attr.value == "italic"; break; case XML_font_weight: m_bold = attr.value == "bold"; break; default: ; } } } pstring get_font_name() const { return m_font_name; } length_t get_font_size() const { return m_font_size; } bool is_bold() const { return m_bold; } bool is_italic() const { return m_italic; } }; } style_value_converter::style_value_converter() { static const struct { const char* str; odf_style_family val; } style_family_values[] = { { "graphic", style_family_graphic }, { "paragraph", style_family_paragraph }, { "table", style_family_table }, { "table-column", style_family_table_column }, { "table-row", style_family_table_row }, { "table-cell", style_family_table_cell }, { "text", style_family_text } }; size_t n = sizeof(style_family_values)/sizeof(style_family_values[0]); for (size_t i = 0; i < n; ++i) { m_style_families.insert( style_families_type::value_type( style_family_values[i].str, style_family_values[i].val)); } } odf_style_family style_value_converter::to_style_family(const pstring& val) const { style_families_type::const_iterator it = m_style_families.find(val); return it == m_style_families.end() ? style_family_unknown : it->second; } automatic_styles_context::automatic_styles_context( session_context& session_cxt, const tokens& tk, odf_styles_map_type& styles, spreadsheet::iface::import_factory* factory) : xml_context_base(session_cxt, tk), mp_factory(factory), m_styles(styles) { commit_default_styles(); } bool automatic_styles_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { return true; } xml_context_base* automatic_styles_context::create_child_context(xmlns_id_t ns, xml_token_t name) { return NULL; } void automatic_styles_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { } void automatic_styles_context::start_element(xmlns_id_t ns, xml_token_t name, const std::vector& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_odf_office) { switch (name) { case XML_automatic_styles: xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); break; default: warn_unhandled(); } } else if (ns == NS_odf_style) { switch (name) { case XML_style: { xml_element_expected(parent, NS_odf_office, XML_automatic_styles); style_attr_parser func(&m_converter); func = std::for_each(attrs.begin(), attrs.end(), func); m_current_style.reset(new odf_style(func.get_name(), func.get_family())); } break; case XML_table_column_properties: { xml_element_expected(parent, NS_odf_style, XML_style); col_prop_attr_parser func; func = std::for_each(attrs.begin(), attrs.end(), func); assert(m_current_style->family == style_family_table_column); m_current_style->column_data->width = func.get_width(); } break; case XML_table_row_properties: { xml_element_expected(parent, NS_odf_style, XML_style); row_prop_attr_parser func; func = std::for_each(attrs.begin(), attrs.end(), func); assert(m_current_style->family == style_family_table_row); m_current_style->row_data->height = func.get_height(); } break; case XML_table_properties: xml_element_expected(parent, NS_odf_style, XML_style); break; case XML_paragraph_properties: xml_element_expected(parent, NS_odf_style, XML_style); break; case XML_text_properties: { xml_element_expected(parent, NS_odf_style, XML_style); spreadsheet::iface::import_styles* styles = mp_factory->get_styles(); if (styles) { text_prop_attr_parser func; func = std::for_each(attrs.begin(), attrs.end(), func); // Commit the font data. pstring font_name = func.get_font_name(); if (!font_name.empty()) styles->set_font_name(font_name.get(), font_name.size()); length_t font_size = func.get_font_size(); if (font_size.unit == length_unit_point) styles->set_font_size(font_size.value); if (func.is_bold()) styles->set_font_bold(true); if (func.is_italic()) styles->set_font_italic(true); size_t font_id = styles->commit_font(); switch (m_current_style->family) { case style_family_table_cell: { odf_style::cell* data = m_current_style->cell_data; data->font = font_id; } break; case style_family_text: { odf_style::text* data = m_current_style->text_data; data->font = font_id; } break; default: ; } } } break; default: warn_unhandled(); } } else warn_unhandled(); } bool automatic_styles_context::end_element(xmlns_id_t ns, xml_token_t name) { if (ns == NS_odf_style) { switch (name) { case XML_style: { if (m_current_style) { // ptr_map's first argument must be a non-const reference. pstring name = m_current_style->name; m_styles.insert(name, m_current_style.release()); } } break; } } return pop_stack(ns, name); } void automatic_styles_context::characters(const pstring& str, bool transient) { } void automatic_styles_context::commit_default_styles() { spreadsheet::iface::import_styles* styles = mp_factory->get_styles(); if (!styles) return; // Set default styles. Default styles must be associated with an index of 0. // Set empty styles for all style types before importing real styles. styles->commit_font(); styles->commit_fill(); styles->commit_border(); styles->commit_cell_protection(); styles->commit_number_format(); styles->commit_cell_style(); styles->commit_cell_style_xf(); styles->commit_cell_xf(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_handler.hpp0000644000175000017500000000154312535701143020321 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLS_XML_HANDLER_HPP #define ORCUS_XLS_XML_HANDLER_HPP #include "xml_stream_handler.hpp" namespace orcus { namespace spreadsheet { namespace iface { class import_factory; }} class tokens; struct session_context; class xls_xml_handler : public xml_stream_handler { public: xls_xml_handler(session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory); virtual ~xls_xml_handler(); virtual void start_document(); virtual void end_document(); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_sheet_context.cpp0000644000175000017500000005065512535701143021073 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_sheet_context.hpp" #include "xlsx_autofilter_context.hpp" #include "xlsx_conditional_format_context.hpp" #include "xlsx_session_data.hpp" #include "xlsx_types.hpp" #include "ooxml_global.hpp" #include "ooxml_schemas.hpp" #include "ooxml_token_constants.hpp" #include "ooxml_namespace_types.hpp" #include "xml_context_global.hpp" #include "orcus/exception.hpp" #include "orcus/global.hpp" #include "orcus/spreadsheet/import_interface.hpp" #include "orcus/measurement.hpp" #include #include using namespace std; namespace orcus { namespace { class col_attr_parser : public std::unary_function { long m_min; long m_max; double m_width; bool m_custom_width; bool m_contains_width; bool m_hidden; public: col_attr_parser() : m_min(0), m_max(0), m_width(0.0), m_custom_width(false), m_contains_width(false), m_hidden(false) {} void operator() (const xml_token_attr_t& attr) { if (attr.value.empty()) return; const char* p = attr.value.get(); const char* p_end = p + attr.value.size(); switch (attr.name) { case XML_min: m_min = to_long(p, p_end); break; case XML_max: m_max = to_long(p, p_end); break; case XML_width: m_width = to_double(p, p_end); m_contains_width = true; break; case XML_customWidth: m_custom_width = to_long(p, p_end); break; case XML_hidden: m_hidden = to_long(p, p_end); break; default: ; } } long get_min() const { return m_min; } long get_max() const { return m_max; } double get_width() const { return m_width; } bool is_custom_width() const { return m_custom_width; } bool contains_width() const { return m_contains_width; } bool is_hidden() const { return m_hidden; } }; class row_attr_parser : public std::unary_function { spreadsheet::row_t m_row; length_t m_height; bool m_contains_address; bool m_hidden; public: row_attr_parser() : m_row(0), m_contains_address(false), m_hidden(false) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_r: { // row index m_row = static_cast(to_long(attr.value)); if (!m_row) throw xml_structure_error("row number can never be zero!"); m_row -= 1; // from 1-based to 0-based. m_contains_address = true; } break; case XML_ht: { m_height.value = to_double(attr.value); m_height.unit = length_unit_point; } break; case XML_hidden: m_hidden = to_long(attr.value) != 0; break; default: ; } } spreadsheet::row_t get_row() const { return m_row; } length_t get_height() const { return m_height; } bool contains_address() const { return m_contains_address; } bool is_hidden() const { return m_hidden; } }; class cell_attr_parser : public std::unary_function { struct address { spreadsheet::row_t row; spreadsheet::col_t col; address(spreadsheet::row_t _row, spreadsheet::col_t _col) : row(_row), col(_col) {} }; xlsx_cell_t m_type; address m_address; size_t m_xf; bool m_contains_address; public: cell_attr_parser() : m_type(xlsx_ct_numeric), m_address(0,0), m_xf(0), m_contains_address(false) {} void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_r: // cell address in A1 notation. m_address = to_cell_address(attr.value); m_contains_address = true; break; case XML_t: // cell type m_type = to_xlsx_cell_type(attr.value); break; case XML_s: // cell style m_xf = to_long(attr.value); break; } } xlsx_cell_t get_cell_type() const { return m_type; } spreadsheet::row_t get_row() const { return m_address.row; } spreadsheet::col_t get_col() const { return m_address.col; } size_t get_xf() const { return m_xf; } bool contains_address() const { return m_contains_address; } private: address to_cell_address(const pstring& s) const { spreadsheet::row_t row = 0; spreadsheet::col_t col = 0; const char* p = s.get(); size_t n = s.size(); for (size_t i = 0; i < n; ++i, ++p) { char c = *p; if ('A' <= c && c <= 'Z') { col *= 26; col += static_cast(c - 'A' + 1); } else if ('0' <= c && c <= '9') { row *= 10; row += static_cast(c - '0'); } else { std::ostringstream os; os << "invalid cell address: " << s; throw xml_structure_error(os.str()); } } if (!row || !col) { std::ostringstream os; os << "invalid cell address: " << s; throw xml_structure_error(os.str()); } return address(row-1, col-1); // switch from 1-based to 0-based. } }; class formula_attr_parser : public std::unary_function { xlsx_sheet_context::formula m_attrs; public: void operator() (const xml_token_attr_t& attr) { switch (attr.name) { case XML_t: { if (attr.value == "shared") m_attrs.type = spreadsheet::formula_shared; else if (attr.value == "array") m_attrs.type = spreadsheet::formula_array; else if (attr.value == "dataTable") m_attrs.type = spreadsheet::formula_data_table; } break; case XML_ref: m_attrs.ref = attr.value; break; case XML_si: m_attrs.shared_id = to_long(attr.value); break; case XML_dt2D: m_attrs.data_table_2d = to_long(attr.value) != 0; break; case XML_dtr: m_attrs.data_table_row_based = to_long(attr.value) != 0; break; case XML_del1: m_attrs.data_table_ref1_deleted = to_long(attr.value) != 0; break; case XML_del2: m_attrs.data_table_ref2_deleted = to_long(attr.value) != 0; break; case XML_r1: m_attrs.data_table_ref1 = attr.value; break; case XML_r2: m_attrs.data_table_ref2 = attr.value; break; default: ; } } xlsx_sheet_context::formula get_attrs() const { return m_attrs; } }; } xlsx_sheet_context::formula::formula() : type(spreadsheet::formula_normal), str(), ref(), data_table_ref1(), data_table_ref2(), shared_id(-1), data_table_2d(false), data_table_row_based(false), data_table_ref1_deleted(false), data_table_ref2_deleted(false) {} void xlsx_sheet_context::formula::reset() { *this = formula(); } xlsx_sheet_context::xlsx_sheet_context( session_context& session_cxt, const tokens& tokens, spreadsheet::sheet_t sheet_id, spreadsheet::iface::import_sheet* sheet) : xml_context_base(session_cxt, tokens), mp_sheet(sheet), m_sheet_id(sheet_id), m_cur_row(-1), m_cur_col(-1), m_cur_cell_type(xlsx_ct_numeric), m_cur_cell_xf(0) { } xlsx_sheet_context::~xlsx_sheet_context() { } bool xlsx_sheet_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const { if (ns == NS_ooxml_xlsx && name == XML_autoFilter) return false; else if (ns == NS_ooxml_xlsx && name == XML_conditionalFormatting) return false; return true; } xml_context_base* xlsx_sheet_context::create_child_context(xmlns_id_t ns, xml_token_t name) { if (ns == NS_ooxml_xlsx && name == XML_autoFilter) { mp_child.reset(new xlsx_autofilter_context(get_session_context(), get_tokens())); mp_child->transfer_common(*this); return mp_child.get(); } else if (ns == NS_ooxml_xlsx && name == XML_conditionalFormatting && mp_sheet->get_conditional_format()) { mp_child.reset(new xlsx_conditional_format_context(get_session_context(), get_tokens(), *mp_sheet->get_conditional_format())); mp_child->transfer_common(*this); return mp_child.get(); } return NULL; } void xlsx_sheet_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) { if (!child) return; if (ns == NS_ooxml_xlsx && name == XML_autoFilter) { spreadsheet::iface::import_auto_filter* af = mp_sheet->get_auto_filter(); if (!af) return; const xlsx_autofilter_context& cxt = static_cast(*child); cxt.push_to_model(*af); } } void xlsx_sheet_context::start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs) { xml_token_pair_t parent = push_stack(ns, name); switch (name) { case XML_worksheet: { if (get_config().debug) print_attrs(get_tokens(), attrs); } break; case XML_cols: xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); break; case XML_col: { xml_element_expected(parent, NS_ooxml_xlsx, XML_cols); col_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); spreadsheet::iface::import_sheet_properties* sheet_props = mp_sheet->get_sheet_properties(); if (sheet_props) { double width = func.get_width(); bool contains_width = func.contains_width(); bool hidden = func.is_hidden(); for (spreadsheet::col_t col = func.get_min(); col <= func.get_max(); ++col) { if (contains_width) sheet_props->set_column_width(col-1, width, length_unit_xlsx_column_digit); sheet_props->set_column_hidden(col-1, hidden); } } } break; case XML_dimension: xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); break; case XML_mergeCells: xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); break; case XML_mergeCell: { xml_element_expected(parent, NS_ooxml_xlsx, XML_mergeCells); spreadsheet::iface::import_sheet_properties* sheet_props = mp_sheet->get_sheet_properties(); if (sheet_props) { // ref contains merged range in A1 reference style. pstring ref = for_each( attrs.begin(), attrs.end(), single_attr_getter(m_pool, NS_ooxml_xlsx, XML_ref)).get_value(); sheet_props->set_merge_cell_range(ref.get(), ref.size()); } } break; case XML_pageMargins: { xml_elem_stack_t elems; elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_worksheet)); elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_customSheetView)); xml_element_expected(parent, elems); } break; case XML_sheetViews: xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); break; case XML_sheetView: xml_element_expected(parent, NS_ooxml_xlsx, XML_sheetViews); break; case XML_selection: { xml_elem_stack_t elems; elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_sheetView)); elems.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_customSheetView)); xml_element_expected(parent, elems); } break; case XML_sheetData: xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); break; case XML_sheetFormatPr: xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); break; case XML_row: { xml_element_expected(parent, NS_ooxml_xlsx, XML_sheetData); row_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); if (func.contains_address()) m_cur_row = func.get_row(); else ++m_cur_row; m_cur_col = -1; spreadsheet::iface::import_sheet_properties* sheet_props = mp_sheet->get_sheet_properties(); if (sheet_props) { length_t ht = func.get_height(); if (ht.unit != length_unit_unknown) sheet_props->set_row_height(m_cur_row, ht.value, ht.unit); bool hidden = func.is_hidden(); sheet_props->set_row_hidden(m_cur_row, hidden); } } break; case XML_c: { xml_element_expected(parent, NS_ooxml_xlsx, XML_row); cell_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); if (func.contains_address()) { if (m_cur_row != func.get_row()) throw xml_structure_error("row numbers differ!"); m_cur_col = func.get_col(); } else { ++m_cur_col; } m_cur_cell_type = func.get_cell_type(); m_cur_cell_xf = func.get_xf(); } break; case XML_f: { xml_element_expected(parent, NS_ooxml_xlsx, XML_c); formula_attr_parser func; func = for_each(attrs.begin(), attrs.end(), func); m_cur_formula = func.get_attrs(); } break; case XML_v: xml_element_expected(parent, NS_ooxml_xlsx, XML_c); break; case XML_tableParts: xml_element_expected(parent, NS_ooxml_xlsx, XML_worksheet); break; case XML_tablePart: { xml_element_expected(parent, NS_ooxml_xlsx, XML_tableParts); // The rid string must be pooled to the session context's string // pool as it is used long after thet sheet context is deleted. single_attr_getter func(get_session_context().m_string_pool, NS_ooxml_r, XML_id); pstring rid = for_each(attrs.begin(), attrs.end(), func).get_value(); unique_ptr p(new xlsx_rel_table_info); p->sheet_interface = mp_sheet; m_rel_extras.data.insert(opc_rel_extras_t::map_type::value_type(rid, p.release())); } break; default: warn_unhandled(); } } bool xlsx_sheet_context::end_element(xmlns_id_t ns, xml_token_t name) { switch (name) { case XML_c: end_element_cell(); break; case XML_f: m_cur_formula.str = m_cur_str; break; case XML_v: m_cur_value = m_cur_str; break; default: ; } m_cur_str.clear(); return pop_stack(ns, name); } void xlsx_sheet_context::characters(const pstring& str, bool transient) { m_cur_str = str; if (transient) m_cur_str = m_pool.intern(m_cur_str).first; } void xlsx_sheet_context::end_element_cell() { session_context& cxt = get_session_context(); xlsx_session_data& session_data = static_cast(*cxt.mp_data); if (!m_cur_formula.str.empty()) { if (m_cur_formula.type == spreadsheet::formula_shared && m_cur_formula.shared_id >= 0) { // shared formula expression session_data.m_shared_formulas.push_back( new xlsx_session_data::shared_formula( m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.shared_id, m_cur_formula.str.str(), m_cur_formula.ref.str())); } else if (m_cur_formula.type == spreadsheet::formula_array) { // array formula expression session_data.m_formulas.push_back( new xlsx_session_data::formula( m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.str.str(), m_cur_formula.ref.str())); } else { // normal (non-shared) formula expression session_data.m_formulas.push_back( new xlsx_session_data::formula( m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.str.str())); } } else if (m_cur_formula.type == spreadsheet::formula_shared && m_cur_formula.shared_id >= 0) { // shared formula without formula expression session_data.m_shared_formulas.push_back( new xlsx_session_data::shared_formula( m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.shared_id)); } else if (m_cur_formula.type == spreadsheet::formula_data_table) { // Import data table. spreadsheet::iface::import_data_table* dt = mp_sheet->get_data_table(); if (dt) { if (m_cur_formula.data_table_2d) { dt->set_type(spreadsheet::data_table_both); dt->set_range(m_cur_formula.ref.get(), m_cur_formula.ref.size()); dt->set_first_reference( m_cur_formula.data_table_ref1.get(), m_cur_formula.data_table_ref1.size(), m_cur_formula.data_table_ref1_deleted); dt->set_second_reference( m_cur_formula.data_table_ref2.get(), m_cur_formula.data_table_ref2.size(), m_cur_formula.data_table_ref2_deleted); } else if (m_cur_formula.data_table_row_based) { dt->set_type(spreadsheet::data_table_row); dt->set_range(m_cur_formula.ref.get(), m_cur_formula.ref.size()); dt->set_first_reference( m_cur_formula.data_table_ref1.get(), m_cur_formula.data_table_ref1.size(), m_cur_formula.data_table_ref1_deleted); } else { dt->set_type(spreadsheet::data_table_column); dt->set_range(m_cur_formula.ref.get(), m_cur_formula.ref.size()); dt->set_first_reference( m_cur_formula.data_table_ref1.get(), m_cur_formula.data_table_ref1.size(), m_cur_formula.data_table_ref1_deleted); } dt->commit(); } push_raw_cell_value(); } else if (!m_cur_value.empty()) { push_raw_cell_value(); } if (m_cur_cell_xf) mp_sheet->set_format(m_cur_row, m_cur_col, m_cur_cell_xf); // reset cell related parameters. m_cur_value.clear(); m_cur_formula.reset(); } void xlsx_sheet_context::push_raw_cell_value() { if (m_cur_value.empty()) return; switch (m_cur_cell_type) { case xlsx_ct_shared_string: { // string cell size_t str_id = to_long(m_cur_value); mp_sheet->set_string(m_cur_row, m_cur_col, str_id); } break; case xlsx_ct_numeric: { // value cell double val = to_double(m_cur_value); mp_sheet->set_value(m_cur_row, m_cur_col, val); } break; case xlsx_ct_boolean: { // boolean cell bool val = to_long(m_cur_value) != 0; mp_sheet->set_bool(m_cur_row, m_cur_col, val); } break; default: warn("unhanlded cell content type"); } } void xlsx_sheet_context::pop_rel_extras(opc_rel_extras_t& other) { m_rel_extras.swap(other); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_context_base.hpp0000644000175000017500000000642312535701143020476 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XML_CONTEXT_BASE_HPP #define ORCUS_XML_CONTEXT_BASE_HPP #include "xml_stream_handler.hpp" #include namespace orcus { struct session_context; class tokens; class xmlns_context; typedef ::std::pair xml_token_pair_t; typedef ::std::vector xml_elem_stack_t; class xml_context_base : boost::noncopyable { public: xml_context_base(session_context& session_cxt, const tokens& tokens); virtual ~xml_context_base() = 0; virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const = 0; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name) = 0; virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) = 0; virtual void start_element(xmlns_id_t ns, xml_token_t name, const ::std::vector& attrs) = 0; /** * Called on closing element. * * @param ns namespace token * @param name element name * * @return true if the base element of the context is closing, false * otherwise. */ virtual bool end_element(xmlns_id_t ns, xml_token_t name) = 0; /** * Called when passing xml content. When the content value is transient, * the value is not expected to survive beyond the scope of the callback. * * @param str content value. * @param transient whether or not the value is transient. */ virtual void characters(const pstring& str, bool transient) = 0; void set_ns_context(const xmlns_context* p); void set_config(const config& opt); void transfer_common(const xml_context_base& parent); protected: session_context& get_session_context(); const tokens& get_tokens() const; xml_token_pair_t push_stack(xmlns_id_t ns, xml_token_t name); bool pop_stack(xmlns_id_t ns, xml_token_t name); xml_token_pair_t& get_current_element(); const xml_token_pair_t& get_current_element() const; xml_token_pair_t& get_parent_element(); const xml_token_pair_t& get_parent_element() const; void warn_unhandled() const; void warn_unexpected() const; void warn(const char* msg) const; /** * Check if observed element equals expected element. If not, it throws an * xml_structure_error exception. * * @param elem element observed. * @param ns namespace of expected element. * @param name name of expected element. * @param error custom error message if needed. */ void xml_element_expected( const xml_token_pair_t& elem, xmlns_id_t ns, xml_token_t name, const ::std::string* error = NULL); void xml_element_expected( const xml_token_pair_t& elem, const xml_elem_stack_t& expected_elems); const config& get_config() const; private: config m_config; const xmlns_context* mp_ns_cxt; session_context& m_session_cxt; const tokens& m_tokens; xml_elem_stack_t m_stack; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_styles.cpp0000644000175000017500000000373312535701143017307 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "odf_styles.hpp" namespace orcus { odf_style::odf_style() : family(style_family_unknown), column_data(NULL) {} odf_style::odf_style(const pstring& _name, odf_style_family _family) : name(_name), family(_family), column_data(NULL) { switch (family) { case style_family_table_column: column_data = new column; break; case style_family_table_row: row_data = new row; break; case style_family_table_cell: cell_data = new cell; break; case style_family_table: table_data = new table; break; case style_family_graphic: graphic_data = new graphic; break; case style_family_paragraph: paragraph_data = new paragraph; break; case style_family_text: text_data = new text; break; case style_family_unknown: default: ; } } odf_style::~odf_style() { switch (family) { case style_family_table_column: delete column_data; break; case style_family_table_row: delete row_data; break; case style_family_table_cell: delete cell_data; break; case style_family_table: delete table_data; break; case style_family_graphic: delete graphic_data; break; case style_family_paragraph: delete paragraph_data; break; case style_family_text: delete text_data; break; case style_family_unknown: default: ; } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_token_constants.hpp0000644000175000017500000000103012535701143022232 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_GNUMERIC_TOKEN_CONSTANTS_HPP__ #define __ORCUS_GNUMERIC_TOKEN_CONSTANTS_HPP__ #include "orcus/types.hpp" namespace orcus { #include "gnumeric_token_constants.inl" } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_structure_tree_test.cpp0000644000175000017500000001353612535701143022134 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/xml_structure_tree.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/global.hpp" #include "orcus/stream.hpp" #include #include #include #include using namespace std; using namespace orcus; const char* base_dirs[] = { SRCDIR"/test/xml-structure/basic-1/", SRCDIR"/test/xml-structure/basic-2/", SRCDIR"/test/xml-structure/basic-3/", SRCDIR"/test/xml-structure/attribute-1/", SRCDIR"/test/xml-structure/nested-repeat-1/", SRCDIR"/test/xml-structure/namespace-default/" }; void test_basic() { size_t n = sizeof(base_dirs)/sizeof(base_dirs[0]); for (size_t i = 0; i < n; ++i) { string filepath(base_dirs[i]); filepath.append("input.xml"); string strm; load_file_content(filepath.c_str(), strm); assert(!strm.empty()); xmlns_repository xmlns_repo; xmlns_context cxt = xmlns_repo.create_context(); xml_structure_tree tree(cxt); tree.parse(&strm[0], strm.size()); ostringstream os; tree.dump_compact(os); string data_content = os.str(); cout << "--" << endl; cout << data_content; // Check the dump content against known datum. filepath = base_dirs[i]; filepath.append("check.txt"); string strm_check; load_file_content(filepath.c_str(), strm_check); assert(!strm_check.empty()); // They should be identical, plus or minus leading/trailing whitespaces. pstring s1(&data_content[0], data_content.size()); pstring s2(&strm_check[0], strm_check.size()); assert(s1.trim() == s2.trim()); } } void test_walker() { { string filepath(base_dirs[0]); filepath.append("input.xml"); string strm; load_file_content(filepath.c_str(), strm); assert(!strm.empty()); xmlns_repository xmlns_repo; xmlns_context cxt = xmlns_repo.create_context(); xml_structure_tree tree(cxt); tree.parse(&strm[0], strm.size()); // Get walker from the tree. xml_structure_tree::entity_names_type elem_names; xml_structure_tree::walker wkr = tree.get_walker(); // Root element. xml_structure_tree::element elem = wkr.root(); assert(elem.name.name == "root"); assert(!elem.repeat); // Get names of child elements. There should only one one and it should be 'entry'. wkr.get_children(elem_names); assert(elem_names.size() == 1); xml_structure_tree::entity_name elem_name = elem_names.front(); assert(elem_name.name == "entry"); // Descend into 'entry'. elem = wkr.descend(elem_name); assert(elem.name.name == "entry"); assert(elem.repeat); // Element 'entry' should have 2 child elements 'name' and 'id' in this order. wkr.get_children(elem_names); assert(elem_names.size() == 2); assert(elem_names[0].name == "name"); assert(elem_names[1].name == "id"); // Descend into 'name'. elem_name = elem_names[0]; elem = wkr.descend(elem_name); assert(elem.name.name == "name"); assert(!elem.repeat); // This is a leaf element. It should have no child elements. xml_structure_tree::entity_names_type test_names; wkr.get_children(test_names); assert(test_names.empty()); // Move up to 'entry'. elem = wkr.ascend(); assert(elem.name.name == "entry"); assert(elem.repeat); // Move down to 'id'. elem = wkr.descend(elem_names[1]); assert(elem.name.name == "id"); assert(!elem.repeat); // Move up to 'entry' again. elem = wkr.ascend(); assert(elem.name.name == "entry"); assert(elem.repeat); // Move up to 'root'. elem = wkr.ascend(); assert(elem.name.name == "root"); assert(!elem.repeat); } { string filepath(base_dirs[3]); // attribute-1 filepath.append("input.xml"); string strm; load_file_content(filepath.c_str(), strm); assert(!strm.empty()); xmlns_repository xmlns_repo; xmlns_context cxt = xmlns_repo.create_context(); xml_structure_tree tree(cxt); tree.parse(&strm[0], strm.size()); // Get walker from the tree. xml_structure_tree::entity_names_type elem_names; xml_structure_tree::walker wkr = tree.get_walker(); // Root element. xml_structure_tree::element elem = wkr.root(); assert(elem.name.name == "root"); assert(!elem.repeat); // Check attributes of root, which should have 'version' and 'type' in this order. xml_structure_tree::entity_names_type names; wkr.get_attributes(names); assert(names.size() == 2); assert(names[0].name == "version"); assert(names[1].name == "type"); // Root element should have only one child element 'entry'. wkr.get_children(names); assert(names.size() == 1); assert(names[0].name == "entry"); elem = wkr.descend(names[0]); assert(elem.name.name == "entry"); assert(elem.repeat); // The 'entry' element should have 3 attributes 'attr1', 'attr2', and 'attr3'. wkr.get_attributes(names); assert(names.size() == 3); assert(names[0].name == "attr1"); assert(names[1].name == "attr2"); assert(names[2].name == "attr3"); } } int main() { test_basic(); test_walker(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/gnumeric_helper_test.cpp0000644000175000017500000000140612535701143021336 0ustar renerene#include "gnumeric_helper.hpp" #include "gnumeric_helper.cpp" #include namespace { void test_split_string() { orcus::pstring str("str1:str2:str3"); std::vector res = orcus::split_string(str, ':'); assert(res.size() == 3); assert(res[0] == "str1"); assert(res[1] == "str2"); assert(res[2] == "str3"); } void test_parse_color_string() { orcus::pstring str("8080"); size_t res = orcus::parse_color_string(str); std::cout << res << std::endl; assert(res == 128); res = orcus::parse_color_string(orcus::pstring("FFFF")); assert(res == 255); res = orcus::parse_color_string(orcus::pstring("0")); assert(res == 0); } } int main() { test_split_string(); test_parse_color_string(); } liborcus-0.9.2/src/liborcus/xlsx_conditional_format_context.hpp0000644000175000017500000000360612535701143023635 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLSX_CONDITIONAL_FORMAT_CONTEXT_HPP #define ORCUS_XLSX_CONDITIONAL_FORMAT_CONTEXT_HPP #include "xml_context_base.hpp" #include "ooxml_types.hpp" #include "xlsx_types.hpp" #include "orcus/spreadsheet/types.hpp" #include "orcus/string_pool.hpp" namespace orcus { struct session_context; namespace spreadsheet { namespace iface { class import_conditional_format; } } struct cfvo_values; struct argb_color { spreadsheet::color_elem_t alpha; spreadsheet::color_elem_t red; spreadsheet::color_elem_t green; spreadsheet::color_elem_t blue; }; class xlsx_conditional_format_context : public xml_context_base { public: xlsx_conditional_format_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_conditional_format& import_cond_format); virtual ~xlsx_conditional_format_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: spreadsheet::iface::import_conditional_format& m_cond_format; string_pool m_pool; pstring m_cur_str; std::vector m_cfvo_values; std::vector m_colors; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_token_constants.hpp0000644000175000017500000000101112535701143021170 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_ODF_TOKEN_CONSTANTS_HPP__ #define __ORCUS_ODF_TOKEN_CONSTANTS_HPP__ #include "orcus/types.hpp" namespace orcus { #include "odf_token_constants.inl" } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/global.cpp0000644000175000017500000001327112535701143016372 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/global.hpp" #include "orcus/tokens.hpp" #include "orcus/exception.hpp" #include #include using namespace std; namespace orcus { namespace { struct attr_printer : unary_function { public: attr_printer(const tokens& tokens) : m_tokens(tokens) {} void operator()(const xml_token_attr_t& attr) const { cout << " "; if (attr.ns != XMLNS_UNKNOWN_ID) cout << attr.ns << ":"; cout << m_tokens.get_token_name(attr.name) << " = \"" << attr.value << "\"" << endl; } private: const tokens& m_tokens; }; } void print_element(const tokens& tokens, xmlns_id_t ns, xml_token_t name) { if (ns != XMLNS_UNKNOWN_ID) cout << ns << ":"; cout << tokens.get_token_name(name) << endl; } void print_attrs(const tokens& tokens, const xml_attrs_t& attrs) { for_each(attrs.begin(), attrs.end(), attr_printer(tokens)); } namespace { void process_char(const char* p, const char*& digit, size_t& digit_len) { if (!digit) { digit = p; digit_len = 1; return; } ++digit_len; } void flush_int(int& store, const char*& digit, size_t& digit_len) { store = strtol(digit, NULL, 10); digit = NULL; digit_len = 0; } } date_time_t to_date_time(const pstring& str) { date_time_t ret; int dash_count = 0, t_count = 0, colon_count = 0; const char* p = str.get(); const char* p_end = p + str.size(); const char* digit = p; size_t digit_len = 0; bool valid = true; for (; p != p_end && valid; ++p) { switch (*p) { case '-': { if (t_count || colon_count || !digit) { // Invalid date-time value. All dashes must occur before // any of 'T' and ':' occur. valid = false; break; } switch (dash_count) { case 0: // Flush year. flush_int(ret.year, digit, digit_len); break; case 1: // Flush month. flush_int(ret.month, digit, digit_len); break; default: valid = false; } ++dash_count; } break; case 'T': { if (t_count || dash_count != 2 || !digit) { // Invalid date-time value. valid = false; break; } // Flush day. ret.day = strtol(digit, NULL, 10); digit = NULL; digit_len = 0; ++t_count; } break; case ':': { if (!t_count || !digit) { // Invalid date-time value. valid = false; break; } switch (colon_count) { case 0: // Flush hour. flush_int(ret.hour, digit, digit_len); break; case 1: // Flush minute. flush_int(ret.minute, digit, digit_len); break; default: valid = false; } ++colon_count; } break; default: { if (t_count) { // Time element. switch (colon_count) { case 0: // Hour process_char(p, digit, digit_len); break; case 1: // Minute process_char(p, digit, digit_len); break; case 2: // Second process_char(p, digit, digit_len); break; default: valid = false; } } else { // Date element. switch (dash_count) { case 0: // Year process_char(p, digit, digit_len); break; case 1: // Month process_char(p, digit, digit_len); break; case 2: // Day process_char(p, digit, digit_len); break; default: valid = false; } } } } } if (!valid || !digit) return ret; if (t_count) { // Flush second. ret.second = strtod(digit, NULL); } else { // Flush day. ret.day = strtol(digit, NULL, 10); } return ret; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_handler.cpp0000644000175000017500000000137512535701143020317 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xls_xml_handler.hpp" #include "xls_xml_context.hpp" namespace orcus { xls_xml_handler::xls_xml_handler( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_factory* factory) : xml_stream_handler(new xls_xml_context(session_cxt, tokens, factory)) { } xls_xml_handler::~xls_xml_handler() {} void xls_xml_handler::start_document() {} void xls_xml_handler::end_document() {} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_structure_tree.cpp0000644000175000017500000003626612535701143021102 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/xml_structure_tree.hpp" #include "orcus/sax_ns_parser.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/global.hpp" #include "orcus/exception.hpp" #include "orcus/string_pool.hpp" #include #include #include #include #include #include #include #include using namespace std; namespace orcus { namespace { struct elem_prop; typedef boost::unordered_map element_store_type; typedef boost::unordered_set attribute_names_type; /** Element properties. */ struct elem_prop : boost::noncopyable { element_store_type child_elements; attribute_names_type attributes; /** Store child element names in order of appearance. */ xml_structure_tree::entity_names_type child_element_names; /** Store attribute names in order of appearance. */ xml_structure_tree::entity_names_type attribute_names; size_t appearance_order; size_t in_scope_count; /** * When true, this element is the base element of repeated structures. * This flag is set only with the base element; none of the child * elements below the base element have this flag set. */ bool repeat:1; elem_prop() : appearance_order(0), in_scope_count(1), repeat(false) {} elem_prop(size_t _appearance_order) : appearance_order(_appearance_order), in_scope_count(1), repeat(false) {} ~elem_prop() { for_each(child_elements.begin(), child_elements.end(), map_object_deleter()); }; }; struct root { xml_structure_tree::entity_name name; elem_prop prop; }; struct element_ref { xml_structure_tree::entity_name name; elem_prop* prop; element_ref() : prop(NULL) {} element_ref(xml_structure_tree::entity_name _name, elem_prop* _prop) : name(_name), prop(_prop) {} }; typedef std::vector elements_type; class xml_sax_handler { string_pool& m_pool; unique_ptr mp_root; elements_type m_stack; xml_structure_tree::entity_names_type m_attrs; private: void merge_attributes(elem_prop& prop) { xml_structure_tree::entity_names_type::const_iterator it = m_attrs.begin(), it_end = m_attrs.end(); for (; it != it_end; ++it) { if (prop.attributes.find(*it) == prop.attributes.end()) { // New attribute. Insert it. prop.attributes.insert(*it); prop.attribute_names.push_back(*it); } } m_attrs.clear(); } public: xml_sax_handler(string_pool& pool) : m_pool(pool), mp_root(NULL) {} void doctype(const sax::doctype_declaration&) {} void start_declaration(const pstring& name) { } void end_declaration(const pstring& name) { m_attrs.clear(); } void start_element(const sax_ns_parser_element& elem) { if (!mp_root) { // This is a root element. mp_root.reset(new root); mp_root->name.ns = elem.ns; mp_root->name.name = m_pool.intern(elem.name).first; element_ref ref(mp_root->name, &mp_root->prop); merge_attributes(mp_root->prop); m_stack.push_back(ref); return; } // See if the current element already has a child element of the same name. assert(!m_stack.empty()); element_ref& current = m_stack.back(); xml_structure_tree::entity_name key(elem.ns, elem.name); element_store_type::const_iterator it = current.prop->child_elements.find(key); if (it != current.prop->child_elements.end()) { // Recurring element. Set its repeat flag only when it occurs // multiple times in the same scope. ++it->second->in_scope_count; if (it->second->in_scope_count > 1) it->second->repeat = true; element_ref ref(it->first, it->second); merge_attributes(*it->second); m_stack.push_back(ref); return; } // New element. size_t order = current.prop->child_elements.size(); key.name = m_pool.intern(key.name).first; pair r = current.prop->child_elements.insert( element_store_type::value_type(key, new elem_prop(order))); if (!r.second) throw general_error("Insertion failed"); current.prop->child_element_names.push_back(key); it = r.first; element_ref ref(it->first, it->second); merge_attributes(*it->second); m_stack.push_back(ref); } void end_element(const sax_ns_parser_element& elem) { if (m_stack.empty()) throw general_error("Element stack is empty."); const element_ref& current = m_stack.back(); // Reset the in-scope count of all child elements to 0 before ending // the current scope. element_store_type::iterator it = current.prop->child_elements.begin(), it_end = current.prop->child_elements.end(); for (; it != it_end; ++it) it->second->in_scope_count = 0; m_stack.pop_back(); } void characters(const pstring&, bool) {} void attribute(const pstring&, const pstring&) { // Attribute for declaration. We don't handle this. } void attribute(const sax_ns_parser_attribute& attr) { m_attrs.push_back(xml_structure_tree::entity_name(attr.ns, attr.name)); } root* release_root_element() { return mp_root.release(); } }; struct sort_by_appearance : std::binary_function { bool operator() (const element_ref& left, const element_ref& right) const { return left.prop->appearance_order < right.prop->appearance_order; } }; struct scope : boost::noncopyable { xml_structure_tree::entity_name name; elements_type elements; elements_type::const_iterator current_pos; bool repeat:1; scope(const xml_structure_tree::entity_name& _name, bool _repeat, const element_ref& _elem) : name(_name), repeat(_repeat) { elements.push_back(_elem); current_pos = elements.begin(); } scope(const xml_structure_tree::entity_name& _name, bool _repeat) : name(_name), repeat(_repeat) {} }; typedef boost::ptr_vector scopes_type; void print_scope(ostream& os, const scopes_type& scopes, const xmlns_context& cxt) { if (scopes.empty()) throw general_error("scope stack shouldn't be empty while dumping tree."); // Skip the first scope which is root. scopes_type::const_iterator it = scopes.begin(), it_end = scopes.end(); for (++it; it != it_end; ++it) { os << "/"; size_t num_id = cxt.get_index(it->name.ns); if (num_id != index_not_found) os << "ns" << num_id << ":"; os << it->name.name; if (it->repeat) os << "[*]"; } } } struct xml_structure_tree_impl : boost::noncopyable { string_pool m_pool; xmlns_context& m_xmlns_cxt; root* mp_root; xml_structure_tree_impl(xmlns_context& xmlns_cxt) : m_xmlns_cxt(xmlns_cxt), mp_root(NULL) {} ~xml_structure_tree_impl() { delete mp_root; } }; struct xml_structure_tree::walker_impl : boost::noncopyable { const xml_structure_tree_impl& m_parent_impl; root* mp_root; /// Root element of the authoritative tree. element_ref m_cur_elem; std::vector m_scopes; walker_impl(const xml_structure_tree_impl& parent_impl) : m_parent_impl(parent_impl), mp_root(parent_impl.mp_root) {} walker_impl(const walker_impl& r) : m_parent_impl(r.m_parent_impl), mp_root(r.mp_root), m_cur_elem(r.m_cur_elem), m_scopes(r.m_scopes) {} }; xml_structure_tree::entity_name::entity_name() : ns(XMLNS_UNKNOWN_ID) {} xml_structure_tree::entity_name::entity_name(xmlns_id_t _ns, const pstring& _name) : ns(_ns), name(_name) {} bool xml_structure_tree::entity_name::operator< (const entity_name& r) const { if (ns != r.ns) return ns < r.ns; return name < r.name; } bool xml_structure_tree::entity_name::operator== (const entity_name& r) const { return ns == r.ns && name == r.name; } size_t xml_structure_tree::entity_name::hash::operator() (const entity_name& val) const { static pstring::hash hasher; size_t n = reinterpret_cast(val.ns); n += hasher(val.name); return n; } xml_structure_tree::element::element() : repeat(false) {} xml_structure_tree::element::element(const entity_name& _name, bool _repeat) : name(_name), repeat(_repeat) {} xml_structure_tree::walker::walker(const xml_structure_tree_impl& parent_impl) : mp_impl(new walker_impl(parent_impl)) { } xml_structure_tree::walker::walker(const walker& r) : mp_impl(new walker_impl(*r.mp_impl)) { } xml_structure_tree::walker::~walker() { delete mp_impl; } xml_structure_tree::walker& xml_structure_tree::walker::operator= (const walker& r) { mp_impl->mp_root = r.mp_impl->mp_root; return *this; } xml_structure_tree::element xml_structure_tree::walker::root() { if (!mp_impl->mp_root) throw general_error("Tree is empty."); mp_impl->m_scopes.clear(); // Set the current element to root. element_ref ref(mp_impl->mp_root->name, &mp_impl->mp_root->prop); mp_impl->m_cur_elem = ref; mp_impl->m_scopes.push_back(ref); return xml_structure_tree::element(ref.name, false); } xml_structure_tree::element xml_structure_tree::walker::descend(const entity_name& name) { if (mp_impl->m_scopes.empty()) throw general_error("Scope is empty."); assert(mp_impl->m_scopes.back().prop); const element_store_type& child_elems = mp_impl->m_scopes.back().prop->child_elements; element_store_type::const_iterator it = child_elems.find(name); if (it == child_elems.end()) throw general_error("Specified child element does not exist."); // Push this new child element onto the stack. element_ref ref(name, it->second); mp_impl->m_scopes.push_back(ref); return element(name, it->second->repeat); } xml_structure_tree::element xml_structure_tree::walker::ascend() { if (mp_impl->m_scopes.empty()) throw general_error("Scope is empty."); if (mp_impl->m_scopes.size() == 1) throw general_error("You can't ascend from the root element."); mp_impl->m_scopes.pop_back(); const element_ref& ref = mp_impl->m_scopes.back(); return element(ref.name, ref.prop->repeat); } void xml_structure_tree::walker::get_children(entity_names_type& names) { if (mp_impl->m_scopes.empty()) throw general_error("Scope is empty."); assert(mp_impl->m_scopes.back().prop); const elem_prop& prop = *mp_impl->m_scopes.back().prop; names.assign(prop.child_element_names.begin(), prop.child_element_names.end()); } void xml_structure_tree::walker::get_attributes(entity_names_type& names) { if (mp_impl->m_scopes.empty()) throw general_error("Scope is empty."); assert(mp_impl->m_scopes.back().prop); const elem_prop& prop = *mp_impl->m_scopes.back().prop; names.assign(prop.attribute_names.begin(), prop.attribute_names.end()); } size_t xml_structure_tree::walker::get_xmlns_index(xmlns_id_t ns) const { return mp_impl->m_parent_impl.m_xmlns_cxt.get_index(ns); } string xml_structure_tree::walker::get_xmlns_short_name(xmlns_id_t ns) const { return mp_impl->m_parent_impl.m_xmlns_cxt.get_short_name(ns); } xml_structure_tree::xml_structure_tree(xmlns_context& xmlns_cxt) : mp_impl(new xml_structure_tree_impl(xmlns_cxt)) {} xml_structure_tree::~xml_structure_tree() { delete mp_impl; } void xml_structure_tree::parse(const char* p, size_t n) { xml_sax_handler hdl(mp_impl->m_pool); sax_ns_parser parser(p, n, mp_impl->m_xmlns_cxt, hdl); parser.parse(); mp_impl->mp_root = hdl.release_root_element(); } void xml_structure_tree::dump_compact(ostream& os) const { if (!mp_impl->mp_root) return; scopes_type scopes; const xmlns_context& cxt = mp_impl->m_xmlns_cxt; // Dump all namespaces first. cxt.dump(os); element_ref ref(mp_impl->mp_root->name, &mp_impl->mp_root->prop); scopes.push_back(new scope(entity_name(), false, ref)); while (!scopes.empty()) { bool new_scope = false; // Iterate through all elements in the current scope. scope& cur_scope = scopes.back(); for (; cur_scope.current_pos != cur_scope.elements.end(); ++cur_scope.current_pos) { const element_ref& this_elem = *cur_scope.current_pos; ostringstream ss; print_scope(ss, scopes, cxt); ss << "/"; size_t num_id = cxt.get_index(this_elem.name.ns); if (num_id != index_not_found) ss << "ns" << num_id << ":"; ss << this_elem.name.name; if (this_elem.prop->repeat) ss << "[*]"; string elem_name = ss.str(); os << elem_name << endl; // Print all attributes that belong to this element. { const entity_names_type& attrs = this_elem.prop->attribute_names; entity_names_type::const_iterator it = attrs.begin(), it_end = attrs.end(); for (; it != it_end; ++it) os << elem_name << '@' << it->name << endl; } const element_store_type& child_elements = this_elem.prop->child_elements; if (child_elements.empty()) continue; // This element has child elements. Push a new scope and populate // it with all child elements. element_store_type::const_iterator it = child_elements.begin(), it_end = child_elements.end(); elements_type elems; for (; it != it_end; ++it) { ref.name = it->first; ref.prop = it->second; elems.push_back(ref); } // Sort the elements by order of appearance. std::sort(elems.begin(), elems.end(), sort_by_appearance()); assert(!elems.empty()); // Push a new scope, and restart the loop with the new scope. ++cur_scope.current_pos; scopes.push_back(new scope(this_elem.name, this_elem.prop->repeat)); scope& child_scope = scopes.back(); child_scope.elements.swap(elems); child_scope.current_pos = child_scope.elements.begin(); new_scope = true; break; } if (new_scope) continue; scopes.pop_back(); } } xml_structure_tree::walker xml_structure_tree::get_walker() const { return walker(*mp_impl); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/mock_spreadsheet.cpp0000644000175000017500000001055112535701143020450 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mock_spreadsheet.hpp" #include using namespace orcus::spreadsheet; namespace orcus { namespace spreadsheet { namespace mock { //import_factory import_factory::~import_factory() { } orcus::spreadsheet::iface::import_global_settings* import_factory::get_global_settings() { assert(false); return NULL; } orcus::spreadsheet::iface::import_shared_strings* import_factory::get_shared_strings() { assert(false); return NULL; } orcus::spreadsheet::iface::import_styles* import_factory::get_styles() { assert(false); return NULL; } orcus::spreadsheet::iface::import_sheet* import_factory::append_sheet(const char*, size_t) { assert(false); return NULL; } orcus::spreadsheet::iface::import_sheet* import_factory::get_sheet(const char*, size_t) { assert(false); return NULL; } orcus::spreadsheet::iface::import_sheet* import_factory::get_sheet(orcus::spreadsheet::sheet_t) { assert(false); return NULL; } void import_factory::finalize() {} // import_shared_strings import_shared_strings::~import_shared_strings() { } size_t import_shared_strings::append(const char*, size_t) { assert(false); return 0; } size_t import_shared_strings::add(const char*, size_t) { assert(false); return 0; } void import_shared_strings::set_segment_font(size_t) { assert(false); } void import_shared_strings::set_segment_bold(bool) { assert(false); } void import_shared_strings::set_segment_italic(bool) { assert(false); } void import_shared_strings::set_segment_font_name(const char*, size_t) { assert(false); } void import_shared_strings::set_segment_font_size(double) { assert(false); } void import_shared_strings::set_segment_font_color(color_elem_t, color_elem_t, color_elem_t, color_elem_t) { assert(false); } void import_shared_strings::append_segment(const char*, size_t) { assert(false); } size_t import_shared_strings::commit_segments() { assert(false); return 0; } // import sheet properties import_sheet_properties::~import_sheet_properties() { } void import_sheet_properties::set_column_width(col_t, double, length_unit_t) { assert(false); } void import_sheet_properties::set_column_hidden(col_t, bool) { assert(false); } void import_sheet_properties::set_row_height(row_t, double, length_unit_t) { assert(false); } void import_sheet_properties::set_row_hidden(row_t, bool) { assert(false); } void import_sheet_properties::set_merge_cell_range(const char*, size_t) { assert(false); } // import_sheet import_sheet::~import_sheet() { } void import_sheet::set_auto(row_t, col_t, const char*, size_t) { assert(false); } void import_sheet::set_value(row_t, col_t, double) { assert(false); } void import_sheet::set_bool(row_t, col_t, bool) { assert(false); } void import_sheet::set_date_time(row_t, col_t, int, int, int, int, int, double) { assert(false); } void import_sheet::set_string(row_t, col_t, size_t) { assert(false); } void import_sheet::set_format(row_t, col_t, size_t) { assert(false); } void import_sheet::set_format(row_t, col_t, row_t, col_t, size_t) { assert(false); } void import_sheet::set_formula(row_t, col_t, formula_grammar_t, const char*, size_t) { assert(false); } void import_sheet::set_shared_formula(row_t, col_t, formula_grammar_t, size_t, const char*, size_t, const char*, size_t) { assert(false); } void import_sheet::set_shared_formula(row_t, col_t, formula_grammar_t, size_t, const char*, size_t) { assert(false); } void import_sheet::set_shared_formula(row_t, col_t, size_t) { assert(false); } void import_sheet::set_array_formula( row_t, col_t, formula_grammar_t, const char*, size_t, row_t, col_t) { assert(false); } void import_sheet::set_array_formula( row_t, col_t, formula_grammar_t, const char*, size_t, const char*, size_t) { assert(false); } void import_sheet::set_formula_result(row_t, col_t, double value) { assert(false); } void import_sheet::set_formula_result(row_t, col_t, const char*, size_t) { assert(false); } }}} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xlsx_pivot_context.cpp0000644000175000017500000007237412535701143021126 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xlsx_pivot_context.hpp" #include "ooxml_namespace_types.hpp" #include "ooxml_token_constants.hpp" #include "xml_context_global.hpp" #include "session_context.hpp" #include "orcus/measurement.hpp" #include using namespace std; namespace orcus { namespace { class cache_def_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns == NS_ooxml_xlsx) { switch (attr.name) { case XML_refreshedBy: cout << "refreshed by: " << attr.value << endl; break; case XML_recordCount: cout << "record count: " << attr.value << endl; break; default: ; } } else if (attr.ns == NS_ooxml_r) { switch (attr.name) { case XML_id: // relation id for its cache record. cout << "rid: " << attr.value << endl; break; default: ; } } } }; class cache_src_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_type: cout << "type: " << attr.value << endl; break; default: ; } } }; class worksheet_src_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_ref: cout << "ref: " << attr.value << endl; break; case XML_sheet: cout << "sheet: " << attr.value << endl; break; default: ; } } }; class cache_field_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_name: cout << "* name: " << attr.value << endl; break; case XML_numFmtId: cout << " number format id: " << attr.value << endl; break; default: ; } } }; class shared_items_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; bool b = false; long v = 0; switch (attr.name) { case XML_count: cout << " count: " << attr.value << endl; break; case XML_containsSemiMixedTypes: b = to_bool(attr.value); cout << " contains semi-mixed types: " << b << endl; break; case XML_containsString: b = to_bool(attr.value); cout << " contains string: " << b << endl; break; case XML_containsNumber: b = to_bool(attr.value); cout << " contains number: " << b << endl; break; case XML_containsInteger: b = to_bool(attr.value); cout << " contains integer: " << b << endl; break; case XML_minValue: v = to_long(attr.value); cout << " min value: " << v << endl; break; case XML_maxValue: v = to_long(attr.value); cout << " max value: " << v << endl; break; default: ; } } }; class s_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_v: cout << " * v: " << attr.value << endl; break; default: ; } } }; } xlsx_pivot_cache_def_context::xlsx_pivot_cache_def_context(session_context& cxt, const tokens& tokens) : xml_context_base(cxt, tokens) {} bool xlsx_pivot_cache_def_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const { return true; } xml_context_base* xlsx_pivot_cache_def_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) { return NULL; } void xlsx_pivot_cache_def_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) { } void xlsx_pivot_cache_def_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns != NS_ooxml_xlsx) return; switch (name) { case XML_pivotCacheDefinition: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); cout << "---" << endl; cout << "pivot cache definition" << endl; cache_def_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_cacheSource: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotCacheDefinition); cache_src_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_worksheetSource: { xml_element_expected(parent, NS_ooxml_xlsx, XML_cacheSource); worksheet_src_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_cacheFields: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotCacheDefinition); single_long_attr_getter func(NS_ooxml_xlsx, XML_count); long field_count = for_each(attrs.begin(), attrs.end(), func).get_value(); cout << "field count: " << field_count << endl; } break; case XML_cacheField: { xml_element_expected(parent, NS_ooxml_xlsx, XML_cacheFields); cache_field_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_sharedItems: { xml_element_expected(parent, NS_ooxml_xlsx, XML_cacheField); shared_items_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_s: { xml_element_expected(parent, NS_ooxml_xlsx, XML_sharedItems); s_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; default: warn_unhandled(); } } bool xlsx_pivot_cache_def_context::end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } void xlsx_pivot_cache_def_context::characters(const pstring& /*str*/, bool /*transient*/) { } xlsx_pivot_cache_rec_context::xlsx_pivot_cache_rec_context(session_context& cxt, const tokens& tokens) : xml_context_base(cxt, tokens) {} bool xlsx_pivot_cache_rec_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const { return true; } xml_context_base* xlsx_pivot_cache_rec_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) { return NULL; } void xlsx_pivot_cache_rec_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) { } void xlsx_pivot_cache_rec_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns != NS_ooxml_xlsx) return; switch (name) { case XML_pivotCacheRecords: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); long count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "---" << endl; cout << "pivot cache record (count: " << count << ")" << endl; } break; case XML_r: xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotCacheRecords); cout << "* record" << endl; break; case XML_s: // direct string item rather than an index to pivot cache field? xml_element_expected(parent, NS_ooxml_xlsx, XML_r); cout << " * s = '" << single_attr_getter::get(attrs, get_session_context().m_string_pool, NS_ooxml_xlsx, XML_v) << "'" << endl; break; case XML_x: { xml_element_expected(parent, NS_ooxml_xlsx, XML_r); long v = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_v); cout << " * x = " << v << endl; } break; case XML_n: { xml_element_expected(parent, NS_ooxml_xlsx, XML_r); double val = single_double_attr_getter::get(attrs, NS_ooxml_xlsx, XML_v); cout << " * n = " << val << endl; } break; default: warn_unhandled(); } } bool xlsx_pivot_cache_rec_context::end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } void xlsx_pivot_cache_rec_context::characters(const pstring& /*str*/, bool /*transient*/) { } namespace { class pivot_table_def_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; long v = 0; bool b = false; switch (attr.name) { case XML_name: cout << "name: " << attr.value << endl; break; case XML_cacheId: v = to_long(attr.value); cout << "cache ID: " << v << endl; break; case XML_applyNumberFormats: b = to_bool(attr.value); cout << "apply number formats: " << b << endl; break; case XML_applyBorderFormats: b = to_bool(attr.value); cout << "apply border formats: " << b << endl; break; case XML_applyFontFormats: b = to_bool(attr.value); cout << "apply font formats: " << b << endl; break; case XML_applyPatternFormats: b = to_bool(attr.value); cout << "apply pattern formats: " << b << endl; break; case XML_applyAlignmentFormats: b = to_bool(attr.value); cout << "apply alignment formats: " << b << endl; break; case XML_applyWidthHeightFormats: b = to_bool(attr.value); cout << "apply width/height formats: " << b << endl; break; case XML_dataCaption: cout << "data caption: " << attr.value << endl; break; case XML_updatedVersion: v = to_long(attr.value); cout << "updated version: " << v << endl; break; case XML_minRefreshableVersion: v = to_long(attr.value); cout << "minimum refreshable version: " << v << endl; break; case XML_showCalcMbrs: b = to_bool(attr.value); cout << "show calc members (?): " << b << endl; break; case XML_useAutoFormatting: b = to_bool(attr.value); cout << "use auto formatting: " << b << endl; break; case XML_itemPrintTitles: b = to_bool(attr.value); cout << "item print titles (?): " << b << endl; break; case XML_createdVersion: v = to_long(attr.value); cout << "created version: " << v << endl; break; case XML_indent: b = to_bool(attr.value); cout << "indent: " << b << endl; break; case XML_compact: b = to_bool(attr.value); cout << "compact: " << b << endl; break; case XML_compactData: b = to_bool(attr.value); cout << "compact data: " << b << endl; break; case XML_outline: b = to_bool(attr.value); cout << "outline: " << b << endl; break; case XML_outlineData: b = to_bool(attr.value); cout << "outline data: " << b << endl; break; case XML_gridDropZones: b = to_bool(attr.value); cout << "grid drop zones: " << b << endl; break; case XML_multipleFieldFilters: b = to_bool(attr.value); cout << "multiple field filters: " << b << endl; break; default: ; } } }; class location_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; long v = -1; switch (attr.name) { case XML_ref: cout << "ref: " << attr.value << endl; break; case XML_firstHeaderRow: v = to_long(attr.value); cout << "first header row: " << v << endl; break; case XML_firstDataRow: v = to_long(attr.value); cout << "first data row: " << v << endl; break; case XML_firstDataCol: v = to_long(attr.value); cout << "first data column: " << v << endl; break; default: ; } } }; class pivot_field_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_axis: cout << " * axis: " << attr.value << endl; break; case XML_compact: { bool b = to_bool(attr.value); cout << " * compact: " << b << endl; } break; case XML_outline: { bool b = to_bool(attr.value); cout << " * outline: " << b << endl; } break; case XML_showAll: { bool b = to_bool(attr.value); cout << " * show all: " << b << endl; } break; case XML_dataField: { bool b = to_bool(attr.value); cout << " * data field: " << b << endl; } break; default: ; } } }; class data_field_attr_parser : public unary_function { bool m_first; void sep() { if (m_first) m_first = false; else cout << ";"; } public: data_field_attr_parser() : m_first(true) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_name: { sep(); cout << " name = " << attr.value; } break; case XML_fld: { sep(); long fld = to_long(attr.value); cout << " field = " << fld; } break; case XML_baseField: { sep(); long fld = to_long(attr.value); cout << " base field = " << fld; } break; case XML_baseItem: { sep(); long fld = to_long(attr.value); cout << " base item = " << fld; } break; case XML_subtotal: { sep(); cout << " subtotal = " << attr.value; } default: ; } } }; class item_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_x: { // field item index as defined in the pivot cache. long idx = to_long(attr.value); cout << " * x = " << idx << endl; } break; case XML_t: { // When the element has attribute 't', it's subtotal or // some sort of function item. See 3.18.45 ST_ItemType // (PivotItem Type) for possible values. cout << " * type = " << attr.value << endl; } break; default: ; } } }; class page_field_attr_parser : public unary_function { bool m_first; void sep() { if (m_first) m_first = false; else cout << ";"; } public: page_field_attr_parser() : m_first(true) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_fld: { sep(); long fld = to_long(attr.value); cout << " field index = " << fld; } break; case XML_item: { sep(); long item = to_long(attr.value); cout << " item index = " << item; } break; case XML_hier: { sep(); long hier = to_long(attr.value); // -1 if not applicable. cout << " OLAP hierarchy index = " << hier; } break; default: ; } } }; /** * Attributes for the element, which represents a single row under * structure. */ class i_attr_parser : public unary_function { public: void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; switch (attr.name) { case XML_t: { // total or subtotal function type. cout << " * type = " << attr.value << endl; } break; case XML_r: { // "repeated item count" which basically is the number of // blank cells that occur after the preivous non-empty cell on // the same row (in the classic layout mode). long v = to_long(attr.value); cout << " * repeat item count = " << v << endl; } break; case XML_i: { // zero-based data field index in case of multiple data fields. long v = to_long(attr.value); cout << " * data field index = " << v << endl; } break; default: ; } } }; class pt_style_info_attr_parser : public unary_function { bool m_first; void sep() { if (m_first) m_first = false; else cout << ";"; } public: pt_style_info_attr_parser() : m_first(true) {} void operator() (const xml_token_attr_t& attr) { if (attr.ns != NS_ooxml_xlsx) return; bool b = false; switch (attr.name) { case XML_name: sep(); cout << " name='" << attr.value << "'"; break; case XML_showRowHeaders: b = to_bool(attr.value); sep(); cout << " show row headers=" << b; break; case XML_showColHeaders: b = to_bool(attr.value); sep(); cout << " show column headers=" << b; break; case XML_showRowStripes: b = to_bool(attr.value); sep(); cout << " show row stripes=" << b; break; case XML_showColStripes: b = to_bool(attr.value); sep(); cout << " show column stripes=" << b; break; case XML_showLastColumn: b = to_bool(attr.value); sep(); cout << " show last column=" << b; break; default: ; } } }; } xlsx_pivot_table_context::xlsx_pivot_table_context(session_context& cxt, const tokens& tokens) : xml_context_base(cxt, tokens) {} bool xlsx_pivot_table_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const { return true; } xml_context_base* xlsx_pivot_table_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) { return NULL; } void xlsx_pivot_table_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) { } void xlsx_pivot_table_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector& attrs) { xml_token_pair_t parent = push_stack(ns, name); if (ns == NS_ooxml_xlsx) { switch (name) { case XML_pivotTableDefinition: { xml_element_expected(parent, XMLNS_UNKNOWN_ID, XML_UNKNOWN_TOKEN); cout << "---" << endl; pivot_table_def_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_location: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); location_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_pivotFields: { // pivotFields and its child elements represent the visual // appearances of the fields inside pivot table. xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "field count: " << count << endl; } break; case XML_pivotField: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotFields); cout << "---" << endl; pivot_field_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_items: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotField); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << " * item count: " << count << endl; } break; case XML_item: { xml_element_expected(parent, NS_ooxml_xlsx, XML_items); item_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_rowFields: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "---" << endl; cout << "row field count: " << count << endl; } break; case XML_colFields: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "---" << endl; cout << "column field count: " << count << endl; } break; case XML_pageFields: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "---" << endl; cout << "page field count: " << count << endl; } break; case XML_pageField: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pageFields); page_field_attr_parser func; cout << " * page field:"; for_each(attrs.begin(), attrs.end(), func); cout << endl; } break; case XML_field: { xml_elem_stack_t expected; expected.reserve(3); expected.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_rowFields)); expected.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_colFields)); xml_element_expected(parent, expected); // Index into the list of collection which is // given earlier under the element. The value // of -2 represents a special field that displays the list of // data fields when the pivot table contains more than one // data field. long idx = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_x); cout << " * x = " << idx << endl; } break; case XML_dataFields: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "---" << endl; cout << "data field count: " << count << endl; } break; case XML_dataField: { xml_element_expected(parent, NS_ooxml_xlsx, XML_dataFields); data_field_attr_parser func; cout << " * data field:"; for_each(attrs.begin(), attrs.end(), func); cout << endl; } break; case XML_rowItems: { // structure describes the displayed content of // cells in the row field area. Each child element // represents a single row. xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "---" << endl; cout << "row item count: " << count << endl; } break; case XML_colItems: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); size_t count = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_count); cout << "---" << endl; cout << "column item count: " << count << endl; } break; case XML_i: { xml_elem_stack_t expected; expected.reserve(2); expected.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_rowItems)); expected.push_back(xml_token_pair_t(NS_ooxml_xlsx, XML_colItems)); xml_element_expected(parent, expected); cout << "---" << endl; i_attr_parser func; for_each(attrs.begin(), attrs.end(), func); } break; case XML_x: { xml_element_expected(parent, NS_ooxml_xlsx, XML_i); long idx = single_long_attr_getter::get(attrs, NS_ooxml_xlsx, XML_v); if (idx < 0) // 0 is default when not set. idx = 0; cout << " * v = " << idx << endl; } break; case XML_pivotTableStyleInfo: { xml_element_expected(parent, NS_ooxml_xlsx, XML_pivotTableDefinition); pt_style_info_attr_parser func; cout << "---" << endl; cout << "* style info:"; for_each(attrs.begin(), attrs.end(), func); cout << endl; } break; default: warn_unhandled(); } } } bool xlsx_pivot_table_context::end_element(xmlns_id_t ns, xml_token_t name) { return pop_stack(ns, name); } void xlsx_pivot_table_context::characters(const pstring& /*str*/, bool /*transient*/) { } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_styles_context.hpp0000644000175000017500000000361412535701143021056 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ODF_STYLES_CONTEXT_HPP #define ORCUS_ODF_STYLES_CONTEXT_HPP #include "xml_context_base.hpp" #include "odf_styles.hpp" #include "orcus/global.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class import_factory; }} class style_value_converter { typedef boost::unordered_map style_families_type; style_families_type m_style_families; public: style_value_converter(); odf_style_family to_style_family(const pstring& val) const; }; /** * Context that handles scope. */ class automatic_styles_context : public xml_context_base { public: automatic_styles_context( session_context& session_cxt, const tokens& tk, odf_styles_map_type& styles, spreadsheet::iface::import_factory* factory); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const std::vector& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); private: void commit_default_styles(); private: spreadsheet::iface::import_factory* mp_factory; odf_styles_map_type& m_styles; style_value_converter m_converter; unique_ptr m_current_style; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_para_context.hpp0000644000175000017500000000345512535701143020461 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_PARACONTEXT_HPP #define ORCUS_PARACONTEXT_HPP #include "xml_context_base.hpp" #include "odf_styles.hpp" #include "orcus/pstring.hpp" #include "orcus/string_pool.hpp" #include namespace orcus { namespace spreadsheet { namespace iface { class import_shared_strings; }} /** * This class handles contexts. */ class text_para_context : public xml_context_base { public: text_para_context( session_context& session_cxt, const tokens& tokens, spreadsheet::iface::import_shared_strings* ssb, odf_styles_map_type& styles); virtual ~text_para_context(); virtual bool can_handle_element(xmlns_id_t ns, xml_token_t name) const; virtual xml_context_base* create_child_context(xmlns_id_t ns, xml_token_t name); virtual void end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child); virtual void start_element(xmlns_id_t ns, xml_token_t name, const xml_attrs_t& attrs); virtual bool end_element(xmlns_id_t ns, xml_token_t name); virtual void characters(const pstring& str, bool transient); void reset(); size_t get_string_index() const; bool empty() const; private: void flush_segment(); private: spreadsheet::iface::import_shared_strings* mp_sstrings; odf_styles_map_type& m_styles; string_pool m_pool; std::vector m_span_stack; /// stack of text spans. std::vector m_contents; size_t m_string_index; bool m_has_content; }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_namespace_types.cpp0000644000175000017500000000064212535701143021140 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "odf_namespace_types.hpp" #include "odf_namespace_types_cpp.inl" /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xml_map_tree.cpp0000644000175000017500000005674012535701143017616 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_map_tree.hpp" #include "orcus/global.hpp" #define ORCUS_DEBUG_XML_MAP_TREE 0 #if ORCUS_DEBUG_XML_MAP_TREE #include #endif using namespace std; namespace orcus { namespace { class find_by_name : std::unary_function { xmlns_id_t m_ns; pstring m_name; public: find_by_name(xmlns_id_t ns, const pstring& name) : m_ns(ns), m_name(name) {} bool operator() (const xml_map_tree::linkable& e) const { return m_ns == e.ns && m_name == e.name; } }; class xpath_parser { const xmlns_context& m_cxt; const char* mp_char; const char* mp_end; enum token_type { element, attribute }; token_type m_next_token_type; public: struct token { xmlns_id_t ns; pstring name; bool attribute; token(xmlns_id_t _ns, const pstring& _name, bool _attribute) : ns(_ns), name(_name), attribute(_attribute) { #if ORCUS_DEBUG_XML_MAP_TREE cout << "xpath_parser::token: (ns='" << (ns ? ns : "none") << "', name='" << name << "', attribute=" << attribute << ")" << endl; #endif } token() : ns(XMLNS_UNKNOWN_ID), attribute(false) {} token(const token& r) : ns(r.ns), name(r.name), attribute(r.attribute) {} }; xpath_parser(const xmlns_context& cxt, const char* p, size_t n) : m_cxt(cxt), mp_char(p), mp_end(p+n), m_next_token_type(element) { if (!n) throw xml_map_tree::xpath_error("empty path"); if (*p != '/') throw xml_map_tree::xpath_error("first character must be '/'."); ++mp_char; } token next() { if (mp_char == mp_end) return token(); const char* p0 = NULL; size_t len = 0; xmlns_id_t ns = XMLNS_UNKNOWN_ID; for (; mp_char != mp_end; ++mp_char, ++len) { if (!p0) { p0 = mp_char; len = 0; } switch (*mp_char) { case '/': { // '/' encountered. Next token is an element name. if (m_next_token_type == attribute) throw xml_map_tree::xpath_error("attribute name should not contain '/'."); m_next_token_type = element; ++mp_char; // skip the '/'. return token(ns, pstring(p0, len), false); } case '@': { // '@' encountered. Next token is an attribute name. m_next_token_type = attribute; ++mp_char; // skip the '@'. return token(ns, pstring(p0, len), false); } case ':': { // What comes ':' is a namespace. Reset the name and // convert the namespace to a proper ID. pstring ns_name(p0, len); ns = m_cxt.get(ns_name); p0 = NULL; // reset the name. } break; default: ; } } // '/' has never been encountered. It must be the last name in the path. return token(ns, pstring(p0, len), m_next_token_type == attribute); } }; template void print_element_stack(ostream& os, const T& elem_stack) { typename T::const_iterator it = elem_stack.begin(), it_end = elem_stack.end(); for (; it != it_end; ++it) { const xml_map_tree::element& elem = **it; os << '/' << elem.name; } } } xml_map_tree::xpath_error::xpath_error(const string& msg) : general_error(msg) {} xml_map_tree::cell_position::cell_position() : row(-1), col(-1) {} xml_map_tree::cell_position::cell_position(const pstring& _sheet, spreadsheet::row_t _row, spreadsheet::col_t _col) : sheet(_sheet), row(_row), col(_col) {} xml_map_tree::cell_position::cell_position(const cell_position& r) : sheet(r.sheet), row(r.row), col(r.col) {} xml_map_tree::element_position::element_position() : open_begin(NULL), open_end(NULL), close_begin(NULL), close_end(NULL) {} xml_map_tree::cell_reference::cell_reference() {} xml_map_tree::range_reference::range_reference(const cell_position& _pos) : pos(_pos), row_size(0) {} xml_map_tree::linkable::linkable(xmlns_id_t _ns, const pstring& _name, linkable_node_type _node_type) : ns(_ns), name(_name), node_type(_node_type) {} xml_map_tree::attribute::attribute(xmlns_id_t _ns, const pstring& _name, reference_type _ref_type) : linkable(_ns, _name, node_attribute), ref_type(_ref_type) { switch (ref_type) { case reference_cell: cell_ref = new cell_reference; break; case reference_range_field: field_ref = new field_in_range; break; default: throw general_error("unexpected reference type in the constructor of attribute."); } } xml_map_tree::attribute::~attribute() { switch (ref_type) { case reference_cell: delete cell_ref; break; case reference_range_field: delete field_ref; break; default: assert(!"unexpected reference type in the destructor of attribute."); } } xml_map_tree::element::element( xmlns_id_t _ns, const pstring& _name, element_type _elem_type, reference_type _ref_type) : linkable(_ns, _name, node_element), elem_type(_elem_type), ref_type(_ref_type), range_parent(NULL) { if (elem_type == element_unlinked) { child_elements = new element_store_type; return; } assert(elem_type == element_linked); switch (ref_type) { case reference_cell: cell_ref = new cell_reference; break; case reference_range_field: field_ref = new field_in_range; break; default: throw general_error("unexpected reference type in the constructor of element."); } } xml_map_tree::element::~element() { if (elem_type == element_unlinked) { delete child_elements; return; } assert(elem_type == element_linked); switch (ref_type) { case reference_cell: delete cell_ref; break; case reference_range_field: delete field_ref; break; default: assert(!"unexpected reference type in the destructor of element."); } } const xml_map_tree::element* xml_map_tree::element::get_child(xmlns_id_t _ns, const pstring& _name) const { if (elem_type != element_unlinked) return NULL; assert(child_elements); element_store_type::const_iterator it = std::find_if(child_elements->begin(), child_elements->end(), find_by_name(_ns, _name)); return it == child_elements->end() ? NULL : &(*it); } bool xml_map_tree::element::unlinked_attribute_anchor() const { return elem_type == element_unlinked && ref_type == reference_unknown && !attributes.empty(); } xml_map_tree::walker::walker(const xml_map_tree& parent) : m_parent(parent) {} xml_map_tree::walker::walker(const xml_map_tree::walker& r) : m_parent(r.m_parent), m_stack(r.m_stack), m_unlinked_stack(r.m_unlinked_stack) {} void xml_map_tree::walker::reset() { m_stack.clear(); m_unlinked_stack.clear(); } const xml_map_tree::element* xml_map_tree::walker::push_element(xmlns_id_t ns, const pstring& name) { if (!m_unlinked_stack.empty()) { // We're still in the unlinked region. m_unlinked_stack.push_back(xml_name_t(ns, name)); return NULL; } if (m_stack.empty()) { if (!m_parent.mp_root) { // Tree is empty. m_unlinked_stack.push_back(xml_name_t(ns, name)); return NULL; } const element* p = m_parent.mp_root; if (p->ns != ns || p->name != name) { // Names differ. m_unlinked_stack.push_back(xml_name_t(ns, name)); return NULL; } m_stack.push_back(p); return p; } if (m_stack.back()->elem_type == element_unlinked) { // Check if the current element has a child of the same name. const element* p = m_stack.back()->get_child(ns, name); if (p) { m_stack.push_back(p); return p; } } m_unlinked_stack.push_back(xml_name_t(ns, name)); return NULL; } const xml_map_tree::element* xml_map_tree::walker::pop_element(xmlns_id_t ns, const pstring& name) { if (!m_unlinked_stack.empty()) { // We're in the unlinked region. Pop element from the unlinked stack. if (m_unlinked_stack.back().ns != ns || m_unlinked_stack.back().name != name) throw general_error("Closing element has a different name than the opening element. (unlinked stack)"); m_unlinked_stack.pop_back(); if (!m_unlinked_stack.empty()) // We are still in the unlinked region. return NULL; return m_stack.empty() ? NULL : m_stack.back(); } if (m_stack.empty()) throw general_error("Element was popped while the stack was empty."); if (m_stack.back()->ns != ns || m_stack.back()->name != name) throw general_error("Closing element has a different name than the opening element. (linked stack)"); m_stack.pop_back(); return m_stack.empty() ? NULL : m_stack.back(); } xml_map_tree::xml_map_tree(xmlns_repository& xmlns_repo) : m_xmlns_cxt(xmlns_repo.create_context()), mp_cur_range_ref(NULL), mp_root(NULL) {} xml_map_tree::~xml_map_tree() { std::for_each(m_field_refs.begin(), m_field_refs.end(), map_object_deleter()); delete mp_root; } void xml_map_tree::set_namespace_alias(const pstring& alias, const pstring& uri) { #if ORCUS_DEBUG_XML_MAP_TREE cout << "xml_map_tree::set_namespace_alias: alias='" << alias << "', uri='" << uri << "'" << endl; #endif // We need to turn the alias string persistent because the xmlns context // doesn't intern the alias strings. pstring alias_safe = m_names.intern(alias).first; m_xmlns_cxt.push(alias_safe, uri); } xmlns_id_t xml_map_tree::get_namespace(const pstring& alias) const { return m_xmlns_cxt.get(alias); } void xml_map_tree::set_cell_link(const pstring& xpath, const cell_position& ref) { if (xpath.empty()) return; #if ORCUS_DEBUG_XML_MAP_TREE cout << "xml_map_tree::set_cell_link: xpath='" << xpath << "' (ref=" << ref << ")" << endl; #endif element_list_type elem_stack; linkable* node = get_element_stack(xpath, reference_cell, elem_stack); assert(node); assert(!elem_stack.empty()); cell_reference* cell_ref = NULL; switch (node->node_type) { case node_element: assert(static_cast(node)->cell_ref); cell_ref = static_cast(node)->cell_ref; break; case node_attribute: assert(static_cast(node)->cell_ref); cell_ref = static_cast(node)->cell_ref; break; default: throw general_error("unknown node type returned from get_element_stack call in xml_map_tree::set_cell_link()."); } cell_ref->pos = ref; } void xml_map_tree::start_range() { m_cur_range_parent.clear(); mp_cur_range_ref = NULL; } void xml_map_tree::append_range_field_link(const pstring& xpath, const cell_position& pos) { if (xpath.empty()) return; range_reference* range_ref = NULL; range_ref_map_type::iterator it = m_field_refs.lower_bound(pos); if (it == m_field_refs.end() || m_field_refs.key_comp()(pos, it->first)) { // This reference does not exist yet. Insert a new one. // Make sure the sheet name string is persistent. cell_position pos_safe = pos; pos_safe.sheet = m_names.intern(pos.sheet.get(), pos.sheet.size()).first; it = m_field_refs.insert(it, range_ref_map_type::value_type(pos_safe, new range_reference(pos_safe))); } range_ref = it->second; assert(range_ref); if (!mp_cur_range_ref) mp_cur_range_ref = range_ref; #if ORCUS_DEBUG_XML_MAP_TREE cout << "xml_map_tree::append_range_field_link: " << xpath << " (ref=" << pos << ")" << endl; #endif element_list_type elem_stack; linkable* node = get_element_stack(xpath, reference_range_field, elem_stack); if (elem_stack.size() < 2) throw xpath_error("Path of a range field link must be at least 2 levels."); switch (node->node_type) { case node_element: { element* p = static_cast(node); assert(p && p->ref_type == reference_range_field && p->field_ref); p->field_ref->ref = range_ref; p->field_ref->column_pos = range_ref->field_nodes.size(); range_ref->field_nodes.push_back(p); } break; case node_attribute: { attribute* p = static_cast(node); assert(p && p->ref_type == reference_range_field && p->field_ref); p->field_ref->ref = range_ref; p->field_ref->column_pos = range_ref->field_nodes.size(); range_ref->field_nodes.push_back(p); } break; default: ; } // Determine the deepest common element for all field link elements in the // current range reference. if (m_cur_range_parent.empty()) { // First field link in this range. element_list_type::iterator it_end = elem_stack.end(); if (node->node_type == node_element) --it_end; // Skip the linked element, which is used as a field in a range. --it_end; // Skip the next-up element, which is used to group a single record entry. m_cur_range_parent.assign(elem_stack.begin(), it_end); #if ORCUS_DEBUG_XML_MAP_TREE print_element_stack(cout, m_cur_range_parent); cout << endl; #endif } else { // Determine the deepest common element between the two. element_list_type::iterator it = elem_stack.begin(), it_end = elem_stack.end(); element_list_type::iterator it_cur = m_cur_range_parent.begin(), it_cur_end = m_cur_range_parent.end(); if (*it != *it_cur) throw xpath_error("Two field links in the same range reference start with different root elements."); ++it; ++it_cur; for (; it != it_end && it_cur != it_cur_end; ++it, ++it_cur) { if (*it == *it_cur) continue; // The two elements differ. Take their parent element as the new common element. m_cur_range_parent.assign(elem_stack.begin(), it); // current elemnt excluded. break; } if (m_cur_range_parent.empty()) throw xpath_error("Two field links in the same range reference must at least share the first level of their paths."); } } void xml_map_tree::commit_range() { if (!mp_cur_range_ref) // Nothing to commit. return; #if ORCUS_DEBUG_XML_MAP_TREE cout << "parent element path for this range: "; element_list_type::iterator it = m_cur_range_parent.begin(), it_end = m_cur_range_parent.end(); for (; it != it_end; ++it) cout << "/" << (**it).name; cout << endl; #endif assert(!m_cur_range_parent.empty()); // Mark the range parent element. m_cur_range_parent.back()->range_parent = mp_cur_range_ref; } const xml_map_tree::linkable* xml_map_tree::get_link(const pstring& xpath) const { if (!mp_root) return NULL; if (xpath.empty()) return NULL; #if ORCUS_DEBUG_XML_MAP_TREE cout << "xml_map_tree::get_link: xpath = '" << xpath << "'" << endl; #endif const linkable* cur_node = mp_root; xpath_parser parser(m_xmlns_cxt, xpath.get(), xpath.size()); // Check the root element first. xpath_parser::token token = parser.next(); if (cur_node->ns != token.ns || cur_node->name != token.name) // Root element name doesn't match. return NULL; #if ORCUS_DEBUG_XML_MAP_TREE cout << "xml_map_tree::get_link: root = (ns=" << token.ns << ", name=" << token.name << ")" << endl; #endif for (token = parser.next(); !token.name.empty(); token = parser.next()) { if (token.attribute) { // The current node should be an element and should have an attribute of the same name. if (cur_node->node_type != node_element) return NULL; const element* elem = static_cast(cur_node); const attribute_store_type& attrs = elem->attributes; attribute_store_type::const_iterator it = std::find_if(attrs.begin(), attrs.end(), find_by_name(token.ns, token.name)); if (it == attrs.end()) // No such attribute exists. return NULL; return &(*it); } // See if an element of this name exists below the current element. if (cur_node->node_type != node_element) return NULL; const element* elem = static_cast(cur_node); if (elem->elem_type != element_unlinked) return NULL; if (!elem->child_elements) return NULL; element_store_type::const_iterator it = std::find_if( elem->child_elements->begin(), elem->child_elements->end(), find_by_name(token.ns, token.name)); if (it == elem->child_elements->end()) // No such child element exists. return NULL; cur_node = &(*it); } if (cur_node->node_type != node_element || static_cast(cur_node)->elem_type == element_unlinked) // Non-leaf elements are not links. return NULL; return cur_node; } xml_map_tree::walker xml_map_tree::get_tree_walker() const { return walker(*this); } xml_map_tree::range_ref_map_type& xml_map_tree::get_range_references() { return m_field_refs; } pstring xml_map_tree::intern_string(const pstring& str) const { return m_names.intern(str).first; } xml_map_tree::linkable* xml_map_tree::get_element_stack( const pstring& xpath, reference_type ref_type, element_list_type& elem_stack) { assert(!xpath.empty()); xpath_parser parser(m_xmlns_cxt,xpath.get(), xpath.size()); element_list_type elem_stack_new; // Get the root element first. xpath_parser::token token = parser.next(); if (mp_root) { // Make sure the root element's names are the same. if (mp_root->ns != token.ns || mp_root->name != token.name) throw xpath_error("path begins with inconsistent root level name."); } else { // First time the root element is encountered. if (token.attribute) throw xpath_error("root element cannot be an attribute."); mp_root = new element( token.ns, m_names.intern(token.name.get(), token.name.size()).first, element_unlinked, reference_unknown); } elem_stack_new.push_back(mp_root); element* cur_element = elem_stack_new.back(); assert(cur_element); assert(cur_element->child_elements); token = parser.next(); for (xpath_parser::token token_next = parser.next(); !token_next.name.empty(); token_next = parser.next()) { // Check if the current element contains a child element of the same name. if (token.attribute) throw xpath_error("attribute must always be at the end of the path."); element_store_type& children = *cur_element->child_elements; element_store_type::iterator it = std::find_if(children.begin(), children.end(), find_by_name(token.ns, token.name)); if (it == children.end()) { // Insert a new element of this name. children.push_back( new element( token.ns, m_names.intern(token.name.get(), token.name.size()).first, element_unlinked, reference_unknown)); cur_element = &children.back(); } else cur_element = &(*it); elem_stack_new.push_back(cur_element); token = token_next; } assert(cur_element); // Insert a leaf node. linkable* ret = NULL; if (token.attribute) { // This is an attribute. Insert it into the current element. attribute_store_type& attrs = cur_element->attributes; // Check if an attribute of the same name already exists. attribute_store_type::iterator it = std::find_if(attrs.begin(), attrs.end(), find_by_name(token.ns, token.name)); if (it != attrs.end()) throw xpath_error("This attribute is already linked. You can't link the same attribute twice."); attrs.push_back( new attribute( token.ns, m_names.intern(token.name.get(), token.name.size()).first, ref_type)); ret = &attrs.back(); } else { // Check if an element of the same name already exists. element_store_type& children = *cur_element->child_elements; element_store_type::iterator it = std::find_if(children.begin(), children.end(), find_by_name(token.ns, token.name)); if (it == children.end()) { // No element of that name exists. children.push_back( new element( token.ns, m_names.intern(token.name.get(), token.name.size()).first, element_linked, ref_type)); elem_stack_new.push_back(&children.back()); ret = &children.back(); } else { // This element already exists. Check if this is already linked. element& elem = *it; if (elem.ref_type != reference_unknown || elem.elem_type != element_unlinked) throw xpath_error("This element is already linked. You can't link the same element twice."); // Turn this existing non-linked element into a linked one. delete elem.child_elements; elem.elem_type = element_linked; elem.ref_type = ref_type; switch (ref_type) { case reference_cell: elem.cell_ref = new cell_reference; break; case reference_range_field: elem.field_ref = new field_in_range; break; default: throw general_error("Unknown reference type in xml_map_tree::get_element_stack."); } elem_stack_new.push_back(&elem); ret = &elem; } } elem_stack.swap(elem_stack_new); return ret; } std::ostream& operator<< (std::ostream& os, const xml_map_tree::cell_position& ref) { os << "[sheet='" << ref.sheet << "' row=" << ref.row << " column=" << ref.col << "]"; return os; } std::ostream& operator<< (std::ostream& os, const xml_map_tree::linkable& link) { if (!link.ns_alias.empty()) os << link.ns_alias << ':'; os << link.name; return os; } bool operator< (const xml_map_tree::cell_position& left, const xml_map_tree::cell_position& right) { if (left.sheet != right.sheet) return left.sheet < right.sheet; if (left.row != right.row) return left.row < right.row; return left.col < right.col; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/xls_xml_token_constants.hpp0000644000175000017500000000101412535701143022111 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_XLS_XML_TOKEN_CONSTANTS_HPP #define ORCUS_XLS_XML_TOKEN_CONSTANTS_HPP #include "orcus/types.hpp" namespace orcus { #include "xls_xml_token_constants.inl" } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_styles.hpp0000644000175000017500000000321612535701143017310 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_ODF_STYLES_HPP #define ORCUS_ODF_STYLES_HPP #include "orcus/pstring.hpp" #include "orcus/measurement.hpp" #include #include namespace orcus { enum odf_style_family { style_family_unknown = 0, style_family_table_column, style_family_table_row, style_family_table_cell, style_family_table, style_family_graphic, style_family_paragraph, style_family_text }; /** * Each instance of this class represents a single entry. */ struct odf_style : boost::noncopyable { struct column { length_t width; }; struct row { length_t height; }; struct cell { size_t font; }; struct table { }; struct graphic { }; struct paragraph { }; struct text { size_t font; }; pstring name; odf_style_family family; union { column* column_data; row* row_data; table* table_data; cell* cell_data; graphic* graphic_data; paragraph* paragraph_data; text* text_data; }; odf_style(); odf_style(const pstring& _name, odf_style_family _family); ~odf_style(); }; typedef boost::ptr_map odf_styles_map_type; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/liborcus/odf_tokens.inl0000644000175000017500000017232212535701143017270 0ustar renerene// This file has been auto-generated. Do not hand-edit this. const char* token_names[] = { "??", // 0 "0", // 1 "0deg", // 2 "0grad", // 3 "0rad", // 4 "1", // 5 "1.2", // 6 "100", // 7 "2", // 8 "200", // 9 "3", // 10 "300", // 11 "3d", // 12 "400", // 13 "500", // 14 "600", // 15 "700", // 16 "800", // 17 "900", // 18 "A", // 19 "I", // 20 "ROC", // 21 "_blank", // 22 "_parent", // 23 "_self", // 24 "_top", // 25 "a", // 26 "about", // 27 "above", // 28 "accelerate", // 29 "accent", // 30 "accent-height", // 31 "acceptance-state", // 32 "accepted", // 33 "accumulate", // 34 "action", // 35 "active", // 36 "actuate", // 37 "add-empty-lines", // 38 "additional-column-statement", // 39 "additive", // 40 "address", // 41 "adjustment", // 42 "after-previous", // 43 "algorithm", // 44 "align", // 45 "all", // 46 "allow-deletes", // 47 "allow-empty-cell", // 48 "allow-inserts", // 49 "allow-updates", // 50 "alpha-numeric", // 51 "alphabetic", // 52 "alphabetical-index", // 53 "alphabetical-index-auto-mark-file", // 54 "alphabetical-index-entry-template", // 55 "alphabetical-index-mark", // 56 "alphabetical-index-mark-end", // 57 "alphabetical-index-mark-start", // 58 "alphabetical-index-source", // 59 "alphabetical-separators", // 60 "alternate", // 61 "always", // 62 "am-pm", // 63 "ambient-color", // 64 "anchor-page-number", // 65 "anchor-type", // 66 "angle", // 67 "angle-offset", // 68 "angled-connector-line", // 69 "angled-line", // 70 "anim", // 71 "animate", // 72 "animateColor", // 73 "animateMotion", // 74 "animateTransform", // 75 "animation", // 76 "animation-delay", // 77 "animation-direction", // 78 "animation-group", // 79 "animation-repeat", // 80 "animation-start-inside", // 81 "animation-steps", // 82 "animation-stop-inside", // 83 "animations", // 84 "annotation", // 85 "annotation-end", // 86 "annotations", // 87 "annote", // 88 "appear", // 89 "append-table-alias-name", // 90 "applet", // 91 "application-connection-settings", // 92 "application-data", // 93 "apply-command", // 94 "apply-design-mode", // 95 "apply-filter", // 96 "apply-style-name", // 97 "arc", // 98 "archive", // 99 "area", // 100 "area-circle", // 101 "area-polygon", // 102 "area-rectangle", // 103 "array", // 104 "arrow-down", // 105 "arrow-left", // 106 "arrow-right", // 107 "arrow-up", // 108 "article", // 109 "as-char", // 110 "as-template", // 111 "ascending", // 112 "ascent", // 113 "asian", // 114 "asterisk", // 115 "at-axis", // 116 "at-labels", // 117 "at-labels-and-axis", // 118 "attached-axis", // 119 "attractive", // 120 "attributeName", // 121 "audio", // 122 "audio-level", // 123 "author", // 124 "author-initials", // 125 "author-name", // 126 "auto", // 127 "auto-complete", // 128 "auto-create-new-frame", // 129 "auto-grow-height", // 130 "auto-grow-width", // 131 "auto-increment", // 132 "auto-position", // 133 "auto-reload", // 134 "auto-size", // 135 "auto-text-indent", // 136 "auto-update", // 137 "autoReverse", // 138 "automatic", // 139 "automatic-content", // 140 "automatic-find-labels", // 141 "automatic-focus", // 142 "automatic-order", // 143 "automatic-styles", // 144 "automatic-update", // 145 "average", // 146 "avoid-overlap", // 147 "axial", // 148 "axis", // 149 "axis-label-position", // 150 "axis-position", // 151 "b-spline", // 152 "back-scale", // 153 "backface-culling", // 154 "background", // 155 "background-color", // 156 "background-image", // 157 "background-objects-visible", // 158 "background-size", // 159 "background-transparency", // 160 "background-visible", // 161 "balanced", // 162 "base-cell-address", // 163 "base-dn", // 164 "base64Binary", // 165 "baseline", // 166 "bbox", // 167 "begin", // 168 "below", // 169 "bevel", // 170 "bibliography", // 171 "bibliography-configuration", // 172 "bibliography-data-field", // 173 "bibliography-entry-template", // 174 "bibliography-mark", // 175 "bibliography-source", // 176 "bibliography-type", // 177 "biggest", // 178 "bigint", // 179 "binary", // 180 "binary-data", // 181 "bind", // 182 "bind-styles-to-content", // 183 "bit", // 184 "bitmap", // 185 "blend", // 186 "blob", // 187 "blue", // 188 "body", // 189 "bold", // 190 "book", // 191 "booklet", // 192 "bookmark", // 193 "bookmark-end", // 194 "bookmark-start", // 195 "booktitle", // 196 "boolean", // 197 "boolean-comparison-mode", // 198 "boolean-style", // 199 "boolean-value", // 200 "border", // 201 "border-bottom", // 202 "border-color", // 203 "border-left", // 204 "border-line-width", // 205 "border-line-width-bottom", // 206 "border-line-width-left", // 207 "border-line-width-right", // 208 "border-line-width-top", // 209 "border-model", // 210 "border-right", // 211 "border-top", // 212 "both", // 213 "bottom", // 214 "bottom-end", // 215 "bottom-left", // 216 "bottom-right", // 217 "bottom-start", // 218 "bound-column", // 219 "bow-tie", // 220 "break-after", // 221 "break-before", // 222 "buddhist", // 223 "bullet-char", // 224 "bullet-relative-size", // 225 "butt", // 226 "button", // 227 "button-type", // 228 "buttons", // 229 "by", // 230 "c", // 231 "calcMode", // 232 "calculation-settings", // 233 "calendar", // 234 "cap-height", // 235 "capitalize", // 236 "capitalize-entries", // 237 "caption", // 238 "caption-angle", // 239 "caption-angle-type", // 240 "caption-escape", // 241 "caption-escape-direction", // 242 "caption-fit-line-length", // 243 "caption-gap", // 244 "caption-id", // 245 "caption-line-length", // 246 "caption-point-x", // 247 "caption-point-y", // 248 "caption-sequence-format", // 249 "caption-sequence-name", // 250 "caption-type", // 251 "cascade", // 252 "case-sensitive", // 253 "catalog-name", // 254 "categories", // 255 "category-and-value", // 256 "cell-address", // 257 "cell-content-change", // 258 "cell-content-deletion", // 259 "cell-count", // 260 "cell-protect", // 261 "cell-range", // 262 "cell-range-address", // 263 "cell-range-source", // 264 "center", // 265 "chain-next-name", // 266 "change", // 267 "change-deletion", // 268 "change-end", // 269 "change-id", // 270 "change-info", // 271 "change-start", // 272 "change-track-table-cell", // 273 "changed-region", // 274 "chapter", // 275 "char", // 276 "character-count", // 277 "character-set", // 278 "chart", // 279 "chart-properties", // 280 "charts", // 281 "checkbox", // 282 "checked", // 283 "checkerboard", // 284 "circle", // 285 "citation-body-style-name", // 286 "citation-style-name", // 287 "class", // 288 "class-id", // 289 "class-names", // 290 "clip", // 291 "clob", // 292 "clockwise", // 293 "close", // 294 "close-back", // 295 "close-front", // 296 "close-horizontal", // 297 "close-vertical", // 298 "cm", // 299 "code", // 300 "collapse", // 301 "collapsing", // 302 "color", // 303 "color-interpolation", // 304 "color-interpolation-direction", // 305 "color-inversion", // 306 "color-mode", // 307 "column", // 308 "column-count", // 309 "column-definition", // 310 "column-definitions", // 311 "column-gap", // 312 "column-mapping", // 313 "column-name", // 314 "column-percentage", // 315 "column-sep", // 316 "column-width", // 317 "columns", // 318 "combine-entries", // 319 "combine-entries-with-dash", // 320 "combine-entries-with-pp", // 321 "combobox", // 322 "comma-separated", // 323 "command", // 324 "command-type", // 325 "comment", // 326 "complex", // 327 "component", // 328 "component-collection", // 329 "concave", // 330 "concentric-gradient-fill-allowed", // 331 "cond-style-name", // 332 "condensed", // 333 "condition", // 334 "condition-source", // 335 "condition-source-range-address", // 336 "conditional-text", // 337 "cone", // 338 "conference", // 339 "config", // 340 "config-item", // 341 "config-item-map-entry", // 342 "config-item-map-indexed", // 343 "config-item-map-named", // 344 "config-item-set", // 345 "connect-bars", // 346 "connection-data", // 347 "connection-name", // 348 "connection-resource", // 349 "connector", // 350 "consecutive-numbering", // 351 "consolidation", // 352 "constant", // 353 "contains-error", // 354 "contains-header", // 355 "content", // 356 "content-validation", // 357 "content-validation-name", // 358 "content-validations", // 359 "continue", // 360 "continue-list", // 361 "continue-numbering", // 362 "continuous", // 363 "contour-path", // 364 "contour-polygon", // 365 "contrast", // 366 "control", // 367 "control-implementation", // 368 "conversion-mode", // 369 "convert-empty-to-null", // 370 "copy-all", // 371 "copy-back", // 372 "copy-formulas", // 373 "copy-of", // 374 "copy-outline-levels", // 375 "copy-results-only", // 376 "copy-styles", // 377 "corner-radius", // 378 "corners", // 379 "correct", // 380 "count", // 381 "count-empty-lines", // 382 "count-in-text-boxes", // 383 "counter-clockwise", // 384 "counterclockwise", // 385 "countnums", // 386 "country", // 387 "country-asian", // 388 "country-complex", // 389 "covered-table-cell", // 390 "creation-date", // 391 "creation-time", // 392 "creator", // 393 "cube", // 394 "cubic-spline", // 395 "cuboid", // 396 "currency", // 397 "currency-style", // 398 "currency-symbol", // 399 "current", // 400 "current-date", // 401 "current-selected", // 402 "current-state", // 403 "current-value", // 404 "curve", // 405 "custom", // 406 "custom-shape", // 407 "custom1", // 408 "custom2", // 409 "custom3", // 410 "custom4", // 411 "custom5", // 412 "cut", // 413 "cut-offs", // 414 "cx", // 415 "cy", // 416 "cylinder", // 417 "d", // 418 "dash", // 419 "dashed", // 420 "data", // 421 "data-cell-range-address", // 422 "data-field", // 423 "data-label", // 424 "data-label-number", // 425 "data-label-symbol", // 426 "data-label-text", // 427 "data-pilot-display-info", // 428 "data-pilot-field", // 429 "data-pilot-field-reference", // 430 "data-pilot-group", // 431 "data-pilot-group-member", // 432 "data-pilot-groups", // 433 "data-pilot-layout-info", // 434 "data-pilot-level", // 435 "data-pilot-member", // 436 "data-pilot-members", // 437 "data-pilot-sort-info", // 438 "data-pilot-subtotal", // 439 "data-pilot-subtotals", // 440 "data-pilot-table", // 441 "data-pilot-tables", // 442 "data-point", // 443 "data-source", // 444 "data-source-has-labels", // 445 "data-source-setting", // 446 "data-source-setting-is-list", // 447 "data-source-setting-name", // 448 "data-source-setting-type", // 449 "data-source-setting-value", // 450 "data-source-settings", // 451 "data-style-name", // 452 "data-type", // 453 "database", // 454 "database-description", // 455 "database-display", // 456 "database-name", // 457 "database-next", // 458 "database-range", // 459 "database-ranges", // 460 "database-row-number", // 461 "database-row-select", // 462 "database-source-query", // 463 "database-source-sql", // 464 "database-source-table", // 465 "database-table-name", // 466 "datasource", // 467 "datatype", // 468 "date", // 469 "date-adjust", // 470 "date-end", // 471 "date-start", // 472 "date-string", // 473 "date-style", // 474 "date-time", // 475 "date-time-decl", // 476 "date-value", // 477 "datetime", // 478 "day", // 479 "day-of-week", // 480 "days", // 481 "db", // 482 "dc", // 483 "dde-application", // 484 "dde-connection", // 485 "dde-connection-decl", // 486 "dde-connection-decls", // 487 "dde-item", // 488 "dde-link", // 489 "dde-links", // 490 "dde-source", // 491 "dde-topic", // 492 "decelerate", // 493 "decimal", // 494 "decimal-places", // 495 "decimal-replacement", // 496 "decorative", // 497 "deep", // 498 "default", // 499 "default-button", // 500 "default-cell-style-name", // 501 "default-outline-level", // 502 "default-page-layout", // 503 "default-row-style-name", // 504 "default-style", // 505 "default-style-name", // 506 "definition-src", // 507 "delay", // 508 "delay-for-repeat", // 509 "delete-rule", // 510 "deletion", // 511 "deletions", // 512 "delimiter", // 513 "denominator-value", // 514 "dependencies", // 515 "dependency", // 516 "depth", // 517 "desc", // 518 "descending", // 519 "descent", // 520 "description", // 521 "detail-fields", // 522 "detective", // 523 "diagonal-bl-tr", // 524 "diagonal-bl-tr-widths", // 525 "diagonal-tl-br", // 526 "diagonal-tl-br-widths", // 527 "diamond", // 528 "diffuse-color", // 529 "dim", // 530 "dimension", // 531 "direction", // 532 "disable", // 533 "disabled", // 534 "disc", // 535 "discrete", // 536 "display", // 537 "display-border", // 538 "display-date-time", // 539 "display-duplicates", // 540 "display-equation", // 541 "display-factor", // 542 "display-filter-buttons", // 543 "display-footer", // 544 "display-header", // 545 "display-label", // 546 "display-levels", // 547 "display-list", // 548 "display-member-mode", // 549 "display-name", // 550 "display-outline-level", // 551 "display-page-number", // 552 "display-r-square", // 553 "dissolve", // 554 "distance", // 555 "distance-after-sep", // 556 "distance-before-sep", // 557 "distinct", // 558 "distribute-letter", // 559 "distribute-space", // 560 "document", // 561 "document-content", // 562 "document-meta", // 563 "document-settings", // 564 "document-statistic", // 565 "document-styles", // 566 "domain", // 567 "dont-balance-text-columns", // 568 "dot", // 569 "dot-dash", // 570 "dot-dashed", // 571 "dot-dot-dash", // 572 "dots1", // 573 "dots1-length", // 574 "dots2", // 575 "dots2-length", // 576 "dotted", // 577 "double", // 578 "double-sided", // 579 "down", // 580 "dr3d", // 581 "draft", // 582 "draw", // 583 "draw-aspect", // 584 "draw-count", // 585 "drawing", // 586 "drawing-page", // 587 "drawing-page-properties", // 588 "drawings", // 589 "drill-down-on-double-click", // 590 "driver-settings", // 591 "drop-cap", // 592 "dropdown", // 593 "dur", // 594 "duration", // 595 "dynamic", // 596 "dynamic-spacing", // 597 "echo-char", // 598 "edge-rounding", // 599 "edge-rounding-mode", // 600 "editable", // 601 "editing-cycles", // 602 "editing-duration", // 603 "edition", // 604 "editor", // 605 "effect", // 606 "ellipse", // 607 "ellipsoid", // 608 "email", // 609 "embed", // 610 "embedded-number-behavior", // 611 "embedded-text", // 612 "embossed", // 613 "emissive-color", // 614 "emphasis", // 615 "enable", // 616 "enable-sql92-check", // 617 "enabled", // 618 "encoding", // 619 "enctype", // 620 "end", // 621 "end-angle", // 622 "end-cell-address", // 623 "end-color", // 624 "end-column", // 625 "end-glue-point", // 626 "end-guide", // 627 "end-indent", // 628 "end-intensity", // 629 "end-line-spacing-horizontal", // 630 "end-line-spacing-vertical", // 631 "end-position", // 632 "end-row", // 633 "end-shape", // 634 "end-table", // 635 "end-x", // 636 "end-y", // 637 "endless", // 638 "endnote", // 639 "endsync", // 640 "engine", // 641 "engraved", // 642 "enhanced-geometry", // 643 "enhanced-path", // 644 "entrance", // 645 "equal-boolean", // 646 "equal-integer", // 647 "equal-use-only-zero", // 648 "equation", // 649 "era", // 650 "error-category", // 651 "error-indicator", // 652 "error-lower-indicator", // 653 "error-lower-limit", // 654 "error-lower-range", // 655 "error-macro", // 656 "error-margin", // 657 "error-message", // 658 "error-percentage", // 659 "error-upper-indicator", // 660 "error-upper-limit", // 661 "error-upper-range", // 662 "escape-direction", // 663 "escape-processing", // 664 "even-columns", // 665 "even-rows", // 666 "evenodd", // 667 "event-listener", // 668 "event-listeners", // 669 "event-name", // 670 "execute", // 671 "execute-macro", // 672 "exit", // 673 "expanded", // 674 "exponential", // 675 "expression", // 676 "extension", // 677 "extra-condensed", // 678 "extra-expanded", // 679 "extrude", // 680 "extrusion", // 681 "extrusion-allowed", // 682 "extrusion-brightness", // 683 "extrusion-color", // 684 "extrusion-depth", // 685 "extrusion-diffusion", // 686 "extrusion-first-light-direction", // 687 "extrusion-first-light-harsh", // 688 "extrusion-first-light-level", // 689 "extrusion-light-face", // 690 "extrusion-metal", // 691 "extrusion-number-of-line-segments", // 692 "extrusion-origin", // 693 "extrusion-rotation-angle", // 694 "extrusion-rotation-center", // 695 "extrusion-second-light-direction", // 696 "extrusion-second-light-harsh", // 697 "extrusion-second-light-level", // 698 "extrusion-shininess", // 699 "extrusion-skew", // 700 "extrusion-specularity", // 701 "extrusion-viewpoint", // 702 "fade", // 703 "fade-from-bottom", // 704 "fade-from-center", // 705 "fade-from-left", // 706 "fade-from-lowerleft", // 707 "fade-from-lowerright", // 708 "fade-from-right", // 709 "fade-from-top", // 710 "fade-from-upperleft", // 711 "fade-from-upperright", // 712 "fade-out", // 713 "fade-to-center", // 714 "fadeColor", // 715 "false", // 716 "family", // 717 "fast", // 718 "field", // 719 "field-name", // 720 "field-number", // 721 "file", // 722 "file-based-database", // 723 "file-name", // 724 "fill", // 725 "fill-color", // 726 "fill-gradient-name", // 727 "fill-hatch-name", // 728 "fill-hatch-solid", // 729 "fill-image", // 730 "fill-image-height", // 731 "fill-image-name", // 732 "fill-image-ref-point", // 733 "fill-image-ref-point-x", // 734 "fill-image-ref-point-y", // 735 "fill-image-width", // 736 "fill-rule", // 737 "fillDefault", // 738 "filter", // 739 "filter-and", // 740 "filter-condition", // 741 "filter-name", // 742 "filter-options", // 743 "filter-or", // 744 "filter-set-item", // 745 "filter-statement", // 746 "first", // 747 "first-column", // 748 "first-page", // 749 "first-page-number", // 750 "first-row", // 751 "first-row-end-column", // 752 "first-row-start-column", // 753 "fit-to-contour", // 754 "fit-to-size", // 755 "fix", // 756 "fixed", // 757 "fixed-text", // 758 "flat", // 759 "float", // 760 "floating-frame", // 761 "floor", // 762 "flow-with-text", // 763 "fly-away", // 764 "fo", // 765 "focal-length", // 766 "focus-on-click", // 767 "font-adornments", // 768 "font-charset", // 769 "font-charset-asian", // 770 "font-charset-complex", // 771 "font-color", // 772 "font-face", // 773 "font-face-decls", // 774 "font-face-format", // 775 "font-face-name", // 776 "font-face-src", // 777 "font-face-uri", // 778 "font-family", // 779 "font-family-asian", // 780 "font-family-complex", // 781 "font-family-generic", // 782 "font-family-generic-asian", // 783 "font-family-generic-complex", // 784 "font-independent-line-spacing", // 785 "font-name", // 786 "font-name-asian", // 787 "font-name-complex", // 788 "font-pitch", // 789 "font-pitch-asian", // 790 "font-pitch-complex", // 791 "font-relief", // 792 "font-size", // 793 "font-size-asian", // 794 "font-size-complex", // 795 "font-size-rel", // 796 "font-size-rel-asian", // 797 "font-size-rel-complex", // 798 "font-stretch", // 799 "font-style", // 800 "font-style-asian", // 801 "font-style-complex", // 802 "font-style-name", // 803 "font-style-name-asian", // 804 "font-style-name-complex", // 805 "font-variant", // 806 "font-weight", // 807 "font-weight-asian", // 808 "font-weight-complex", // 809 "footer", // 810 "footer-decl", // 811 "footer-left", // 812 "footer-style", // 813 "footnote", // 814 "footnote-max-height", // 815 "footnote-sep", // 816 "footnotes-position", // 817 "for", // 818 "force-manual", // 819 "foreground", // 820 "foreign", // 821 "form", // 822 "format-change", // 823 "format-source", // 824 "formatted-text", // 825 "forms", // 826 "formula", // 827 "formula-hidden", // 828 "formulas", // 829 "forward", // 830 "fraction", // 831 "frame", // 832 "frame-content", // 833 "frame-count", // 834 "frame-display-border", // 835 "frame-display-scrollbar", // 836 "frame-end-margin", // 837 "frame-margin-horizontal", // 838 "frame-margin-vertical", // 839 "frame-name", // 840 "frame-start-margin", // 841 "free", // 842 "freeze", // 843 "from", // 844 "from-another-table", // 845 "from-bottom", // 846 "from-center", // 847 "from-inside", // 848 "from-left", // 849 "from-lower-left", // 850 "from-lower-right", // 851 "from-right", // 852 "from-same-table", // 853 "from-top", // 854 "from-upper-left", // 855 "from-upper-right", // 856 "ft", // 857 "full", // 858 "full-screen", // 859 "function", // 860 "fx", // 861 "fy", // 862 "g", // 863 "gamma", // 864 "gap", // 865 "gap-width", // 866 "generator", // 867 "generic-control", // 868 "gengou", // 869 "get", // 870 "global", // 871 "glue-point", // 872 "glue-point-leaving-directions", // 873 "glue-point-type", // 874 "glue-points", // 875 "glyph-orientation-vertical", // 876 "gouraud", // 877 "gradient", // 878 "gradient-step-count", // 879 "gradientTransform", // 880 "gradientUnits", // 881 "grand-total", // 882 "graphic", // 883 "graphic-properties", // 884 "grddl", // 885 "green", // 886 "gregorian", // 887 "greyscale", // 888 "grid", // 889 "group-bars-per-axis", // 890 "group-by-field-number", // 891 "group-id", // 892 "grouped-by", // 893 "grouping", // 894 "guide-distance", // 895 "guide-overhang", // 896 "h", // 897 "handle", // 898 "handle-mirror-horizontal", // 899 "handle-mirror-vertical", // 900 "handle-polar", // 901 "handle-position", // 902 "handle-radius-range-maximum", // 903 "handle-radius-range-minimum", // 904 "handle-range-x-maximum", // 905 "handle-range-x-minimum", // 906 "handle-range-y-maximum", // 907 "handle-range-y-minimum", // 908 "handle-switched", // 909 "handout", // 910 "handout-master", // 911 "hanging", // 912 "hanja", // 913 "hanja_yoil", // 914 "has-persistent-data", // 915 "hatch", // 916 "header", // 917 "header-decl", // 918 "header-footer-properties", // 919 "header-left", // 920 "header-style", // 921 "headers", // 922 "height", // 923 "help-message", // 924 "hidden", // 925 "hidden-and-protected", // 926 "hidden-paragraph", // 927 "hidden-text", // 928 "hide", // 929 "hide-shape", // 930 "hide-text", // 931 "high", // 932 "highlighted-range", // 933 "hijri", // 934 "hold", // 935 "hole-size", // 936 "horizontal", // 937 "horizontal-bar", // 938 "horizontal-checkerboard", // 939 "horizontal-lines", // 940 "horizontal-on-even", // 941 "horizontal-on-odd", // 942 "horizontal-pos", // 943 "horizontal-rel", // 944 "horizontal-segments", // 945 "horizontal-stripes", // 946 "hostname", // 947 "hourglass", // 948 "hours", // 949 "howpublished", // 950 "href", // 951 "hsl", // 952 "hyperlink-behaviour", // 953 "hyphenate", // 954 "hyphenation-keep", // 955 "hyphenation-ladder-count", // 956 "hyphenation-push-char-count", // 957 "hyphenation-remain-char-count", // 958 "i", // 959 "icon", // 960 "id", // 961 "identifier", // 962 "identify-categories", // 963 "ideograph-alpha", // 964 "ideographic", // 965 "ignore", // 966 "ignore-case", // 967 "ignore-driver-privileges", // 968 "ignore-empty-rows", // 969 "ignore-result", // 970 "illustration-index", // 971 "illustration-index-entry-template", // 972 "illustration-index-source", // 973 "image", // 974 "image-align", // 975 "image-count", // 976 "image-data", // 977 "image-frame", // 978 "image-map", // 979 "image-opacity", // 980 "image-position", // 981 "in", // 982 "inbook", // 983 "inch", // 984 "include-hidden-cells", // 985 "incollection", // 986 "increment", // 987 "indefinite", // 988 "index", // 989 "index-body", // 990 "index-column", // 991 "index-columns", // 992 "index-entry-bibliography", // 993 "index-entry-chapter", // 994 "index-entry-link-end", // 995 "index-entry-link-start", // 996 "index-entry-page-number", // 997 "index-entry-span", // 998 "index-entry-tab-stop", // 999 "index-entry-text", // 1000 "index-name", // 1001 "index-scope", // 1002 "index-source-style", // 1003 "index-source-styles", // 1004 "index-title", // 1005 "index-title-template", // 1006 "indices", // 1007 "information", // 1008 "inherit", // 1009 "initial-creator", // 1010 "inner", // 1011 "inproceedings", // 1012 "insertion", // 1013 "insertion-cut-off", // 1014 "inside", // 1015 "institution", // 1016 "int", // 1017 "integer", // 1018 "intensity", // 1019 "interactive-sequence", // 1020 "interlocking-horizontal-left", // 1021 "interlocking-horizontal-right", // 1022 "interlocking-vertical-bottom", // 1023 "interlocking-vertical-top", // 1024 "interpolation", // 1025 "interval-major", // 1026 "interval-minor-divisor", // 1027 "into-default-style-data-style", // 1028 "into-english-number", // 1029 "inverse", // 1030 "is-active", // 1031 "is-ascending", // 1032 "is-autoincrement", // 1033 "is-boolean", // 1034 "is-clustered", // 1035 "is-data-layout-field", // 1036 "is-empty-allowed", // 1037 "is-first-row-header-line", // 1038 "is-hidden", // 1039 "is-list-header", // 1040 "is-nullable", // 1041 "is-password-required", // 1042 "is-selection", // 1043 "is-sub-table", // 1044 "is-table-name-length-limited", // 1045 "is-tristate", // 1046 "is-unique", // 1047 "isbn", // 1048 "issn", // 1049 "italic", // 1050 "item", // 1051 "iterate", // 1052 "iterate-interval", // 1053 "iterate-type", // 1054 "iteration", // 1055 "iterative", // 1056 "japanese-candle-stick", // 1057 "jewish", // 1058 "join-border", // 1059 "journal", // 1060 "justify", // 1061 "justify-single-word", // 1062 "keep-text", // 1063 "keep-together", // 1064 "keep-with-next", // 1065 "key", // 1066 "key-column", // 1067 "key-columns", // 1068 "key1", // 1069 "key1-phonetic", // 1070 "key2", // 1071 "key2-phonetic", // 1072 "keySplines", // 1073 "keyTimes", // 1074 "keys", // 1075 "keyword", // 1076 "keywords", // 1077 "kind", // 1078 "km", // 1079 "label", // 1080 "label-alignment", // 1081 "label-arrangement", // 1082 "label-cell-address", // 1083 "label-cell-range-address", // 1084 "label-followed-by", // 1085 "label-position", // 1086 "label-position-negative", // 1087 "label-range", // 1088 "label-ranges", // 1089 "label-separator", // 1090 "label-width-and-position", // 1091 "landscape", // 1092 "language", // 1093 "language-asian", // 1094 "language-complex", // 1095 "laser", // 1096 "last", // 1097 "last-column", // 1098 "last-column-spanned", // 1099 "last-page", // 1100 "last-row", // 1101 "last-row-end-column", // 1102 "last-row-spanned", // 1103 "last-row-start-column", // 1104 "last-visited-page", // 1105 "latin", // 1106 "layer", // 1107 "layer-set", // 1108 "layout-grid-base-height", // 1109 "layout-grid-base-width", // 1110 "layout-grid-color", // 1111 "layout-grid-display", // 1112 "layout-grid-lines", // 1113 "layout-grid-mode", // 1114 "layout-grid-print", // 1115 "layout-grid-ruby-below", // 1116 "layout-grid-ruby-height", // 1117 "layout-grid-snap-to", // 1118 "layout-grid-standard-mode", // 1119 "layout-mode", // 1120 "leader-char", // 1121 "leader-color", // 1122 "leader-style", // 1123 "leader-text", // 1124 "leader-text-style", // 1125 "leader-type", // 1126 "leader-width", // 1127 "leave-gap", // 1128 "left", // 1129 "left-outside", // 1130 "legend", // 1131 "legend-align", // 1132 "legend-expansion", // 1133 "legend-expansion-aspect-ratio", // 1134 "legend-position", // 1135 "length", // 1136 "letter-kerning", // 1137 "letter-spacing", // 1138 "letters", // 1139 "level", // 1140 "light", // 1141 "lighting-mode", // 1142 "line", // 1143 "line-break", // 1144 "line-distance", // 1145 "line-height", // 1146 "line-height-at-least", // 1147 "line-number", // 1148 "line-skew", // 1149 "line-spacing", // 1150 "line-style", // 1151 "linear", // 1152 "linearGradient", // 1153 "linenumbering-configuration", // 1154 "linenumbering-separator", // 1155 "lines", // 1156 "link-data-style-to-source", // 1157 "link-to-source-data", // 1158 "linked-cell", // 1159 "list", // 1160 "list-header", // 1161 "list-id", // 1162 "list-item", // 1163 "list-level", // 1164 "list-level-label-alignment", // 1165 "list-level-position-and-space-mode", // 1166 "list-level-properties", // 1167 "list-level-style-bullet", // 1168 "list-level-style-image", // 1169 "list-level-style-number", // 1170 "list-linkage-type", // 1171 "list-property", // 1172 "list-source", // 1173 "list-source-type", // 1174 "list-style", // 1175 "list-style-name", // 1176 "list-tab-stop-position", // 1177 "list-value", // 1178 "listbox", // 1179 "listtab", // 1180 "local-socket", // 1181 "logarithmic", // 1182 "login", // 1183 "login-timeout", // 1184 "long", // 1185 "long-dash", // 1186 "longvarbinary", // 1187 "longvarchar", // 1188 "lowercase", // 1189 "lr", // 1190 "lr-tb", // 1191 "ltr", // 1192 "luminance", // 1193 "m", // 1194 "macro-name", // 1195 "main-entry", // 1196 "main-entry-style-name", // 1197 "main-sequence", // 1198 "major", // 1199 "manual", // 1200 "map", // 1201 "margin", // 1202 "margin-bottom", // 1203 "margin-left", // 1204 "margin-right", // 1205 "margin-top", // 1206 "margins", // 1207 "marked-invalid", // 1208 "marker", // 1209 "marker-end", // 1210 "marker-end-center", // 1211 "marker-end-width", // 1212 "marker-start", // 1213 "marker-start-center", // 1214 "marker-start-width", // 1215 "master-element", // 1216 "master-fields", // 1217 "master-page", // 1218 "master-page-name", // 1219 "master-styles", // 1220 "mastersthesis", // 1221 "math", // 1222 "mathematical", // 1223 "matrix-covered", // 1224 "max", // 1225 "max-edge", // 1226 "max-height", // 1227 "max-length", // 1228 "max-row-count", // 1229 "max-value", // 1230 "max-width", // 1231 "maximum", // 1232 "maximum-difference", // 1233 "may-break-between-rows", // 1234 "may-script", // 1235 "mean-value", // 1236 "measure", // 1237 "measure-align", // 1238 "measure-vertical-align", // 1239 "media", // 1240 "media-call", // 1241 "media-type", // 1242 "medium", // 1243 "melt", // 1244 "member-count", // 1245 "member-difference", // 1246 "member-name", // 1247 "member-percentage", // 1248 "member-percentage-difference", // 1249 "member-type", // 1250 "message-type", // 1251 "meta", // 1252 "meta-field", // 1253 "method", // 1254 "mi", // 1255 "middle", // 1256 "mime-type", // 1257 "mimetype", // 1258 "min", // 1259 "min-denominator-digits", // 1260 "min-edge", // 1261 "min-exponent-digits", // 1262 "min-height", // 1263 "min-integer-digits", // 1264 "min-label-distance", // 1265 "min-label-width", // 1266 "min-numerator-digits", // 1267 "min-row-height", // 1268 "min-value", // 1269 "min-width", // 1270 "minimum", // 1271 "minor", // 1272 "minutes", // 1273 "mirror", // 1274 "mirror-horizontal", // 1275 "mirror-vertical", // 1276 "mirrored", // 1277 "misc", // 1278 "miter", // 1279 "mm", // 1280 "mode", // 1281 "model", // 1282 "modern", // 1283 "modification-date", // 1284 "modification-time", // 1285 "modifiers", // 1286 "modulate", // 1287 "mono", // 1288 "month", // 1289 "months", // 1290 "motion-path", // 1291 "mouse-as-pen", // 1292 "mouse-visible", // 1293 "move", // 1294 "move-from-bottom", // 1295 "move-from-left", // 1296 "move-from-lowerleft", // 1297 "move-from-lowerright", // 1298 "move-from-right", // 1299 "move-from-top", // 1300 "move-from-upperleft", // 1301 "move-from-upperright", // 1302 "move-short", // 1303 "movement", // 1304 "movement-cut-off", // 1305 "multi-deletion-spanned", // 1306 "multi-line", // 1307 "multiple", // 1308 "name", // 1309 "name-and-extension", // 1310 "named", // 1311 "named-expression", // 1312 "named-expressions", // 1313 "named-range", // 1314 "named-symbol", // 1315 "nav-order", // 1316 "navigation-mode", // 1317 "near-axis", // 1318 "near-axis-other-side", // 1319 "near-origin", // 1320 "never", // 1321 "new", // 1322 "next", // 1323 "next-page", // 1324 "next-style-name", // 1325 "no-action", // 1326 "no-limit", // 1327 "no-nulls", // 1328 "no-repeat", // 1329 "no-wrap", // 1330 "node-type", // 1331 "nohref", // 1332 "non-primitive", // 1333 "non-whitespace-character-count", // 1334 "none", // 1335 "nonzero", // 1336 "normal", // 1337 "normals-direction", // 1338 "normals-kind", // 1339 "note", // 1340 "note-body", // 1341 "note-citation", // 1342 "note-class", // 1343 "note-continuation-notice-backward", // 1344 "note-continuation-notice-forward", // 1345 "note-ref", // 1346 "notes", // 1347 "notes-configuration", // 1348 "nothing", // 1349 "notify-on-update-of-ranges", // 1350 "null-date", // 1351 "null-year", // 1352 "nullable", // 1353 "num-format", // 1354 "num-letter-sync", // 1355 "num-prefix", // 1356 "num-suffix", // 1357 "number", // 1358 "number-all-superior", // 1359 "number-and-name", // 1360 "number-columns-repeated", // 1361 "number-columns-spanned", // 1362 "number-lines", // 1363 "number-matrix-columns-spanned", // 1364 "number-matrix-rows-spanned", // 1365 "number-no-superior", // 1366 "number-position", // 1367 "number-rows-repeated", // 1368 "number-rows-spanned", // 1369 "number-style", // 1370 "number-wrapped-paragraphs", // 1371 "numbered-entries", // 1372 "numbered-paragraph", // 1373 "numeric", // 1374 "object", // 1375 "object-count", // 1376 "object-index", // 1377 "object-index-entry-template", // 1378 "object-index-source", // 1379 "object-name", // 1380 "object-ole", // 1381 "objectBoundingBox", // 1382 "objects", // 1383 "oblique", // 1384 "odd-columns", // 1385 "odd-rows", // 1386 "office", // 1387 "offset", // 1388 "ole-action", // 1389 "ole-draw-aspect", // 1390 "ole-object-count", // 1391 "on-click", // 1392 "on-update-keep-size", // 1393 "on-update-keep-styles", // 1394 "onLoad", // 1395 "onRequest", // 1396 "once-concurrent", // 1397 "once-successive", // 1398 "opacity", // 1399 "opacity-name", // 1400 "open", // 1401 "open-horizontal", // 1402 "open-vertical", // 1403 "operation", // 1404 "operator", // 1405 "option", // 1406 "order", // 1407 "order-statement", // 1408 "organizations", // 1409 "orgchart", // 1410 "orientation", // 1411 "origin", // 1412 "orphans", // 1413 "other", // 1414 "out", // 1415 "outer", // 1416 "outline", // 1417 "outline-level", // 1418 "outline-level-style", // 1419 "outline-style", // 1420 "outline-subtotals-bottom", // 1421 "outline-subtotals-top", // 1422 "outside", // 1423 "outside-end", // 1424 "outside-start", // 1425 "overflow-behavior", // 1426 "overlap", // 1427 "overline-position", // 1428 "overline-thickness", // 1429 "p", // 1430 "paced", // 1431 "pad", // 1432 "padding", // 1433 "padding-bottom", // 1434 "padding-left", // 1435 "padding-right", // 1436 "padding-top", // 1437 "page", // 1438 "page-adjust", // 1439 "page-breaks-on-group-change", // 1440 "page-content", // 1441 "page-continuation", // 1442 "page-count", // 1443 "page-end-margin", // 1444 "page-height", // 1445 "page-layout", // 1446 "page-layout-name", // 1447 "page-layout-properties", // 1448 "page-number", // 1449 "page-sequence", // 1450 "page-start-margin", // 1451 "page-step-size", // 1452 "page-thumbnail", // 1453 "page-usage", // 1454 "page-variable-get", // 1455 "page-variable-set", // 1456 "page-width", // 1457 "pages", // 1458 "panose-1", // 1459 "paper-tray-name", // 1460 "par", // 1461 "paragraph", // 1462 "paragraph-content", // 1463 "paragraph-count", // 1464 "paragraph-end-margin", // 1465 "paragraph-properties", // 1466 "paragraph-start-margin", // 1467 "paragraph-style-name", // 1468 "parallel", // 1469 "param", // 1470 "parameter-name-substitution", // 1471 "parent", // 1472 "parent-style-name", // 1473 "parse-sql-statement", // 1474 "password", // 1475 "path", // 1476 "path-id", // 1477 "path-stretchpoint-x", // 1478 "path-stretchpoint-y", // 1479 "pause", // 1480 "pc", // 1481 "pending", // 1482 "percentage", // 1483 "percentage-data-style-name", // 1484 "percentage-style", // 1485 "perspective", // 1486 "phdthesis", // 1487 "phong", // 1488 "pie-offset", // 1489 "placeholder", // 1490 "placeholder-type", // 1491 "placing", // 1492 "plain-number", // 1493 "plain-number-and-name", // 1494 "play", // 1495 "play-full", // 1496 "plot-area", // 1497 "plugin", // 1498 "plus", // 1499 "points", // 1500 "polygon", // 1501 "polyline", // 1502 "port", // 1503 "portrait", // 1504 "position", // 1505 "possessive-form", // 1506 "post", // 1507 "power", // 1508 "precision", // 1509 "precision-as-shown", // 1510 "prefix", // 1511 "presentation", // 1512 "presentation-page-layout", // 1513 "presentation-page-layout-name", // 1514 "preset-class", // 1515 "preset-id", // 1516 "preset-sub-type", // 1517 "previous", // 1518 "previous-page", // 1519 "primary", // 1520 "print", // 1521 "print-content", // 1522 "print-date", // 1523 "print-orientation", // 1524 "print-page-order", // 1525 "print-range", // 1526 "print-ranges", // 1527 "print-time", // 1528 "print-view", // 1529 "printable", // 1530 "printed-by", // 1531 "printer", // 1532 "proceedings", // 1533 "process-content", // 1534 "product", // 1535 "projection", // 1536 "properties", // 1537 "property", // 1538 "property-name", // 1539 "protect", // 1540 "protected", // 1541 "protection-key", // 1542 "protection-key-digest-algorithm", // 1543 "pt", // 1544 "publisher", // 1545 "punctuation-wrap", // 1546 "push", // 1547 "pyramid", // 1548 "quarter", // 1549 "quarters", // 1550 "queries", // 1551 "query", // 1552 "query-collection", // 1553 "query-name", // 1554 "r", // 1555 "radial", // 1556 "radialGradient", // 1557 "radio", // 1558 "random", // 1559 "range-usable-as", // 1560 "readonly", // 1561 "real", // 1562 "records", // 1563 "recreate-on-edit", // 1564 "rect", // 1565 "rectangle", // 1566 "rectangular", // 1567 "red", // 1568 "ref", // 1569 "ref-name", // 1570 "reference-format", // 1571 "reference-mark", // 1572 "reference-mark-end", // 1573 "reference-mark-start", // 1574 "referenced-table-name", // 1575 "reflect", // 1576 "refresh-delay", // 1577 "region-center", // 1578 "region-left", // 1579 "region-right", // 1580 "register-true", // 1581 "register-truth-ref-style-name", // 1582 "regression-curve", // 1583 "regression-type", // 1584 "regular-polygon", // 1585 "rejected", // 1586 "rejecting-change-id", // 1587 "rel-column-width", // 1588 "rel-height", // 1589 "rel-width", // 1590 "related-column-name", // 1591 "relative-tab-stop-position", // 1592 "remove", // 1593 "remove-dependents", // 1594 "remove-precedents", // 1595 "repeat", // 1596 "repeat-column", // 1597 "repeat-content", // 1598 "repeat-row", // 1599 "repeatCount", // 1600 "repeatDur", // 1601 "repeated", // 1602 "replace", // 1603 "report-type", // 1604 "reports", // 1605 "reset", // 1606 "restart", // 1607 "restart-numbering", // 1608 "restart-on-page", // 1609 "restartDefault", // 1610 "restrict", // 1611 "reverse", // 1612 "reverse-direction", // 1613 "rfc-language-tag", // 1614 "rfc-language-tag-asian", // 1615 "rfc-language-tag-complex", // 1616 "rgb", // 1617 "right", // 1618 "right-angled-axes", // 1619 "right-outside", // 1620 "rl", // 1621 "rl-tb", // 1622 "roll-from-bottom", // 1623 "roll-from-left", // 1624 "roll-from-right", // 1625 "roll-from-top", // 1626 "roman", // 1627 "rotate", // 1628 "rotation", // 1629 "rotation-align", // 1630 "rotation-angle", // 1631 "round", // 1632 "row", // 1633 "row-count", // 1634 "row-height", // 1635 "row-mapping", // 1636 "row-number", // 1637 "row-percentage", // 1638 "row-retrieving-statement", // 1639 "rows", // 1640 "ruby", // 1641 "ruby-align", // 1642 "ruby-base", // 1643 "ruby-position", // 1644 "ruby-properties", // 1645 "ruby-text", // 1646 "run-through", // 1647 "running-total", // 1648 "rx", // 1649 "ry", // 1650 "s", // 1651 "scale", // 1652 "scale-min", // 1653 "scale-text", // 1654 "scale-to", // 1655 "scale-to-pages", // 1656 "scenario", // 1657 "scenario-ranges", // 1658 "scene", // 1659 "schema-definition", // 1660 "schema-name", // 1661 "school", // 1662 "scientific-number", // 1663 "screen", // 1664 "script", // 1665 "script-asian", // 1666 "script-complex", // 1667 "script-type", // 1668 "scripts", // 1669 "scroll", // 1670 "search-criteria-must-apply-to-whole-cell", // 1671 "secondary-fill-color", // 1672 "seconds", // 1673 "section", // 1674 "section-name", // 1675 "section-properties", // 1676 "section-source", // 1677 "segments", // 1678 "select-page", // 1679 "selected", // 1680 "selected-page", // 1681 "selection", // 1682 "selection-indices", // 1683 "self", // 1684 "semi-automatic", // 1685 "semi-condensed", // 1686 "semi-expanded", // 1687 "sender-city", // 1688 "sender-company", // 1689 "sender-country", // 1690 "sender-email", // 1691 "sender-fax", // 1692 "sender-firstname", // 1693 "sender-initials", // 1694 "sender-lastname", // 1695 "sender-phone-private", // 1696 "sender-phone-work", // 1697 "sender-position", // 1698 "sender-postal-code", // 1699 "sender-state-or-province", // 1700 "sender-street", // 1701 "sender-title", // 1702 "sentence-count", // 1703 "separating", // 1704 "separation-character", // 1705 "separator", // 1706 "seq", // 1707 "sequence", // 1708 "sequence-decl", // 1709 "sequence-decls", // 1710 "sequence-ref", // 1711 "series", // 1712 "series-source", // 1713 "server-database", // 1714 "server-map", // 1715 "set", // 1716 "set-default", // 1717 "set-null", // 1718 "settings", // 1719 "shade-mode", // 1720 "shadow", // 1721 "shadow-color", // 1722 "shadow-offset-x", // 1723 "shadow-offset-y", // 1724 "shadow-opacity", // 1725 "shadow-slant", // 1726 "shape", // 1727 "shape-id", // 1728 "shapes", // 1729 "sharpness", // 1730 "sheet-name", // 1731 "shininess", // 1732 "short", // 1733 "show", // 1734 "show-deleted", // 1735 "show-details", // 1736 "show-empty", // 1737 "show-end-of-presentation-slide", // 1738 "show-filter-button", // 1739 "show-logo", // 1740 "show-shape", // 1741 "show-text", // 1742 "show-unit", // 1743 "shrink-to-fit", // 1744 "side-by-side", // 1745 "simple", // 1746 "single", // 1747 "size", // 1748 "skewX", // 1749 "skewY", // 1750 "skip-white-space", // 1751 "slide", // 1752 "slope", // 1753 "slow", // 1754 "small-caps", // 1755 "smallint", // 1756 "smil", // 1757 "snap-to-layout-grid", // 1758 "soft-page-break", // 1759 "solid", // 1760 "solid-type", // 1761 "sort", // 1762 "sort-algorithm", // 1763 "sort-ascending", // 1764 "sort-by", // 1765 "sort-by-position", // 1766 "sort-by-x-values", // 1767 "sort-groups", // 1768 "sort-key", // 1769 "sort-mode", // 1770 "sound", // 1771 "source", // 1772 "source-cell-range", // 1773 "source-cell-range-addresses", // 1774 "source-field-name", // 1775 "source-name", // 1776 "source-range-address", // 1777 "source-service", // 1778 "space", // 1779 "space-after", // 1780 "space-before", // 1781 "span", // 1782 "specular", // 1783 "specular-color", // 1784 "speed", // 1785 "sphere", // 1786 "spin-button", // 1787 "spiral-inward-left", // 1788 "spiral-inward-right", // 1789 "spiral-outward-left", // 1790 "spiral-outward-right", // 1791 "spiralin-left", // 1792 "spiralin-right", // 1793 "spiralout-left", // 1794 "spiralout-right", // 1795 "spline", // 1796 "spline-order", // 1797 "spline-resolution", // 1798 "spreadMethod", // 1799 "spreadsheet", // 1800 "sql", // 1801 "sql-pass-through", // 1802 "sql-statement", // 1803 "sqlnull", // 1804 "square", // 1805 "stacked", // 1806 "stagger-even", // 1807 "stagger-odd", // 1808 "standard", // 1809 "standard-deviation", // 1810 "standard-error", // 1811 "star", // 1812 "start", // 1813 "start-angle", // 1814 "start-color", // 1815 "start-column", // 1816 "start-glue-point", // 1817 "start-guide", // 1818 "start-indent", // 1819 "start-intensity", // 1820 "start-line-spacing-horizontal", // 1821 "start-line-spacing-vertical", // 1822 "start-numbering-at", // 1823 "start-page", // 1824 "start-position", // 1825 "start-row", // 1826 "start-scale", // 1827 "start-shape", // 1828 "start-table", // 1829 "start-value", // 1830 "start-with-navigator", // 1831 "state", // 1832 "status", // 1833 "stay-on-top", // 1834 "stdev", // 1835 "stdevp", // 1836 "stemh", // 1837 "stemv", // 1838 "step", // 1839 "step-size", // 1840 "steps", // 1841 "stock-gain-marker", // 1842 "stock-loss-marker", // 1843 "stock-range-line", // 1844 "stop", // 1845 "stop-color", // 1846 "stop-opacity", // 1847 "straight-line", // 1848 "stretch", // 1849 "stretch-from-bottom", // 1850 "stretch-from-left", // 1851 "stretch-from-right", // 1852 "stretch-from-top", // 1853 "strict", // 1854 "strikethrough-position", // 1855 "strikethrough-thickness", // 1856 "string", // 1857 "string-value", // 1858 "string-value-if-false", // 1859 "string-value-if-true", // 1860 "string-value-phonetic", // 1861 "stripes", // 1862 "stroke", // 1863 "stroke-color", // 1864 "stroke-dash", // 1865 "stroke-dash-names", // 1866 "stroke-linecap", // 1867 "stroke-linejoin", // 1868 "stroke-opacity", // 1869 "stroke-width", // 1870 "struct", // 1871 "structure-protected", // 1872 "style", // 1873 "style-name", // 1874 "style-override", // 1875 "styles", // 1876 "sub", // 1877 "sub-item", // 1878 "subject", // 1879 "submit", // 1880 "subtitle", // 1881 "subtotal-field", // 1882 "subtotal-rule", // 1883 "subtotal-rules", // 1884 "subtype", // 1885 "suffix", // 1886 "sum", // 1887 "super", // 1888 "suppress-version-columns", // 1889 "svg", // 1890 "swiss", // 1891 "syllable-count", // 1892 "symbol-color", // 1893 "symbol-height", // 1894 "symbol-image", // 1895 "symbol-name", // 1896 "symbol-type", // 1897 "symbol-width", // 1898 "system", // 1899 "system-driver-settings", // 1900 "tab", // 1901 "tab-cycle", // 1902 "tab-index", // 1903 "tab-ref", // 1904 "tab-stop", // 1905 "tab-stop-distance", // 1906 "tab-stops", // 1907 "table", // 1908 "table-background", // 1909 "table-cell", // 1910 "table-cell-properties", // 1911 "table-centering", // 1912 "table-column", // 1913 "table-column-group", // 1914 "table-column-properties", // 1915 "table-columns", // 1916 "table-count", // 1917 "table-definition", // 1918 "table-definitions", // 1919 "table-exclude-filter", // 1920 "table-fields", // 1921 "table-filter", // 1922 "table-filter-pattern", // 1923 "table-formula", // 1924 "table-header-columns", // 1925 "table-header-rows", // 1926 "table-include-filter", // 1927 "table-index", // 1928 "table-index-entry-template", // 1929 "table-index-source", // 1930 "table-name", // 1931 "table-of-content", // 1932 "table-of-content-entry-template", // 1933 "table-of-content-source", // 1934 "table-properties", // 1935 "table-representation", // 1936 "table-representations", // 1937 "table-row", // 1938 "table-row-group", // 1939 "table-row-properties", // 1940 "table-rows", // 1941 "table-setting", // 1942 "table-settings", // 1943 "table-source", // 1944 "table-template", // 1945 "table-type", // 1946 "table-type-filter", // 1947 "tabular-layout", // 1948 "target-cell-address", // 1949 "target-frame", // 1950 "target-frame-name", // 1951 "target-range-address", // 1952 "targetElement", // 1953 "tb", // 1954 "tb-lr", // 1955 "tb-rl", // 1956 "techreport", // 1957 "template", // 1958 "template-name", // 1959 "text", // 1960 "text-align", // 1961 "text-align-last", // 1962 "text-align-source", // 1963 "text-areas", // 1964 "text-autospace", // 1965 "text-blinking", // 1966 "text-box", // 1967 "text-combine", // 1968 "text-combine-end-char", // 1969 "text-combine-start-char", // 1970 "text-content", // 1971 "text-emphasize", // 1972 "text-indent", // 1973 "text-input", // 1974 "text-line-through-color", // 1975 "text-line-through-mode", // 1976 "text-line-through-style", // 1977 "text-line-through-text", // 1978 "text-line-through-text-style", // 1979 "text-line-through-type", // 1980 "text-line-through-width", // 1981 "text-outline", // 1982 "text-overlap", // 1983 "text-overline-color", // 1984 "text-overline-mode", // 1985 "text-overline-style", // 1986 "text-overline-type", // 1987 "text-overline-width", // 1988 "text-path", // 1989 "text-path-allowed", // 1990 "text-path-mode", // 1991 "text-path-same-letter-heights", // 1992 "text-path-scale", // 1993 "text-position", // 1994 "text-properties", // 1995 "text-rotate-angle", // 1996 "text-rotation-angle", // 1997 "text-rotation-scale", // 1998 "text-scale", // 1999 "text-shadow", // 2000 "text-style", // 2001 "text-style-name", // 2002 "text-transform", // 2003 "text-underline-color", // 2004 "text-underline-mode", // 2005 "text-underline-style", // 2006 "text-underline-type", // 2007 "text-underline-width", // 2008 "textarea", // 2009 "textarea-horizontal-align", // 2010 "textarea-vertical-align", // 2011 "textual", // 2012 "texture-filter", // 2013 "texture-generation-mode-x", // 2014 "texture-generation-mode-y", // 2015 "texture-kind", // 2016 "texture-mode", // 2017 "thick", // 2018 "thin", // 2019 "thousand", // 2020 "three-dimensional", // 2021 "thumbnail", // 2022 "tick-mark-position", // 2023 "tick-marks-major-inner", // 2024 "tick-marks-major-outer", // 2025 "tick-marks-minor-inner", // 2026 "tick-marks-minor-outer", // 2027 "tile-repeat-offset", // 2028 "time", // 2029 "time-adjust", // 2030 "time-style", // 2031 "time-value", // 2032 "timestmp", // 2033 "timing-root", // 2034 "tinyint", // 2035 "title", // 2036 "to", // 2037 "to-another-table", // 2038 "to-bottom", // 2039 "to-center", // 2040 "to-left", // 2041 "to-lower-left", // 2042 "to-lower-right", // 2043 "to-right", // 2044 "to-top", // 2045 "to-upper-left", // 2046 "to-upper-right", // 2047 "toc-mark", // 2048 "toc-mark-end", // 2049 "toc-mark-start", // 2050 "toggle", // 2051 "top", // 2052 "top-end", // 2053 "top-left", // 2054 "top-right", // 2055 "top-start", // 2056 "total-percentage", // 2057 "trace-dependents", // 2058 "trace-errors", // 2059 "trace-precedents", // 2060 "track-changes", // 2061 "tracked-changes", // 2062 "transform", // 2063 "transformation", // 2064 "transition", // 2065 "transition-on-click", // 2066 "transition-speed", // 2067 "transition-style", // 2068 "transition-type", // 2069 "transitionFilter", // 2070 "translate", // 2071 "transliteration-country", // 2072 "transliteration-format", // 2073 "transliteration-language", // 2074 "transliteration-style", // 2075 "transparent", // 2076 "treat-empty-cells", // 2077 "triple", // 2078 "true", // 2079 "truncate-on-overflow", // 2080 "ttb", // 2081 "type", // 2082 "type-name", // 2083 "ultra-condensed", // 2084 "ultra-expanded", // 2085 "unchecked", // 2086 "uncover-to-bottom", // 2087 "uncover-to-left", // 2088 "uncover-to-lowerleft", // 2089 "uncover-to-lowerright", // 2090 "uncover-to-right", // 2091 "uncover-to-top", // 2092 "uncover-to-upperleft", // 2093 "uncover-to-upperright", // 2094 "underline-position", // 2095 "underline-thickness", // 2096 "unicode-range", // 2097 "unique", // 2098 "unit", // 2099 "units-per-em", // 2100 "unknown", // 2101 "unpublished", // 2102 "unsorted", // 2103 "up", // 2104 "update-rule", // 2105 "update-table", // 2106 "uppercase", // 2107 "url", // 2108 "use-banding-columns-styles", // 2109 "use-banding-rows-styles", // 2110 "use-caption", // 2111 "use-catalog", // 2112 "use-chart-objects", // 2113 "use-date-time-name", // 2114 "use-draw-objects", // 2115 "use-first-column-styles", // 2116 "use-first-row-styles", // 2117 "use-floating-frames", // 2118 "use-footer-name", // 2119 "use-graphics", // 2120 "use-header-name", // 2121 "use-index-marks", // 2122 "use-index-source-styles", // 2123 "use-keys-as-entries", // 2124 "use-labels", // 2125 "use-last-column-styles", // 2126 "use-last-row-styles", // 2127 "use-math-objects", // 2128 "use-objects", // 2129 "use-optimal-column-width", // 2130 "use-optimal-row-height", // 2131 "use-other-objects", // 2132 "use-outline-level", // 2133 "use-regular-expressions", // 2134 "use-soft-page-breaks", // 2135 "use-spreadsheet-objects", // 2136 "use-system-user", // 2137 "use-tables", // 2138 "use-wildcards", // 2139 "use-window-font-color", // 2140 "use-zero", // 2141 "used-hierarchy", // 2142 "user-defined", // 2143 "user-field-decl", // 2144 "user-field-decls", // 2145 "user-field-get", // 2146 "user-field-input", // 2147 "user-index", // 2148 "user-index-entry-template", // 2149 "user-index-mark", // 2150 "user-index-mark-end", // 2151 "user-index-mark-start", // 2152 "user-index-source", // 2153 "user-name", // 2154 "user-transformed", // 2155 "v-alphabetic", // 2156 "v-hanging", // 2157 "v-ideographic", // 2158 "v-mathematical", // 2159 "validation", // 2160 "value", // 2161 "value-and-percentage", // 2162 "value-list", // 2163 "value-range", // 2164 "value-type", // 2165 "values", // 2166 "values-cell-range-address", // 2167 "var", // 2168 "varbinary", // 2169 "varchar", // 2170 "variable", // 2171 "variable-decl", // 2172 "variable-decls", // 2173 "variable-get", // 2174 "variable-input", // 2175 "variable-set", // 2176 "variance", // 2177 "varp", // 2178 "verb", // 2179 "version", // 2180 "vertical", // 2181 "vertical-align", // 2182 "vertical-bar", // 2183 "vertical-checkerboard", // 2184 "vertical-lines", // 2185 "vertical-pos", // 2186 "vertical-rel", // 2187 "vertical-segments", // 2188 "vertical-stripes", // 2189 "viewBox", // 2190 "visibility", // 2191 "visible", // 2192 "visible-area-height", // 2193 "visible-area-left", // 2194 "visible-area-top", // 2195 "visible-area-width", // 2196 "visited-style-name", // 2197 "visual-effect", // 2198 "void", // 2199 "volatile", // 2200 "volume", // 2201 "vpn", // 2202 "vrp", // 2203 "vup", // 2204 "wall", // 2205 "warning", // 2206 "watermark", // 2207 "wave", // 2208 "wavyline", // 2209 "wavyline-from-bottom", // 2210 "wavyline-from-left", // 2211 "wavyline-from-right", // 2212 "wavyline-from-top", // 2213 "week-of-year", // 2214 "whenNotActive", // 2215 "wide", // 2216 "widows", // 2217 "width", // 2218 "widths", // 2219 "with-previous", // 2220 "word", // 2221 "word-count", // 2222 "wrap", // 2223 "wrap-contour", // 2224 "wrap-contour-mode", // 2225 "wrap-dynamic-threshold", // 2226 "wrap-influence-on-position", // 2227 "wrap-option", // 2228 "writing-mode", // 2229 "writing-mode-automatic", // 2230 "www", // 2231 "x", // 2232 "x-height", // 2233 "x1", // 2234 "x2", // 2235 "xforms", // 2236 "xforms-list-source", // 2237 "xforms-submission", // 2238 "xhtml", // 2239 "xlink", // 2240 "xml", // 2241 "y", // 2242 "y1", // 2243 "y2", // 2244 "year", // 2245 "years", // 2246 "z", // 2247 "z-index", // 2248 "zero-values" // 2249 }; size_t token_name_count = 2250; liborcus-0.9.2/src/orcus_zip_dump.cpp0000644000175000017500000000170312535701144016350 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/zip_archive.hpp" #include "orcus/zip_archive_stream.hpp" #include #include using namespace std; int main(int argc, char** argv) { if (argc < 2) return EXIT_FAILURE; orcus::zip_archive_stream_fd stream(argv[1]); orcus::zip_archive archive(&stream); archive.load(); size_t n = archive.get_file_entry_count(); if (argc < 3) { for (size_t i = 0; i < n; ++i) archive.dump_file_entry(i); return EXIT_SUCCESS; } const char* entry_name = argv[2]; archive.dump_file_entry(entry_name); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/Makefile.in0000644000175000017500000042120212540653650014653 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \ $(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) EXTRA_PROGRAMS = orcus-test-common$(EXEEXT) orcus-test-xml$(EXEEXT) \ $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ $(am__EXEEXT_4) @HAVE_STATIC_LIB_TRUE@am__append_1 = -D__ORCUS_STATIC_LIB=1 TESTS = orcus-test-common$(EXEEXT) orcus-test-xml$(EXEEXT) \ $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ $(am__EXEEXT_4) @WITH_TOOLS_TRUE@am__append_2 = \ @WITH_TOOLS_TRUE@ orcus-css-dump \ @WITH_TOOLS_TRUE@ orcus-zip-dump \ @WITH_TOOLS_TRUE@ orcus-xml-dump \ @WITH_TOOLS_TRUE@ orcus-mso-encryption \ @WITH_TOOLS_TRUE@ orcus-detect #---------------------------------------------------------------------------- @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@am__append_3 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus-csv orcus-xml @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@am__append_4 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus-ods @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@am__append_5 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus-xlsx @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@am__append_6 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ orcus-xls-xml @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@am__append_7 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus-gnumeric #---------------------------------------------------------------------------- # Orcus Filter Tests #---------------------------------------------------------------------------- @BUILD_SPREADSHEET_MODEL_TRUE@am__append_8 = \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus-test-csv \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus-test-xml-mapped @BUILD_SPREADSHEET_MODEL_TRUE@am__append_9 = \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus-test-csv \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus-test-xml-mapped @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@am__append_10 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ orcus-test-ods @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@am__append_11 = orcus-test-ods @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@am__append_12 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus-test-xlsx @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@am__append_13 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus-test-xlsx @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@am__append_14 = orcus-test-xls-xml @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@am__append_15 = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ orcus-test-xls-xml subdir = src DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp $(top_srcdir)/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @BUILD_SPREADSHEET_MODEL_TRUE@am__EXEEXT_1 = orcus-test-csv$(EXEEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus-test-xml-mapped$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@am__EXEEXT_2 = orcus-test-ods$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@am__EXEEXT_3 = orcus-test-xlsx$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@am__EXEEXT_4 = orcus-test-xls-xml$(EXEEXT) @WITH_TOOLS_TRUE@am__EXEEXT_5 = orcus-css-dump$(EXEEXT) \ @WITH_TOOLS_TRUE@ orcus-zip-dump$(EXEEXT) \ @WITH_TOOLS_TRUE@ orcus-xml-dump$(EXEEXT) \ @WITH_TOOLS_TRUE@ orcus-mso-encryption$(EXEEXT) \ @WITH_TOOLS_TRUE@ orcus-detect$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@am__EXEEXT_6 = orcus-csv$(EXEEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus-xml$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@am__EXEEXT_7 = orcus-ods$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@am__EXEEXT_8 = orcus-xlsx$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@am__EXEEXT_9 = orcus-xls-xml$(EXEEXT) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@am__EXEEXT_10 = orcus-gnumeric$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__orcus_css_dump_SOURCES_DIST = orcus_css_dump.cpp @WITH_TOOLS_TRUE@am_orcus_css_dump_OBJECTS = \ @WITH_TOOLS_TRUE@ orcus_css_dump-orcus_css_dump.$(OBJEXT) orcus_css_dump_OBJECTS = $(am_orcus_css_dump_OBJECTS) @WITH_TOOLS_TRUE@orcus_css_dump_DEPENDENCIES = parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am__orcus_csv_SOURCES_DIST = orcus_filter_global.hpp \ orcus_filter_global.cpp orcus_csv_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@am_orcus_csv_OBJECTS = orcus_csv-orcus_filter_global.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus_csv-orcus_csv_main.$(OBJEXT) orcus_csv_OBJECTS = $(am_orcus_csv_OBJECTS) am__DEPENDENCIES_1 = @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_csv_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) am__orcus_detect_SOURCES_DIST = orcus_detect_main.cpp @WITH_TOOLS_TRUE@am_orcus_detect_OBJECTS = \ @WITH_TOOLS_TRUE@ orcus_detect-orcus_detect_main.$(OBJEXT) orcus_detect_OBJECTS = $(am_orcus_detect_OBJECTS) @WITH_TOOLS_TRUE@orcus_detect_DEPENDENCIES = parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ @WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) am__orcus_gnumeric_SOURCES_DIST = orcus_filter_global.hpp \ orcus_filter_global.cpp orcus_gnumeric_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@am_orcus_gnumeric_OBJECTS = orcus_gnumeric-orcus_filter_global.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_gnumeric-orcus_gnumeric_main.$(OBJEXT) orcus_gnumeric_OBJECTS = $(am_orcus_gnumeric_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_gnumeric_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) am__orcus_mso_encryption_SOURCES_DIST = orcus_mso_encryption.cpp @WITH_TOOLS_TRUE@am_orcus_mso_encryption_OBJECTS = orcus_mso_encryption-orcus_mso_encryption.$(OBJEXT) orcus_mso_encryption_OBJECTS = $(am_orcus_mso_encryption_OBJECTS) @WITH_TOOLS_TRUE@orcus_mso_encryption_DEPENDENCIES = parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ mso/liborcus-mso-@ORCUS_API_VERSION@.la am__orcus_ods_SOURCES_DIST = orcus_filter_global.hpp \ orcus_filter_global.cpp orcus_ods_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@am_orcus_ods_OBJECTS = orcus_ods-orcus_filter_global.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_ods-orcus_ods_main.$(OBJEXT) orcus_ods_OBJECTS = $(am_orcus_ods_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_ods_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) am_orcus_test_common_OBJECTS = \ orcus_test_common-orcus_test_common.$(OBJEXT) orcus_test_common_OBJECTS = $(am_orcus_test_common_OBJECTS) orcus_test_common_DEPENDENCIES = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la am__orcus_test_csv_SOURCES_DIST = orcus_test_csv.cpp @BUILD_SPREADSHEET_MODEL_TRUE@am_orcus_test_csv_OBJECTS = orcus_test_csv-orcus_test_csv.$(OBJEXT) orcus_test_csv_OBJECTS = $(am_orcus_test_csv_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_csv_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la am__orcus_test_ods_SOURCES_DIST = orcus_test_ods.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@am_orcus_test_ods_OBJECTS = orcus_test_ods-orcus_test_ods.$(OBJEXT) orcus_test_ods_OBJECTS = $(am_orcus_test_ods_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@orcus_test_ods_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la am__orcus_test_xls_xml_SOURCES_DIST = orcus_test_xls_xml.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@am_orcus_test_xls_xml_OBJECTS = orcus_test_xls_xml-orcus_test_xls_xml.$(OBJEXT) orcus_test_xls_xml_OBJECTS = $(am_orcus_test_xls_xml_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_test_xls_xml_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la am__orcus_test_xlsx_SOURCES_DIST = orcus_test_xlsx.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@am_orcus_test_xlsx_OBJECTS = orcus_test_xlsx-orcus_test_xlsx.$(OBJEXT) orcus_test_xlsx_OBJECTS = $(am_orcus_test_xlsx_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_test_xlsx_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la am_orcus_test_xml_OBJECTS = orcus_test_xml-orcus_test_xml.$(OBJEXT) orcus_test_xml_OBJECTS = $(am_orcus_test_xml_OBJECTS) orcus_test_xml_DEPENDENCIES = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la am__orcus_test_xml_mapped_SOURCES_DIST = xml_map_sax_handler.cpp \ xml_map_sax_handler.hpp dom_tree_sax_handler.cpp \ dom_tree_sax_handler.hpp orcus_test_xml_mapped.cpp @BUILD_SPREADSHEET_MODEL_TRUE@am_orcus_test_xml_mapped_OBJECTS = orcus_test_xml_mapped-xml_map_sax_handler.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus_test_xml_mapped-dom_tree_sax_handler.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus_test_xml_mapped-orcus_test_xml_mapped.$(OBJEXT) orcus_test_xml_mapped_OBJECTS = $(am_orcus_test_xml_mapped_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_xml_mapped_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la am__orcus_xls_xml_SOURCES_DIST = orcus_filter_global.hpp \ orcus_filter_global.cpp orcus_xls_xml_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@am_orcus_xls_xml_OBJECTS = orcus_xls_xml-orcus_filter_global.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ orcus_xls_xml-orcus_xls_xml_main.$(OBJEXT) orcus_xls_xml_OBJECTS = $(am_orcus_xls_xml_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_xls_xml_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ $(am__DEPENDENCIES_1) am__orcus_xlsx_SOURCES_DIST = orcus_filter_global.hpp \ orcus_filter_global.cpp orcus_xlsx_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@am_orcus_xlsx_OBJECTS = orcus_xlsx-orcus_filter_global.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus_xlsx-orcus_xlsx_main.$(OBJEXT) orcus_xlsx_OBJECTS = $(am_orcus_xlsx_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_xlsx_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ $(am__DEPENDENCIES_1) am__orcus_xml_SOURCES_DIST = xml_map_sax_handler.cpp \ orcus_xml_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@am_orcus_xml_OBJECTS = orcus_xml-xml_map_sax_handler.$(OBJEXT) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus_xml-orcus_xml_main.$(OBJEXT) orcus_xml_OBJECTS = $(am_orcus_xml_OBJECTS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_xml_DEPENDENCIES = liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(am__DEPENDENCIES_1) am__orcus_xml_dump_SOURCES_DIST = orcus_xml_dump.cpp \ dom_tree_sax_handler.hpp dom_tree_sax_handler.cpp @WITH_TOOLS_TRUE@am_orcus_xml_dump_OBJECTS = \ @WITH_TOOLS_TRUE@ orcus_xml_dump-orcus_xml_dump.$(OBJEXT) \ @WITH_TOOLS_TRUE@ orcus_xml_dump-dom_tree_sax_handler.$(OBJEXT) orcus_xml_dump_OBJECTS = $(am_orcus_xml_dump_OBJECTS) @WITH_TOOLS_TRUE@orcus_xml_dump_DEPENDENCIES = parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la am__orcus_zip_dump_SOURCES_DIST = orcus_zip_dump.cpp @WITH_TOOLS_TRUE@am_orcus_zip_dump_OBJECTS = \ @WITH_TOOLS_TRUE@ orcus_zip_dump-orcus_zip_dump.$(OBJEXT) orcus_zip_dump_OBJECTS = $(am_orcus_zip_dump_OBJECTS) @WITH_TOOLS_TRUE@orcus_zip_dump_DEPENDENCIES = parser/liborcus-parser-@ORCUS_API_VERSION@.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(orcus_css_dump_SOURCES) $(orcus_csv_SOURCES) \ $(orcus_detect_SOURCES) $(orcus_gnumeric_SOURCES) \ $(orcus_mso_encryption_SOURCES) $(orcus_ods_SOURCES) \ $(orcus_test_common_SOURCES) $(orcus_test_csv_SOURCES) \ $(orcus_test_ods_SOURCES) $(orcus_test_xls_xml_SOURCES) \ $(orcus_test_xlsx_SOURCES) $(orcus_test_xml_SOURCES) \ $(orcus_test_xml_mapped_SOURCES) $(orcus_xls_xml_SOURCES) \ $(orcus_xlsx_SOURCES) $(orcus_xml_SOURCES) \ $(orcus_xml_dump_SOURCES) $(orcus_zip_dump_SOURCES) DIST_SOURCES = $(am__orcus_css_dump_SOURCES_DIST) \ $(am__orcus_csv_SOURCES_DIST) $(am__orcus_detect_SOURCES_DIST) \ $(am__orcus_gnumeric_SOURCES_DIST) \ $(am__orcus_mso_encryption_SOURCES_DIST) \ $(am__orcus_ods_SOURCES_DIST) $(orcus_test_common_SOURCES) \ $(am__orcus_test_csv_SOURCES_DIST) \ $(am__orcus_test_ods_SOURCES_DIST) \ $(am__orcus_test_xls_xml_SOURCES_DIST) \ $(am__orcus_test_xlsx_SOURCES_DIST) $(orcus_test_xml_SOURCES) \ $(am__orcus_test_xml_mapped_SOURCES_DIST) \ $(am__orcus_xls_xml_SOURCES_DIST) \ $(am__orcus_xlsx_SOURCES_DIST) $(am__orcus_xml_SOURCES_DIST) \ $(am__orcus_xml_dump_SOURCES_DIST) \ $(am__orcus_zip_dump_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ check recheck distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = parser mso liborcus spreadsheet AM_CPPFLAGS = -I$(top_srcdir)/include $(BOOST_SYSTEM_CFLAGS) \ $(am__append_1) # orcus-test-common orcus_test_common_SOURCES = orcus_test_common.cpp orcus_test_common_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la orcus_test_common_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-test-xml orcus_test_xml_SOURCES = orcus_test_xml.cpp orcus_test_xml_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la orcus_test_xml_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" # orcus-css-dump @WITH_TOOLS_TRUE@orcus_css_dump_SOURCES = \ @WITH_TOOLS_TRUE@ orcus_css_dump.cpp @WITH_TOOLS_TRUE@orcus_css_dump_LDADD = \ @WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la @WITH_TOOLS_TRUE@orcus_css_dump_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-zip-dump @WITH_TOOLS_TRUE@orcus_zip_dump_SOURCES = \ @WITH_TOOLS_TRUE@ orcus_zip_dump.cpp @WITH_TOOLS_TRUE@orcus_zip_dump_LDADD = \ @WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la @WITH_TOOLS_TRUE@orcus_zip_dump_CPPFLAGS = $(AM_CPPFLAGS) # orcus-xml-dump @WITH_TOOLS_TRUE@orcus_xml_dump_SOURCES = \ @WITH_TOOLS_TRUE@ orcus_xml_dump.cpp \ @WITH_TOOLS_TRUE@ dom_tree_sax_handler.hpp \ @WITH_TOOLS_TRUE@ dom_tree_sax_handler.cpp @WITH_TOOLS_TRUE@orcus_xml_dump_LDADD = \ @WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la @WITH_TOOLS_TRUE@orcus_xml_dump_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) #---------------------------------------------------------------------------- # orcus-mso-encryption @WITH_TOOLS_TRUE@orcus_mso_encryption_SOURCES = orcus_mso_encryption.cpp @WITH_TOOLS_TRUE@orcus_mso_encryption_LDADD = \ @WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ mso/liborcus-mso-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ $(BOOST_SYSTEM_LIB) @WITH_TOOLS_TRUE@orcus_mso_encryption_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) #---------------------------------------------------------------------------- # orcus-detect @WITH_TOOLS_TRUE@orcus_detect_SOURCES = orcus_detect_main.cpp @WITH_TOOLS_TRUE@orcus_detect_LDADD = \ @WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @WITH_TOOLS_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @WITH_TOOLS_TRUE@ $(BOOST_FILESYSTEM_LIBS) \ @WITH_TOOLS_TRUE@ $(BOOST_SYSTEM_LIBS) @WITH_TOOLS_TRUE@orcus_detect_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-csv @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_csv_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus_filter_global.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus_filter_global.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus_csv_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_csv_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_FILESYSTEM_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_SYSTEM_LIBS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_csv_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-xml @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_xml_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ xml_map_sax_handler.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ orcus_xml_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_xml_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_FILESYSTEM_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_SYSTEM_LIBS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@orcus_xml_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-ods @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_ods_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_filter_global.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_filter_global.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_ods_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_ods_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_FILESYSTEM_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_SYSTEM_LIBS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_ods_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-xlsx @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_xlsx_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus_filter_global.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus_filter_global.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus_xlsx_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_xlsx_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ $(BOOST_FILESYSTEM_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@ $(BOOST_SYSTEM_LIBS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_xlsx_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-xls-xml @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_xls_xml_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ orcus_filter_global.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ orcus_filter_global.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ orcus_xls_xml_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_xls_xml_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ $(BOOST_FILESYSTEM_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@ $(BOOST_SYSTEM_LIBS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_TOOLS_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_xls_xml_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-gnumeric @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_gnumeric_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_filter_global.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_filter_global.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ orcus_gnumeric_main.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_gnumeric_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_FILESYSTEM_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@ $(BOOST_SYSTEM_LIBS) @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_GNUMERIC_FILTER_TRUE@@WITH_TOOLS_TRUE@orcus_gnumeric_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-test-csv @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_csv_SOURCES = orcus_test_csv.cpp @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_csv_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_csv_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" # orcus-test-xml-mapped @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_xml_mapped_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@ xml_map_sax_handler.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ xml_map_sax_handler.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ dom_tree_sax_handler.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ dom_tree_sax_handler.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ orcus_test_xml_mapped.cpp @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_xml_mapped_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la @BUILD_SPREADSHEET_MODEL_TRUE@orcus_test_xml_mapped_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" # orcus-test-ods @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@orcus_test_ods_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ orcus_test_ods.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@orcus_test_ods_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@orcus_test_ods_CPPFLAGS = $(AM_CPPFLAGS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_ODS_FILTER_TRUE@ -I$(top_builddir)/lib/liborcus/liborcus.la -DSRCDIR=\""$(top_srcdir)"\" # orcus-test-xlsx @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_test_xlsx_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ orcus_test_xlsx.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_test_xlsx_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ @LIBIXION_LIBS@ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@orcus_test_xlsx_CPPFLAGS = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ @LIBIXION_CFLAGS@ $(AM_CPPFLAGS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLSX_FILTER_TRUE@ -I$(top_builddir)/lib/liborcus/liborcus.la -DSRCDIR=\""$(top_srcdir)"\" # orcus-test-xls-xml @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_test_xls_xml_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ orcus_test_xls_xml.cpp @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_test_xls_xml_LDADD = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ liborcus/liborcus-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@orcus_test_xls_xml_CPPFLAGS = \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ @LIBIXION_CFLAGS@ $(AM_CPPFLAGS) \ @BUILD_SPREADSHEET_MODEL_TRUE@@WITH_XLS_XML_FILTER_TRUE@ -I$(top_builddir)/lib/liborcus/liborcus.la -DSRCDIR=\""$(top_srcdir)"\" all: all-recursive .SUFFIXES: .SUFFIXES: .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list orcus-css-dump$(EXEEXT): $(orcus_css_dump_OBJECTS) $(orcus_css_dump_DEPENDENCIES) $(EXTRA_orcus_css_dump_DEPENDENCIES) @rm -f orcus-css-dump$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_css_dump_OBJECTS) $(orcus_css_dump_LDADD) $(LIBS) orcus-csv$(EXEEXT): $(orcus_csv_OBJECTS) $(orcus_csv_DEPENDENCIES) $(EXTRA_orcus_csv_DEPENDENCIES) @rm -f orcus-csv$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_csv_OBJECTS) $(orcus_csv_LDADD) $(LIBS) orcus-detect$(EXEEXT): $(orcus_detect_OBJECTS) $(orcus_detect_DEPENDENCIES) $(EXTRA_orcus_detect_DEPENDENCIES) @rm -f orcus-detect$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_detect_OBJECTS) $(orcus_detect_LDADD) $(LIBS) orcus-gnumeric$(EXEEXT): $(orcus_gnumeric_OBJECTS) $(orcus_gnumeric_DEPENDENCIES) $(EXTRA_orcus_gnumeric_DEPENDENCIES) @rm -f orcus-gnumeric$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_gnumeric_OBJECTS) $(orcus_gnumeric_LDADD) $(LIBS) orcus-mso-encryption$(EXEEXT): $(orcus_mso_encryption_OBJECTS) $(orcus_mso_encryption_DEPENDENCIES) $(EXTRA_orcus_mso_encryption_DEPENDENCIES) @rm -f orcus-mso-encryption$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_mso_encryption_OBJECTS) $(orcus_mso_encryption_LDADD) $(LIBS) orcus-ods$(EXEEXT): $(orcus_ods_OBJECTS) $(orcus_ods_DEPENDENCIES) $(EXTRA_orcus_ods_DEPENDENCIES) @rm -f orcus-ods$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_ods_OBJECTS) $(orcus_ods_LDADD) $(LIBS) orcus-test-common$(EXEEXT): $(orcus_test_common_OBJECTS) $(orcus_test_common_DEPENDENCIES) $(EXTRA_orcus_test_common_DEPENDENCIES) @rm -f orcus-test-common$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_test_common_OBJECTS) $(orcus_test_common_LDADD) $(LIBS) orcus-test-csv$(EXEEXT): $(orcus_test_csv_OBJECTS) $(orcus_test_csv_DEPENDENCIES) $(EXTRA_orcus_test_csv_DEPENDENCIES) @rm -f orcus-test-csv$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_test_csv_OBJECTS) $(orcus_test_csv_LDADD) $(LIBS) orcus-test-ods$(EXEEXT): $(orcus_test_ods_OBJECTS) $(orcus_test_ods_DEPENDENCIES) $(EXTRA_orcus_test_ods_DEPENDENCIES) @rm -f orcus-test-ods$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_test_ods_OBJECTS) $(orcus_test_ods_LDADD) $(LIBS) orcus-test-xls-xml$(EXEEXT): $(orcus_test_xls_xml_OBJECTS) $(orcus_test_xls_xml_DEPENDENCIES) $(EXTRA_orcus_test_xls_xml_DEPENDENCIES) @rm -f orcus-test-xls-xml$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_test_xls_xml_OBJECTS) $(orcus_test_xls_xml_LDADD) $(LIBS) orcus-test-xlsx$(EXEEXT): $(orcus_test_xlsx_OBJECTS) $(orcus_test_xlsx_DEPENDENCIES) $(EXTRA_orcus_test_xlsx_DEPENDENCIES) @rm -f orcus-test-xlsx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_test_xlsx_OBJECTS) $(orcus_test_xlsx_LDADD) $(LIBS) orcus-test-xml$(EXEEXT): $(orcus_test_xml_OBJECTS) $(orcus_test_xml_DEPENDENCIES) $(EXTRA_orcus_test_xml_DEPENDENCIES) @rm -f orcus-test-xml$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_test_xml_OBJECTS) $(orcus_test_xml_LDADD) $(LIBS) orcus-test-xml-mapped$(EXEEXT): $(orcus_test_xml_mapped_OBJECTS) $(orcus_test_xml_mapped_DEPENDENCIES) $(EXTRA_orcus_test_xml_mapped_DEPENDENCIES) @rm -f orcus-test-xml-mapped$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_test_xml_mapped_OBJECTS) $(orcus_test_xml_mapped_LDADD) $(LIBS) orcus-xls-xml$(EXEEXT): $(orcus_xls_xml_OBJECTS) $(orcus_xls_xml_DEPENDENCIES) $(EXTRA_orcus_xls_xml_DEPENDENCIES) @rm -f orcus-xls-xml$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_xls_xml_OBJECTS) $(orcus_xls_xml_LDADD) $(LIBS) orcus-xlsx$(EXEEXT): $(orcus_xlsx_OBJECTS) $(orcus_xlsx_DEPENDENCIES) $(EXTRA_orcus_xlsx_DEPENDENCIES) @rm -f orcus-xlsx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_xlsx_OBJECTS) $(orcus_xlsx_LDADD) $(LIBS) orcus-xml$(EXEEXT): $(orcus_xml_OBJECTS) $(orcus_xml_DEPENDENCIES) $(EXTRA_orcus_xml_DEPENDENCIES) @rm -f orcus-xml$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_xml_OBJECTS) $(orcus_xml_LDADD) $(LIBS) orcus-xml-dump$(EXEEXT): $(orcus_xml_dump_OBJECTS) $(orcus_xml_dump_DEPENDENCIES) $(EXTRA_orcus_xml_dump_DEPENDENCIES) @rm -f orcus-xml-dump$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_xml_dump_OBJECTS) $(orcus_xml_dump_LDADD) $(LIBS) orcus-zip-dump$(EXEEXT): $(orcus_zip_dump_OBJECTS) $(orcus_zip_dump_DEPENDENCIES) $(EXTRA_orcus_zip_dump_DEPENDENCIES) @rm -f orcus-zip-dump$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_zip_dump_OBJECTS) $(orcus_zip_dump_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_css_dump-orcus_css_dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_csv-orcus_csv_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_csv-orcus_filter_global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_detect-orcus_detect_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric-orcus_filter_global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_gnumeric-orcus_gnumeric_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_mso_encryption-orcus_mso_encryption.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_ods-orcus_filter_global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_ods-orcus_ods_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_common-orcus_test_common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_csv-orcus_test_csv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_ods-orcus_test_ods.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_xls_xml-orcus_test_xls_xml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_xlsx-orcus_test_xlsx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_xml-orcus_test_xml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_xml_mapped-dom_tree_sax_handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_xml_mapped-orcus_test_xml_mapped.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_test_xml_mapped-xml_map_sax_handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xls_xml-orcus_filter_global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xls_xml-orcus_xls_xml_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx-orcus_filter_global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xlsx-orcus_xlsx_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xml-orcus_xml_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xml-xml_map_sax_handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xml_dump-dom_tree_sax_handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_xml_dump-orcus_xml_dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_zip_dump-orcus_zip_dump.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< orcus_css_dump-orcus_css_dump.o: orcus_css_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_css_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_css_dump-orcus_css_dump.o -MD -MP -MF $(DEPDIR)/orcus_css_dump-orcus_css_dump.Tpo -c -o orcus_css_dump-orcus_css_dump.o `test -f 'orcus_css_dump.cpp' || echo '$(srcdir)/'`orcus_css_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_css_dump-orcus_css_dump.Tpo $(DEPDIR)/orcus_css_dump-orcus_css_dump.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_css_dump.cpp' object='orcus_css_dump-orcus_css_dump.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_css_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_css_dump-orcus_css_dump.o `test -f 'orcus_css_dump.cpp' || echo '$(srcdir)/'`orcus_css_dump.cpp orcus_css_dump-orcus_css_dump.obj: orcus_css_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_css_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_css_dump-orcus_css_dump.obj -MD -MP -MF $(DEPDIR)/orcus_css_dump-orcus_css_dump.Tpo -c -o orcus_css_dump-orcus_css_dump.obj `if test -f 'orcus_css_dump.cpp'; then $(CYGPATH_W) 'orcus_css_dump.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_css_dump.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_css_dump-orcus_css_dump.Tpo $(DEPDIR)/orcus_css_dump-orcus_css_dump.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_css_dump.cpp' object='orcus_css_dump-orcus_css_dump.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_css_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_css_dump-orcus_css_dump.obj `if test -f 'orcus_css_dump.cpp'; then $(CYGPATH_W) 'orcus_css_dump.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_css_dump.cpp'; fi` orcus_csv-orcus_filter_global.o: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_csv-orcus_filter_global.o -MD -MP -MF $(DEPDIR)/orcus_csv-orcus_filter_global.Tpo -c -o orcus_csv-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_csv-orcus_filter_global.Tpo $(DEPDIR)/orcus_csv-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_csv-orcus_filter_global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_csv-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp orcus_csv-orcus_filter_global.obj: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_csv-orcus_filter_global.obj -MD -MP -MF $(DEPDIR)/orcus_csv-orcus_filter_global.Tpo -c -o orcus_csv-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_csv-orcus_filter_global.Tpo $(DEPDIR)/orcus_csv-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_csv-orcus_filter_global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_csv-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` orcus_csv-orcus_csv_main.o: orcus_csv_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_csv-orcus_csv_main.o -MD -MP -MF $(DEPDIR)/orcus_csv-orcus_csv_main.Tpo -c -o orcus_csv-orcus_csv_main.o `test -f 'orcus_csv_main.cpp' || echo '$(srcdir)/'`orcus_csv_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_csv-orcus_csv_main.Tpo $(DEPDIR)/orcus_csv-orcus_csv_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_csv_main.cpp' object='orcus_csv-orcus_csv_main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_csv-orcus_csv_main.o `test -f 'orcus_csv_main.cpp' || echo '$(srcdir)/'`orcus_csv_main.cpp orcus_csv-orcus_csv_main.obj: orcus_csv_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_csv-orcus_csv_main.obj -MD -MP -MF $(DEPDIR)/orcus_csv-orcus_csv_main.Tpo -c -o orcus_csv-orcus_csv_main.obj `if test -f 'orcus_csv_main.cpp'; then $(CYGPATH_W) 'orcus_csv_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_csv_main.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_csv-orcus_csv_main.Tpo $(DEPDIR)/orcus_csv-orcus_csv_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_csv_main.cpp' object='orcus_csv-orcus_csv_main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_csv-orcus_csv_main.obj `if test -f 'orcus_csv_main.cpp'; then $(CYGPATH_W) 'orcus_csv_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_csv_main.cpp'; fi` orcus_detect-orcus_detect_main.o: orcus_detect_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_detect_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_detect-orcus_detect_main.o -MD -MP -MF $(DEPDIR)/orcus_detect-orcus_detect_main.Tpo -c -o orcus_detect-orcus_detect_main.o `test -f 'orcus_detect_main.cpp' || echo '$(srcdir)/'`orcus_detect_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_detect-orcus_detect_main.Tpo $(DEPDIR)/orcus_detect-orcus_detect_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_detect_main.cpp' object='orcus_detect-orcus_detect_main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_detect_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_detect-orcus_detect_main.o `test -f 'orcus_detect_main.cpp' || echo '$(srcdir)/'`orcus_detect_main.cpp orcus_detect-orcus_detect_main.obj: orcus_detect_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_detect_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_detect-orcus_detect_main.obj -MD -MP -MF $(DEPDIR)/orcus_detect-orcus_detect_main.Tpo -c -o orcus_detect-orcus_detect_main.obj `if test -f 'orcus_detect_main.cpp'; then $(CYGPATH_W) 'orcus_detect_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_detect_main.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_detect-orcus_detect_main.Tpo $(DEPDIR)/orcus_detect-orcus_detect_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_detect_main.cpp' object='orcus_detect-orcus_detect_main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_detect_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_detect-orcus_detect_main.obj `if test -f 'orcus_detect_main.cpp'; then $(CYGPATH_W) 'orcus_detect_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_detect_main.cpp'; fi` orcus_gnumeric-orcus_filter_global.o: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric-orcus_filter_global.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric-orcus_filter_global.Tpo -c -o orcus_gnumeric-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric-orcus_filter_global.Tpo $(DEPDIR)/orcus_gnumeric-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_gnumeric-orcus_filter_global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp orcus_gnumeric-orcus_filter_global.obj: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric-orcus_filter_global.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric-orcus_filter_global.Tpo -c -o orcus_gnumeric-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric-orcus_filter_global.Tpo $(DEPDIR)/orcus_gnumeric-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_gnumeric-orcus_filter_global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` orcus_gnumeric-orcus_gnumeric_main.o: orcus_gnumeric_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric-orcus_gnumeric_main.o -MD -MP -MF $(DEPDIR)/orcus_gnumeric-orcus_gnumeric_main.Tpo -c -o orcus_gnumeric-orcus_gnumeric_main.o `test -f 'orcus_gnumeric_main.cpp' || echo '$(srcdir)/'`orcus_gnumeric_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric-orcus_gnumeric_main.Tpo $(DEPDIR)/orcus_gnumeric-orcus_gnumeric_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_gnumeric_main.cpp' object='orcus_gnumeric-orcus_gnumeric_main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric-orcus_gnumeric_main.o `test -f 'orcus_gnumeric_main.cpp' || echo '$(srcdir)/'`orcus_gnumeric_main.cpp orcus_gnumeric-orcus_gnumeric_main.obj: orcus_gnumeric_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_gnumeric-orcus_gnumeric_main.obj -MD -MP -MF $(DEPDIR)/orcus_gnumeric-orcus_gnumeric_main.Tpo -c -o orcus_gnumeric-orcus_gnumeric_main.obj `if test -f 'orcus_gnumeric_main.cpp'; then $(CYGPATH_W) 'orcus_gnumeric_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_gnumeric_main.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_gnumeric-orcus_gnumeric_main.Tpo $(DEPDIR)/orcus_gnumeric-orcus_gnumeric_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_gnumeric_main.cpp' object='orcus_gnumeric-orcus_gnumeric_main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_gnumeric_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_gnumeric-orcus_gnumeric_main.obj `if test -f 'orcus_gnumeric_main.cpp'; then $(CYGPATH_W) 'orcus_gnumeric_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_gnumeric_main.cpp'; fi` orcus_mso_encryption-orcus_mso_encryption.o: orcus_mso_encryption.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_mso_encryption_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_mso_encryption-orcus_mso_encryption.o -MD -MP -MF $(DEPDIR)/orcus_mso_encryption-orcus_mso_encryption.Tpo -c -o orcus_mso_encryption-orcus_mso_encryption.o `test -f 'orcus_mso_encryption.cpp' || echo '$(srcdir)/'`orcus_mso_encryption.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_mso_encryption-orcus_mso_encryption.Tpo $(DEPDIR)/orcus_mso_encryption-orcus_mso_encryption.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_mso_encryption.cpp' object='orcus_mso_encryption-orcus_mso_encryption.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_mso_encryption_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_mso_encryption-orcus_mso_encryption.o `test -f 'orcus_mso_encryption.cpp' || echo '$(srcdir)/'`orcus_mso_encryption.cpp orcus_mso_encryption-orcus_mso_encryption.obj: orcus_mso_encryption.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_mso_encryption_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_mso_encryption-orcus_mso_encryption.obj -MD -MP -MF $(DEPDIR)/orcus_mso_encryption-orcus_mso_encryption.Tpo -c -o orcus_mso_encryption-orcus_mso_encryption.obj `if test -f 'orcus_mso_encryption.cpp'; then $(CYGPATH_W) 'orcus_mso_encryption.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_mso_encryption.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_mso_encryption-orcus_mso_encryption.Tpo $(DEPDIR)/orcus_mso_encryption-orcus_mso_encryption.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_mso_encryption.cpp' object='orcus_mso_encryption-orcus_mso_encryption.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_mso_encryption_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_mso_encryption-orcus_mso_encryption.obj `if test -f 'orcus_mso_encryption.cpp'; then $(CYGPATH_W) 'orcus_mso_encryption.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_mso_encryption.cpp'; fi` orcus_ods-orcus_filter_global.o: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_ods-orcus_filter_global.o -MD -MP -MF $(DEPDIR)/orcus_ods-orcus_filter_global.Tpo -c -o orcus_ods-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_ods-orcus_filter_global.Tpo $(DEPDIR)/orcus_ods-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_ods-orcus_filter_global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_ods-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp orcus_ods-orcus_filter_global.obj: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_ods-orcus_filter_global.obj -MD -MP -MF $(DEPDIR)/orcus_ods-orcus_filter_global.Tpo -c -o orcus_ods-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_ods-orcus_filter_global.Tpo $(DEPDIR)/orcus_ods-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_ods-orcus_filter_global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_ods-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` orcus_ods-orcus_ods_main.o: orcus_ods_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_ods-orcus_ods_main.o -MD -MP -MF $(DEPDIR)/orcus_ods-orcus_ods_main.Tpo -c -o orcus_ods-orcus_ods_main.o `test -f 'orcus_ods_main.cpp' || echo '$(srcdir)/'`orcus_ods_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_ods-orcus_ods_main.Tpo $(DEPDIR)/orcus_ods-orcus_ods_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_ods_main.cpp' object='orcus_ods-orcus_ods_main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_ods-orcus_ods_main.o `test -f 'orcus_ods_main.cpp' || echo '$(srcdir)/'`orcus_ods_main.cpp orcus_ods-orcus_ods_main.obj: orcus_ods_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_ods-orcus_ods_main.obj -MD -MP -MF $(DEPDIR)/orcus_ods-orcus_ods_main.Tpo -c -o orcus_ods-orcus_ods_main.obj `if test -f 'orcus_ods_main.cpp'; then $(CYGPATH_W) 'orcus_ods_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_ods_main.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_ods-orcus_ods_main.Tpo $(DEPDIR)/orcus_ods-orcus_ods_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_ods_main.cpp' object='orcus_ods-orcus_ods_main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_ods-orcus_ods_main.obj `if test -f 'orcus_ods_main.cpp'; then $(CYGPATH_W) 'orcus_ods_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_ods_main.cpp'; fi` orcus_test_common-orcus_test_common.o: orcus_test_common.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_common_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_common-orcus_test_common.o -MD -MP -MF $(DEPDIR)/orcus_test_common-orcus_test_common.Tpo -c -o orcus_test_common-orcus_test_common.o `test -f 'orcus_test_common.cpp' || echo '$(srcdir)/'`orcus_test_common.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_common-orcus_test_common.Tpo $(DEPDIR)/orcus_test_common-orcus_test_common.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_common.cpp' object='orcus_test_common-orcus_test_common.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_common_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_common-orcus_test_common.o `test -f 'orcus_test_common.cpp' || echo '$(srcdir)/'`orcus_test_common.cpp orcus_test_common-orcus_test_common.obj: orcus_test_common.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_common_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_common-orcus_test_common.obj -MD -MP -MF $(DEPDIR)/orcus_test_common-orcus_test_common.Tpo -c -o orcus_test_common-orcus_test_common.obj `if test -f 'orcus_test_common.cpp'; then $(CYGPATH_W) 'orcus_test_common.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_common.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_common-orcus_test_common.Tpo $(DEPDIR)/orcus_test_common-orcus_test_common.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_common.cpp' object='orcus_test_common-orcus_test_common.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_common_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_common-orcus_test_common.obj `if test -f 'orcus_test_common.cpp'; then $(CYGPATH_W) 'orcus_test_common.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_common.cpp'; fi` orcus_test_csv-orcus_test_csv.o: orcus_test_csv.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_csv-orcus_test_csv.o -MD -MP -MF $(DEPDIR)/orcus_test_csv-orcus_test_csv.Tpo -c -o orcus_test_csv-orcus_test_csv.o `test -f 'orcus_test_csv.cpp' || echo '$(srcdir)/'`orcus_test_csv.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_csv-orcus_test_csv.Tpo $(DEPDIR)/orcus_test_csv-orcus_test_csv.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_csv.cpp' object='orcus_test_csv-orcus_test_csv.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_csv-orcus_test_csv.o `test -f 'orcus_test_csv.cpp' || echo '$(srcdir)/'`orcus_test_csv.cpp orcus_test_csv-orcus_test_csv.obj: orcus_test_csv.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_csv-orcus_test_csv.obj -MD -MP -MF $(DEPDIR)/orcus_test_csv-orcus_test_csv.Tpo -c -o orcus_test_csv-orcus_test_csv.obj `if test -f 'orcus_test_csv.cpp'; then $(CYGPATH_W) 'orcus_test_csv.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_csv.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_csv-orcus_test_csv.Tpo $(DEPDIR)/orcus_test_csv-orcus_test_csv.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_csv.cpp' object='orcus_test_csv-orcus_test_csv.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_csv-orcus_test_csv.obj `if test -f 'orcus_test_csv.cpp'; then $(CYGPATH_W) 'orcus_test_csv.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_csv.cpp'; fi` orcus_test_ods-orcus_test_ods.o: orcus_test_ods.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_ods-orcus_test_ods.o -MD -MP -MF $(DEPDIR)/orcus_test_ods-orcus_test_ods.Tpo -c -o orcus_test_ods-orcus_test_ods.o `test -f 'orcus_test_ods.cpp' || echo '$(srcdir)/'`orcus_test_ods.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_ods-orcus_test_ods.Tpo $(DEPDIR)/orcus_test_ods-orcus_test_ods.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_ods.cpp' object='orcus_test_ods-orcus_test_ods.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_ods-orcus_test_ods.o `test -f 'orcus_test_ods.cpp' || echo '$(srcdir)/'`orcus_test_ods.cpp orcus_test_ods-orcus_test_ods.obj: orcus_test_ods.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_ods-orcus_test_ods.obj -MD -MP -MF $(DEPDIR)/orcus_test_ods-orcus_test_ods.Tpo -c -o orcus_test_ods-orcus_test_ods.obj `if test -f 'orcus_test_ods.cpp'; then $(CYGPATH_W) 'orcus_test_ods.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_ods.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_ods-orcus_test_ods.Tpo $(DEPDIR)/orcus_test_ods-orcus_test_ods.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_ods.cpp' object='orcus_test_ods-orcus_test_ods.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_ods_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_ods-orcus_test_ods.obj `if test -f 'orcus_test_ods.cpp'; then $(CYGPATH_W) 'orcus_test_ods.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_ods.cpp'; fi` orcus_test_xls_xml-orcus_test_xls_xml.o: orcus_test_xls_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xls_xml-orcus_test_xls_xml.o -MD -MP -MF $(DEPDIR)/orcus_test_xls_xml-orcus_test_xls_xml.Tpo -c -o orcus_test_xls_xml-orcus_test_xls_xml.o `test -f 'orcus_test_xls_xml.cpp' || echo '$(srcdir)/'`orcus_test_xls_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xls_xml-orcus_test_xls_xml.Tpo $(DEPDIR)/orcus_test_xls_xml-orcus_test_xls_xml.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xls_xml.cpp' object='orcus_test_xls_xml-orcus_test_xls_xml.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xls_xml-orcus_test_xls_xml.o `test -f 'orcus_test_xls_xml.cpp' || echo '$(srcdir)/'`orcus_test_xls_xml.cpp orcus_test_xls_xml-orcus_test_xls_xml.obj: orcus_test_xls_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xls_xml-orcus_test_xls_xml.obj -MD -MP -MF $(DEPDIR)/orcus_test_xls_xml-orcus_test_xls_xml.Tpo -c -o orcus_test_xls_xml-orcus_test_xls_xml.obj `if test -f 'orcus_test_xls_xml.cpp'; then $(CYGPATH_W) 'orcus_test_xls_xml.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xls_xml.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xls_xml-orcus_test_xls_xml.Tpo $(DEPDIR)/orcus_test_xls_xml-orcus_test_xls_xml.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xls_xml.cpp' object='orcus_test_xls_xml-orcus_test_xls_xml.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xls_xml-orcus_test_xls_xml.obj `if test -f 'orcus_test_xls_xml.cpp'; then $(CYGPATH_W) 'orcus_test_xls_xml.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xls_xml.cpp'; fi` orcus_test_xlsx-orcus_test_xlsx.o: orcus_test_xlsx.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xlsx-orcus_test_xlsx.o -MD -MP -MF $(DEPDIR)/orcus_test_xlsx-orcus_test_xlsx.Tpo -c -o orcus_test_xlsx-orcus_test_xlsx.o `test -f 'orcus_test_xlsx.cpp' || echo '$(srcdir)/'`orcus_test_xlsx.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xlsx-orcus_test_xlsx.Tpo $(DEPDIR)/orcus_test_xlsx-orcus_test_xlsx.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xlsx.cpp' object='orcus_test_xlsx-orcus_test_xlsx.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xlsx-orcus_test_xlsx.o `test -f 'orcus_test_xlsx.cpp' || echo '$(srcdir)/'`orcus_test_xlsx.cpp orcus_test_xlsx-orcus_test_xlsx.obj: orcus_test_xlsx.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xlsx-orcus_test_xlsx.obj -MD -MP -MF $(DEPDIR)/orcus_test_xlsx-orcus_test_xlsx.Tpo -c -o orcus_test_xlsx-orcus_test_xlsx.obj `if test -f 'orcus_test_xlsx.cpp'; then $(CYGPATH_W) 'orcus_test_xlsx.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xlsx.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xlsx-orcus_test_xlsx.Tpo $(DEPDIR)/orcus_test_xlsx-orcus_test_xlsx.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xlsx.cpp' object='orcus_test_xlsx-orcus_test_xlsx.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xlsx-orcus_test_xlsx.obj `if test -f 'orcus_test_xlsx.cpp'; then $(CYGPATH_W) 'orcus_test_xlsx.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xlsx.cpp'; fi` orcus_test_xml-orcus_test_xml.o: orcus_test_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml-orcus_test_xml.o -MD -MP -MF $(DEPDIR)/orcus_test_xml-orcus_test_xml.Tpo -c -o orcus_test_xml-orcus_test_xml.o `test -f 'orcus_test_xml.cpp' || echo '$(srcdir)/'`orcus_test_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml-orcus_test_xml.Tpo $(DEPDIR)/orcus_test_xml-orcus_test_xml.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xml.cpp' object='orcus_test_xml-orcus_test_xml.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml-orcus_test_xml.o `test -f 'orcus_test_xml.cpp' || echo '$(srcdir)/'`orcus_test_xml.cpp orcus_test_xml-orcus_test_xml.obj: orcus_test_xml.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml-orcus_test_xml.obj -MD -MP -MF $(DEPDIR)/orcus_test_xml-orcus_test_xml.Tpo -c -o orcus_test_xml-orcus_test_xml.obj `if test -f 'orcus_test_xml.cpp'; then $(CYGPATH_W) 'orcus_test_xml.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xml.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml-orcus_test_xml.Tpo $(DEPDIR)/orcus_test_xml-orcus_test_xml.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xml.cpp' object='orcus_test_xml-orcus_test_xml.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml-orcus_test_xml.obj `if test -f 'orcus_test_xml.cpp'; then $(CYGPATH_W) 'orcus_test_xml.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xml.cpp'; fi` orcus_test_xml_mapped-xml_map_sax_handler.o: xml_map_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml_mapped-xml_map_sax_handler.o -MD -MP -MF $(DEPDIR)/orcus_test_xml_mapped-xml_map_sax_handler.Tpo -c -o orcus_test_xml_mapped-xml_map_sax_handler.o `test -f 'xml_map_sax_handler.cpp' || echo '$(srcdir)/'`xml_map_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml_mapped-xml_map_sax_handler.Tpo $(DEPDIR)/orcus_test_xml_mapped-xml_map_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_map_sax_handler.cpp' object='orcus_test_xml_mapped-xml_map_sax_handler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml_mapped-xml_map_sax_handler.o `test -f 'xml_map_sax_handler.cpp' || echo '$(srcdir)/'`xml_map_sax_handler.cpp orcus_test_xml_mapped-xml_map_sax_handler.obj: xml_map_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml_mapped-xml_map_sax_handler.obj -MD -MP -MF $(DEPDIR)/orcus_test_xml_mapped-xml_map_sax_handler.Tpo -c -o orcus_test_xml_mapped-xml_map_sax_handler.obj `if test -f 'xml_map_sax_handler.cpp'; then $(CYGPATH_W) 'xml_map_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_map_sax_handler.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml_mapped-xml_map_sax_handler.Tpo $(DEPDIR)/orcus_test_xml_mapped-xml_map_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_map_sax_handler.cpp' object='orcus_test_xml_mapped-xml_map_sax_handler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml_mapped-xml_map_sax_handler.obj `if test -f 'xml_map_sax_handler.cpp'; then $(CYGPATH_W) 'xml_map_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_map_sax_handler.cpp'; fi` orcus_test_xml_mapped-dom_tree_sax_handler.o: dom_tree_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml_mapped-dom_tree_sax_handler.o -MD -MP -MF $(DEPDIR)/orcus_test_xml_mapped-dom_tree_sax_handler.Tpo -c -o orcus_test_xml_mapped-dom_tree_sax_handler.o `test -f 'dom_tree_sax_handler.cpp' || echo '$(srcdir)/'`dom_tree_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml_mapped-dom_tree_sax_handler.Tpo $(DEPDIR)/orcus_test_xml_mapped-dom_tree_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_tree_sax_handler.cpp' object='orcus_test_xml_mapped-dom_tree_sax_handler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml_mapped-dom_tree_sax_handler.o `test -f 'dom_tree_sax_handler.cpp' || echo '$(srcdir)/'`dom_tree_sax_handler.cpp orcus_test_xml_mapped-dom_tree_sax_handler.obj: dom_tree_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml_mapped-dom_tree_sax_handler.obj -MD -MP -MF $(DEPDIR)/orcus_test_xml_mapped-dom_tree_sax_handler.Tpo -c -o orcus_test_xml_mapped-dom_tree_sax_handler.obj `if test -f 'dom_tree_sax_handler.cpp'; then $(CYGPATH_W) 'dom_tree_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_tree_sax_handler.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml_mapped-dom_tree_sax_handler.Tpo $(DEPDIR)/orcus_test_xml_mapped-dom_tree_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_tree_sax_handler.cpp' object='orcus_test_xml_mapped-dom_tree_sax_handler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml_mapped-dom_tree_sax_handler.obj `if test -f 'dom_tree_sax_handler.cpp'; then $(CYGPATH_W) 'dom_tree_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_tree_sax_handler.cpp'; fi` orcus_test_xml_mapped-orcus_test_xml_mapped.o: orcus_test_xml_mapped.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml_mapped-orcus_test_xml_mapped.o -MD -MP -MF $(DEPDIR)/orcus_test_xml_mapped-orcus_test_xml_mapped.Tpo -c -o orcus_test_xml_mapped-orcus_test_xml_mapped.o `test -f 'orcus_test_xml_mapped.cpp' || echo '$(srcdir)/'`orcus_test_xml_mapped.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml_mapped-orcus_test_xml_mapped.Tpo $(DEPDIR)/orcus_test_xml_mapped-orcus_test_xml_mapped.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xml_mapped.cpp' object='orcus_test_xml_mapped-orcus_test_xml_mapped.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml_mapped-orcus_test_xml_mapped.o `test -f 'orcus_test_xml_mapped.cpp' || echo '$(srcdir)/'`orcus_test_xml_mapped.cpp orcus_test_xml_mapped-orcus_test_xml_mapped.obj: orcus_test_xml_mapped.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_test_xml_mapped-orcus_test_xml_mapped.obj -MD -MP -MF $(DEPDIR)/orcus_test_xml_mapped-orcus_test_xml_mapped.Tpo -c -o orcus_test_xml_mapped-orcus_test_xml_mapped.obj `if test -f 'orcus_test_xml_mapped.cpp'; then $(CYGPATH_W) 'orcus_test_xml_mapped.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xml_mapped.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_test_xml_mapped-orcus_test_xml_mapped.Tpo $(DEPDIR)/orcus_test_xml_mapped-orcus_test_xml_mapped.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_test_xml_mapped.cpp' object='orcus_test_xml_mapped-orcus_test_xml_mapped.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_test_xml_mapped_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_test_xml_mapped-orcus_test_xml_mapped.obj `if test -f 'orcus_test_xml_mapped.cpp'; then $(CYGPATH_W) 'orcus_test_xml_mapped.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_test_xml_mapped.cpp'; fi` orcus_xls_xml-orcus_filter_global.o: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xls_xml-orcus_filter_global.o -MD -MP -MF $(DEPDIR)/orcus_xls_xml-orcus_filter_global.Tpo -c -o orcus_xls_xml-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xls_xml-orcus_filter_global.Tpo $(DEPDIR)/orcus_xls_xml-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_xls_xml-orcus_filter_global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xls_xml-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp orcus_xls_xml-orcus_filter_global.obj: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xls_xml-orcus_filter_global.obj -MD -MP -MF $(DEPDIR)/orcus_xls_xml-orcus_filter_global.Tpo -c -o orcus_xls_xml-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xls_xml-orcus_filter_global.Tpo $(DEPDIR)/orcus_xls_xml-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_xls_xml-orcus_filter_global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xls_xml-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` orcus_xls_xml-orcus_xls_xml_main.o: orcus_xls_xml_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xls_xml-orcus_xls_xml_main.o -MD -MP -MF $(DEPDIR)/orcus_xls_xml-orcus_xls_xml_main.Tpo -c -o orcus_xls_xml-orcus_xls_xml_main.o `test -f 'orcus_xls_xml_main.cpp' || echo '$(srcdir)/'`orcus_xls_xml_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xls_xml-orcus_xls_xml_main.Tpo $(DEPDIR)/orcus_xls_xml-orcus_xls_xml_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xls_xml_main.cpp' object='orcus_xls_xml-orcus_xls_xml_main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xls_xml-orcus_xls_xml_main.o `test -f 'orcus_xls_xml_main.cpp' || echo '$(srcdir)/'`orcus_xls_xml_main.cpp orcus_xls_xml-orcus_xls_xml_main.obj: orcus_xls_xml_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xls_xml-orcus_xls_xml_main.obj -MD -MP -MF $(DEPDIR)/orcus_xls_xml-orcus_xls_xml_main.Tpo -c -o orcus_xls_xml-orcus_xls_xml_main.obj `if test -f 'orcus_xls_xml_main.cpp'; then $(CYGPATH_W) 'orcus_xls_xml_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xls_xml_main.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xls_xml-orcus_xls_xml_main.Tpo $(DEPDIR)/orcus_xls_xml-orcus_xls_xml_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xls_xml_main.cpp' object='orcus_xls_xml-orcus_xls_xml_main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xls_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xls_xml-orcus_xls_xml_main.obj `if test -f 'orcus_xls_xml_main.cpp'; then $(CYGPATH_W) 'orcus_xls_xml_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xls_xml_main.cpp'; fi` orcus_xlsx-orcus_filter_global.o: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx-orcus_filter_global.o -MD -MP -MF $(DEPDIR)/orcus_xlsx-orcus_filter_global.Tpo -c -o orcus_xlsx-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx-orcus_filter_global.Tpo $(DEPDIR)/orcus_xlsx-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_xlsx-orcus_filter_global.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx-orcus_filter_global.o `test -f 'orcus_filter_global.cpp' || echo '$(srcdir)/'`orcus_filter_global.cpp orcus_xlsx-orcus_filter_global.obj: orcus_filter_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx-orcus_filter_global.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx-orcus_filter_global.Tpo -c -o orcus_xlsx-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx-orcus_filter_global.Tpo $(DEPDIR)/orcus_xlsx-orcus_filter_global.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_filter_global.cpp' object='orcus_xlsx-orcus_filter_global.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx-orcus_filter_global.obj `if test -f 'orcus_filter_global.cpp'; then $(CYGPATH_W) 'orcus_filter_global.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_filter_global.cpp'; fi` orcus_xlsx-orcus_xlsx_main.o: orcus_xlsx_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx-orcus_xlsx_main.o -MD -MP -MF $(DEPDIR)/orcus_xlsx-orcus_xlsx_main.Tpo -c -o orcus_xlsx-orcus_xlsx_main.o `test -f 'orcus_xlsx_main.cpp' || echo '$(srcdir)/'`orcus_xlsx_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx-orcus_xlsx_main.Tpo $(DEPDIR)/orcus_xlsx-orcus_xlsx_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xlsx_main.cpp' object='orcus_xlsx-orcus_xlsx_main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx-orcus_xlsx_main.o `test -f 'orcus_xlsx_main.cpp' || echo '$(srcdir)/'`orcus_xlsx_main.cpp orcus_xlsx-orcus_xlsx_main.obj: orcus_xlsx_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xlsx-orcus_xlsx_main.obj -MD -MP -MF $(DEPDIR)/orcus_xlsx-orcus_xlsx_main.Tpo -c -o orcus_xlsx-orcus_xlsx_main.obj `if test -f 'orcus_xlsx_main.cpp'; then $(CYGPATH_W) 'orcus_xlsx_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xlsx_main.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xlsx-orcus_xlsx_main.Tpo $(DEPDIR)/orcus_xlsx-orcus_xlsx_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xlsx_main.cpp' object='orcus_xlsx-orcus_xlsx_main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xlsx_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xlsx-orcus_xlsx_main.obj `if test -f 'orcus_xlsx_main.cpp'; then $(CYGPATH_W) 'orcus_xlsx_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xlsx_main.cpp'; fi` orcus_xml-xml_map_sax_handler.o: xml_map_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml-xml_map_sax_handler.o -MD -MP -MF $(DEPDIR)/orcus_xml-xml_map_sax_handler.Tpo -c -o orcus_xml-xml_map_sax_handler.o `test -f 'xml_map_sax_handler.cpp' || echo '$(srcdir)/'`xml_map_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml-xml_map_sax_handler.Tpo $(DEPDIR)/orcus_xml-xml_map_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_map_sax_handler.cpp' object='orcus_xml-xml_map_sax_handler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml-xml_map_sax_handler.o `test -f 'xml_map_sax_handler.cpp' || echo '$(srcdir)/'`xml_map_sax_handler.cpp orcus_xml-xml_map_sax_handler.obj: xml_map_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml-xml_map_sax_handler.obj -MD -MP -MF $(DEPDIR)/orcus_xml-xml_map_sax_handler.Tpo -c -o orcus_xml-xml_map_sax_handler.obj `if test -f 'xml_map_sax_handler.cpp'; then $(CYGPATH_W) 'xml_map_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_map_sax_handler.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml-xml_map_sax_handler.Tpo $(DEPDIR)/orcus_xml-xml_map_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_map_sax_handler.cpp' object='orcus_xml-xml_map_sax_handler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml-xml_map_sax_handler.obj `if test -f 'xml_map_sax_handler.cpp'; then $(CYGPATH_W) 'xml_map_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_map_sax_handler.cpp'; fi` orcus_xml-orcus_xml_main.o: orcus_xml_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml-orcus_xml_main.o -MD -MP -MF $(DEPDIR)/orcus_xml-orcus_xml_main.Tpo -c -o orcus_xml-orcus_xml_main.o `test -f 'orcus_xml_main.cpp' || echo '$(srcdir)/'`orcus_xml_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml-orcus_xml_main.Tpo $(DEPDIR)/orcus_xml-orcus_xml_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xml_main.cpp' object='orcus_xml-orcus_xml_main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml-orcus_xml_main.o `test -f 'orcus_xml_main.cpp' || echo '$(srcdir)/'`orcus_xml_main.cpp orcus_xml-orcus_xml_main.obj: orcus_xml_main.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml-orcus_xml_main.obj -MD -MP -MF $(DEPDIR)/orcus_xml-orcus_xml_main.Tpo -c -o orcus_xml-orcus_xml_main.obj `if test -f 'orcus_xml_main.cpp'; then $(CYGPATH_W) 'orcus_xml_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xml_main.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml-orcus_xml_main.Tpo $(DEPDIR)/orcus_xml-orcus_xml_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xml_main.cpp' object='orcus_xml-orcus_xml_main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml-orcus_xml_main.obj `if test -f 'orcus_xml_main.cpp'; then $(CYGPATH_W) 'orcus_xml_main.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xml_main.cpp'; fi` orcus_xml_dump-orcus_xml_dump.o: orcus_xml_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml_dump-orcus_xml_dump.o -MD -MP -MF $(DEPDIR)/orcus_xml_dump-orcus_xml_dump.Tpo -c -o orcus_xml_dump-orcus_xml_dump.o `test -f 'orcus_xml_dump.cpp' || echo '$(srcdir)/'`orcus_xml_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml_dump-orcus_xml_dump.Tpo $(DEPDIR)/orcus_xml_dump-orcus_xml_dump.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xml_dump.cpp' object='orcus_xml_dump-orcus_xml_dump.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml_dump-orcus_xml_dump.o `test -f 'orcus_xml_dump.cpp' || echo '$(srcdir)/'`orcus_xml_dump.cpp orcus_xml_dump-orcus_xml_dump.obj: orcus_xml_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml_dump-orcus_xml_dump.obj -MD -MP -MF $(DEPDIR)/orcus_xml_dump-orcus_xml_dump.Tpo -c -o orcus_xml_dump-orcus_xml_dump.obj `if test -f 'orcus_xml_dump.cpp'; then $(CYGPATH_W) 'orcus_xml_dump.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xml_dump.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml_dump-orcus_xml_dump.Tpo $(DEPDIR)/orcus_xml_dump-orcus_xml_dump.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_xml_dump.cpp' object='orcus_xml_dump-orcus_xml_dump.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml_dump-orcus_xml_dump.obj `if test -f 'orcus_xml_dump.cpp'; then $(CYGPATH_W) 'orcus_xml_dump.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_xml_dump.cpp'; fi` orcus_xml_dump-dom_tree_sax_handler.o: dom_tree_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml_dump-dom_tree_sax_handler.o -MD -MP -MF $(DEPDIR)/orcus_xml_dump-dom_tree_sax_handler.Tpo -c -o orcus_xml_dump-dom_tree_sax_handler.o `test -f 'dom_tree_sax_handler.cpp' || echo '$(srcdir)/'`dom_tree_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml_dump-dom_tree_sax_handler.Tpo $(DEPDIR)/orcus_xml_dump-dom_tree_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_tree_sax_handler.cpp' object='orcus_xml_dump-dom_tree_sax_handler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml_dump-dom_tree_sax_handler.o `test -f 'dom_tree_sax_handler.cpp' || echo '$(srcdir)/'`dom_tree_sax_handler.cpp orcus_xml_dump-dom_tree_sax_handler.obj: dom_tree_sax_handler.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_xml_dump-dom_tree_sax_handler.obj -MD -MP -MF $(DEPDIR)/orcus_xml_dump-dom_tree_sax_handler.Tpo -c -o orcus_xml_dump-dom_tree_sax_handler.obj `if test -f 'dom_tree_sax_handler.cpp'; then $(CYGPATH_W) 'dom_tree_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_tree_sax_handler.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_xml_dump-dom_tree_sax_handler.Tpo $(DEPDIR)/orcus_xml_dump-dom_tree_sax_handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_tree_sax_handler.cpp' object='orcus_xml_dump-dom_tree_sax_handler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_xml_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_xml_dump-dom_tree_sax_handler.obj `if test -f 'dom_tree_sax_handler.cpp'; then $(CYGPATH_W) 'dom_tree_sax_handler.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_tree_sax_handler.cpp'; fi` orcus_zip_dump-orcus_zip_dump.o: orcus_zip_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_zip_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_zip_dump-orcus_zip_dump.o -MD -MP -MF $(DEPDIR)/orcus_zip_dump-orcus_zip_dump.Tpo -c -o orcus_zip_dump-orcus_zip_dump.o `test -f 'orcus_zip_dump.cpp' || echo '$(srcdir)/'`orcus_zip_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_zip_dump-orcus_zip_dump.Tpo $(DEPDIR)/orcus_zip_dump-orcus_zip_dump.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_zip_dump.cpp' object='orcus_zip_dump-orcus_zip_dump.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_zip_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_zip_dump-orcus_zip_dump.o `test -f 'orcus_zip_dump.cpp' || echo '$(srcdir)/'`orcus_zip_dump.cpp orcus_zip_dump-orcus_zip_dump.obj: orcus_zip_dump.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_zip_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_zip_dump-orcus_zip_dump.obj -MD -MP -MF $(DEPDIR)/orcus_zip_dump-orcus_zip_dump.Tpo -c -o orcus_zip_dump-orcus_zip_dump.obj `if test -f 'orcus_zip_dump.cpp'; then $(CYGPATH_W) 'orcus_zip_dump.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_zip_dump.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_zip_dump-orcus_zip_dump.Tpo $(DEPDIR)/orcus_zip_dump-orcus_zip_dump.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='orcus_zip_dump.cpp' object='orcus_zip_dump-orcus_zip_dump.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_zip_dump_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_zip_dump-orcus_zip_dump.obj `if test -f 'orcus_zip_dump.cpp'; then $(CYGPATH_W) 'orcus_zip_dump.cpp'; else $(CYGPATH_W) '$(srcdir)/orcus_zip_dump.cpp'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ else \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? orcus-test-common.log: orcus-test-common$(EXEEXT) @p='orcus-test-common$(EXEEXT)'; \ b='orcus-test-common'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-test-xml.log: orcus-test-xml$(EXEEXT) @p='orcus-test-xml$(EXEEXT)'; \ b='orcus-test-xml'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-test-csv.log: orcus-test-csv$(EXEEXT) @p='orcus-test-csv$(EXEEXT)'; \ b='orcus-test-csv'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-test-xml-mapped.log: orcus-test-xml-mapped$(EXEEXT) @p='orcus-test-xml-mapped$(EXEEXT)'; \ b='orcus-test-xml-mapped'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-test-ods.log: orcus-test-ods$(EXEEXT) @p='orcus-test-ods$(EXEEXT)'; \ b='orcus-test-ods'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-test-xlsx.log: orcus-test-xlsx$(EXEEXT) @p='orcus-test-xlsx$(EXEEXT)'; \ b='orcus-test-xlsx'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-test-xls-xml.log: orcus-test-xls-xml$(EXEEXT) @p='orcus-test-xls-xml$(EXEEXT)'; \ b='orcus-test-xls-xml'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-TESTS check-am clean clean-binPROGRAMS clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-local distclean-tags distdir dvi dvi-am html html-am \ info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS distclean-local: rm -rf $(TESTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/src/Makefile.am0000644000175000017500000002070512535701142014637 0ustar renereneSUBDIRS = parser mso liborcus spreadsheet AM_CPPFLAGS = -I$(top_srcdir)/include bin_PROGRAMS = EXTRA_PROGRAMS = \ orcus-test-common \ orcus-test-xml AM_CPPFLAGS += $(BOOST_SYSTEM_CFLAGS) if HAVE_STATIC_LIB AM_CPPFLAGS += -D__ORCUS_STATIC_LIB=1 endif # orcus-test-common orcus_test_common_SOURCES = orcus_test_common.cpp orcus_test_common_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la orcus_test_common_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-test-xml orcus_test_xml_SOURCES = orcus_test_xml.cpp orcus_test_xml_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la orcus_test_xml_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" TESTS = \ orcus-test-common \ orcus-test-xml if WITH_TOOLS bin_PROGRAMS += \ orcus-css-dump \ orcus-zip-dump \ orcus-xml-dump \ orcus-mso-encryption \ orcus-detect # orcus-css-dump orcus_css_dump_SOURCES = \ orcus_css_dump.cpp orcus_css_dump_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la orcus_css_dump_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-zip-dump orcus_zip_dump_SOURCES = \ orcus_zip_dump.cpp orcus_zip_dump_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_zip_dump_CPPFLAGS = $(AM_CPPFLAGS) # orcus-xml-dump orcus_xml_dump_SOURCES = \ orcus_xml_dump.cpp \ dom_tree_sax_handler.hpp \ dom_tree_sax_handler.cpp orcus_xml_dump_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la orcus_xml_dump_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) #---------------------------------------------------------------------------- # orcus-mso-encryption orcus_mso_encryption_SOURCES = orcus_mso_encryption.cpp orcus_mso_encryption_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ mso/liborcus-mso-@ORCUS_API_VERSION@.la \ $(BOOST_SYSTEM_LIB) orcus_mso_encryption_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) #---------------------------------------------------------------------------- # orcus-detect orcus_detect_SOURCES = orcus_detect_main.cpp orcus_detect_LDADD = \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ $(BOOST_PROGRAM_OPTIONS_LIBS) \ $(BOOST_FILESYSTEM_LIBS) \ $(BOOST_SYSTEM_LIBS) orcus_detect_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) #---------------------------------------------------------------------------- if BUILD_SPREADSHEET_MODEL bin_PROGRAMS += \ orcus-csv orcus-xml # orcus-csv orcus_csv_SOURCES = \ orcus_filter_global.hpp \ orcus_filter_global.cpp \ orcus_csv_main.cpp orcus_csv_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ $(BOOST_PROGRAM_OPTIONS_LIBS) \ $(BOOST_FILESYSTEM_LIBS) \ $(BOOST_SYSTEM_LIBS) orcus_csv_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) # orcus-xml orcus_xml_SOURCES = \ xml_map_sax_handler.cpp \ orcus_xml_main.cpp orcus_xml_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ $(BOOST_PROGRAM_OPTIONS_LIBS) \ $(BOOST_FILESYSTEM_LIBS) \ $(BOOST_SYSTEM_LIBS) orcus_xml_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) if WITH_ODS_FILTER bin_PROGRAMS += \ orcus-ods # orcus-ods orcus_ods_SOURCES = \ orcus_filter_global.hpp \ orcus_filter_global.cpp \ orcus_ods_main.cpp orcus_ods_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ $(BOOST_PROGRAM_OPTIONS_LIBS) \ $(BOOST_FILESYSTEM_LIBS) \ $(BOOST_SYSTEM_LIBS) orcus_ods_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) endif # WITH_ODS_FILTER if WITH_XLSX_FILTER bin_PROGRAMS += \ orcus-xlsx # orcus-xlsx orcus_xlsx_SOURCES = \ orcus_filter_global.hpp \ orcus_filter_global.cpp \ orcus_xlsx_main.cpp orcus_xlsx_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ $(BOOST_PROGRAM_OPTIONS_LIBS) \ $(BOOST_FILESYSTEM_LIBS) \ $(BOOST_SYSTEM_LIBS) orcus_xlsx_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) endif # WITH_XLSX_FILTER if WITH_XLS_XML_FILTER bin_PROGRAMS += \ orcus-xls-xml # orcus-xls-xml orcus_xls_xml_SOURCES = \ orcus_filter_global.hpp \ orcus_filter_global.cpp \ orcus_xls_xml_main.cpp orcus_xls_xml_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ $(BOOST_PROGRAM_OPTIONS_LIBS) \ $(BOOST_FILESYSTEM_LIBS) \ $(BOOST_SYSTEM_LIBS) orcus_xls_xml_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) endif # WITH_XLS_XML_FILTER if WITH_GNUMERIC_FILTER bin_PROGRAMS += \ orcus-gnumeric # orcus-gnumeric orcus_gnumeric_SOURCES = \ orcus_filter_global.hpp \ orcus_filter_global.cpp \ orcus_gnumeric_main.cpp orcus_gnumeric_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ $(BOOST_PROGRAM_OPTIONS_LIBS) \ $(BOOST_FILESYSTEM_LIBS) \ $(BOOST_SYSTEM_LIBS) orcus_gnumeric_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) endif # WITH_GNUMERIC_FILTER endif # BUILD_SPREADSHEET_MODEL endif # WITH_TOOLS #---------------------------------------------------------------------------- # Orcus Filter Tests #---------------------------------------------------------------------------- if BUILD_SPREADSHEET_MODEL EXTRA_PROGRAMS += \ orcus-test-csv \ orcus-test-xml-mapped # orcus-test-csv orcus_test_csv_SOURCES = orcus_test_csv.cpp orcus_test_csv_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la orcus_test_csv_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" # orcus-test-xml-mapped orcus_test_xml_mapped_SOURCES = \ xml_map_sax_handler.cpp \ xml_map_sax_handler.hpp \ dom_tree_sax_handler.cpp \ dom_tree_sax_handler.hpp \ orcus_test_xml_mapped.cpp orcus_test_xml_mapped_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la orcus_test_xml_mapped_CPPFLAGS = -I$(top_builddir)/lib/liborcus/liborcus.la $(AM_CPPFLAGS) -DSRCDIR=\""$(top_srcdir)"\" TESTS += \ orcus-test-csv \ orcus-test-xml-mapped if WITH_ODS_FILTER EXTRA_PROGRAMS += \ orcus-test-ods # orcus-test-ods orcus_test_ods_SOURCES = \ orcus_test_ods.cpp orcus_test_ods_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la orcus_test_ods_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/lib/liborcus/liborcus.la -DSRCDIR=\""$(top_srcdir)"\" TESTS += orcus-test-ods endif # WITH_ODS_FILTER if WITH_XLSX_FILTER EXTRA_PROGRAMS += \ orcus-test-xlsx # orcus-test-xlsx orcus_test_xlsx_SOURCES = \ orcus_test_xlsx.cpp orcus_test_xlsx_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la \ @LIBIXION_LIBS@ orcus_test_xlsx_CPPFLAGS = \ @LIBIXION_CFLAGS@ $(AM_CPPFLAGS) \ -I$(top_builddir)/lib/liborcus/liborcus.la -DSRCDIR=\""$(top_srcdir)"\" TESTS += \ orcus-test-xlsx endif # WITH_XLSX_FILTER if WITH_XLS_XML_FILTER EXTRA_PROGRAMS += orcus-test-xls-xml # orcus-test-xls-xml orcus_test_xls_xml_SOURCES = \ orcus_test_xls_xml.cpp orcus_test_xls_xml_LDADD = \ liborcus/liborcus-@ORCUS_API_VERSION@.la \ parser/liborcus-parser-@ORCUS_API_VERSION@.la \ spreadsheet/liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la orcus_test_xls_xml_CPPFLAGS = \ @LIBIXION_CFLAGS@ $(AM_CPPFLAGS) \ -I$(top_builddir)/lib/liborcus/liborcus.la -DSRCDIR=\""$(top_srcdir)"\" TESTS += \ orcus-test-xls-xml endif # WITH_XLS_XML_FILTER endif # BUILD_SPREADSHEET_MODEL distclean-local: rm -rf $(TESTS) liborcus-0.9.2/src/orcus_xls_xml_main.cpp0000644000175000017500000000140412535701143017210 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xls_xml.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus_filter_global.hpp" using namespace orcus; int main(int argc, char** argv) { spreadsheet::document doc; spreadsheet::import_factory fact(doc); orcus_xls_xml app(&fact); if (parse_import_filter_args(app, doc, argc, argv)) return EXIT_FAILURE; return EXIT_SUCCESS; }/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_css_dump.cpp0000644000175000017500000000126712535701143016342 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/css_document_tree.hpp" #include "orcus/stream.hpp" int main(int argc, char** argv) { if (argc < 2) return EXIT_FAILURE; const char* filepath = argv[1]; std::string strm; orcus::load_file_content(filepath, strm); orcus::css_document_tree doc; doc.load(strm); doc.dump(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_ods_main.cpp0000644000175000017500000000144612535701143016315 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_ods.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus_filter_global.hpp" #include using namespace std; using namespace orcus; int main(int argc, char** argv) { spreadsheet::document doc; spreadsheet::import_factory fact(doc); orcus_ods app(&fact); if (parse_import_filter_args(app, doc, argc, argv)) return EXIT_FAILURE; return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_xml_main.cpp0000644000175000017500000000636412535701143016334 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xml.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include "xml_map_sax_handler.hpp" #include #include #include #include using namespace orcus; using namespace std; namespace { void print_help() { cout << "Usage: orcus-xml --mode=MODE [map file] [data file] [output file (optional)]" << endl; cout << endl; cout << "The MODE must be one of dump, transform, or dump-check." << endl; } enum output_mode { unknown, dump_document, transform_xml, dump_document_check }; output_mode parse_mode(const char* s) { const char* prefix = "--mode="; size_t prefix_size = strlen(prefix); const char* p_value = NULL; size_t value_size = 0; for (size_t i = 0, n = strlen(s); i < n; ++i, ++s) { if (i < prefix_size) { if (*s != prefix[i]) // Required prefix is not present. return unknown; continue; } if (!p_value) p_value = s; ++value_size; } if (value_size == 4 && strncmp(p_value, "dump", 4) == 0) return dump_document; if (value_size == 9 && strncmp(p_value, "transform", 9) == 0) return transform_xml; if (value_size == 10 && strncmp(p_value, "dump-check", 10) == 0) return dump_document_check; return unknown; } } int main(int argc, char** argv) { if (argc < 4) { print_help(); return EXIT_FAILURE; } // Parse the mode. output_mode mode = parse_mode(argv[1]); if (mode == unknown) { cerr << "unknown mode" << endl; print_help(); return EXIT_FAILURE; } spreadsheet::document doc; spreadsheet::import_factory import_fact(doc); spreadsheet::export_factory export_fact(doc); xmlns_repository repo; orcus_xml app(repo, &import_fact, &export_fact); read_map_file(app, argv[2]); app.read_file(argv[3]); switch (mode) { case dump_document: doc.dump_flat("./flat"); break; case transform_xml: { if (argc <= 4) { cout << "output xml file name not provided" << endl; print_help(); return EXIT_FAILURE; } // Write transformed xml content to file. app.write_file(argv[4]); } break; case dump_document_check: { if (argc <= 4) { doc.dump_check(cout); break; } ofstream file(argv[4]); if (!file) { cerr << "failed to create output file: " << argv[4] << endl; return EXIT_FAILURE; } doc.dump_check(file); } break; default: ; } return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_csv_main.cpp0000644000175000017500000000144612535701143016323 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_csv.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus_filter_global.hpp" #include using namespace std; using namespace orcus; int main(int argc, char** argv) { spreadsheet::document doc; spreadsheet::import_factory fact(doc); orcus_csv app(&fact); if (parse_import_filter_args(app, doc, argc, argv)) return EXIT_FAILURE; return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/xml_map_sax_handler.cpp0000644000175000017500000000745512535701144017325 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "xml_map_sax_handler.hpp" #include "orcus/spreadsheet/types.hpp" #include "orcus/orcus_xml.hpp" #include "orcus/global.hpp" #include "orcus/sax_parser.hpp" #include "orcus/stream.hpp" using namespace std; namespace orcus { xml_map_sax_handler::scope::scope(const pstring& _ns, const pstring& _name) : ns(_ns), name(_name) {} xml_map_sax_handler::xml_map_sax_handler(orcus_xml& app) : m_app(app) {} void xml_map_sax_handler::doctype(const sax::doctype_declaration& dtd) { } void xml_map_sax_handler::start_declaration(const pstring& name) { } void xml_map_sax_handler::end_declaration(const pstring& name) { m_attrs.clear(); } void xml_map_sax_handler::start_element(const sax::parser_element& elem) { pstring xpath, sheet; spreadsheet::row_t row = -1; spreadsheet::col_t col = -1; vector::const_iterator it = m_attrs.begin(), it_end = m_attrs.end(); if (elem.name == "ns") { // empty alias is associated with default namespace. pstring alias, uri; for (; it != it_end; ++it) { if (it->name == "alias") alias = it->value; else if (it->name == "uri") uri = it->value; } if (!uri.empty()) m_app.set_namespace_alias(alias, uri); } else if (elem.name == "cell") { for (; it != it_end; ++it) { if (it->name == "xpath") xpath = it->value; else if (it->name == "sheet") sheet = it->value; else if (it->name == "row") row = strtol(it->value.get(), NULL, 10); else if (it->name == "column") col = strtol(it->value.get(), NULL, 10); } m_app.set_cell_link(xpath, sheet, row, col); } else if (elem.name == "range") { for (; it != it_end; ++it) { if (it->name == "sheet") sheet = it->value; else if (it->name == "row") row = strtol(it->value.get(), NULL, 10); else if (it->name == "column") col = strtol(it->value.get(), NULL, 10); } m_app.start_range(sheet, row, col); } else if (elem.name == "field") { for (; it != it_end; ++it) { if (it->name == "xpath") { xpath = it->value; break; } } m_app.append_field_link(xpath); } else if (elem.name == "sheet") { pstring sheet_name; for (; it != it_end; ++it) { if (it->name == "name") { sheet_name = it->value; break; } } if (!sheet_name.empty()) m_app.append_sheet(sheet_name); } m_scopes.push_back(scope(elem.ns, elem.name)); m_attrs.clear(); } void xml_map_sax_handler::end_element(const sax::parser_element& elem) { if (elem.name == "range") m_app.commit_range(); m_scopes.pop_back(); } void xml_map_sax_handler::characters(const pstring&, bool) {} void xml_map_sax_handler::attribute(const sax::parser_attribute& attr) { m_attrs.push_back(attr); } void read_map_file(orcus_xml& app, const char* filepath) { string strm; load_file_content(filepath, strm); if (strm.empty()) return; xml_map_sax_handler handler(app); sax_parser parser(strm.c_str(), strm.size(), handler); parser.parse(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_test_ods.cpp0000644000175000017500000001730412535701143016350 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_ods.hpp" #include "orcus/pstring.hpp" #include "orcus/global.hpp" #include "orcus/stream.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/sheet.hpp" #include "orcus/spreadsheet/shared_strings.hpp" #include "orcus/spreadsheet/styles.hpp" #include #include #include #include #include #include using namespace orcus; using namespace orcus::spreadsheet; using namespace std; typedef mdds::flat_segment_tree bool_segment_type; namespace { const char* dirs[] = { SRCDIR"/test/ods/raw-values-1/", SRCDIR"/test/ods/formula-1/", }; void test_ods_import_cell_values() { size_t n = sizeof(dirs)/sizeof(dirs[0]); for (size_t i = 0; i < n; ++i) { const char* dir = dirs[i]; string path(dir); // Read the input.ods document. path.append("input.ods"); spreadsheet::document doc; spreadsheet::import_factory factory(doc); orcus_ods app(&factory); app.read_file(path.c_str()); // Dump the content of the model. ostringstream os; doc.dump_check(os); string check = os.str(); // Check that against known control. path = dir; path.append("check.txt"); string control; load_file_content(path.c_str(), control); assert(!check.empty()); assert(!control.empty()); pstring s1(&check[0], check.size()), s2(&control[0], control.size()); assert(s1.trim() == s2.trim()); } } void test_ods_import_column_widths_row_heights() { const char* filepath = SRCDIR"/test/ods/column-width-row-height/input.ods"; document doc; import_factory factory(doc); orcus_ods app(&factory); app.read_file(filepath); assert(doc.sheet_size() > 0); spreadsheet::sheet* sh = doc.get_sheet(0); assert(sh); // Column widths are in twips. col_width_t cw = sh->get_col_width(1, NULL, NULL); assert(cw == 1440); // 1 in cw = sh->get_col_width(2, NULL, NULL); assert(cw == 2160); // 1.5 in cw = sh->get_col_width(3, NULL, NULL); assert(cw == 2592); // 1.8 in // Row heights are in twips too. row_height_t rh = sh->get_row_height(3, NULL, NULL); assert(rh == 720); // 0.5 in rh = sh->get_row_height(4, NULL, NULL); assert(rh == 1440); // 1 in rh = sh->get_row_height(5, NULL, NULL); assert(rh == 2160); // 1.5 in rh = sh->get_row_height(6, NULL, NULL); assert(rh == 2592); // 1.8 in } void test_ods_import_formatted_text() { const char* filepath = SRCDIR"/test/ods/formatted-text/bold-and-italic.ods"; document doc; import_factory factory(doc); orcus_ods app(&factory); app.read_file(filepath); assert(doc.sheet_size() > 0); spreadsheet::sheet* sh = doc.get_sheet(0); assert(sh); const import_shared_strings* ss = doc.get_shared_strings(); assert(ss); const import_styles* styles = doc.get_styles(); assert(styles); // A1 is unformatted size_t str_id = sh->get_string_identifier(0,0); const string* str = ss->get_string(str_id); assert(str && *str == "Normal Text"); size_t xfid = sh->get_cell_format(0,0); assert(xfid == 0); // ID of 0 represents default format. const format_runs_t* fmt = ss->get_format_runs(str_id); assert(!fmt); // The string should be unformatted. // A2 is all bold via cell format. str_id = sh->get_string_identifier(1,0); str = ss->get_string(str_id); assert(str && *str == "Bold Text"); xfid = sh->get_cell_format(1,0); const cell_format_t* xf = styles->get_cell_format(xfid); assert(xf); const font_t* font_data = styles->get_font(xf->font); assert(font_data && font_data->bold && !font_data->italic); fmt = ss->get_format_runs(str_id); assert(!fmt); // This string should be unformatted. // A3 is all italic. str_id = sh->get_string_identifier(2,0); str = ss->get_string(str_id); assert(str && *str == "Italic Text"); xfid = sh->get_cell_format(2,0); xf = styles->get_cell_format(xfid); assert(xf); font_data = styles->get_font(xf->font); assert(font_data && !font_data->bold && font_data->italic); fmt = ss->get_format_runs(str_id); assert(!fmt); // This string should be unformatted. // A4 is all bolid and italic. str_id = sh->get_string_identifier(3,0); str = ss->get_string(str_id); assert(str && *str == "Bold and Italic Text"); xfid = sh->get_cell_format(3,0); xf = styles->get_cell_format(xfid); assert(xf); font_data = styles->get_font(xf->font); assert(font_data && font_data->bold && font_data->italic); fmt = ss->get_format_runs(str_id); assert(!fmt); // This string should be unformatted. // A5 has mixed format runs. str_id = sh->get_string_identifier(4,0); str = ss->get_string(str_id); assert(str && *str == "Bold and Italic mixed"); xfid = sh->get_cell_format(4,0); xf = styles->get_cell_format(xfid); assert(xf); font_data = styles->get_font(xf->font); fmt = ss->get_format_runs(str_id); assert(fmt); // This string should be formatted. { // Check the bold format segment. bool_segment_type bold_runs(0, str->size(), font_data->bold); for (size_t i = 0, n = fmt->size(); i < n; ++i) { format_run run = fmt->at(i); bold_runs.insert_back(run.pos, run.pos+run.size, run.bold); } bold_runs.build_tree(); bool is_bold = false; size_t start_pos, end_pos; // The first four letters 'Bold' should be bold. bool good = bold_runs.search_tree(0, is_bold, &start_pos, &end_pos).second; assert(good); assert(is_bold); assert(start_pos == 0); assert(end_pos == 4); // The rest should be non-bold. good = bold_runs.search_tree(4, is_bold, &start_pos, &end_pos).second; assert(good); assert(!is_bold); assert(start_pos == 4); assert(end_pos == str->size()); } { // Check the italic format segment. bool_segment_type italic_runs(0, str->size(), font_data->italic); for (size_t i = 0, n = fmt->size(); i < n; ++i) { format_run run = fmt->at(i); italic_runs.insert_back(run.pos, run.pos+run.size, run.italic); } italic_runs.build_tree(); bool it_italic = false; size_t start_pos, end_pos; // The first 9 letters 'Bold and ' should not be italic. bool good = italic_runs.search_tree(0, it_italic, &start_pos, &end_pos).second; assert(good); assert(!it_italic); assert(start_pos == 0); assert(end_pos == 9); // The next 6 letters 'Italic' should be italic. good = italic_runs.search_tree(9, it_italic, &start_pos, &end_pos).second; assert(good); assert(it_italic); assert(start_pos == 9); assert(end_pos == 15); // The rest should be non-italic. good = italic_runs.search_tree(15, it_italic, &start_pos, &end_pos).second; assert(good); assert(!it_italic); assert(start_pos == 15); assert(end_pos == str->size()); } } } int main() { test_ods_import_cell_values(); test_ods_import_column_widths_row_heights(); test_ods_import_formatted_text(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_test_xls_xml.cpp0000644000175000017500000000331312535701143017244 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xls_xml.hpp" #include "orcus/pstring.hpp" #include "orcus/global.hpp" #include "orcus/stream.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include #include #include #include #include using namespace orcus; using namespace std; namespace { const char* dirs[] = { SRCDIR"/test/xls-xml/basic/" }; void test_xls_xml_import() { size_t n = sizeof(dirs)/sizeof(dirs[0]); for (size_t i = 0; i < n; ++i) { const char* dir = dirs[i]; string path(dir); // Read the input.xml document. path.append("input.xml"); spreadsheet::document doc; spreadsheet::import_factory factory(doc); orcus_xls_xml app(&factory); app.read_file(path.c_str()); // Dump the content of the model. ostringstream os; doc.dump_check(os); string check = os.str(); // Check that against known control. path = dir; path.append("check.txt"); string control; load_file_content(path.c_str(), control); assert(!check.empty()); assert(!control.empty()); pstring s1(&check[0], check.size()), s2(&control[0], control.size()); assert(s1.trim() == s2.trim()); } } } int main() { test_xls_xml_import(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_test_xml_mapped.cpp0000644000175000017500000001025112535701143017703 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xml.hpp" #include "orcus/global.hpp" #include "orcus/sax_ns_parser.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/stream.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include "xml_map_sax_handler.hpp" #include "dom_tree_sax_handler.hpp" #include #include #include #include #include #include #include using namespace std; using namespace orcus; namespace { struct test_case { const char* base_dir; bool output_equals_input; }; const test_case tests[] = { { SRCDIR"/test/xml-mapped/attribute-basic", true }, { SRCDIR"/test/xml-mapped/attribute-namespace", true }, { SRCDIR"/test/xml-mapped/attribute-range-self-close", true }, { SRCDIR"/test/xml-mapped/attribute-single-element", true }, { SRCDIR"/test/xml-mapped/attribute-single-element-2", true }, { SRCDIR"/test/xml-mapped/content-basic", true }, { SRCDIR"/test/xml-mapped/content-namespace", false }, { SRCDIR"/test/xml-mapped/content-namespace-2", true }, }; const char* temp_output_xml = "out.xml"; void dump_xml_structure(string& dump_content, string& strm, const char* filepath, xmlns_context& cxt) { load_file_content(filepath, strm); dom_tree_sax_handler hdl(cxt); sax_ns_parser parser(strm.c_str(), strm.size(), cxt, hdl); parser.parse(); ostringstream os; hdl.dump_compact(os); dump_content = os.str(); } void test_mapped_xml_import() { string strm; size_t n = sizeof(tests)/sizeof(tests[0]); for (size_t i = 0; i < n; ++i) { string base_dir(tests[i].base_dir); string data_file = base_dir + "/input.xml"; string map_file = base_dir + "/map.xml"; string check_file = base_dir + "/check.txt"; // Load the data file content. cout << "reading " << data_file << endl; load_file_content(data_file.c_str(), strm); spreadsheet::document doc; spreadsheet::import_factory import_fact(doc); spreadsheet::export_factory export_fact(doc); xmlns_repository repo; xmlns_context cxt = repo.create_context(); // Parse the map file to define map rules, and parse the data file. orcus_xml app(repo, &import_fact, &export_fact); read_map_file(app, map_file.c_str()); app.read_file(data_file.c_str()); // Check the content of the document against static check file. ostringstream os; doc.dump_check(os); string loaded = os.str(); load_file_content(check_file.c_str(), strm); assert(!loaded.empty()); assert(!strm.empty()); pstring p1(&loaded[0], loaded.size()), p2(&strm[0], strm.size()); p1 = p1.trim(); p2 = p2.trim(); assert(p1 == p2); // Output to xml file with the linked values coming from the document. string out_file = temp_output_xml; cout << "writing to " << out_file << endl; app.write_file(out_file.c_str()); if (tests[i].output_equals_input) { // Compare the logical xml content of the output xml with the // input one. They should be identical. string dump_input, dump_output; string strm_data_file, strm_out_file; // Hold the stream content in memory while the namespace context is being used. dump_xml_structure(dump_input, strm_data_file, data_file.c_str(), cxt); dump_xml_structure(dump_output, strm_out_file, out_file.c_str(), cxt); assert(!dump_input.empty() && !dump_output.empty()); assert(dump_input == dump_output); } // Delete the temporary xml output. unlink(out_file.c_str()); } } } // anonymous namespace int main() { test_mapped_xml_import(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/dom_tree_sax_handler.hpp0000644000175000017500000000243412535701142017461 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __ORCUS_DOM_TREE_SAX_HANDLER_HPP__ #define __ORCUS_DOM_TREE_SAX_HANDLER_HPP__ #include "orcus/dom_tree.hpp" #include namespace orcus { namespace sax { struct doctype_declaration; } class xmlns_context; struct sax_ns_parser_element; struct sax_ns_parser_attribute; class pstring; /** * Sax handler just to wrap a dom tree instance. */ class dom_tree_sax_handler { dom_tree m_tree; public: dom_tree_sax_handler(xmlns_context& cxt); void doctype(const sax::doctype_declaration& dtd); void start_declaration(const pstring& name); void end_declaration(const pstring& name); void start_element(const sax_ns_parser_element& elem); void end_element(const sax_ns_parser_element& elem); void characters(const pstring& val, bool transient); void attribute(const sax_ns_parser_attribute& attr); void attribute(const pstring& name, const pstring& val); void dump_compact(std::ostream& os); }; } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_xml_dump.cpp0000644000175000017500000000277712535701143016361 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "orcus/sax_ns_parser.hpp" #include "orcus/global.hpp" #include "orcus/xml_namespace.hpp" #include "orcus/stream.hpp" #include "dom_tree_sax_handler.hpp" #include #include #include #include using namespace orcus; using namespace std; int main(int argc, char** argv) { if (argc < 2) return EXIT_FAILURE; string strm; try { load_file_content(argv[1], strm); } catch (const std::exception& e) { cerr << "exception caught while loading file: " << e.what() << endl; return EXIT_FAILURE; } if (strm.empty()) return EXIT_FAILURE; try { xmlns_repository repo; xmlns_context cxt = repo.create_context(); dom_tree_sax_handler hdl(cxt); sax_ns_parser parser(strm.c_str(), strm.size(), cxt, hdl); parser.parse(); ostringstream os; hdl.dump_compact(os); cout << os.str(); } catch (const std::exception& e) { cerr << "exception caught while parsing file: " << e.what() << endl; return EXIT_FAILURE; } return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_detect_main.cpp0000644000175000017500000000314712535701143017000 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/format_detection.hpp" #include "orcus/exception.hpp" #include "orcus/stream.hpp" #include #include #include using namespace orcus; using namespace std; int main(int argc, char** argv) try { if (argc != 2) return EXIT_FAILURE; const char* filepath = argv[1]; string strm; load_file_content(filepath, strm); if (strm.empty()) { cerr << "file is empty" << endl; return EXIT_FAILURE; } format_t detected_type = detect(reinterpret_cast(&strm[0]), strm.size()); cout << "type: "; switch (detected_type) { case format_csv: cout << "plain text format"; break; case format_gnumeric: cout << "Gnumeric"; break; case format_ods: cout << "OpenDocument Spreadsheet"; break; case format_xls_xml: cout << "Microsoft Excel XML"; break; case format_xlsx: cout << "Microsoft Office Open XML Excel 2007+"; break; case format_unknown: default: cout << "unknown"; } cout << endl; return EXIT_SUCCESS; } catch (const general_error& e) { cerr << e.what() << endl; return EXIT_FAILURE; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/0000755000175000017500000000000012540654317015115 5ustar renereneliborcus-0.9.2/src/spreadsheet/table.hpp0000644000175000017500000000326512535701144016716 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SPREADSHEET_TABLE_HPP #define ORCUS_SPREADSHEET_TABLE_HPP #include "orcus/spreadsheet/import_interface.hpp" namespace orcus { namespace spreadsheet { class document; class sheet; struct table_impl; class table : public iface::import_table { table_impl* mp_impl; public: table(document& doc, sheet& sh); ~table(); virtual iface::import_auto_filter* get_auto_filter(); virtual void set_range(const char* p_ref, size_t n_ref); virtual void set_identifier(size_t id); virtual void set_name(const char* p, size_t n); virtual void set_display_name(const char* p, size_t n); virtual void set_totals_row_count(size_t row_count); virtual void set_column_count(size_t n); virtual void set_column_identifier(size_t id); virtual void set_column_name(const char* p, size_t n); virtual void set_column_totals_row_label(const char* p, size_t n); virtual void set_column_totals_row_function(orcus::spreadsheet::totals_row_function_t func); virtual void commit_column(); virtual void set_style_name(const char* p, size_t n); virtual void set_style_show_first_column(bool b); virtual void set_style_show_last_column(bool b); virtual void set_style_show_row_stripes(bool b); virtual void set_style_show_column_stripes(bool b); virtual void commit(); void reset(); }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/sheet_properties.cpp0000644000175000017500000000323512535701144021203 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/sheet_properties.hpp" #include "orcus/spreadsheet/sheet.hpp" #include "orcus/measurement.hpp" #include using namespace std; namespace orcus { namespace spreadsheet { struct sheet_properties_impl { document& m_doc; sheet& m_sheet; sheet_properties_impl(document& doc, sheet& sh) : m_doc(doc), m_sheet(sh) {} }; sheet_properties::sheet_properties(document& doc, sheet& sh) : mp_impl(new sheet_properties_impl(doc, sh)) {} sheet_properties::~sheet_properties() { delete mp_impl; } void sheet_properties::set_column_width(col_t col, double width, orcus::length_unit_t unit) { col_width_t w = orcus::convert(width, unit, length_unit_twip); mp_impl->m_sheet.set_col_width(col, w); } void sheet_properties::set_column_hidden(col_t col, bool hidden) { mp_impl->m_sheet.set_col_hidden(col, hidden); } void sheet_properties::set_row_height(row_t row, double height, orcus::length_unit_t unit) { row_height_t h = orcus::convert(height, unit, length_unit_twip); mp_impl->m_sheet.set_row_height(row, h); } void sheet_properties::set_row_hidden(row_t row, bool hidden) { mp_impl->m_sheet.set_row_hidden(row, hidden); } void sheet_properties::set_merge_cell_range(const char* p_ref, size_t p_ref_len) { mp_impl->m_sheet.set_merge_cell_range(p_ref, p_ref_len); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/factory.cpp0000644000175000017500000000510112535701144017260 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/shared_strings.hpp" #include "orcus/spreadsheet/styles.hpp" #include "orcus/spreadsheet/sheet.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/global_settings.hpp" namespace orcus { namespace spreadsheet { struct import_factory_impl { document& m_doc; row_t m_default_row_size; col_t m_default_col_size; import_global_settings m_global_settings; import_factory_impl(document& doc, row_t row_size, col_t col_size) : m_doc(doc), m_default_row_size(row_size), m_default_col_size(col_size), m_global_settings(doc) {} }; import_factory::import_factory(document& doc, row_t row_size, col_t col_size) : mp_impl(new import_factory_impl(doc, row_size, col_size)) {} import_factory::~import_factory() { delete mp_impl; } iface::import_global_settings* import_factory::get_global_settings() { return &mp_impl->m_global_settings; } iface::import_shared_strings* import_factory::get_shared_strings() { return mp_impl->m_doc.get_shared_strings(); } iface::import_styles* import_factory::get_styles() { return mp_impl->m_doc.get_styles(); } iface::import_sheet* import_factory::append_sheet(const char* sheet_name, size_t sheet_name_length) { return mp_impl->m_doc.append_sheet( pstring(sheet_name, sheet_name_length), mp_impl->m_default_row_size, mp_impl->m_default_col_size); } iface::import_sheet* import_factory::get_sheet(const char* sheet_name, size_t sheet_name_length) { return mp_impl->m_doc.get_sheet(pstring(sheet_name, sheet_name_length)); } iface::import_sheet* import_factory::get_sheet(sheet_t sheet_index) { return mp_impl->m_doc.get_sheet(sheet_index); } void import_factory::finalize() { mp_impl->m_doc.finalize(); } struct export_factory_impl { document& m_doc; export_factory_impl(document& doc) : m_doc(doc) {} }; export_factory::export_factory(document& doc) : mp_impl(new export_factory_impl(doc)) {} export_factory::~export_factory() { delete mp_impl; } const iface::export_sheet* export_factory::get_sheet(const char* sheet_name, size_t sheet_name_length) const { return mp_impl->m_doc.get_sheet(pstring(sheet_name, sheet_name_length)); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/data_table.cpp0000644000175000017500000000177512535701144017706 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "data_table.hpp" namespace orcus { namespace spreadsheet { struct data_table_impl { sheet& m_sheet; data_table_impl(sheet& sh) : m_sheet(sh) {} }; data_table::data_table(sheet& sh) : mp_impl(new data_table_impl(sh)) {} data_table::~data_table() { delete mp_impl; } void data_table::reset() { } void data_table::set_type(orcus::spreadsheet::data_table_type_t type) { } void data_table::set_range(const char* p_range, size_t n_range) { } void data_table::set_first_reference(const char* p_ref, size_t n_ref, bool deleted) { } void data_table::set_second_reference(const char* p_ref, size_t n_ref, bool deleted) { } void data_table::commit() { } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/Makefile.in0000644000175000017500000012133512540653650017166 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @BUILD_SPREADSHEET_MODEL_TRUE@@HAVE_STATIC_LIB_TRUE@am__append_1 = -D__ORCUS_STATIC_LIB=1 subdir = src/spreadsheet DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = @BUILD_SPREADSHEET_MODEL_TRUE@liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_DEPENDENCIES = \ @BUILD_SPREADSHEET_MODEL_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_SPREADSHEET_MODEL_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ ../liborcus/liborcus-@ORCUS_API_VERSION@.la am__liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_SOURCES_DIST = \ auto_filter.cpp data_table.hpp data_table.cpp document.cpp \ factory.cpp formula_global.hpp formula_global.cpp \ shared_strings.cpp sheet.cpp sheet_properties.cpp styles.cpp \ table.hpp table.cpp global_settings.cpp @BUILD_SPREADSHEET_MODEL_TRUE@am_liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_OBJECTS = liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.lo \ @BUILD_SPREADSHEET_MODEL_TRUE@ liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.lo liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_OBJECTS = $(am_liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LINK = $(LIBTOOL) \ $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LDFLAGS) \ $(LDFLAGS) -o $@ @BUILD_SPREADSHEET_MODEL_TRUE@am_liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_rpath = \ @BUILD_SPREADSHEET_MODEL_TRUE@ -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = \ $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_SOURCES) DIST_SOURCES = $(am__liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @BUILD_SPREADSHEET_MODEL_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/include \ @BUILD_SPREADSHEET_MODEL_TRUE@ -D__ORCUS_SPM_BUILDING_DLL \ @BUILD_SPREADSHEET_MODEL_TRUE@ $(am__append_1) @BUILD_SPREADSHEET_MODEL_TRUE@COMMON_CPPFLAGS = $(AM_CPPFLAGS) @BUILD_SPREADSHEET_MODEL_TRUE@lib_LTLIBRARIES = liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la @BUILD_SPREADSHEET_MODEL_TRUE@liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_SOURCES = \ @BUILD_SPREADSHEET_MODEL_TRUE@ auto_filter.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ data_table.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ data_table.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ document.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ factory.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ formula_global.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ formula_global.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ shared_strings.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ sheet.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ sheet_properties.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ styles.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ table.hpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ table.cpp \ @BUILD_SPREADSHEET_MODEL_TRUE@ global_settings.cpp @BUILD_SPREADSHEET_MODEL_TRUE@liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBIXION_CFLAGS) @BUILD_SPREADSHEET_MODEL_TRUE@liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined @BUILD_SPREADSHEET_MODEL_TRUE@liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LIBADD = $(LIBIXION_LIBS) \ @BUILD_SPREADSHEET_MODEL_TRUE@ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la \ @BUILD_SPREADSHEET_MODEL_TRUE@ ../liborcus/liborcus-@ORCUS_API_VERSION@.la all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/spreadsheet/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/spreadsheet/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la: $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(EXTRA_liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(AM_V_CXXLD)$(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LINK) $(am_liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_rpath) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.Plo@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.lo: auto_filter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.lo `test -f 'auto_filter.cpp' || echo '$(srcdir)/'`auto_filter.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='auto_filter.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-auto_filter.lo `test -f 'auto_filter.cpp' || echo '$(srcdir)/'`auto_filter.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.lo: data_table.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.lo `test -f 'data_table.cpp' || echo '$(srcdir)/'`data_table.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='data_table.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-data_table.lo `test -f 'data_table.cpp' || echo '$(srcdir)/'`data_table.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.lo: document.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.lo `test -f 'document.cpp' || echo '$(srcdir)/'`document.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='document.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-document.lo `test -f 'document.cpp' || echo '$(srcdir)/'`document.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.lo: factory.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.lo `test -f 'factory.cpp' || echo '$(srcdir)/'`factory.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='factory.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-factory.lo `test -f 'factory.cpp' || echo '$(srcdir)/'`factory.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.lo: formula_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.lo `test -f 'formula_global.cpp' || echo '$(srcdir)/'`formula_global.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='formula_global.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-formula_global.lo `test -f 'formula_global.cpp' || echo '$(srcdir)/'`formula_global.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.lo: shared_strings.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.lo `test -f 'shared_strings.cpp' || echo '$(srcdir)/'`shared_strings.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='shared_strings.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-shared_strings.lo `test -f 'shared_strings.cpp' || echo '$(srcdir)/'`shared_strings.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.lo: sheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.lo `test -f 'sheet.cpp' || echo '$(srcdir)/'`sheet.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='sheet.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet.lo `test -f 'sheet.cpp' || echo '$(srcdir)/'`sheet.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.lo: sheet_properties.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.lo `test -f 'sheet_properties.cpp' || echo '$(srcdir)/'`sheet_properties.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='sheet_properties.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-sheet_properties.lo `test -f 'sheet_properties.cpp' || echo '$(srcdir)/'`sheet_properties.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.lo: styles.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.lo `test -f 'styles.cpp' || echo '$(srcdir)/'`styles.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='styles.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-styles.lo `test -f 'styles.cpp' || echo '$(srcdir)/'`styles.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.lo: table.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.lo `test -f 'table.cpp' || echo '$(srcdir)/'`table.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='table.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-table.lo `test -f 'table.cpp' || echo '$(srcdir)/'`table.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.lo: global_settings.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.lo -MD -MP -MF $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.Tpo -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.lo `test -f 'global_settings.cpp' || echo '$(srcdir)/'`global_settings.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.Tpo $(DEPDIR)/liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='global_settings.cpp' object='liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la-global_settings.lo `test -f 'global_settings.cpp' || echo '$(srcdir)/'`global_settings.cpp mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags-am \ distclean distclean-compile distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/src/spreadsheet/Makefile.am0000644000175000017500000000163412535701144017150 0ustar renereneif BUILD_SPREADSHEET_MODEL AM_CPPFLAGS = -I$(top_srcdir)/include -D__ORCUS_SPM_BUILDING_DLL COMMON_CPPFLAGS = $(AM_CPPFLAGS) if HAVE_STATIC_LIB AM_CPPFLAGS += -D__ORCUS_STATIC_LIB=1 endif lib_LTLIBRARIES = liborcus-spreadsheet-model-@ORCUS_API_VERSION@.la liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_SOURCES = \ auto_filter.cpp \ data_table.hpp \ data_table.cpp \ document.cpp \ factory.cpp \ formula_global.hpp \ formula_global.cpp \ shared_strings.cpp \ sheet.cpp \ sheet_properties.cpp \ styles.cpp \ table.hpp \ table.cpp \ global_settings.cpp liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBIXION_CFLAGS) liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined liborcus_spreadsheet_model_@ORCUS_API_VERSION@_la_LIBADD = $(LIBIXION_LIBS) \ ../parser/liborcus-parser-@ORCUS_API_VERSION@.la \ ../liborcus/liborcus-@ORCUS_API_VERSION@.la endif liborcus-0.9.2/src/spreadsheet/shared_strings.cpp0000644000175000017500000001055412535701144020640 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/shared_strings.hpp" #include "orcus/spreadsheet/styles.hpp" #include "orcus/pstring.hpp" #include "orcus/global.hpp" #include "orcus/string_pool.hpp" #include #include #include #include using namespace std; namespace orcus { namespace spreadsheet { format_run::format_run() : pos(0), size(0), font_size(0), bold(false), italic(false) {} void format_run::reset() { pos = 0; size = 0; font.clear(); font_size = 0; bold = false; italic = false; color = color_t(); } bool format_run::formatted() const { if (bold || italic) return true; if (font_size) return true; if (!font.empty()) return true; return false; } import_shared_strings::import_shared_strings(orcus::string_pool& sp, ixion::model_context& cxt, import_styles& styles) : m_string_pool(sp), m_cxt(cxt), m_styles(styles), mp_cur_format_runs(NULL) {} import_shared_strings::~import_shared_strings() { for_each(m_formats.begin(), m_formats.end(), map_object_deleter()); // This pointer should be NULL. assert(!mp_cur_format_runs); delete mp_cur_format_runs; } size_t import_shared_strings::append(const char* s, size_t n) { return m_cxt.append_string(s, n); } size_t import_shared_strings::add(const char* s, size_t n) { return m_cxt.add_string(s, n); } const format_runs_t* import_shared_strings::get_format_runs(size_t index) const { format_runs_map_type::const_iterator itr = m_formats.find(index); if (itr != m_formats.end()) return itr->second; return NULL; } const string* import_shared_strings::get_string(size_t index) const { return m_cxt.get_string(index); } void import_shared_strings::set_segment_font(size_t font_index) { const font_t* font_data = m_styles.get_font(font_index); if (!font_data) return; m_cur_format.bold = font_data->bold; m_cur_format.italic = font_data->italic; m_cur_format.font = font_data->name; // font names are already interned when set. m_cur_format.font_size = font_data->size; m_cur_format.color = font_data->color; } void import_shared_strings::set_segment_bold(bool b) { m_cur_format.bold = b; } void import_shared_strings::set_segment_italic(bool b) { m_cur_format.italic = b; } void import_shared_strings::set_segment_font_name(const char* s, size_t n) { m_cur_format.font = m_string_pool.intern(s, n).first; } void import_shared_strings::set_segment_font_size(double point) { m_cur_format.font_size = point; } void import_shared_strings::set_segment_font_color( color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) { m_cur_format.color = color_t(alpha, red, green, blue); } void import_shared_strings::append_segment(const char* s, size_t n) { if (!n) return; size_t start_pos = m_cur_segment_string.size(); m_cur_segment_string += string(s, n); if (m_cur_format.formatted()) { // This segment is formatted. // Record the position and size of the format run. m_cur_format.pos = start_pos; m_cur_format.size = n; if (!mp_cur_format_runs) mp_cur_format_runs = new format_runs_t; mp_cur_format_runs->push_back(m_cur_format); m_cur_format.reset(); } } size_t import_shared_strings::commit_segments() { size_t sindex = m_cxt.append_string(m_cur_segment_string.data(), m_cur_segment_string.size()); m_cur_segment_string.clear(); m_formats.insert(format_runs_map_type::value_type(sindex, mp_cur_format_runs)); mp_cur_format_runs = NULL; return sindex; } namespace { struct print_string : public unary_function { size_t m_count; public: print_string() : m_count(1) {} void operator() (const pstring& ps) { cout << m_count++ << ": '" << ps << "'" << endl; } }; } void import_shared_strings::dump() const { cout << "number of shared strings: " << m_cxt.get_string_count() << endl; } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/data_table.hpp0000644000175000017500000000203112535701144017675 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SPREADSHEET_DATA_TABLE_HPP #define ORCUS_SPREADSHEET_DATA_TABLE_HPP #include "orcus/spreadsheet/import_interface.hpp" namespace orcus { namespace spreadsheet { class sheet; struct data_table_impl; class data_table : public iface::import_data_table { data_table_impl* mp_impl; public: data_table(sheet& sh); ~data_table(); void reset(); virtual void set_type(data_table_type_t type); virtual void set_range(const char* p_range, size_t n_range); virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted); virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted); virtual void commit(); }; }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/formula_global.hpp0000644000175000017500000000233512535701144020611 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ORCUS_SPREADSHEET_FORMULA_GLOBAL_HPP #define ORCUS_SPREADSHEET_FORMULA_GLOBAL_HPP #include namespace ixion { struct abs_range_t; class formula_name_resolver; } namespace orcus { namespace spreadsheet { /** * Parse a string representing a 2-dimensional range using the passed name * resolver, and return an absolute range object. The sheet index will be * unconditionally set to 0. It returns an invalid range object in case the * parsing fails. * * @param resolver name resolver to use to resolve the range string. * @param p_ref pointer to the first character of the range string. * @param n_ref length of the range string. * * @return absolute range object, which may be set invalid in case the * parsing is unsuccessful. */ ixion::abs_range_t to_abs_range( const ixion::formula_name_resolver& resolver, const char* p_ref, size_t n_ref); }} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/global_settings.cpp0000644000175000017500000000230112535701144020770 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/global_settings.hpp" #include "orcus/spreadsheet/document.hpp" namespace orcus { namespace spreadsheet { struct import_global_settings_impl { document& m_doc; import_global_settings_impl(document& doc) : m_doc(doc) {} }; import_global_settings::import_global_settings(spreadsheet::document& doc) : mp_impl(new import_global_settings_impl(doc)) {} import_global_settings::~import_global_settings() { delete mp_impl; } void import_global_settings::set_origin_date(int year, int month, int day) { mp_impl->m_doc.set_origin_date(year, month, day); } void import_global_settings::set_default_formula_grammar(formula_grammar_t grammar) { mp_impl->m_doc.set_formula_grammar(grammar); } formula_grammar_t import_global_settings::get_default_formula_grammar() const { return mp_impl->m_doc.get_formula_grammar(); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/formula_global.cpp0000644000175000017500000000240712535701144020604 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "formula_global.hpp" #include #include namespace orcus { namespace spreadsheet { ixion::abs_range_t to_abs_range( const ixion::formula_name_resolver& resolver, const char* p_ref, size_t n_ref) { ixion::abs_range_t range(ixion::abs_range_t::invalid); ixion::abs_address_t pos(0,0,0); ixion::formula_name_type res = resolver.resolve(p_ref, n_ref, pos); switch (res.type) { case ixion::formula_name_type::cell_reference: // Single cell reference. range.first = ixion::to_address(res.address).to_abs(pos); range.last = range.first; break; case ixion::formula_name_type::range_reference: // Range reference. range = ixion::to_range(res.range).to_abs(pos); break; default: ; // Unsupported range. Leave it invalid. } return range; } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/auto_filter.cpp0000644000175000017500000000441312535701144020133 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/auto_filter.hpp" namespace orcus { namespace spreadsheet { void auto_filter_column_t::reset() { match_values.clear(); } void auto_filter_column_t::swap(auto_filter_column_t& r) { match_values.swap(r.match_values); } auto_filter_t::auto_filter_t() : range(ixion::abs_range_t::invalid) {} void auto_filter_t::reset() { range = ixion::abs_range_t(ixion::abs_range_t::invalid); columns.clear(); } void auto_filter_t::swap(auto_filter_t& r) { std::swap(range, r.range); columns.swap(r.columns); } void auto_filter_t::commit_column(col_t col, auto_filter_column_t& data) { if (col < 0) // Invalid column index. Nothing happens. return; columns_type::iterator it = columns.lower_bound(col); if (it == columns.end() || columns.key_comp()(col, it->first)) { // Insert a new entry for this column. columns.insert(it, columns_type::value_type(col, data)); } else // Swap with the existing column data. it->second.swap(data); } table_column_t::table_column_t() : identifier(0), totals_row_function(totals_row_function_none) {} void table_column_t::reset() { identifier = 0; name.clear(); totals_row_label.clear(); totals_row_function = totals_row_function_none; } table_style_t::table_style_t() : show_first_column(false), show_last_column(false), show_row_stripes(false), show_column_stripes(false) {} void table_style_t::reset() { name.clear(); show_first_column = false; show_last_column = false; show_row_stripes = false; show_column_stripes = false; } table_t::table_t() : identifier(0), range(ixion::abs_range_t::invalid), totals_row_count(0) {} void table_t::reset() { identifier = 0; name.clear(); display_name.clear(); range = ixion::abs_range_t(ixion::abs_range_t::invalid); totals_row_count = 0; filter.reset(); columns.clear(); style.reset(); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/styles.cpp0000644000175000017500000002077612535701144017153 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/styles.hpp" #include "orcus/string_pool.hpp" #include namespace orcus { namespace spreadsheet { font_t::font_t() : size(0.0), bold(false), italic(false), underline(underline_none), color() { } void font_t::reset() { *this = font_t(); } color_t::color_t() : alpha(0), red(0), green(0), blue(0) { } color_t::color_t(color_elem_t _alpha, color_elem_t _red, color_elem_t _green, color_elem_t _blue) : alpha(_alpha), red(_red), green(_green), blue(_blue) { } void color_t::reset() { *this = color_t(); } fill_t::fill_t() { } void fill_t::reset() { *this = fill_t(); } border_attrs_t::border_attrs_t() { } void border_attrs_t::reset() { *this = border_attrs_t(); } border_t::border_t() { } void border_t::reset() { *this = border_t(); } protection_t::protection_t() : locked(false), hidden(false) { } void protection_t::reset() { *this = protection_t(); } number_format_t::number_format_t() : identifier(0) {} void number_format_t::reset() { *this = number_format_t(); } bool number_format_t::operator== (const number_format_t& r) const { return format_string == r.format_string; } cell_format_t::cell_format_t() : font(0), fill(0), border(0), protection(0), number_format(0), style_xf(0), hor_align(hor_alignment_unknown), ver_align(ver_alignment_unknown), apply_num_format(false), apply_font(false), apply_fill(false), apply_border(false), apply_alignment(false) { } void cell_format_t::reset() { *this = cell_format_t(); } cell_style_t::cell_style_t() : xf(0), builtin(0) { } void cell_style_t::reset() { *this = cell_style_t(); } import_styles::import_styles(string_pool& sp) : m_string_pool(sp) {} import_styles::~import_styles() { } void import_styles::set_font_count(size_t n) { m_fonts.reserve(n); } void import_styles::set_font_bold(bool b) { m_cur_font.bold = b; } void import_styles::set_font_italic(bool b) { m_cur_font.italic = b; } void import_styles::set_font_name(const char* s, size_t n) { m_cur_font.name = m_string_pool.intern(s, n).first; } void import_styles::set_font_size(double point) { m_cur_font.size = point; } void import_styles::set_font_underline(underline_t e) { m_cur_font.underline = e; } void import_styles::set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) { m_cur_font.color = color_t(alpha, red, green, blue); } size_t import_styles::commit_font() { m_fonts.push_back(m_cur_font); m_cur_font.reset(); return m_fonts.size() - 1; } void import_styles::set_fill_count(size_t n) { m_fills.reserve(n); } void import_styles::set_fill_pattern_type(const char* s, size_t n) { m_cur_fill.pattern_type = m_string_pool.intern(s, n).first; } void import_styles::set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) { m_cur_fill.fg_color = color_t(alpha, red, green, blue); } void import_styles::set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) { m_cur_fill.bg_color = color_t(alpha, red, green, blue); } size_t import_styles::commit_fill() { m_fills.push_back(m_cur_fill); m_cur_fill.reset(); return m_fills.size() - 1; } namespace { border_attrs_t* get_border_attrs(border_t& cur_border, border_direction_t dir) { border_attrs_t* p = NULL; switch (dir) { case border_top: p = &cur_border.top; break; case border_bottom: p = &cur_border.bottom; break; case border_left: p = &cur_border.left; break; case border_right: p = &cur_border.right; break; case border_diagonal: p = &cur_border.diagonal; break; default: ; } return p; } } void import_styles::set_border_count(size_t n) { m_borders.reserve(n); } void import_styles::set_border_style(border_direction_t dir, const char* s, size_t n) { border_attrs_t* p = get_border_attrs(m_cur_border, dir); if (p) p->style = m_string_pool.intern(s, n).first; } void import_styles::set_border_color( border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) { border_attrs_t* p = get_border_attrs(m_cur_border, dir); if (p) p->border_color = color_t(alpha, red, green, blue); } size_t import_styles::commit_border() { m_borders.push_back(m_cur_border); m_cur_border.reset(); return m_borders.size() - 1; } void import_styles::set_cell_hidden(bool b) { m_cur_protection.hidden = b; } void import_styles::set_cell_locked(bool b) { m_cur_protection.locked = b; } size_t import_styles::commit_cell_protection() { m_protections.push_back(m_cur_protection); m_cur_protection.reset(); return m_protections.size() - 1; } void import_styles::set_number_format_count(size_t n) { m_number_formats.reserve(n); } void import_styles::set_number_format_identifier(size_t id) { m_cur_number_format.identifier = id; } void import_styles::set_number_format_code(const char* s, size_t n) { m_cur_number_format.format_string = pstring(s, n); } size_t import_styles::commit_number_format() { m_number_formats.push_back(m_cur_number_format); m_cur_number_format.reset(); return m_number_formats.size() - 1; } void import_styles::set_cell_style_xf_count(size_t n) { m_cell_style_formats.reserve(n); } size_t import_styles::commit_cell_style_xf() { m_cell_style_formats.push_back(m_cur_cell_format); m_cur_cell_format.reset(); return m_cell_style_formats.size() - 1; } void import_styles::set_cell_xf_count(size_t n) { m_cell_formats.reserve(n); } size_t import_styles::commit_cell_xf() { m_cell_formats.push_back(m_cur_cell_format); m_cur_cell_format.reset(); return m_cell_formats.size() - 1; } void import_styles::set_dxf_count(size_t n) { m_dxf_formats.reserve(n); } size_t import_styles::commit_dxf() { m_dxf_formats.push_back(m_cur_cell_format); m_cur_cell_format.reset(); return m_dxf_formats.size() - 1; } void import_styles::set_xf_font(size_t index) { m_cur_cell_format.font = index; } void import_styles::set_xf_fill(size_t index) { m_cur_cell_format.fill = index; } void import_styles::set_xf_border(size_t index) { m_cur_cell_format.border = index; } void import_styles::set_xf_protection(size_t index) { m_cur_cell_format.protection = index; } void import_styles::set_xf_number_format(size_t index) { m_cur_cell_format.number_format = index; } void import_styles::set_xf_style_xf(size_t index) { m_cur_cell_format.style_xf = index; } void import_styles::set_xf_apply_alignment(bool b) { m_cur_cell_format.apply_alignment = b; } void import_styles::set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) { m_cur_cell_format.hor_align = align; } void import_styles::set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) { m_cur_cell_format.ver_align = align; } void import_styles::set_cell_style_count(size_t n) { m_cell_styles.reserve(n); } void import_styles::set_cell_style_name(const char* s, size_t n) { m_cur_cell_style.name = m_string_pool.intern(s, n).first; } void import_styles::set_cell_style_xf(size_t index) { m_cur_cell_style.xf = index; } void import_styles::set_cell_style_builtin(size_t index) { m_cur_cell_style.builtin = index; } size_t import_styles::commit_cell_style() { m_cell_styles.push_back(m_cur_cell_style); m_cur_cell_style.reset(); return m_cell_styles.size() - 1; } const font_t* import_styles::get_font(size_t index) const { if (index >= m_fonts.size()) return NULL; return &m_fonts[index]; } const cell_format_t* import_styles::get_cell_format(size_t index) const { if (index >= m_cell_formats.size()) return NULL; return &m_cell_formats[index]; } const fill_t* import_styles::get_fill(size_t index) const { if (index >= m_fills.size()) return NULL; return &m_fills[index]; } const border_t* import_styles::get_border(size_t index) const { if (index >= m_borders.size()) return NULL; return &m_borders[index]; } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/document.cpp0000644000175000017500000004023712535701144017440 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/global_settings.hpp" #include "orcus/spreadsheet/sheet.hpp" #include "orcus/spreadsheet/shared_strings.hpp" #include "orcus/spreadsheet/styles.hpp" #include "orcus/spreadsheet/auto_filter.hpp" #include "orcus/pstring.hpp" #include "orcus/types.hpp" #include "orcus/string_pool.hpp" #include #include #include #include #include #include #include #include #include #include #include using namespace std; namespace orcus { namespace spreadsheet { namespace { /** * Single sheet entry which consists of a sheet name and a sheet data. * Use the printer function object to print sheet content with for_each * function. */ struct sheet_item : private boost::noncopyable { pstring name; sheet data; sheet_item(document& doc, const pstring& _name, sheet_t sheet_index, row_t row_size, col_t col_size); class flat_printer : public ::std::unary_function { const std::string& m_outdir; public: flat_printer(const std::string& outdir); void operator() (const sheet_item& item) const; }; class check_printer : public std::unary_function { std::ostream& m_os; public: check_printer(std::ostream& os); void operator() (const sheet_item& item) const; }; struct html_printer : public ::std::unary_function { html_printer(const ::std::string& filepath); void operator() (const sheet_item& item) const; private: const ::std::string& m_filepath; }; }; typedef boost::ptr_map table_store_type; sheet_item::sheet_item(document& doc, const pstring& _name, sheet_t sheet_index, row_t row_size, col_t col_size) : name(_name), data(doc, sheet_index, row_size, col_size) {} sheet_item::flat_printer::flat_printer(const string& outdir) : m_outdir(outdir) {} void sheet_item::flat_printer::operator() (const sheet_item& item) const { string this_file = m_outdir + '/' + item.name.str() + ".txt"; ofstream file(this_file.c_str()); if (!file) { cerr << "failed to create file: " << this_file << endl; return; } file << "---" << endl; file << "Sheet name: " << item.name << endl; item.data.dump_flat(file); } sheet_item::check_printer::check_printer(std::ostream& os) : m_os(os) {} void sheet_item::check_printer::operator() (const sheet_item& item) const { item.data.dump_check(m_os, item.name); } sheet_item::html_printer::html_printer(const string& filepath) : m_filepath(filepath) {} void sheet_item::html_printer::operator() (const sheet_item& item) const { // file path is expected to be a directory. string this_file = m_filepath + '/' + item.name.str() + ".html"; item.data.dump_html(this_file); } class find_sheet_by_name : std::unary_function { const pstring& m_name; public: find_sheet_by_name(const pstring& name) : m_name(name) {} bool operator() (const sheet_item & v) const { return v.name == m_name; } }; class find_column_by_name : std::unary_function { const pstring& m_name; public: find_column_by_name(const pstring& name) : m_name(name) {} bool operator() (const table_column_t& col) const { return col.name == m_name; } }; void adjust_row_range(ixion::abs_range_t& range, const table_t& tab, ixion::table_areas_t areas) { bool headers = (areas & ixion::table_area_headers); bool data = (areas & ixion::table_area_data); bool totals = (areas & ixion::table_area_totals); if (headers) { if (data) { if (totals) { // All areas. return; } // Headers + data range.last.row -= tab.totals_row_count; return; } if (totals) { // Header + total is invalid. range = ixion::abs_range_t(ixion::abs_range_t::invalid); return; } // Headers only. range.last.row = range.first.row; return; } if (data) { ++range.first.row; if (totals) { // Data + total return; } // Data only range.last.row -= tab.totals_row_count; return; } if (totals) { // Total only if (!tab.totals_row_count) { // This table has not total rows. Return empty range. range = ixion::abs_range_t(); return; } range.first.row = range.last.row - tab.totals_row_count - 1; return; } // Empty range. range = ixion::abs_range_t(); } class table_handler : public ixion::iface::table_handler { const ixion::model_context& m_context; const table_store_type& m_tables; const table_t* find_table(const ixion::abs_address_t& pos) const { table_store_type::const_iterator it = m_tables.begin(), it_end = m_tables.end(); for (; it != it_end; ++it) { const table_t* p = it->second; if (p->range.contains(pos)) return p; } return NULL; } pstring get_string(ixion::string_id_t sid) const { if (sid == ixion::empty_string_id) return pstring(); const std::string* p = m_context.get_string(sid); if (!p || p->empty()) return pstring(); return pstring(&(*p)[0], p->size()); } col_t find_column(const table_t& tab, const pstring& name, size_t offset) const { if (offset >= tab.columns.size()) return -1; table_t::columns_type::const_iterator it_beg = tab.columns.begin(); table_t::columns_type::const_iterator it_end = tab.columns.end(); std::advance(it_beg, offset); table_t::columns_type::const_iterator it = std::find_if(it_beg, it_end, find_column_by_name(name)); if (it == it_end) // not found. return -1; size_t dist = std::distance(tab.columns.begin(), it); return tab.range.first.column + dist; } ixion::abs_range_t get_range_from_table( const table_t& tab, ixion::string_id_t column_first, ixion::string_id_t column_last, ixion::table_areas_t areas) const { if (column_first != ixion::empty_string_id) { pstring col1_name = get_string(column_first); if (col1_name.empty()) return ixion::abs_range_t(ixion::abs_range_t::invalid); col_t col1_index = find_column(tab, col1_name, 0); if (column_last != ixion::empty_string_id) { pstring col2_name = get_string(column_last); // column range table reference. col_t col2_index = find_column(tab, col2_name, col1_index); ixion::abs_range_t range = tab.range; range.first.column = col1_index; range.last.column = col2_index; adjust_row_range(range, tab, areas); return range; } // single column table reference. ixion::abs_range_t range = tab.range; range.first.column = range.last.column = col1_index; adjust_row_range(range, tab, areas); return range; } return ixion::abs_range_t(); } public: table_handler(const ixion::model_context& cxt, const table_store_type& tables) : m_context(cxt), m_tables(tables) {} virtual ixion::abs_range_t get_range( const ixion::abs_address_t& pos, ixion::string_id_t column_first, ixion::string_id_t column_last, ixion::table_areas_t areas) const { const table_t* tab = find_table(pos); if (!tab) return ixion::abs_range_t(ixion::abs_range_t::invalid); return get_range_from_table(*tab, column_first, column_last, areas); } virtual ixion::abs_range_t get_range( ixion::string_id_t table, ixion::string_id_t column_first, ixion::string_id_t column_last, ixion::table_areas_t areas) const { pstring tab_name = get_string(table); if (tab_name.empty()) // no table name given. return ixion::abs_range_t(ixion::abs_range_t::invalid); table_store_type::const_iterator it = m_tables.find(tab_name); if (it == m_tables.end()) // no table by this name found. return ixion::abs_range_t(ixion::abs_range_t::invalid); const table_t* tab = it->second; return get_range_from_table(*tab, column_first, column_last, areas); } }; } struct document_impl { document& m_doc; string_pool m_string_pool; ixion::model_context m_context; date_time_t m_origin_date; boost::ptr_vector m_sheets; import_styles* mp_styles; import_shared_strings* mp_strings; ixion::dirty_formula_cells_t m_dirty_cells; boost::scoped_ptr mp_name_resolver; formula_grammar_t m_grammar; table_store_type m_tables; table_handler m_table_handler; document_impl(document& doc) : m_doc(doc), mp_styles(new import_styles(m_string_pool)), mp_strings(new import_shared_strings(m_string_pool, m_context, *mp_styles)), mp_name_resolver(ixion::formula_name_resolver::get(ixion::formula_name_resolver_excel_a1, &m_context)), m_grammar(formula_grammar_xlsx_2007), m_table_handler(m_context, m_tables) { m_context.set_table_handler(&m_table_handler); } ~document_impl() { delete mp_strings; delete mp_styles; } }; document::document() : mp_impl(new document_impl(*this)) {} document::~document() { delete mp_impl; } import_shared_strings* document::get_shared_strings() { return mp_impl->mp_strings; } const import_shared_strings* document::get_shared_strings() const { return mp_impl->mp_strings; } import_styles* document::get_styles() { return mp_impl->mp_styles; } const import_styles* document::get_styles() const { return mp_impl->mp_styles; } ixion::model_context& document::get_model_context() { return mp_impl->m_context; } const ixion::model_context& document::get_model_context() const { return mp_impl->m_context; } string_pool& document::get_string_pool() { return mp_impl->m_string_pool; } void document::insert_table(table_t* p) { if (!p) return; pstring name = p->name; mp_impl->m_tables.insert(name, p); } const table_t* document::get_table(const pstring& name) const { table_store_type::const_iterator it = mp_impl->m_tables.find(name); return it == mp_impl->m_tables.end() ? NULL : it->second; } namespace { struct sheet_finalizer : unary_function { void operator() (sheet_item& sh) { sh.data.finalize(); } }; } void document::finalize() { for_each(mp_impl->m_sheets.begin(), mp_impl->m_sheets.end(), sheet_finalizer()); calc_formulas(); } sheet* document::append_sheet(const pstring& sheet_name, row_t row_size, col_t col_size) { pstring sheet_name_safe = mp_impl->m_string_pool.intern(sheet_name).first; sheet_t sheet_index = static_cast(mp_impl->m_sheets.size()); mp_impl->m_sheets.push_back( new sheet_item( *this, sheet_name_safe, sheet_index, row_size, col_size)); mp_impl->m_context.append_sheet( sheet_name_safe.get(), sheet_name_safe.size(), row_size, col_size); return &mp_impl->m_sheets.back().data; } sheet* document::get_sheet(const pstring& sheet_name) { boost::ptr_vector::iterator it = std::find_if(mp_impl->m_sheets.begin(), mp_impl->m_sheets.end(), find_sheet_by_name(sheet_name)); if (it == mp_impl->m_sheets.end()) return NULL; return &it->data; } sheet* document::get_sheet(sheet_t sheet_pos) { if (static_cast(sheet_pos) >= mp_impl->m_sheets.size()) return NULL; return &mp_impl->m_sheets[sheet_pos].data; } const sheet* document::get_sheet(sheet_t sheet_pos) const { if (static_cast(sheet_pos) >= mp_impl->m_sheets.size()) return NULL; return &mp_impl->m_sheets[sheet_pos].data; } void document::calc_formulas() { ixion::model_context& cxt = get_model_context(); ixion::calculate_cells(cxt, mp_impl->m_dirty_cells, 0); } void document::swap(document& other) { std::swap(mp_impl, other.mp_impl); } void document::clear() { delete mp_impl; mp_impl = new document_impl(*this); } void document::dump_flat(const string& outdir) const { cout << "----------------------------------------------------------------------" << endl; cout << " Document content summary" << endl; cout << "----------------------------------------------------------------------" << endl; mp_impl->mp_strings->dump(); cout << "number of sheets: " << mp_impl->m_sheets.size() << endl; for_each(mp_impl->m_sheets.begin(), mp_impl->m_sheets.end(), sheet_item::flat_printer(outdir)); } void document::dump_check(ostream& os) const { for_each(mp_impl->m_sheets.begin(), mp_impl->m_sheets.end(), sheet_item::check_printer(os)); } void document::dump_html(const string& outdir) const { for_each(mp_impl->m_sheets.begin(), mp_impl->m_sheets.end(), sheet_item::html_printer(outdir)); } sheet_t document::get_sheet_index(const pstring& name) const { boost::ptr_vector::const_iterator it = std::find_if(mp_impl->m_sheets.begin(), mp_impl->m_sheets.end(), find_sheet_by_name(name)); if (it == mp_impl->m_sheets.end()) return ixion::invalid_sheet; boost::ptr_vector::const_iterator it_beg = mp_impl->m_sheets.begin(); size_t pos = std::distance(it_beg, it); return static_cast(pos); } pstring document::get_sheet_name(sheet_t sheet_pos) const { if (sheet_pos < 0) return pstring(); size_t pos = static_cast(sheet_pos); if (pos >= mp_impl->m_sheets.size()) return pstring(); return mp_impl->m_sheets[pos].name; } size_t document::sheet_size() const { return mp_impl->m_sheets.size(); } void document::set_origin_date(int year, int month, int day) { mp_impl->m_origin_date.year = year; mp_impl->m_origin_date.month = month; mp_impl->m_origin_date.day = day; } void document::set_formula_grammar(formula_grammar_t grammar) { if (mp_impl->m_grammar == grammar) return; mp_impl->m_grammar = grammar; switch (mp_impl->m_grammar) { case formula_grammar_xlsx_2007: case formula_grammar_xlsx_2010: mp_impl->mp_name_resolver.reset( ixion::formula_name_resolver::get( ixion::formula_name_resolver_excel_a1, &mp_impl->m_context)); break; case formula_grammar_ods: mp_impl->mp_name_resolver.reset( ixion::formula_name_resolver::get( ixion::formula_name_resolver_odff, &mp_impl->m_context)); break; case formula_grammar_gnumeric: // TODO : Use Excel A1 name resolver for now. mp_impl->mp_name_resolver.reset( ixion::formula_name_resolver::get( ixion::formula_name_resolver_excel_a1, &mp_impl->m_context)); break; default: mp_impl->mp_name_resolver.reset(); } } formula_grammar_t document::get_formula_grammar() const { return mp_impl->m_grammar; } const ixion::formula_name_resolver* document::get_formula_name_resolver() const { return mp_impl->mp_name_resolver.get(); } void document::insert_dirty_cell(const ixion::abs_address_t& pos) { mp_impl->m_dirty_cells.insert(pos); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/sheet.cpp0000644000175000017500000012606412535701144016735 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/spreadsheet/sheet.hpp" #include "orcus/spreadsheet/styles.hpp" #include "orcus/spreadsheet/shared_strings.hpp" #include "orcus/spreadsheet/sheet_properties.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/auto_filter.hpp" #include "orcus/global.hpp" #include "orcus/exception.hpp" #include "orcus/measurement.hpp" #include "orcus/string_pool.hpp" #include "data_table.hpp" #include "table.hpp" #include "formula_global.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ORCUS_DEBUG_SHEET 0 using namespace std; namespace orcus { namespace spreadsheet { namespace { struct merge_size { col_t width; row_t height; merge_size(col_t _width, row_t _height) : width(_width), height(_height) {} }; // Merged cell data stored in sheet. typedef boost::unordered_map merge_size_type; typedef boost::unordered_map col_merge_size_type; // Overlapped cells per row, used when rendering sheet content. typedef mdds::flat_segment_tree overlapped_col_index_type; typedef boost::unordered_map overlapped_cells_type; typedef mdds::flat_segment_tree segment_row_index_type; typedef boost::unordered_map cell_format_type; // Widths and heights are stored in twips. typedef mdds::flat_segment_tree col_widths_store_type; typedef mdds::flat_segment_tree row_heights_store_type; // hidden information typedef mdds::flat_segment_tree col_hidden_store_type; typedef mdds::flat_segment_tree row_hidden_store_type; struct overlapped_cells_tree_builder : std::unary_function { void operator() (overlapped_cells_type::value_type& node) { node.second->build_tree(); } }; class sheet_auto_filter : public orcus::spreadsheet::iface::import_auto_filter { sheet& m_sheet; orcus::string_pool& m_string_pool; const ixion::formula_name_resolver* mp_resolver; orcus::unique_ptr mp_data; col_t m_cur_col; auto_filter_column_t m_cur_col_data; public: sheet_auto_filter(sheet& sh, orcus::string_pool& sp) : m_sheet(sh), m_string_pool(sp), mp_resolver(NULL), m_cur_col(-1) {} void reset() { mp_resolver = NULL; mp_data.reset(new auto_filter_t); m_cur_col = -1; m_cur_col_data.reset(); } void set_resolver(const ixion::formula_name_resolver* resolver) { mp_resolver = resolver; } virtual void set_range(const char* p_ref, size_t n_ref) { if (!mp_resolver) return; mp_data->range = to_abs_range(*mp_resolver, p_ref, n_ref); } virtual void set_column(orcus::spreadsheet::col_t col) { m_cur_col = col; } virtual void append_column_match_value(const char* p, size_t n) { // The string pool belongs to the document. pstring s = m_string_pool.intern(p, n).first; m_cur_col_data.match_values.insert(s); } virtual void commit_column() { if (!mp_data) return; mp_data->commit_column(m_cur_col, m_cur_col_data); m_cur_col_data.reset(); } virtual void commit() { m_sheet.set_auto_filter_data(mp_data.release()); } }; } struct sheet_impl : boost::noncopyable { document& m_doc; sheet_properties m_sheet_props; /// sheet properties import interface. data_table m_data_table; /// data table import interface. sheet_auto_filter m_auto_filter; /// auto filter import interface. table m_table; /// table import interface. mutable col_widths_store_type m_col_widths; mutable row_heights_store_type m_row_heights; col_widths_store_type::const_iterator m_col_width_pos; row_heights_store_type::const_iterator m_row_height_pos; col_hidden_store_type m_col_hidden; row_hidden_store_type m_row_hidden; col_hidden_store_type::const_iterator m_col_hidden_pos; row_hidden_store_type::const_iterator m_row_hidden_pos; col_merge_size_type m_merge_ranges; /// 2-dimensional merged cell ranges. overlapped_cells_type m_overlapped_ranges; orcus::unique_ptr mp_auto_filter_data; cell_format_type m_cell_formats; row_t m_row_size; col_t m_col_size; const sheet_t m_sheet; /// sheet ID sheet_impl(document& doc, sheet& sh, sheet_t sheet_index, row_t row_size, col_t col_size) : m_doc(doc), m_sheet_props(doc, sh), m_data_table(sh), m_auto_filter(sh, doc.get_string_pool()), m_table(doc, sh), m_col_widths(0, col_size, get_default_column_width()), m_row_heights(0, row_size, get_default_row_height()), m_col_width_pos(m_col_widths.begin()), m_row_height_pos(m_row_heights.begin()), m_col_hidden(0, col_size, false), m_row_hidden(0, row_size, false), m_col_hidden_pos(m_col_hidden.begin()), m_row_hidden_pos(m_row_hidden.begin()), m_row_size(row_size), m_col_size(col_size), m_sheet(sheet_index) {} ~sheet_impl() { for_each(m_cell_formats.begin(), m_cell_formats.end(), map_object_deleter()); for_each(m_merge_ranges.begin(), m_merge_ranges.end(), map_object_deleter()); clear_overlapped_ranges(); } const merge_size* get_merge_size(row_t row, col_t col) const { col_merge_size_type::const_iterator it_col = m_merge_ranges.find(col); if (it_col == m_merge_ranges.end()) return NULL; merge_size_type& col_merge_sizes = *it_col->second; merge_size_type::const_iterator it_row = col_merge_sizes.find(row); if (it_row == col_merge_sizes.end()) return NULL; return &it_row->second; } const overlapped_col_index_type* get_overlapped_ranges(row_t row) const { overlapped_cells_type::const_iterator it = m_overlapped_ranges.find(row); if (it == m_overlapped_ranges.end()) return NULL; return it->second; } void clear_overlapped_ranges() { for_each(m_overlapped_ranges.begin(), m_overlapped_ranges.end(), map_object_deleter()); m_overlapped_ranges.clear(); } void update_overlapped_ranges() { clear_overlapped_ranges(); col_merge_size_type::const_iterator it_col = m_merge_ranges.begin(), it_col_end = m_merge_ranges.end(); for (; it_col != it_col_end; ++it_col) { col_t col = it_col->first; const merge_size_type& data = *it_col->second; merge_size_type::const_iterator it = data.begin(), it_end = data.end(); for (; it != it_end; ++it) { row_t row = it->first; const merge_size& item = it->second; for (row_t i = 0; i < item.height; ++i, ++row) { // Get the container for this row. overlapped_cells_type::iterator it_cont = m_overlapped_ranges.find(row); if (it_cont == m_overlapped_ranges.end()) { unique_ptr p(new overlapped_col_index_type(0, m_col_size, false)); std::pair r = m_overlapped_ranges.insert(overlapped_cells_type::value_type(row, p.get())); if (!r.second) { // Insertion failed. return; } p.release(); it_cont = r.first; } overlapped_col_index_type& cont = *it_cont->second; cont.insert_back(col, col+item.width, true); } } } // Build trees. for_each(m_overlapped_ranges.begin(), m_overlapped_ranges.end(), overlapped_cells_tree_builder()); } }; const row_t sheet::max_row_limit = 1048575; const col_t sheet::max_col_limit = 1023; sheet::sheet(document& doc, sheet_t sheet_index, row_t row_size, col_t col_size) : mp_impl(new sheet_impl(doc, *this, sheet_index, row_size, col_size)) {} sheet::~sheet() { delete mp_impl; } iface::import_sheet_properties* sheet::get_sheet_properties() { return &mp_impl->m_sheet_props; } iface::import_data_table* sheet::get_data_table() { mp_impl->m_data_table.reset(); return &mp_impl->m_data_table; } iface::import_table* sheet::get_table() { mp_impl->m_table.reset(); return &mp_impl->m_table; } iface::import_auto_filter* sheet::get_auto_filter() { mp_impl->m_auto_filter.reset(); mp_impl->m_auto_filter.set_resolver(mp_impl->m_doc.get_formula_name_resolver()); return &mp_impl->m_auto_filter; } void sheet::set_auto(row_t row, col_t col, const char* p, size_t n) { if (!p || !n) return; ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); // First, see if this can be parsed as a number. char* endptr = NULL; double val = strtod(p, &endptr); const char* endptr_check = p + n; if (endptr == endptr_check) // Treat this as a numeric value. cxt.set_numeric_cell(ixion::abs_address_t(mp_impl->m_sheet,row,col), val); else // Treat this as a string value. cxt.set_string_cell(ixion::abs_address_t(mp_impl->m_sheet,row,col), p, n); } void sheet::set_string(row_t row, col_t col, size_t sindex) { ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); cxt.set_string_cell(ixion::abs_address_t(mp_impl->m_sheet,row,col), sindex); #if ORCUS_DEBUG_SHEET cout << "sheet::set_string: sheet=" << mp_impl->m_sheet << ", row=" << row << ", col=" << col << ", si=" << sindex << endl; #endif } void sheet::set_value(row_t row, col_t col, double value) { ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); cxt.set_numeric_cell(ixion::abs_address_t(mp_impl->m_sheet,row,col), value); } void sheet::set_bool(row_t row, col_t col, bool value) { ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); cxt.set_boolean_cell(ixion::abs_address_t(mp_impl->m_sheet,row,col), value); } void sheet::set_date_time(row_t row, col_t col, int year, int month, int day, int hour, int minute, double second) { // I'll convert this into a string value for now. ostringstream os; os << year << '-'; if (month < 10) os << '0'; os << month << '-'; if (day < 10) os << '0'; os << day << 'T'; if (hour < 10) os << '0'; os << hour << ':'; if (minute < 10) os << '0'; os << minute << ':'; if (second < 10.0) os << '0'; os << second; string s = os.str(); set_auto(row, col, &s[0], s.size()); } void sheet::set_format(row_t row, col_t col, size_t index) { cell_format_type::iterator itr = mp_impl->m_cell_formats.find(col); if (itr == mp_impl->m_cell_formats.end()) { unique_ptr p(new segment_row_index_type(0, mp_impl->m_row_size+1, 0)); pair r = mp_impl->m_cell_formats.insert(cell_format_type::value_type(col, p.get())); if (!r.second) { cerr << "insertion of new cell format container failed!" << endl; return; } p.release(); itr = r.first; } segment_row_index_type& con = *itr->second; con.insert_back(row, row+1, index); } void sheet::set_format(row_t row_start, col_t col_start, row_t row_end, col_t col_end, size_t index) { for (col_t col = col_start; col <= col_end; ++col) { for (row_t row = row_start; row <= row_end; ++row) { set_format(row, col, index); } } } void sheet::set_formula(row_t row, col_t col, formula_grammar_t grammar, const char* p, size_t n) { const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); if (!resolver) return; // Tokenize the formula string and store it. ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_address_t pos(mp_impl->m_sheet, row, col); cxt.set_formula_cell(pos, p, n, *resolver); ixion::register_formula_cell(cxt, pos); mp_impl->m_doc.insert_dirty_cell(pos); } void sheet::set_shared_formula( row_t row, col_t col, formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula, const char* p_range, size_t n_range) { const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); if (!resolver) return; ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_address_t pos(mp_impl->m_sheet, row, col); cxt.set_shared_formula(pos, sindex, p_formula, n_formula, p_range, n_range, *resolver); set_shared_formula(row, col, sindex); } void sheet::set_shared_formula( row_t row, col_t col, formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula) { const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); if (!resolver) return; ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_address_t pos(mp_impl->m_sheet, row, col); cxt.set_shared_formula(pos, sindex, p_formula, n_formula, *resolver); set_shared_formula(row, col, sindex); } void sheet::set_shared_formula(row_t row, col_t col, size_t sindex) { ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_address_t pos(mp_impl->m_sheet, row, col); cxt.set_formula_cell(pos, sindex, true); ixion::register_formula_cell(cxt, pos); mp_impl->m_doc.insert_dirty_cell(pos); } void sheet::set_array_formula( row_t row, col_t col, formula_grammar_t grammar, const char* p, size_t n, row_t array_rows, col_t array_cols) { } void sheet::set_array_formula( row_t row, col_t col, formula_grammar_t grammar, const char* p, size_t n, const char* p_range, size_t n_range) { } void sheet::set_formula_result(row_t row, col_t col, double value) { } void sheet::set_formula_result(row_t row, col_t col, const char* p, size_t n) { } void sheet::write_string(ostream& os, row_t row, col_t col) const { const ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_address_t pos(mp_impl->m_sheet, row, col); switch (cxt.get_celltype(pos)) { case ixion::celltype_string: { size_t str_id = cxt.get_string_identifier(pos); const string* p = cxt.get_string(str_id); if (p) os << *p; } break; case ixion::celltype_numeric: os << cxt.get_numeric_value(pos); break; default: ; } } void sheet::set_col_width(col_t col, col_width_t width) { mp_impl->m_col_width_pos = mp_impl->m_col_widths.insert(mp_impl->m_col_width_pos, col, col+1, width).first; } col_width_t sheet::get_col_width(col_t col, col_t* col_start, col_t* col_end) const { col_widths_store_type& col_widths = mp_impl->m_col_widths; if (!col_widths.is_tree_valid()) col_widths.build_tree(); col_width_t ret = 0; if (!col_widths.search_tree(col, ret, col_start, col_end).second) throw orcus::general_error("sheet::get_col_width: failed to search tree."); return ret; } void sheet::set_col_hidden(col_t col, bool hidden) { mp_impl->m_col_hidden_pos = mp_impl->m_col_hidden.insert(mp_impl->m_col_hidden_pos, col, col+1, hidden).first; } void sheet::set_row_height(row_t row, row_height_t height) { mp_impl->m_row_height_pos = mp_impl->m_row_heights.insert(mp_impl->m_row_height_pos, row, row+1, height).first; } row_height_t sheet::get_row_height(row_t row, row_t* row_start, row_t* row_end) const { row_heights_store_type& row_heights = mp_impl->m_row_heights; if (!row_heights.is_tree_valid()) row_heights.build_tree(); row_height_t ret = 0; if (!row_heights.search_tree(row, ret, row_start, row_end).second) throw orcus::general_error("sheet::get_row_height: failed to search tree."); return ret; } void sheet::set_row_hidden(row_t row, bool hidden) { mp_impl->m_row_hidden_pos = mp_impl->m_row_hidden.insert(mp_impl->m_row_hidden_pos, row, row+1, hidden).first; } void sheet::set_merge_cell_range(const char* p_ref, size_t p_ref_len) { // A1 style without '$' signs. const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); if (!resolver) return; ixion::formula_name_type res = resolver->resolve(p_ref, p_ref_len, ixion::abs_address_t()); if (res.type != ixion::formula_name_type::range_reference) return; col_merge_size_type::iterator it_col = mp_impl->m_merge_ranges.find(res.range.first.col); if (it_col == mp_impl->m_merge_ranges.end()) { unique_ptr p(new merge_size_type); pair r = mp_impl->m_merge_ranges.insert( col_merge_size_type::value_type(res.range.first.col, p.get())); if (!r.second) // Insertion failed. return; p.release(); it_col = r.first; } merge_size_type& col_data = *it_col->second; merge_size sz(res.range.last.col-res.range.first.col+1, res.range.last.row-res.range.first.row+1); col_data.insert( merge_size_type::value_type(res.range.first.row, sz)); } size_t sheet::get_string_identifier(row_t row, col_t col) const { const ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); return cxt.get_string_identifier(ixion::abs_address_t(mp_impl->m_sheet, row, col)); } auto_filter_t* sheet::get_auto_filter_data() { return mp_impl->mp_auto_filter_data.get(); } const auto_filter_t* sheet::get_auto_filter_data() const { return mp_impl->mp_auto_filter_data.get(); } void sheet::set_auto_filter_data(auto_filter_t* p) { mp_impl->mp_auto_filter_data.reset(p); } row_t sheet::row_size() const { return mp_impl->m_row_size; } col_t sheet::col_size() const { return mp_impl->m_col_size; } sheet_t sheet::get_index() const { return mp_impl->m_sheet; } void sheet::finalize() { mp_impl->m_col_widths.build_tree(); mp_impl->m_row_heights.build_tree(); mp_impl->update_overlapped_ranges(); } void sheet::dump_flat(std::ostream& os) const { const ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_range_t range = cxt.get_data_range(mp_impl->m_sheet); if (!range.valid()) // Sheet is empty. Nothing to print. return; const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); size_t row_count = range.last.row + 1; size_t col_count = range.last.column + 1; os << "rows: " << row_count << " cols: " << col_count << endl; typedef mdds::multi_type_matrix mx_type; mx_type mx(row_count, col_count); // Put all cell values into matrix as string elements first. for (size_t row = 0; row < row_count; ++row) { for (size_t col = 0; col < col_count; ++col) { ixion::abs_address_t pos(mp_impl->m_sheet,row,col); switch (cxt.get_celltype(pos)) { case ixion::celltype_string: { size_t sindex = cxt.get_string_identifier(pos); const string* p = cxt.get_string(sindex); assert(p); mx.set(row, col, *p); } break; case ixion::celltype_numeric: { ostringstream os2; os2 << cxt.get_numeric_value(pos) << " [v]"; mx.set(row, col, os2.str()); } break; case ixion::celltype_formula: { // print the formula and the formula result. const ixion::formula_cell* cell = cxt.get_formula_cell(pos); assert(cell); size_t index = cell->get_identifier(); const ixion::formula_tokens_t* t = NULL; if (cell->is_shared()) t = cxt.get_shared_formula_tokens(mp_impl->m_sheet, index); else t = cxt.get_formula_tokens(mp_impl->m_sheet, index); if (t) { ostringstream os2; string formula; if (resolver) { ixion::print_formula_tokens( mp_impl->m_doc.get_model_context(), pos, *resolver, *t, formula); } else formula = "???"; os2 << formula; const ixion::formula_result* res = cell->get_result_cache(); if (res) os2 << " (" << res->str(mp_impl->m_doc.get_model_context()) << ")"; mx.set(row, col, os2.str()); } } break; default: ; } } } // Calculate column widths first. mx_type::size_pair_type sp = mx.size(); vector col_widths(sp.column, 0); for (size_t r = 0; r < sp.row; ++r) { for (size_t c = 0; c < sp.column; ++c) { if (mx.get_type(r, c) == mdds::mtm::element_empty) continue; const string s = mx.get_string(r, c); if (col_widths[c] < s.size()) col_widths[c] = s.size(); } } // Create a row separator string; ostringstream os2; os2 << '+'; for (size_t i = 0; i < col_widths.size(); ++i) { os2 << '-'; size_t cw = col_widths[i]; for (size_t i = 0; i < cw; ++i) os2 << '-'; os2 << "-+"; } string sep = os2.str(); // Now print to stdout. os << sep << endl; for (size_t r = 0; r < row_count; ++r) { os << "|"; for (size_t c = 0; c < col_count; ++c) { size_t cw = col_widths[c]; // column width if (mx.get_type(r, c) == mdds::mtm::element_empty) { for (size_t i = 0; i < cw; ++i) os << ' '; os << " |"; } else { const string s = mx.get_string(r, c); os << ' ' << s; cw -= s.size(); for (size_t i = 0; i < cw; ++i) os << ' '; os << " |"; } } os << endl; os << sep << endl; } } namespace { void write_cell_position(ostream& os, const pstring& sheet_name, row_t row, col_t col) { os << sheet_name << '/' << row << '/' << col << ':'; } string escape_chars(const string& str) { if (str.empty()) return str; string ret; const char* p = &str[0]; const char* p_end = p + str.size(); for (; p != p_end; ++p) { if (*p == '"') ret.push_back('\\'); ret.push_back(*p); } return ret; } } void sheet::dump_check(ostream& os, const pstring& sheet_name) const { const ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_range_t range = cxt.get_data_range(mp_impl->m_sheet); if (!range.valid()) // Sheet is empty. Nothing to print. return; const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); size_t row_count = range.last.row + 1; size_t col_count = range.last.column + 1; for (size_t row = 0; row < row_count; ++row) { for (size_t col = 0; col < col_count; ++col) { ixion::abs_address_t pos(mp_impl->m_sheet, row, col); switch (cxt.get_celltype(pos)) { case ixion::celltype_string: { write_cell_position(os, sheet_name, row, col); size_t sindex = cxt.get_string_identifier(pos); const string* p = cxt.get_string(sindex); assert(p); os << "string:\"" << escape_chars(*p) << '"' << endl; } break; case ixion::celltype_numeric: { write_cell_position(os, sheet_name, row, col); os << "numeric:" << cxt.get_numeric_value(pos) << endl; } break; case ixion::celltype_formula: { write_cell_position(os, sheet_name, row, col); os << "formula"; // print the formula and the formula result. const ixion::formula_cell* cell = cxt.get_formula_cell(pos); assert(cell); size_t index = cell->get_identifier(); const ixion::formula_tokens_t* t = NULL; if (cell->is_shared()) t = cxt.get_shared_formula_tokens(mp_impl->m_sheet, index); else t = cxt.get_formula_tokens(mp_impl->m_sheet, index); if (t) { string formula; if (resolver) { ixion::print_formula_tokens( mp_impl->m_doc.get_model_context(), pos, *resolver, *t, formula); } else formula = "???"; os << ':' << formula; const ixion::formula_result* res = cell->get_result_cache(); if (res) os << ':' << res->str(mp_impl->m_doc.get_model_context()); } os << endl; } break; default: ; } } } } namespace { void build_rgb_color(ostringstream& os, const color_t& color_value) { // Special colors. if (color_value.alpha == 255 && color_value.red == 0 && color_value.green == 0 && color_value.blue == 0) { os << "black"; return; } if (color_value.alpha == 255 && color_value.red == 255 && color_value.green == 0 && color_value.blue == 0) { os << "red"; return; } if (color_value.alpha == 255 && color_value.red == 0 && color_value.green == 255 && color_value.blue == 0) { os << "green"; return; } if (color_value.alpha == 255 && color_value.red == 0 && color_value.green == 0 && color_value.blue == 255) { os << "blue"; return; } os << "rgb(" << static_cast(color_value.red) << "," << static_cast(color_value.green) << "," << static_cast(color_value.blue) << ")"; } const char* css_style_global = "table, td { " "border-collapse : collapse; " "}\n" "table { " "border-spacing : 0px; " "}\n" "td { " "width : 1in; " "}\n" "td.empty { " "color : white; " "}\n"; class html_elem { public: struct attr { string name; string value; attr(const string& _name, const string& _value) : name(_name), value(_value) {} }; typedef vector attrs_type; html_elem(ostream& strm, const char* name, const char* style = NULL, const char* style_class = NULL) : m_strm(strm), m_name(name) { m_strm << '<' << m_name; if (style) m_strm << " style=\"" << style << "\""; if (style_class) m_strm << " class=\"" << style_class << "\""; m_strm << '>'; } html_elem(ostream& strm, const char* name, const attrs_type& attrs) : m_strm(strm), m_name(name) { m_strm << '<' << m_name; attrs_type::const_iterator it = attrs.begin(), it_end = attrs.end(); for (; it != it_end; ++it) m_strm << " " << it->name << "=\"" << it->value << "\""; m_strm << '>'; } ~html_elem() { m_strm << "'; } private: ostream& m_strm; const char* m_name; }; void print_formatted_text(ostream& strm, const string& text, const format_runs_t& formats) { typedef html_elem elem; const char* p_span = "span"; size_t pos = 0; format_runs_t::const_iterator itr = formats.begin(), itr_end = formats.end(); for (; itr != itr_end; ++itr) { const format_run& run = *itr; if (pos < run.pos) { // flush unformatted text. strm << string(&text[pos], run.pos-pos); pos = run.pos; } if (!run.size) continue; string style = ""; if (run.bold) style += "font-weight: bold;"; else style += "font-weight: normal;"; if (run.italic) style += "font-style: italic;"; else style += "font-style: normal;"; if (!run.font.empty()) style += "font-family: " + run.font.str() + ";"; if (run.font_size) { ostringstream os; os << "font-size: " << run.font_size << "pt;"; style += os.str(); } const color_t& col = run.color; if (col.red || col.green || col.blue) { ostringstream os; os << "color: "; build_rgb_color(os, col); os << ";"; style += os.str(); } if (style.empty()) strm << string(&text[pos], run.size); else { elem span(strm, p_span, style.c_str()); strm << string(&text[pos], run.size); } pos += run.size; } if (pos < text.size()) { // flush the remaining unformatted text. strm << string(&text[pos], text.size() - pos); } } void build_border_style(ostringstream& os, const char* style_name, const border_attrs_t& attrs) { os << style_name << ": "; if (attrs.style == "thin") { os << "solid 1px "; } else if (attrs.style == "medium") { os << "solid 2px "; } else if (attrs.style == "thick") { os << "solid 3px "; } else if (attrs.style == "hair") { os << "solid 0.5px "; } else if (attrs.style == "dotted") { os << "dotted 1px "; } else if (attrs.style == "dashed") { os << "dashed 1px "; } else if (attrs.style == "double") { os << "3px double "; } else if (attrs.style == "dashDot") { // CSS doesn't support dash-dot. os << "dashed 1px "; } else if (attrs.style == "dashDotDot") { // CSS doesn't support dash-dot-dot. os << "dashed 1px "; } else if (attrs.style == "mediumDashed") { os << "dashed 2px "; } else if (attrs.style == "mediumDashDot") { // CSS doesn't support dash-dot. os << "dashed 2px "; } else if (attrs.style == "mediumDashDotDot") { // CSS doesn't support dash-dot-dot. os << "dashed 2px "; } else if (attrs.style == "slantDashDot") { // CSS doesn't support dash-dot. os << "dashed 2px "; } build_rgb_color(os, attrs.border_color); os << "; "; } void build_style_string(string& str, const import_styles& styles, const cell_format_t& fmt) { ostringstream os; if (fmt.font) { const font_t* p = styles.get_font(fmt.font); if (p) { if (!p->name.empty()) os << "font-family: " << p->name << ";"; if (p->size) os << "font-size: " << p->size << "pt;"; if (p->bold) os << "font-weight: bold;"; if (p->italic) os << "font-style: italic;"; const color_t& r = p->color; if (r.red || r.green || r.blue) { os << "color: "; build_rgb_color(os, r); os << ";"; } } } if (fmt.fill) { const fill_t* p = styles.get_fill(fmt.fill); if (p) { if (p->pattern_type == "solid") { const color_t& r = p->fg_color; os << "background-color: "; build_rgb_color(os, r); os << ";"; } } } if (fmt.border) { const border_t* p = styles.get_border(fmt.border); if (p) { build_border_style(os, "border-top", p->top); build_border_style(os, "border-bottom", p->bottom); build_border_style(os, "border-left", p->left); build_border_style(os, "border-right", p->right); } } if (fmt.apply_alignment) { if (fmt.hor_align != hor_alignment_unknown) { os << "text-align: "; switch (fmt.hor_align) { case hor_alignment_left: os << "left"; break; case hor_alignment_center: os << "center"; break; case hor_alignment_right: os << "right"; break; default: ; } os << ";"; } if (fmt.ver_align != ver_alignment_unknown) { os << "vertical-align: "; switch (fmt.ver_align) { case ver_alignment_top: os << "top"; break; case ver_alignment_middle: os << "middle"; break; case ver_alignment_bottom: os << "bottom"; break; default: ; } os << ";"; } } str += os.str(); } void dump_html_head(ostream& os) { typedef html_elem elem; const char* p_head = "head"; const char* p_style = "style"; elem elem_head(os, p_head); { elem elem_style(os, p_style); os << css_style_global; } } void build_html_elem_attributes(html_elem::attrs_type& attrs, const string& style, const merge_size* p_merge_size) { attrs.push_back(html_elem::attr("style", style)); if (p_merge_size) { if (p_merge_size->width > 1) { ostringstream os2; os2 << p_merge_size->width; attrs.push_back(html_elem::attr("colspan", os2.str())); } if (p_merge_size->height > 1) { ostringstream os2; os2 << p_merge_size->height; attrs.push_back(html_elem::attr("rowspan", os2.str())); } } } } void sheet::dump_html(const string& filepath) const { typedef html_elem elem; ofstream file(filepath.c_str()); if (!file) { cerr << "failed to create file: " << filepath << endl; return; } const char* p_html = "html"; const char* p_body = "body"; const char* p_table = "table"; const char* p_tr = "tr"; const char* p_td = "td"; const ixion::model_context& cxt = mp_impl->m_doc.get_model_context(); ixion::abs_range_t range = cxt.get_data_range(mp_impl->m_sheet); if (!mp_impl->m_col_widths.is_tree_valid()) mp_impl->m_col_widths.build_tree(); if (!mp_impl->m_row_heights.is_tree_valid()) mp_impl->m_row_heights.build_tree(); elem root(file, p_html); dump_html_head(file); { elem elem_body(file, p_body); if (!range.valid()) // Sheet is empty. Nothing to print. return; const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); const import_shared_strings* sstrings = mp_impl->m_doc.get_shared_strings(); elem table(file, p_table); row_t row_count = range.last.row + 1; col_t col_count = range.last.column + 1; for (row_t row = 0; row < row_count; ++row) { // Set the row height. string row_style; row_height_t rh; if (mp_impl->m_row_heights.search_tree(row, rh).second) { // Convert height from twip to inches. if (rh != get_default_row_height()) { string style; double val = orcus::convert(rh, length_unit_twip, length_unit_inch); ostringstream os_style; os_style << "height: " << val << "in;"; row_style += os_style.str(); } } const char* style_str = NULL; if (!row_style.empty()) style_str = row_style.c_str(); elem tr(file, p_tr, style_str); const overlapped_col_index_type* p_overlapped = mp_impl->get_overlapped_ranges(row); for (col_t col = 0; col < col_count; ++col) { ixion::abs_address_t pos(mp_impl->m_sheet,row,col); const merge_size* p_merge_size = mp_impl->get_merge_size(row, col); if (!p_merge_size && p_overlapped) { // Check if this cell is overlapped by a merged cell. bool overlapped = false; col_t last_col; if (p_overlapped->search_tree(col, overlapped, NULL, &last_col).second && overlapped) { // Skip all overlapped cells on this row. col = last_col - 1; continue; } } size_t xf_id = get_cell_format(row, col); string style; if (row == 0) { // Set the column width. col_width_t cw; if (mp_impl->m_col_widths.search_tree(col, cw).second) { // Convert width from twip to inches. if (cw != get_default_column_width()) { double val = orcus::convert(cw, length_unit_twip, length_unit_inch); ostringstream os_style; os_style << "width: " << val << "in;"; style += os_style.str(); } } } if (xf_id) { // Apply cell format. import_styles* p_styles = mp_impl->m_doc.get_styles(); const cell_format_t* fmt = p_styles->get_cell_format(xf_id); if (fmt) build_style_string(style, *p_styles, *fmt); } ixion::celltype_t ct = cxt.get_celltype(pos); if (ct == ixion::celltype_empty) { html_elem::attrs_type attrs; build_html_elem_attributes(attrs, style, p_merge_size); attrs.push_back(html_elem::attr("class", "empty")); elem td(file, p_td, attrs); file << '-'; // empty cell. continue; } html_elem::attrs_type attrs; build_html_elem_attributes(attrs, style, p_merge_size); elem td(file, p_td, attrs); ostringstream os; switch (ct) { case ixion::celltype_string: { size_t sindex = cxt.get_string_identifier(pos); const string* p = cxt.get_string(sindex); assert(p); const format_runs_t* pformat = sstrings->get_format_runs(sindex); if (pformat) print_formatted_text(os, *p, *pformat); else os << *p; } break; case ixion::celltype_numeric: os << cxt.get_numeric_value(pos); break; case ixion::celltype_formula: { // print the formula and the formula result. const ixion::formula_cell* cell = cxt.get_formula_cell(pos); assert(cell); size_t index = cell->get_identifier(); const ixion::formula_tokens_t* t = NULL; if (cell->is_shared()) t = cxt.get_shared_formula_tokens(mp_impl->m_sheet, index); else t = cxt.get_formula_tokens(mp_impl->m_sheet, index); if (t) { string formula; if (resolver) { ixion::print_formula_tokens( mp_impl->m_doc.get_model_context(), pos, *resolver, *t, formula); } else formula = "???"; os << formula; const ixion::formula_result* res = cell->get_result_cache(); if (res) os << " (" << res->str(mp_impl->m_doc.get_model_context()) << ")"; } } break; default: ; } file << os.str(); } } } } size_t sheet::get_cell_format(row_t row, col_t col) const { cell_format_type::const_iterator itr = mp_impl->m_cell_formats.find(col); if (itr == mp_impl->m_cell_formats.end()) return 0; segment_row_index_type& con = *itr->second; if (!con.is_tree_valid()) con.build_tree(); size_t index; if (!con.search_tree(row, index).second) return 0; return index; } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/spreadsheet/table.cpp0000644000175000017500000001255412535701144016712 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "table.hpp" #include "formula_global.hpp" #include "orcus/global.hpp" #include "orcus/string_pool.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus/spreadsheet/sheet.hpp" #include "orcus/spreadsheet/auto_filter.hpp" #include #include namespace orcus { namespace spreadsheet { namespace { class table_auto_filter : public iface::import_auto_filter { string_pool& m_pool; const ixion::formula_name_resolver* mp_resolver; col_t m_cur_col; auto_filter_column_t m_cur_col_data; auto_filter_t m_filter_data; auto_filter_t* mp_data; public: table_auto_filter(document& doc) : m_pool(doc.get_string_pool()), mp_resolver(NULL), m_cur_col(-1), mp_data(NULL) {} void reset(auto_filter_t* data, const ixion::formula_name_resolver* resolver) { mp_data = data; mp_resolver = resolver; m_cur_col = -1; m_cur_col_data.reset(); m_filter_data.reset(); } virtual void set_range(const char* p_ref, size_t n_ref) { if (!mp_resolver) return; m_filter_data.range = to_abs_range(*mp_resolver, p_ref, n_ref); } virtual void set_column(orcus::spreadsheet::col_t col) { m_cur_col = col; } virtual void append_column_match_value(const char* p, size_t n) { // The string pool belongs to the document. pstring s = m_pool.intern(p, n).first; m_cur_col_data.match_values.insert(s); }; virtual void commit_column() { m_filter_data.commit_column(m_cur_col, m_cur_col_data); m_cur_col_data.reset(); } virtual void commit() { if (!mp_data) return; mp_data->swap(m_filter_data); } }; } struct table_impl : boost::noncopyable { document& m_doc; sheet& m_sheet; table_auto_filter m_auto_filter; orcus::unique_ptr mp_data; table_column_t m_column; table_impl(document& doc, sheet& sh) : m_doc(doc), m_sheet(sh), m_auto_filter(doc) {} }; table::table(document& doc, sheet& sh) : mp_impl(new table_impl(doc, sh)) {} table::~table() { delete mp_impl; } iface::import_auto_filter* table::get_auto_filter() { mp_impl->m_auto_filter.reset(&mp_impl->mp_data->filter, mp_impl->m_doc.get_formula_name_resolver()); return &mp_impl->m_auto_filter; } void table::set_range(const char* p_ref, size_t n_ref) { const ixion::formula_name_resolver* resolver = mp_impl->m_doc.get_formula_name_resolver(); if (!resolver) return; ixion::abs_range_t& range = mp_impl->mp_data->range; range = to_abs_range(*resolver, p_ref, n_ref); if (range.valid()) range.first.sheet = range.last.sheet = mp_impl->m_sheet.get_index(); } void table::set_identifier(size_t id) { mp_impl->mp_data->identifier = id; } void table::set_name(const char* p, size_t n) { string_pool& sp = mp_impl->m_doc.get_string_pool(); mp_impl->mp_data->name = sp.intern(p, n).first; } void table::set_display_name(const char* p, size_t n) { string_pool& sp = mp_impl->m_doc.get_string_pool(); mp_impl->mp_data->display_name = sp.intern(p, n).first; } void table::set_totals_row_count(size_t row_count) { mp_impl->mp_data->totals_row_count = row_count; } void table::set_column_count(size_t n) { mp_impl->mp_data->columns.reserve(n); } void table::set_column_identifier(size_t id) { mp_impl->m_column.identifier = id; } void table::set_column_name(const char* p, size_t n) { string_pool& sp = mp_impl->m_doc.get_string_pool(); mp_impl->m_column.name = sp.intern(p, n).first; } void table::set_column_totals_row_label(const char* p, size_t n) { string_pool& sp = mp_impl->m_doc.get_string_pool(); mp_impl->m_column.totals_row_label = sp.intern(p, n).first; } void table::set_column_totals_row_function(orcus::spreadsheet::totals_row_function_t func) { mp_impl->m_column.totals_row_function = func; } void table::commit_column() { mp_impl->mp_data->columns.push_back(mp_impl->m_column); mp_impl->m_column.reset(); } void table::set_style_name(const char* p, size_t n) { table_style_t& style = mp_impl->mp_data->style; string_pool& sp = mp_impl->m_doc.get_string_pool(); style.name = sp.intern(p, n).first; } void table::set_style_show_first_column(bool b) { table_style_t& style = mp_impl->mp_data->style; style.show_first_column = b; } void table::set_style_show_last_column(bool b) { table_style_t& style = mp_impl->mp_data->style; style.show_last_column = b; } void table::set_style_show_row_stripes(bool b) { table_style_t& style = mp_impl->mp_data->style; style.show_row_stripes = b; } void table::set_style_show_column_stripes(bool b) { table_style_t& style = mp_impl->mp_data->style; style.show_column_stripes = b; } void table::commit() { mp_impl->m_doc.insert_table(mp_impl->mp_data.release()); mp_impl->mp_data.reset(new table_t); } void table::reset() { mp_impl->mp_data.reset(new table_t); mp_impl->m_column.reset(); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/dom_tree_sax_handler.cpp0000644000175000017500000000300512535701142017447 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "dom_tree_sax_handler.hpp" #include "orcus/sax_ns_parser.hpp" namespace orcus { dom_tree_sax_handler::dom_tree_sax_handler(xmlns_context& cxt) : m_tree(cxt) {} void dom_tree_sax_handler::doctype(const sax::doctype_declaration& dtd) { } void dom_tree_sax_handler::start_declaration(const pstring& name) { m_tree.start_declaration(name); } void dom_tree_sax_handler::end_declaration(const pstring& name) { m_tree.end_declaration(name); } void dom_tree_sax_handler::start_element(const sax_ns_parser_element& elem) { m_tree.start_element(elem.ns, elem.name); } void dom_tree_sax_handler::end_element(const sax_ns_parser_element& elem) { m_tree.end_element(elem.ns, elem.name); } void dom_tree_sax_handler::characters(const pstring& val, bool /*transient*/) { m_tree.set_characters(val); } void dom_tree_sax_handler::attribute(const sax_ns_parser_attribute& attr) { m_tree.set_attribute(attr.ns, attr.name, attr.value); } void dom_tree_sax_handler::attribute(const pstring& /*name*/, const pstring& /*val*/) { // We ignore XML declaration attributes for now. } void dom_tree_sax_handler::dump_compact(std::ostream& os) { m_tree.dump_compact(os); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_test_csv.cpp0000644000175000017500000000353012535701143016352 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_csv.hpp" #include "orcus/pstring.hpp" #include "orcus/global.hpp" #include "orcus/stream.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include #include #include #include #include #include using namespace orcus; using namespace std; namespace { const char* dirs[] = { SRCDIR"/test/csv/simple-numbers/", SRCDIR"/test/csv/normal-quotes/", SRCDIR"/test/csv/double-quotes/", SRCDIR"/test/csv/quoted-with-delim/", }; void test_csv_import() { size_t n = sizeof(dirs)/sizeof(dirs[0]); for (size_t i = 0; i < n; ++i) { const char* dir = dirs[i]; string path(dir); // Read the input.csv document. path.append("input.csv"); spreadsheet::document doc; spreadsheet::import_factory factory(doc); orcus_csv app(&factory); app.read_file(path.c_str()); // Dump the content of the model. ostringstream os; doc.dump_check(os); string check = os.str(); // Check that against known control. path = dir; path.append("check.txt"); string control; load_file_content(path.c_str(), control); assert(!check.empty()); assert(!control.empty()); pstring s1(&check[0], check.size()), s2(&control[0], control.size()); assert(s1.trim() == s2.trim()); } } } int main() { test_csv_import(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/0000755000175000017500000000000012540654317014102 5ustar renereneliborcus-0.9.2/src/parser/base64_test.cpp0000644000175000017500000000245512535701144016732 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/base64.hpp" #include #include #include #include #include #include using namespace orcus; using namespace std; void test_base64_text_input(const char* p) { cout << "input: '" << p << "'" << endl; size_t n = strlen(p); vector input(p, p+n); string encoded; encode_to_base64(input, encoded); cout << "encoded: '" << encoded << "'" << endl; vector decoded; decode_from_base64(&encoded[0], encoded.size(), decoded); cout << "decoded: '"; vector::const_iterator it = decoded.begin(), it_end = decoded.end(); for (; it != it_end; ++it) cout << *it; cout << "'" << endl; assert(input == decoded); } int main() { test_base64_text_input("Hello there"); test_base64_text_input("World domination!!!"); test_base64_text_input("World domination!!"); test_base64_text_input("World domination!"); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/string_pool.cpp0000644000175000017500000000601412535701144017141 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/string_pool.hpp" #include "orcus/global.hpp" #include "orcus/pstring.hpp" #include "orcus/exception.hpp" #include using namespace std; namespace { struct dump_instance : public unary_function { dump_instance() : counter(0) {} void operator() (const string* p) { cout << counter++ << ": '" << *p << "'" << endl; } private: size_t counter; }; class pstring_back_inserter { public: pstring_back_inserter(vector& store) : m_store(store) {} void operator() (const string& r) { m_store.push_back(&r); } private: vector& m_store; }; struct pstring_less { bool operator() (const string* p1, const string* p2) const { return m_less(*p1, *p2); } private: less m_less; }; } namespace orcus { size_t string_pool::string_hash::operator() (const string* p) const { return m_hash(*p); } bool string_pool::string_equal_to::operator() (const string* p1, const string* p2) const { return m_equal_to(*p1, *p2); } string_pool::string_pool() {} string_pool::~string_pool() { clear(); } pair string_pool::intern(const char* str) { return intern(str, strlen(str)); } pair string_pool::intern(const char* str, size_t n) { if (!n) return pair(pstring(), false); string_set_type::const_iterator itr = m_set.find(pstring(str, n)); if (itr == m_set.end()) { // This string has not been interned. Intern it. m_store.push_back(new string(str, n)); pair r = m_set.insert(pstring(&m_store.back()[0], n)); if (!r.second) throw general_error("failed to intern a new string instance."); const pstring& ps = *r.first; assert(ps.size() == n); return pair(ps, true); } // This string has already been interned. const pstring& stored_str = *itr; assert(stored_str.size() == n); return pair(stored_str, false); } pair string_pool::intern(const pstring& str) { return intern(str.get(), str.size()); } void string_pool::dump() const { cout << "interned string count: " << m_store.size() << endl; // Sorted stored strings first. vector sorted; sorted.reserve(m_store.size()); for_each(m_store.begin(), m_store.end(), pstring_back_inserter(sorted)); sort(sorted.begin(), sorted.end(), pstring_less()); // Now dump them all to stdout. for_each(sorted.begin(), sorted.end(), dump_instance()); } void string_pool::clear() { m_set.clear(); m_store.clear(); } size_t string_pool::size() const { return m_store.size(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/zip_archive_stream.cpp0000644000175000017500000000473012535701144020463 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/zip_archive_stream.hpp" #include "orcus/zip_archive.hpp" #include #include #ifdef _WIN32 #define fseeko _fseeki64 #define ftello _ftelli64 #endif using namespace std; namespace orcus { zip_archive_stream::~zip_archive_stream() {} zip_archive_stream_fd::zip_archive_stream_fd(const char* filepath) : m_stream(fopen(filepath, "rb")) { if (!m_stream) { // Fail early at instantiation time. ostringstream os; os << "failed to open " << filepath << " for reading"; throw zip_error(os.str()); } } zip_archive_stream_fd::~zip_archive_stream_fd() { if (m_stream) fclose(m_stream); } size_t zip_archive_stream_fd::size() const { if (fseeko(m_stream, 0, SEEK_END)) throw zip_error("failed to set seek position to the end of stream."); return ftello(m_stream); } size_t zip_archive_stream_fd::tell() const { return ftello(m_stream); } void zip_archive_stream_fd::read(unsigned char* buffer, size_t length) const { size_t size_read = fread(buffer, 1, length, m_stream); if (size_read != length) throw zip_error("actual size read doesn't match what was expected."); } void zip_archive_stream_fd::seek(size_t pos) { if (fseeko(m_stream, pos, SEEK_SET)) { ostringstream os; os << "failed to set seek position to " << pos << "."; throw zip_error(os.str()); } } zip_archive_stream_blob::zip_archive_stream_blob(const unsigned char* blob, size_t size) : m_blob(blob), m_cur(blob), m_size(size) {} size_t zip_archive_stream_blob::size() const { return m_size; } size_t zip_archive_stream_blob::tell() const { return std::distance(m_blob, m_cur); } void zip_archive_stream_blob::seek(size_t pos) { m_cur = m_blob + pos; } void zip_archive_stream_blob::read(unsigned char* buffer, size_t length) const { // First, make sure we have enough blob to satisfy the requested stream length. size_t length_available = m_size - tell(); if (length_available < length) throw zip_error("There is not enough stream left to fill requested length."); memcpy(buffer, m_cur, length); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/sax_parser_base.cpp0000644000175000017500000001706512535701144017753 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/sax_parser_base.hpp" #include namespace orcus { namespace sax { malformed_xml_error::malformed_xml_error(const std::string& msg) : m_msg(msg) {} malformed_xml_error::~malformed_xml_error() throw() {} const char* malformed_xml_error::what() const throw() { return m_msg.c_str(); } char decode_xml_encoded_char(const char* p, size_t n) { if (n == 2) { if (!std::strncmp(p, "lt", n)) return '<'; else if (!std::strncmp(p, "gt", n)) return '>'; else return '\0'; } else if (n == 3) { if (!std::strncmp(p, "amp", n)) return '&'; else return '\0'; } else if (n == 4) { if (!std::strncmp(p, "apos", n)) return '\''; else if (!std::strncmp(p, "quot", 4)) return '"'; else return '\0'; } return '\0'; } parser_base::parser_base(const char* content, size_t size) : m_content(content), m_char(content), m_size(size), m_pos(0), m_nest_level(0), m_buffer_pos(0), m_root_elem_open(true) { m_cell_buffers.push_back(new cell_buffer); } void parser_base::inc_buffer_pos() { ++m_buffer_pos; if (m_buffer_pos == m_cell_buffers.size()) m_cell_buffers.push_back(new cell_buffer); } cell_buffer& parser_base::get_cell_buffer() { return m_cell_buffers[m_buffer_pos]; } void parser_base::blank() { char c = cur_char(); while (is_blank(c)) { next(); if (!has_char()) return; c = cur_char(); } } void parser_base::comment() { // Parse until we reach '-->'. size_t len = remains(); assert(len > 3); char c = cur_char(); size_t i = 0; bool hyphen = false; for (; i < len; ++i, c = next_char()) { if (c == '-') { if (!hyphen) // first hyphen. hyphen = true; else // second hyphen. break; } else hyphen = false; } if (len - i < 2 || next_char() != '>') throw malformed_xml_error("'--' should not occur in comment other than in the closing tag."); next(); } void parser_base::skip_bom() { if (remains() < 4) // Stream too short to have a byte order mark. return; // 0xef 0xbb 0 xbf is the UTF-8 byte order mark unsigned char c = static_cast(cur_char()); if (c != '<') { if (c != 0xef || static_cast(next_char()) != 0xbb || static_cast(next_char()) != 0xbf || next_char() != '<') throw malformed_xml_error("unsupported encoding. only 8 bit encodings are supported"); } } void parser_base::expects_next(const char* p, size_t n) { if (remains() < n+1) throw malformed_xml_error("not enough stream left to check for an expected string segment."); const char* p0 = p; const char* p_end = p + n; char c = next_char(); for (; p != p_end; ++p, c = next_char()) { if (c == *p) continue; std::ostringstream os; os << "'" << std::string(p0, n) << "' was expected, but not found."; throw malformed_xml_error("sadf"); } } void parser_base::parse_encoded_char(cell_buffer& buf) { assert(cur_char() == '&'); next(); const char* p0 = m_char; for (; has_char(); next()) { if (cur_char() != ';') continue; size_t n = m_char - p0; if (!n) throw malformed_xml_error("empty encoded character."); #if ORCUS_DEBUG_SAX_PARSER cout << "sax_parser::parse_encoded_char: raw='" << std::string(p0, n) << "'" << endl; #endif char c = decode_xml_encoded_char(p0, n); if (c) buf.append(&c, 1); // Move to the character past ';' before returning to the parent call. next(); if (!c) { #if ORCUS_DEBUG_SAX_PARSER cout << "sax_parser::parse_encoded_char: not a known encoding name. Use the original." << endl; #endif // Unexpected encoding name. Use the original text. buf.append(p0, m_char-p0); } return; } throw malformed_xml_error("error parsing encoded character: terminating character is not found."); } void parser_base::value_with_encoded_char(cell_buffer& buf, pstring& str) { assert(cur_char() == '&'); parse_encoded_char(buf); assert(cur_char() != ';'); size_t first = m_pos; while (has_char()) { if (cur_char() == '&') { if (m_pos > first) buf.append(m_content+first, m_pos-first); parse_encoded_char(buf); first = m_pos; } if (cur_char() == '"') break; if (cur_char() != '&') next(); } if (m_pos > first) buf.append(m_content+first, m_pos-first); if (!buf.empty()) str = pstring(buf.get(), buf.size()); // Skip the closing quote. assert(cur_char() == '"'); next(); } bool parser_base::value(pstring& str, bool decode) { char c = cur_char(); if (c != '"') throw malformed_xml_error("value must be quoted"); c = next_char_checked(); size_t first = m_pos; const char* p0 = m_char; for (; c != '"'; c = next_char_checked()) { if (decode && c == '&') { // This value contains one or more encoded characters. cell_buffer& buf = get_cell_buffer(); buf.reset(); buf.append(p0, m_pos-first); value_with_encoded_char(buf, str); return true; } } str = pstring(p0, m_pos-first); // Skip the closing quote. next(); return false; } void parser_base::name(pstring& str) { size_t first = m_pos; char c = cur_char(); if (!is_alpha(c)) { ::std::ostringstream os; os << "name must begin with an alphabet, but got this instead '" << c << "'"; throw malformed_xml_error(os.str()); } while (is_alpha(c) || is_numeric(c) || is_name_char(c)) c = next_char_checked(); size_t size = m_pos - first; str = pstring(m_content+first, size); } void parser_base::element_name(parser_element& elem, const char* begin_pos) { elem.begin_pos = begin_pos; name(elem.name); if (cur_char() == ':') { elem.ns = elem.name; next_check(); name(elem.name); } } void parser_base::attribute_name(pstring& attr_ns, pstring& attr_name) { name(attr_name); if (cur_char() == ':') { // Attribute name is namespaced. attr_ns = attr_name; next_check(); name(attr_name); } } void parser_base::characters_with_encoded_char(cell_buffer& buf) { assert(cur_char() == '&'); parse_encoded_char(buf); size_t first = m_pos; while (has_char()) { if (cur_char() == '&') { if (m_pos > first) buf.append(m_content+first, m_pos-first); parse_encoded_char(buf); first = m_pos; } if (cur_char() == '<') break; if (cur_char() != '&') next(); } if (m_pos > first) buf.append(m_content+first, m_pos-first); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/xml_namespace_test.cpp0000644000175000017500000000576612535701144020472 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/xml_namespace.hpp" #include "orcus/pstring.hpp" #include #include #include #include #include using namespace std; using namespace orcus; namespace { void test_basic() { pstring xmlns1("http://some.xmlns/"); pstring xmlns2("http://other.xmlns/"); xmlns_repository repo; xmlns_context cxt1 = repo.create_context(); xmlns_context cxt2 = repo.create_context(); pstring empty, myns("myns"); { // context 1 xmlns_id_t test1 = cxt1.push(empty, xmlns1); // register default namespace. assert(cxt1.get(empty) == test1); xmlns_id_t test2 = cxt1.push(myns, xmlns2); assert(cxt1.get(myns) == test2); assert(test1 != test2); } { // context 2 xmlns_id_t test1 = cxt2.push(empty, xmlns2); // register default namespace. assert(cxt2.get(empty) == test1); xmlns_id_t test2 = cxt2.push(myns, xmlns1); assert(cxt2.get(myns) == test2); assert(test1 != test2); } // Now, compare the registered namespaces between the two namespaces. assert(cxt1.get(empty) == cxt2.get(myns)); assert(cxt1.get(myns) == cxt2.get(empty)); } void test_all_namespaces() { pstring key1("a"), key2("b"), key3("c"); pstring ns1("foo"), ns2("baa"), ns3("hmm"); xmlns_repository repo; xmlns_context cxt = repo.create_context(); xmlns_id_t ns; ns = cxt.push(key1, ns1); assert(ns1 == ns); ns = cxt.push(key2, ns2); assert(ns2 == ns); ns = cxt.push(key3, ns3); assert(ns3 == ns); vector all_ns; cxt.get_all_namespaces(all_ns); assert(all_ns.size() == 3); assert(ns1 == all_ns[0]); assert(ns2 == all_ns[1]); assert(ns3 == all_ns[2]); } const xmlns_id_t NS_test_name1 = "test:name:1"; const xmlns_id_t NS_test_name2 = "test:name:2"; const xmlns_id_t NS_test_name3 = "test:name:3"; xmlns_id_t NS_test_all[] = { NS_test_name1, NS_test_name2, NS_test_name3, NULL }; void test_predefined_ns() { xmlns_repository ns_repo; ns_repo.add_predefined_values(NS_test_all); xmlns_context cxt = ns_repo.create_context(); xmlns_id_t ns_id = cxt.push("tn1", "test:name:1"); assert(ns_id == NS_test_name1); ns_id = cxt.push("tn2", "test:name:2"); assert(ns_id == NS_test_name2); ns_id = cxt.push("tn3", "test:name:3"); assert(ns_id == NS_test_name3); assert(cxt.get("tn1") == NS_test_name1); assert(cxt.get("tn2") == NS_test_name2); assert(cxt.get("tn3") == NS_test_name3); } } // anonymous namespace int main() { test_basic(); test_all_namespaces(); test_predefined_ns(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/sax_token_parser.cpp0000644000175000017500000000246112535701144020153 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/sax_token_parser.hpp" #include "orcus/tokens.hpp" namespace orcus { sax_token_handler_wrapper_base::sax_token_handler_wrapper_base(const tokens& _tokens) : m_tokens(_tokens) {} xml_token_t sax_token_handler_wrapper_base::tokenize(const pstring& name) const { xml_token_t token = XML_UNKNOWN_TOKEN; if (!name.empty()) token = m_tokens.get_token(name); return token; } void sax_token_handler_wrapper_base::set_element(const sax_ns_parser_element& elem) { m_elem.ns = elem.ns; m_elem.name = tokenize(elem.name); m_elem.raw_name = elem.name; } void sax_token_handler_wrapper_base::attribute(const pstring& /*name*/, const pstring& /*val*/) { // Right now we don't process XML declaration. } void sax_token_handler_wrapper_base::attribute(const sax_ns_parser_attribute& attr) { m_elem.attrs.push_back( xml_token_attr_t( attr.ns, tokenize(attr.name), attr.name, attr.value, attr.transient)); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/css_parser_base.cpp0000644000175000017500000001472412535701144017747 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/css_parser_base.hpp" #include "orcus/parser_global.hpp" #include #include #include #include using namespace std; namespace orcus { namespace css { parse_error::parse_error(const std::string& msg) : general_error(msg) {} void parse_error::throw_with(const char* msg_before, char c, const char* msg_after) { std::ostringstream os; if (msg_before) os << msg_before; os << c; if (msg_after) os << msg_after; throw css::parse_error(os.str()); } void parse_error::throw_with( const char* msg_before, const char* p, size_t n, const char* msg_after) { std::ostringstream os; if (msg_before) os << msg_before; write_to(os, p, n); if (msg_after) os << msg_after; throw css::parse_error(os.str()); } parser_base::parser_base(const char* p, size_t n) : mp_char(p), m_pos(0), m_length(n), m_simple_selector_count(0), m_combinator(combinator_descendant) {} void parser_base::next() { ++m_pos; ++mp_char; } char parser_base::cur_char() const { return *mp_char; } char parser_base::next_char() const { const char* p = mp_char; ++p; return *p; } size_t parser_base::remaining_size() const { return m_length - m_pos - 1; } bool parser_base::has_char() const { return m_pos < m_length; } void parser_base::identifier(const char*& p, size_t& len, const char* extra) { p = mp_char; len = 1; for (next(); has_char(); next(), ++len) { char c = cur_char(); if (is_alpha(c) || is_name_char(c) || is_numeric(c)) continue; if (extra) { // See if the character is one of the extra allowed characters. if (is_in(c, extra)) continue; } return; } } uint8_t parser_base::parse_uint8() { // 0 - 255 int val = 0; size_t len = 0; for (; has_char() && len <= 3; next()) { char c = cur_char(); if (!is_numeric(c)) break; ++len; val *= 10; val += c - '0'; } if (!len) throw css::parse_error("parse_uint8: no digit encountered."); int maxval = std::numeric_limits::max(); if (val > maxval) val = maxval; return static_cast(val); } double parser_base::parse_double() { size_t max_length = remaining_size(); const char* p = mp_char; double val = parse_numeric(p, max_length); if (p == mp_char) throw css::parse_error("parse_double: failed to parse double precision value."); m_pos += p - mp_char; mp_char = p; return val; } double parser_base::parse_percent() { double v = parse_double(); if (*mp_char != '%') css::parse_error::throw_with( "parse_percent: '%' expected after the numeric value, but '", *mp_char, "' found."); next(); // skip the '%'. return v; } void parser_base::literal(const char*& p, size_t& len, char quote) { assert(cur_char() == quote); next(); skip_to(p, len, quote); if (cur_char() != quote) throw css::parse_error("literal: end quote has never been reached."); } void parser_base::skip_to(const char*&p, size_t& len, char c) { p = mp_char; len = 0; for (; has_char(); next(), ++len) { if (cur_char() == c) return; } } void parser_base::skip_to_or_blank(const char*&p, size_t& len, const char* chars) { p = mp_char; len = 0; for (; has_char(); next(), ++len) { if (is_blank(*mp_char) || is_in(*mp_char, chars)) return; } } void parser_base::skip_blanks() { for (; has_char(); next()) { if (!is_blank(*mp_char)) break; } } void parser_base::skip_blanks_reverse() { const char* p = mp_char + remaining_size(); for (; p != mp_char; --p, --m_length) { if (!is_blank(*p)) break; } } void parser_base::shrink_stream() { // Skip any leading blanks. skip_blanks(); if (!remaining_size()) return; // Skip any trailing blanks. skip_blanks_reverse(); // Skip leading if present. const char* com_close = "-->"; size_t com_close_len = std::strlen(com_close); size_t n = remaining_size(); if (n < com_close_len) // Not enough stream left. Bail out. return; p = mp_char + n; // move to the last char. for (size_t i = com_close_len; i > 0; --i, --p) { if (*p != com_close[i-1]) return; } m_length -= com_close_len; skip_blanks_reverse(); } bool parser_base::skip_comment() { char c = cur_char(); if (c != '/') return false; if (remaining_size() > 2 && next_char() == '*') { next(); comment(); skip_blanks(); return true; } return false; } void parser_base::comment() { assert(cur_char() == '*'); // Parse until we reach either EOF or '*/'. bool has_star = false; for (next(); has_char(); next()) { char c = cur_char(); if (has_star && c == '/') { next(); return; } has_star = (c == '*'); } // EOF reached. } void parser_base::skip_comments_and_blanks() { skip_blanks(); while (skip_comment()) ; } void parser_base::set_combinator(char c, css::combinator_t combinator) { if (!m_simple_selector_count) css::parse_error::throw_with( "set_combinator: combinator '", c, "' encountered without parent element."); m_combinator = combinator; next(); skip_comments_and_blanks(); } void parser_base::reset_before_block() { m_simple_selector_count = 0; m_combinator = css::combinator_descendant; } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/xml_namespace.cpp0000644000175000017500000003006112535701144017415 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/xml_namespace.hpp" #include "orcus/exception.hpp" #include "orcus/string_pool.hpp" #include #include #include #include #define ORCUS_DEBUG_XML_NAMESPACE 0 using namespace std; #if ORCUS_DEBUG_XML_NAMESPACE #include #include #endif namespace orcus { namespace { #if ORCUS_DEBUG_XML_NAMESPACE template void print_map_keys(const _MapType& map_store) { cout << "keys: ("; bool first = true; typename _MapType::const_iterator it = map_store.begin(), it_end = map_store.end(); for (; it != it_end; ++it) { if (first) first = false; else cout << " "; cout << "'" << it->first << "'"; } cout << ")"; }; #endif } typedef boost::unordered_map strid_map_type; struct xmlns_repository_impl { size_t m_predefined_ns_size; string_pool m_pool; /// storage of live string instances. std::vector m_identifiers; /// map strings to numerical identifiers. strid_map_type m_strid_map; /// string-to-numerical identifiers map for quick lookup. xmlns_repository_impl() : m_predefined_ns_size(0) {} }; xmlns_repository::xmlns_repository() : mp_impl(new xmlns_repository_impl) {} xmlns_repository::~xmlns_repository() { delete mp_impl; } xmlns_id_t xmlns_repository::intern(const pstring& uri) { if (uri.empty()) return XMLNS_UNKNOWN_ID; // See if the uri is already registered. strid_map_type::iterator it = mp_impl->m_strid_map.find(uri); if (it != mp_impl->m_strid_map.end()) return it->first.get(); try { std::pair r = mp_impl->m_pool.intern(uri); pstring uri_interned = r.first; if (!uri_interned.empty()) { // Intern successful. if (r.second) { // This is a new instance. Assign a numerical identifier. mp_impl->m_strid_map.insert( strid_map_type::value_type(r.first, mp_impl->m_identifiers.size())); #if ORCUS_DEBUG_XML_NAMESPACE cout << "xmlns_repository::intern: uri='" << uri_interned << "' (" << mp_impl->m_identifiers.size() << ")" << endl; #endif mp_impl->m_identifiers.push_back(r.first); #if ORCUS_DEBUG_XML_NAMESPACE cout << "pool size=" << mp_impl->m_pool.size() << ", predefined ns size=" << mp_impl->m_predefined_ns_size << ", identifiers size=" << mp_impl->m_identifiers.size() << ", map size=" << mp_impl->m_strid_map.size() << endl; #endif assert(mp_impl->m_pool.size()+mp_impl->m_predefined_ns_size == mp_impl->m_identifiers.size()); assert(mp_impl->m_pool.size()+mp_impl->m_predefined_ns_size == mp_impl->m_strid_map.size()); } return uri_interned.get(); } } catch (const general_error&) { } return XMLNS_UNKNOWN_ID; } void xmlns_repository::add_predefined_values(const xmlns_id_t* predefined_ns) { if (!predefined_ns) return; const xmlns_id_t* val = &predefined_ns[0]; for (; *val; ++val) { pstring s(*val); mp_impl->m_strid_map.insert( strid_map_type::value_type(s, mp_impl->m_identifiers.size())); mp_impl->m_identifiers.push_back(s); ++mp_impl->m_predefined_ns_size; #if ORCUS_DEBUG_XML_NAMESPACE cout << "xlmns_repository: predefined ns='" << s << "'" << endl; #endif } } xmlns_context xmlns_repository::create_context() { return xmlns_context(*this); } xmlns_id_t xmlns_repository::get_identifier(size_t index) const { if (index >= mp_impl->m_identifiers.size()) return XMLNS_UNKNOWN_ID; // All identifier strings are interned which means they are all null-terminated. return mp_impl->m_identifiers[index].get(); } string xmlns_repository::get_short_name(xmlns_id_t ns_id) const { size_t index = get_index(ns_id); return get_short_name(index); } string xmlns_repository::get_short_name(size_t index) const { if (index == index_not_found) return string("???"); ostringstream os; os << "ns" << index; return os.str(); } size_t xmlns_repository::get_index(xmlns_id_t ns_id) const { if (!ns_id) return index_not_found; strid_map_type::const_iterator it = mp_impl->m_strid_map.find(pstring(ns_id)); if (it == mp_impl->m_strid_map.end()) return index_not_found; return it->second; } typedef std::vector xmlns_list_type; typedef boost::unordered_map alias_map_type; struct xmlns_context_impl { xmlns_repository& m_repo; xmlns_list_type m_all_ns; /// all namespaces ever used in this context. xmlns_list_type m_default; alias_map_type m_map; bool m_trim_all_ns; xmlns_context_impl(xmlns_repository& repo) : m_repo(repo), m_trim_all_ns(true) {} xmlns_context_impl(const xmlns_context_impl& r) : m_repo(r.m_repo), m_all_ns(r.m_all_ns), m_default(r.m_default), m_map(r.m_map), m_trim_all_ns(r.m_trim_all_ns) {} }; xmlns_context::xmlns_context(xmlns_repository& repo) : mp_impl(new xmlns_context_impl(repo)) {} xmlns_context::xmlns_context(const xmlns_context& r) : mp_impl(new xmlns_context_impl(*r.mp_impl)) {} xmlns_context::~xmlns_context() { delete mp_impl; } xmlns_id_t xmlns_context::push(const pstring& key, const pstring& uri) { #if ORCUS_DEBUG_XML_NAMESPACE cout << "xmlns_context::push: key='" << key << "', uri='" << uri << "'" << endl; #endif if (uri.empty()) return XMLNS_UNKNOWN_ID; mp_impl->m_trim_all_ns = true; pstring uri_interned = mp_impl->m_repo.intern(uri); if (key.empty()) { // empty key value is associated with default namespace. mp_impl->m_default.push_back(uri_interned.get()); mp_impl->m_all_ns.push_back(uri_interned.get()); return mp_impl->m_default.back(); } // See if this key already exists. alias_map_type::iterator it = mp_impl->m_map.find(key); if (it == mp_impl->m_map.end()) { // This is the first time this key is used. xmlns_list_type nslist; nslist.push_back(uri_interned.get()); mp_impl->m_all_ns.push_back(uri_interned.get()); std::pair r = mp_impl->m_map.insert(alias_map_type::value_type(key, nslist)); if (!r.second) // insertion failed. throw general_error("Failed to insert new namespace."); return nslist.back(); } // The key already exists. xmlns_list_type& nslist = it->second; nslist.push_back(uri_interned.get()); mp_impl->m_all_ns.push_back(uri_interned.get()); return nslist.back(); } void xmlns_context::pop(const pstring& key) { #if ORCUS_DEBUG_XML_NAMESPACE cout << "xmlns_context::pop: key='" << key << "'" << endl; #endif if (key.empty()) { // empty key value is associated with default namespace. if (mp_impl->m_default.empty()) throw general_error("default namespace stack is empty."); mp_impl->m_default.pop_back(); return; } // See if this key really exists. alias_map_type::iterator it = mp_impl->m_map.find(key); if (it == mp_impl->m_map.end()) throw general_error("failed to find the key."); xmlns_list_type& nslist = it->second; if (nslist.empty()) throw general_error("namespace stack for this key is empty."); nslist.pop_back(); } xmlns_id_t xmlns_context::get(const pstring& key) const { #if ORCUS_DEBUG_XML_NAMESPACE cout << "xmlns_context::get: alias='" << key << "', default ns stack size=" << mp_impl->m_default.size() << ", non-default alias count=" << mp_impl->m_map.size(); cout << ", "; print_map_keys(mp_impl->m_map); cout << endl; #endif if (key.empty()) return mp_impl->m_default.empty() ? XMLNS_UNKNOWN_ID : mp_impl->m_default.back(); alias_map_type::const_iterator it = mp_impl->m_map.find(key); if (it == mp_impl->m_map.end()) { #if ORCUS_DEBUG_XML_NAMESPACE cout << "xmlns_context::get: alias not in this context" << endl; #endif return XMLNS_UNKNOWN_ID; } #if ORCUS_DEBUG_XML_NAMESPACE cout << "xmlns_context::get: alias stack size=" << it->second.size() << endl; #endif return it->second.empty() ? XMLNS_UNKNOWN_ID : it->second.back(); } size_t xmlns_context::get_index(xmlns_id_t ns_id) const { return mp_impl->m_repo.get_index(ns_id); } string xmlns_context::get_short_name(xmlns_id_t ns_id) const { return mp_impl->m_repo.get_short_name(ns_id); } pstring xmlns_context::get_alias(xmlns_id_t ns_id) const { alias_map_type::const_iterator it = mp_impl->m_map.begin(), it_end = mp_impl->m_map.end(); for (; it != it_end; ++it) { const xmlns_list_type& lst = it->second; if (lst.empty()) continue; if (lst.back() == ns_id) return it->first; } return pstring(); } namespace { #if ORCUS_DEBUG_XML_NAMESPACE struct print_ns : std::unary_function { void operator() (xmlns_id_t ns_id) const { const char* p = ns_id; printf("%p: %s\n", p, p); } }; #endif struct ns_item { size_t index; xmlns_id_t ns; ns_item(size_t _index, xmlns_id_t _ns) : index(_index), ns(_ns) {} }; struct less_ns_by_index : binary_function { bool operator() (const ns_item& left, const ns_item& right) const { return left.index < right.index; } }; class push_back_ns_to_item : unary_function { vector& m_store; const xmlns_context& m_cxt; public: push_back_ns_to_item(vector& store, const xmlns_context& cxt) : m_store(store), m_cxt(cxt) {} void operator() (xmlns_id_t ns) { size_t num_id = m_cxt.get_index(ns); if (num_id != index_not_found) m_store.push_back(ns_item(num_id, ns)); } }; class push_back_item_to_ns : unary_function { std::vector& m_store; public: push_back_item_to_ns(std::vector& store) : m_store(store) {} void operator() (const ns_item& item) { m_store.push_back(item.ns); } }; } void xmlns_context::get_all_namespaces(std::vector& nslist) const { #if ORCUS_DEBUG_XML_NAMESPACE cout << "xmlns_context::get_all_namespaces: count=" << mp_impl->m_all_ns.size() << endl; std::for_each(mp_impl->m_all_ns.begin(), mp_impl->m_all_ns.end(), print_ns()); #endif if (mp_impl->m_trim_all_ns) { xmlns_list_type& all_ns = mp_impl->m_all_ns; nslist.assign(mp_impl->m_all_ns.begin(), mp_impl->m_all_ns.end()); // Sort it and remove duplicate. std::sort(all_ns.begin(), all_ns.end()); xmlns_list_type::iterator it_unique_end = std::unique(all_ns.begin(), all_ns.end()); all_ns.erase(it_unique_end, all_ns.end()); // Now, sort by indices. vector items; std::for_each(all_ns.begin(), all_ns.end(), push_back_ns_to_item(items, *this)); std::sort(items.begin(), items.end(), less_ns_by_index()); all_ns.clear(); std::for_each(items.begin(), items.end(), push_back_item_to_ns(all_ns)); mp_impl->m_trim_all_ns = false; } nslist.assign(mp_impl->m_all_ns.begin(), mp_impl->m_all_ns.end()); } void xmlns_context::dump(std::ostream& os) const { vector nslist; get_all_namespaces(nslist); vector::const_iterator it = nslist.begin(), it_end = nslist.end(); for (; it != it_end; ++it) { xmlns_id_t ns_id = *it; size_t num_id = get_index(ns_id); if (num_id == index_not_found) continue; os << "ns" << num_id << "=\"" << ns_id << '"' << endl; } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/csv_parser_base.cpp0000644000175000017500000000277612535701144017756 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/csv_parser_base.hpp" namespace orcus { namespace csv { parser_config::parser_config() : text_qualifier('\0'), trim_cell_value(false) {} parse_error::parse_error(const std::string& msg) : m_msg(msg) {} parse_error::~parse_error() throw() {} const char* parse_error::what() const throw() { return m_msg.c_str(); } parser_base::parser_base( const char* p, size_t n, const csv::parser_config& config) : m_config(config), mp_char(p), m_pos(0), m_length(n) {} void parser_base::next() { ++m_pos; ++mp_char; } char parser_base::cur_char() const { return *mp_char; } char parser_base::next_char() const { return *(mp_char+1); } bool parser_base::is_blank(char c) const { if (c == ' ') return true; if (c == '\t') // tab character. return true; return false; } bool parser_base::is_delim(char c) const { return m_config.delimiters.find(c) != std::string::npos; } bool parser_base::is_text_qualifier(char c) const { return m_config.text_qualifier == c; } void parser_base::skip_blanks() { for (; has_char(); next()) { if (!is_blank(*mp_char)) break; } } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/Makefile.in0000644000175000017500000016352612540653650016163 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = parser-test-string-pool$(EXEEXT) \ parser-test-xml-namespace$(EXEEXT) parser-test-base64$(EXEEXT) \ parser-test-sax-token-parser$(EXEEXT) TESTS = parser-test-string-pool$(EXEEXT) \ parser-test-xml-namespace$(EXEEXT) parser-test-base64$(EXEEXT) \ parser-test-sax-token-parser$(EXEEXT) subdir = src/parser DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp $(top_srcdir)/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = liborcus_parser_@ORCUS_API_VERSION@_la_DEPENDENCIES = \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_liborcus_parser_@ORCUS_API_VERSION@_la_OBJECTS = base64.lo \ cell_buffer.lo css_parser_base.lo css_types.lo \ csv_parser_base.lo exception.lo parser_global.lo pstring.lo \ sax_parser_base.lo sax_token_parser.lo stream.lo \ string_pool.lo tokens.lo types.lo xml_namespace.lo \ zip_archive.lo zip_archive_stream.lo liborcus_parser_@ORCUS_API_VERSION@_la_OBJECTS = \ $(am_liborcus_parser_@ORCUS_API_VERSION@_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = liborcus_parser_@ORCUS_API_VERSION@_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(liborcus_parser_@ORCUS_API_VERSION@_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_parser_test_base64_OBJECTS = parser_test_base64-base64.$(OBJEXT) \ parser_test_base64-base64_test.$(OBJEXT) parser_test_base64_OBJECTS = $(am_parser_test_base64_OBJECTS) parser_test_base64_LDADD = $(LDADD) am_parser_test_sax_token_parser_OBJECTS = \ parser_test_sax_token_parser-sax_token_parser_test.$(OBJEXT) parser_test_sax_token_parser_OBJECTS = \ $(am_parser_test_sax_token_parser_OBJECTS) parser_test_sax_token_parser_DEPENDENCIES = \ liborcus-parser-@ORCUS_API_VERSION@.la am_parser_test_string_pool_OBJECTS = \ parser_test_string_pool-string_pool.$(OBJEXT) \ parser_test_string_pool-string_pool_test.$(OBJEXT) parser_test_string_pool_OBJECTS = \ $(am_parser_test_string_pool_OBJECTS) parser_test_string_pool_DEPENDENCIES = \ liborcus-parser-@ORCUS_API_VERSION@.la am_parser_test_xml_namespace_OBJECTS = \ parser_test_xml_namespace-xml_namespace.$(OBJEXT) \ parser_test_xml_namespace-xml_namespace_test.$(OBJEXT) parser_test_xml_namespace_OBJECTS = \ $(am_parser_test_xml_namespace_OBJECTS) parser_test_xml_namespace_DEPENDENCIES = \ liborcus-parser-@ORCUS_API_VERSION@.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(liborcus_parser_@ORCUS_API_VERSION@_la_SOURCES) \ $(parser_test_base64_SOURCES) \ $(parser_test_sax_token_parser_SOURCES) \ $(parser_test_string_pool_SOURCES) \ $(parser_test_xml_namespace_SOURCES) DIST_SOURCES = $(liborcus_parser_@ORCUS_API_VERSION@_la_SOURCES) \ $(parser_test_base64_SOURCES) \ $(parser_test_sax_token_parser_SOURCES) \ $(parser_test_string_pool_SOURCES) \ $(parser_test_xml_namespace_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_srcdir)/include $(BOOST_SYSTEM_CFLAGS) -D__ORCUS_PSR_BUILDING_DLL lib_LTLIBRARIES = liborcus-parser-@ORCUS_API_VERSION@.la liborcus_parser_@ORCUS_API_VERSION@_la_SOURCES = \ win_stdint.h \ base64.cpp \ cell_buffer.cpp \ css_parser_base.cpp \ css_types.cpp \ csv_parser_base.cpp \ exception.cpp \ parser_global.cpp \ pstring.cpp \ sax_parser_base.cpp \ sax_token_parser.cpp \ stream.cpp \ string_pool.cpp \ tokens.cpp \ types.cpp \ xml_namespace.cpp \ zip_archive.cpp \ zip_archive_stream.cpp liborcus_parser_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined liborcus_parser_@ORCUS_API_VERSION@_la_LIBADD = \ $(BOOST_SYSTEM_LIBS) \ $(ZLIB_LIBS) # parser-test-string-pool parser_test_string_pool_SOURCES = \ string_pool.cpp \ string_pool_test.cpp parser_test_string_pool_LDADD = liborcus-parser-@ORCUS_API_VERSION@.la parser_test_string_pool_CPPFLAGS = $(AM_CPPFLAGS) # parser-test-xml-namespace parser_test_xml_namespace_SOURCES = \ xml_namespace.cpp \ xml_namespace_test.cpp parser_test_xml_namespace_LDADD = liborcus-parser-@ORCUS_API_VERSION@.la parser_test_xml_namespace_CPPFLAGS = $(AM_CPPFLAGS) # parser-test-base64 parser_test_base64_SOURCES = \ base64.cpp \ base64_test.cpp parser_test_base64_CPPFLAGS = $(AM_CPPFLAGS) # parser-test-sax-token-parser parser_test_sax_token_parser_SOURCES = \ sax_token_parser_test.cpp parser_test_sax_token_parser_LDADD = liborcus-parser-@ORCUS_API_VERSION@.la parser_test_sax_token_parser_CPPFLAGS = $(AM_CPPFLAGS) all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/parser/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/parser/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } liborcus-parser-@ORCUS_API_VERSION@.la: $(liborcus_parser_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_parser_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(EXTRA_liborcus_parser_@ORCUS_API_VERSION@_la_DEPENDENCIES) $(AM_V_CXXLD)$(liborcus_parser_@ORCUS_API_VERSION@_la_LINK) -rpath $(libdir) $(liborcus_parser_@ORCUS_API_VERSION@_la_OBJECTS) $(liborcus_parser_@ORCUS_API_VERSION@_la_LIBADD) $(LIBS) parser-test-base64$(EXEEXT): $(parser_test_base64_OBJECTS) $(parser_test_base64_DEPENDENCIES) $(EXTRA_parser_test_base64_DEPENDENCIES) @rm -f parser-test-base64$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(parser_test_base64_OBJECTS) $(parser_test_base64_LDADD) $(LIBS) parser-test-sax-token-parser$(EXEEXT): $(parser_test_sax_token_parser_OBJECTS) $(parser_test_sax_token_parser_DEPENDENCIES) $(EXTRA_parser_test_sax_token_parser_DEPENDENCIES) @rm -f parser-test-sax-token-parser$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(parser_test_sax_token_parser_OBJECTS) $(parser_test_sax_token_parser_LDADD) $(LIBS) parser-test-string-pool$(EXEEXT): $(parser_test_string_pool_OBJECTS) $(parser_test_string_pool_DEPENDENCIES) $(EXTRA_parser_test_string_pool_DEPENDENCIES) @rm -f parser-test-string-pool$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(parser_test_string_pool_OBJECTS) $(parser_test_string_pool_LDADD) $(LIBS) parser-test-xml-namespace$(EXEEXT): $(parser_test_xml_namespace_OBJECTS) $(parser_test_xml_namespace_DEPENDENCIES) $(EXTRA_parser_test_xml_namespace_DEPENDENCIES) @rm -f parser-test-xml-namespace$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(parser_test_xml_namespace_OBJECTS) $(parser_test_xml_namespace_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cell_buffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/css_parser_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/css_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csv_parser_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_global.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_test_base64-base64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_test_base64-base64_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_test_sax_token_parser-sax_token_parser_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_test_string_pool-string_pool.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_test_string_pool-string_pool_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_test_xml_namespace-xml_namespace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_test_xml_namespace-xml_namespace_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pstring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sax_parser_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sax_token_parser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string_pool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tokens.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_namespace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zip_archive.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zip_archive_stream.Plo@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< parser_test_base64-base64.o: base64.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_base64-base64.o -MD -MP -MF $(DEPDIR)/parser_test_base64-base64.Tpo -c -o parser_test_base64-base64.o `test -f 'base64.cpp' || echo '$(srcdir)/'`base64.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_base64-base64.Tpo $(DEPDIR)/parser_test_base64-base64.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='base64.cpp' object='parser_test_base64-base64.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_base64-base64.o `test -f 'base64.cpp' || echo '$(srcdir)/'`base64.cpp parser_test_base64-base64.obj: base64.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_base64-base64.obj -MD -MP -MF $(DEPDIR)/parser_test_base64-base64.Tpo -c -o parser_test_base64-base64.obj `if test -f 'base64.cpp'; then $(CYGPATH_W) 'base64.cpp'; else $(CYGPATH_W) '$(srcdir)/base64.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_base64-base64.Tpo $(DEPDIR)/parser_test_base64-base64.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='base64.cpp' object='parser_test_base64-base64.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_base64-base64.obj `if test -f 'base64.cpp'; then $(CYGPATH_W) 'base64.cpp'; else $(CYGPATH_W) '$(srcdir)/base64.cpp'; fi` parser_test_base64-base64_test.o: base64_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_base64-base64_test.o -MD -MP -MF $(DEPDIR)/parser_test_base64-base64_test.Tpo -c -o parser_test_base64-base64_test.o `test -f 'base64_test.cpp' || echo '$(srcdir)/'`base64_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_base64-base64_test.Tpo $(DEPDIR)/parser_test_base64-base64_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='base64_test.cpp' object='parser_test_base64-base64_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_base64-base64_test.o `test -f 'base64_test.cpp' || echo '$(srcdir)/'`base64_test.cpp parser_test_base64-base64_test.obj: base64_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_base64-base64_test.obj -MD -MP -MF $(DEPDIR)/parser_test_base64-base64_test.Tpo -c -o parser_test_base64-base64_test.obj `if test -f 'base64_test.cpp'; then $(CYGPATH_W) 'base64_test.cpp'; else $(CYGPATH_W) '$(srcdir)/base64_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_base64-base64_test.Tpo $(DEPDIR)/parser_test_base64-base64_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='base64_test.cpp' object='parser_test_base64-base64_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_base64_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_base64-base64_test.obj `if test -f 'base64_test.cpp'; then $(CYGPATH_W) 'base64_test.cpp'; else $(CYGPATH_W) '$(srcdir)/base64_test.cpp'; fi` parser_test_sax_token_parser-sax_token_parser_test.o: sax_token_parser_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_sax_token_parser_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_sax_token_parser-sax_token_parser_test.o -MD -MP -MF $(DEPDIR)/parser_test_sax_token_parser-sax_token_parser_test.Tpo -c -o parser_test_sax_token_parser-sax_token_parser_test.o `test -f 'sax_token_parser_test.cpp' || echo '$(srcdir)/'`sax_token_parser_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_sax_token_parser-sax_token_parser_test.Tpo $(DEPDIR)/parser_test_sax_token_parser-sax_token_parser_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='sax_token_parser_test.cpp' object='parser_test_sax_token_parser-sax_token_parser_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_sax_token_parser_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_sax_token_parser-sax_token_parser_test.o `test -f 'sax_token_parser_test.cpp' || echo '$(srcdir)/'`sax_token_parser_test.cpp parser_test_sax_token_parser-sax_token_parser_test.obj: sax_token_parser_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_sax_token_parser_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_sax_token_parser-sax_token_parser_test.obj -MD -MP -MF $(DEPDIR)/parser_test_sax_token_parser-sax_token_parser_test.Tpo -c -o parser_test_sax_token_parser-sax_token_parser_test.obj `if test -f 'sax_token_parser_test.cpp'; then $(CYGPATH_W) 'sax_token_parser_test.cpp'; else $(CYGPATH_W) '$(srcdir)/sax_token_parser_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_sax_token_parser-sax_token_parser_test.Tpo $(DEPDIR)/parser_test_sax_token_parser-sax_token_parser_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='sax_token_parser_test.cpp' object='parser_test_sax_token_parser-sax_token_parser_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_sax_token_parser_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_sax_token_parser-sax_token_parser_test.obj `if test -f 'sax_token_parser_test.cpp'; then $(CYGPATH_W) 'sax_token_parser_test.cpp'; else $(CYGPATH_W) '$(srcdir)/sax_token_parser_test.cpp'; fi` parser_test_string_pool-string_pool.o: string_pool.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_string_pool-string_pool.o -MD -MP -MF $(DEPDIR)/parser_test_string_pool-string_pool.Tpo -c -o parser_test_string_pool-string_pool.o `test -f 'string_pool.cpp' || echo '$(srcdir)/'`string_pool.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_string_pool-string_pool.Tpo $(DEPDIR)/parser_test_string_pool-string_pool.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='string_pool.cpp' object='parser_test_string_pool-string_pool.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_string_pool-string_pool.o `test -f 'string_pool.cpp' || echo '$(srcdir)/'`string_pool.cpp parser_test_string_pool-string_pool.obj: string_pool.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_string_pool-string_pool.obj -MD -MP -MF $(DEPDIR)/parser_test_string_pool-string_pool.Tpo -c -o parser_test_string_pool-string_pool.obj `if test -f 'string_pool.cpp'; then $(CYGPATH_W) 'string_pool.cpp'; else $(CYGPATH_W) '$(srcdir)/string_pool.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_string_pool-string_pool.Tpo $(DEPDIR)/parser_test_string_pool-string_pool.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='string_pool.cpp' object='parser_test_string_pool-string_pool.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_string_pool-string_pool.obj `if test -f 'string_pool.cpp'; then $(CYGPATH_W) 'string_pool.cpp'; else $(CYGPATH_W) '$(srcdir)/string_pool.cpp'; fi` parser_test_string_pool-string_pool_test.o: string_pool_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_string_pool-string_pool_test.o -MD -MP -MF $(DEPDIR)/parser_test_string_pool-string_pool_test.Tpo -c -o parser_test_string_pool-string_pool_test.o `test -f 'string_pool_test.cpp' || echo '$(srcdir)/'`string_pool_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_string_pool-string_pool_test.Tpo $(DEPDIR)/parser_test_string_pool-string_pool_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='string_pool_test.cpp' object='parser_test_string_pool-string_pool_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_string_pool-string_pool_test.o `test -f 'string_pool_test.cpp' || echo '$(srcdir)/'`string_pool_test.cpp parser_test_string_pool-string_pool_test.obj: string_pool_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_string_pool-string_pool_test.obj -MD -MP -MF $(DEPDIR)/parser_test_string_pool-string_pool_test.Tpo -c -o parser_test_string_pool-string_pool_test.obj `if test -f 'string_pool_test.cpp'; then $(CYGPATH_W) 'string_pool_test.cpp'; else $(CYGPATH_W) '$(srcdir)/string_pool_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_string_pool-string_pool_test.Tpo $(DEPDIR)/parser_test_string_pool-string_pool_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='string_pool_test.cpp' object='parser_test_string_pool-string_pool_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_string_pool_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_string_pool-string_pool_test.obj `if test -f 'string_pool_test.cpp'; then $(CYGPATH_W) 'string_pool_test.cpp'; else $(CYGPATH_W) '$(srcdir)/string_pool_test.cpp'; fi` parser_test_xml_namespace-xml_namespace.o: xml_namespace.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_xml_namespace-xml_namespace.o -MD -MP -MF $(DEPDIR)/parser_test_xml_namespace-xml_namespace.Tpo -c -o parser_test_xml_namespace-xml_namespace.o `test -f 'xml_namespace.cpp' || echo '$(srcdir)/'`xml_namespace.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_xml_namespace-xml_namespace.Tpo $(DEPDIR)/parser_test_xml_namespace-xml_namespace.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_namespace.cpp' object='parser_test_xml_namespace-xml_namespace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_xml_namespace-xml_namespace.o `test -f 'xml_namespace.cpp' || echo '$(srcdir)/'`xml_namespace.cpp parser_test_xml_namespace-xml_namespace.obj: xml_namespace.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_xml_namespace-xml_namespace.obj -MD -MP -MF $(DEPDIR)/parser_test_xml_namespace-xml_namespace.Tpo -c -o parser_test_xml_namespace-xml_namespace.obj `if test -f 'xml_namespace.cpp'; then $(CYGPATH_W) 'xml_namespace.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_namespace.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_xml_namespace-xml_namespace.Tpo $(DEPDIR)/parser_test_xml_namespace-xml_namespace.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_namespace.cpp' object='parser_test_xml_namespace-xml_namespace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_xml_namespace-xml_namespace.obj `if test -f 'xml_namespace.cpp'; then $(CYGPATH_W) 'xml_namespace.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_namespace.cpp'; fi` parser_test_xml_namespace-xml_namespace_test.o: xml_namespace_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_xml_namespace-xml_namespace_test.o -MD -MP -MF $(DEPDIR)/parser_test_xml_namespace-xml_namespace_test.Tpo -c -o parser_test_xml_namespace-xml_namespace_test.o `test -f 'xml_namespace_test.cpp' || echo '$(srcdir)/'`xml_namespace_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_xml_namespace-xml_namespace_test.Tpo $(DEPDIR)/parser_test_xml_namespace-xml_namespace_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_namespace_test.cpp' object='parser_test_xml_namespace-xml_namespace_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_xml_namespace-xml_namespace_test.o `test -f 'xml_namespace_test.cpp' || echo '$(srcdir)/'`xml_namespace_test.cpp parser_test_xml_namespace-xml_namespace_test.obj: xml_namespace_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser_test_xml_namespace-xml_namespace_test.obj -MD -MP -MF $(DEPDIR)/parser_test_xml_namespace-xml_namespace_test.Tpo -c -o parser_test_xml_namespace-xml_namespace_test.obj `if test -f 'xml_namespace_test.cpp'; then $(CYGPATH_W) 'xml_namespace_test.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_namespace_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/parser_test_xml_namespace-xml_namespace_test.Tpo $(DEPDIR)/parser_test_xml_namespace-xml_namespace_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='xml_namespace_test.cpp' object='parser_test_xml_namespace-xml_namespace_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(parser_test_xml_namespace_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser_test_xml_namespace-xml_namespace_test.obj `if test -f 'xml_namespace_test.cpp'; then $(CYGPATH_W) 'xml_namespace_test.cpp'; else $(CYGPATH_W) '$(srcdir)/xml_namespace_test.cpp'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ else \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? parser-test-string-pool.log: parser-test-string-pool$(EXEEXT) @p='parser-test-string-pool$(EXEEXT)'; \ b='parser-test-string-pool'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) parser-test-xml-namespace.log: parser-test-xml-namespace$(EXEEXT) @p='parser-test-xml-namespace$(EXEEXT)'; \ b='parser-test-xml-namespace'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) parser-test-base64.log: parser-test-base64$(EXEEXT) @p='parser-test-base64$(EXEEXT)'; \ b='parser-test-base64'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) parser-test-sax-token-parser.log: parser-test-sax-token-parser$(EXEEXT) @p='parser-test-sax-token-parser$(EXEEXT)'; \ b='parser-test-sax-token-parser'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-local distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ uninstall uninstall-am uninstall-libLTLIBRARIES distclean-local: rm -rf $(TESTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/src/parser/Makefile.am0000644000175000017500000000341012535701144016127 0ustar renerene AM_CPPFLAGS = -I$(top_srcdir)/include $(BOOST_SYSTEM_CFLAGS) -D__ORCUS_PSR_BUILDING_DLL lib_LTLIBRARIES = liborcus-parser-@ORCUS_API_VERSION@.la liborcus_parser_@ORCUS_API_VERSION@_la_SOURCES = \ win_stdint.h \ base64.cpp \ cell_buffer.cpp \ css_parser_base.cpp \ css_types.cpp \ csv_parser_base.cpp \ exception.cpp \ parser_global.cpp \ pstring.cpp \ sax_parser_base.cpp \ sax_token_parser.cpp \ stream.cpp \ string_pool.cpp \ tokens.cpp \ types.cpp \ xml_namespace.cpp \ zip_archive.cpp \ zip_archive_stream.cpp liborcus_parser_@ORCUS_API_VERSION@_la_LDFLAGS = -no-undefined liborcus_parser_@ORCUS_API_VERSION@_la_LIBADD = \ $(BOOST_SYSTEM_LIBS) \ $(ZLIB_LIBS) EXTRA_PROGRAMS = \ parser-test-string-pool \ parser-test-xml-namespace \ parser-test-base64 \ parser-test-sax-token-parser # parser-test-string-pool parser_test_string_pool_SOURCES = \ string_pool.cpp \ string_pool_test.cpp parser_test_string_pool_LDADD = liborcus-parser-@ORCUS_API_VERSION@.la parser_test_string_pool_CPPFLAGS = $(AM_CPPFLAGS) # parser-test-xml-namespace parser_test_xml_namespace_SOURCES = \ xml_namespace.cpp \ xml_namespace_test.cpp parser_test_xml_namespace_LDADD = liborcus-parser-@ORCUS_API_VERSION@.la parser_test_xml_namespace_CPPFLAGS = $(AM_CPPFLAGS) # parser-test-base64 parser_test_base64_SOURCES = \ base64.cpp \ base64_test.cpp parser_test_base64_CPPFLAGS = $(AM_CPPFLAGS) # parser-test-sax-token-parser parser_test_sax_token_parser_SOURCES = \ sax_token_parser_test.cpp parser_test_sax_token_parser_LDADD = liborcus-parser-@ORCUS_API_VERSION@.la parser_test_sax_token_parser_CPPFLAGS = $(AM_CPPFLAGS) TESTS = \ parser-test-string-pool \ parser-test-xml-namespace \ parser-test-base64 \ parser-test-sax-token-parser distclean-local: rm -rf $(TESTS) liborcus-0.9.2/src/parser/cell_buffer.cpp0000644000175000017500000000234612535701144017056 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/cell_buffer.hpp" #include #define ORCUS_DEBUG_CELL_BUFFER 0 #if ORCUS_DEBUG_CELL_BUFFER #include using std::cout; using std::endl; #endif namespace orcus { cell_buffer::cell_buffer() : m_buf_size(0) {} void cell_buffer::append(const char* p, size_t len) { if (!len) return; #if ORCUS_DEBUG_CELL_BUFFER cout << "cell_buffer::append: '" << std::string(p, len) << "'" << endl; #endif size_t size_needed = m_buf_size + len; if (m_buffer.size() < size_needed) m_buffer.resize(size_needed); char* p_dest = &m_buffer[m_buf_size]; std::strncpy(p_dest, p, len); m_buf_size += len; } void cell_buffer::reset() { m_buf_size = 0; } const char* cell_buffer::get() const { return &m_buffer[0]; } size_t cell_buffer::size() const { return m_buf_size; } bool cell_buffer::empty() const { return m_buf_size == 0; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/exception.cpp0000644000175000017500000000136412535701144016603 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/exception.hpp" using namespace std; namespace orcus { general_error::general_error(const string& msg) : m_msg(msg) { } general_error::~general_error() throw() { } const char* general_error::what() const throw() { return m_msg.c_str(); } xml_structure_error::xml_structure_error(const string& msg) : general_error(msg) {} xml_structure_error::~xml_structure_error() throw() {} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/types.cpp0000644000175000017500000000264212535701144015751 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/types.hpp" #include #include namespace orcus { const xmlns_id_t XMLNS_UNKNOWN_ID = NULL; const xml_token_t XML_UNKNOWN_TOKEN = 0; const size_t index_not_found = std::numeric_limits::max(); const size_t unspecified = std::numeric_limits::max()-1; xml_token_attr_t::xml_token_attr_t() : ns(XMLNS_UNKNOWN_ID), name(XML_UNKNOWN_TOKEN) {} xml_token_attr_t::xml_token_attr_t( xmlns_id_t _ns, xml_token_t _name, const pstring& _value, bool _transient) : ns(_ns), name(_name), value(_value), transient(_transient) {} xml_token_attr_t::xml_token_attr_t( xmlns_id_t _ns, xml_token_t _name, const pstring& _raw_name, const pstring& _value, bool _transient) : ns(_ns), name(_name), raw_name(_raw_name), value(_value), transient(_transient) {} date_time_t::date_time_t() : year(0), month(0), day(0), hour(0), minute(0), second(0.0) {} std::string date_time_t::to_string() const { std::ostringstream os; os << year << "-" << month << "-" << day << "T" << hour << ":" << minute << ":" << second; return os.str(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/parser_global.cpp0000644000175000017500000000512712535701144017422 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/parser_global.hpp" namespace orcus { bool is_blank(char c) { if (c == ' ') return true; if (c == 0x0A || c == 0x0D) // LF or CR return true; if (c == '\t') // tab character. return true; return false; } bool is_alpha(char c) { if ('a' <= c && c <= 'z') return true; if ('A' <= c && c <= 'Z') return true; return false; } bool is_name_char(char c) { switch (c) { case '-': case '_': return true; } return false; } bool is_numeric(char c) { return ('0' <= c && c <= '9'); } bool is_in(char c, const char* allowed) { for (; *allowed != '\0'; ++allowed) { if (c == *allowed) return true; } return false; } void write_to(std::ostringstream& os, const char* p, size_t n) { if (!p) return; const char* pend = p + n; for (; p != pend; ++p) os << *p; } double parse_numeric(const char*& p, size_t max_length) { const char* p_end = p + max_length; double ret = 0.0, divisor = 1.0; bool negative_sign = false; bool before_decimal_pt = true; // Check for presence of a sign. if (p != p_end) { switch (*p) { case '+': ++p; break; case '-': negative_sign = true; ++p; break; default: ; } } for (; p != p_end; ++p) { if (*p == '.') { if (!before_decimal_pt) { // Second '.' encountered. Terminate the parsing. ret /= divisor; return negative_sign ? -ret : ret; } before_decimal_pt = false; continue; } if (*p < '0' || '9' < *p) { ret /= divisor; return negative_sign ? -ret : ret; } ret *= 10.0; ret += *p - '0'; if (!before_decimal_pt) divisor *= 10.0; } ret /= divisor; return negative_sign ? -ret : ret; } double clip(double input, double low, double high) { if (input < low) input = low; if (input > high) input = high; return input; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/tokens.cpp0000644000175000017500000000237712535701144016115 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/tokens.hpp" #include "orcus/pstring.hpp" using namespace std; namespace orcus { tokens::tokens(const char** token_names, size_t token_name_count) : m_token_names(token_names), m_token_name_count(token_name_count) { for (size_t i = 0; i < m_token_name_count; ++i) { m_tokens.insert( token_map_type::value_type( pstring(m_token_names[i]), static_cast(i))); } } bool tokens::is_valid_token(xml_token_t token) const { return token != XML_UNKNOWN_TOKEN; } xml_token_t tokens::get_token(const pstring& name) const { token_map_type::const_iterator itr = m_tokens.find(name); if (itr == m_tokens.end()) return XML_UNKNOWN_TOKEN; return itr->second; } const char* tokens::get_token_name(xml_token_t token) const { if (static_cast(token) >= m_token_name_count) return ""; return m_token_names[token]; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/pstring.cpp0000644000175000017500000000551312535701144016273 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/pstring.hpp" #include "orcus/string_pool.hpp" #include "orcus/parser_global.hpp" #include #include #include #include using namespace std; namespace orcus { size_t pstring::hash::operator() (const pstring& val) const { size_t hash_val = 0; const char* p = val.get(); const char* p_end = p + val.size(); for (; p != p_end; ++p) { hash_val *= 0x01000193; hash_val ^= *p; } return hash_val; } bool pstring::operator== (const pstring& r) const { if (m_size != r.m_size) // lengths differ. return false; const char* pos1 = m_pos; const char* pos2 = r.m_pos; for (size_t i = 0; i < m_size; ++i, ++pos1, ++pos2) if (*pos1 != *pos2) return false; return true; } bool pstring::operator< (const pstring& r) const { size_t n = std::min(m_size, r.m_size); const char* p1 = m_pos; const char* p2 = r.m_pos; for (size_t i = 0; i < n; ++i, ++p1, ++p2) { if (*p1 == *p2) continue; return *p1 < *p2; } return m_size < r.m_size; } bool pstring::operator== (const char* _str) const { size_t n = std::strlen(_str); if (n != m_size) // lengths differ. return false; if (!m_size) // both are empty strings. return true; return std::strncmp(_str, m_pos, n) == 0; } pstring pstring::trim() const { const char* p = m_pos; const char* p_end = p + m_size; // Find the first non-space character. for ( ;p != p_end; ++p) { if (is_blank(*p)) continue; break; } if (p == p_end) { // This string is empty. return pstring(); } // Find the last non-space character. for (--p_end; p_end != p; --p_end) { if (is_blank(*p_end)) continue; break; } ++p_end; return pstring(p, p_end-p); } std::string operator+ (const std::string& left, const pstring& right) { std::string ret = left; if (!right.empty()) { const char* p = right.get(); const char* p_end = p + right.size(); for (; p != p_end; ++p) ret.push_back(*p); } return ret; } std::string& operator+= (std::string& left, const pstring& right) { if (!right.empty()) { const char* p = right.get(); const char* p_end = p + right.size(); for (; p != p_end; ++p) left.push_back(*p); } return left; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/base64.cpp0000644000175000017500000000411312535701144015664 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/base64.hpp" #include #include #include using namespace boost::archive::iterators; using namespace std; namespace orcus { typedef transform_width::const_iterator>, 8, 6> to_binary; typedef base64_from_binary::const_iterator, 6, 8> > to_base64; void decode_from_base64(const char* p_base64, size_t len_base64, vector& decoded) { if (len_base64 < 4) // Minimum of 4 characters required. return; vector base64(p_base64, p_base64+len_base64); // Check the number of trailing '='s (up to 2). size_t pad_size = 0; vector::reverse_iterator it = base64.rbegin(); for (; pad_size < 2; ++pad_size, ++it) { if (*it != '=') break; *it = 'A'; // replace it with 'A' which is a base64 encoding of '\0'. } vector _decoded(to_binary(base64.begin()), to_binary(base64.end())); _decoded.erase(_decoded.end()-pad_size, _decoded.end()); decoded.swap(_decoded); } void encode_to_base64(const std::vector& input, string& encoded) { if (input.empty()) return; std::vector inp = input; size_t pad_size = (3 - inp.size() % 3) % 3; inp.resize(inp.size() + pad_size); string _encoded(to_base64(inp.begin()), to_base64(inp.end())); string::reverse_iterator it = _encoded.rbegin(); for (size_t i = 0; i < pad_size; ++i, ++it) { // 'A' is a base64 encoding of '\0' // replace them with padding charachters '=' if (*it == 'A') *it = '='; } encoded.swap(_encoded); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/string_pool_test.cpp0000644000175000017500000000363312535701144020204 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "orcus/string_pool.hpp" #include "orcus/pstring.hpp" using namespace std; using namespace orcus; void test_basic() { const char* static_text = "test"; string_pool pool; assert(pool.size() == 0); pair ret = pool.intern("foo"); assert(ret.first == "foo"); assert(ret.second); // new instance ret = pool.intern("foo"); assert(ret.first == "foo"); assert(!ret.second); // existing instance. // Empty strings should not be interned. ret = pool.intern(""); assert(ret.first.empty()); assert(!ret.second); ret = pool.intern("A"); cout << "interned string: " << ret.first << endl; assert(ret.second); assert(pool.size() == 2); // Duplicate string. ret = pool.intern("A"); cout << "interned string: " << ret.first << endl; assert(!ret.second); ret = pool.intern("B"); cout << "interned string: " << ret.first << endl; assert(pool.size() == 3); // Interning an already-intern string should return a pstring with // identical memory address. pstring str = ret.first; pstring str2 = pool.intern(str).first; assert(str == str2); assert(pool.size() == 3); assert(str.get() == str2.get()); // their memory address should be identical. pstring static_str(static_text); ret = pool.intern(static_str); str = ret.first; cout << "interned string: " << str << endl; assert(pool.size() == 4); assert(str == static_str); assert(str.get() != static_str.get()); } int main() { test_basic(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/stream.cpp0000644000175000017500000000151612535701144016077 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/stream.hpp" #include "orcus/exception.hpp" #include #include using namespace std; namespace orcus { void load_file_content(const char* filepath, string& strm) { ifstream file(filepath); if (!file) { // failed to open the specified file. ostringstream os; os << "failed to load " << filepath; throw general_error(os.str()); } ostringstream os; os << file.rdbuf(); file.close(); strm = os.str(); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/win_stdint.h0000644000175000017500000000307312535701144016433 0ustar renerene/************************************************************************* * * Copyright (c) 2013 Markus Mohrhard * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * ************************************************************************/ #ifndef WIN_STDINT #define WIN_STDINT #if _MSC_VER <= 1500 typedef signed __int16 int16_t; typedef unsigned __int16 uint16_t; typedef __int32 int32_t; typedef unsigned __int32 uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #else #include #endif // visual studio version #endifliborcus-0.9.2/src/parser/sax_token_parser_test.cpp0000644000175000017500000000646112535701144021216 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/sax_token_parser.hpp" #include "orcus/tokens.hpp" #include "orcus/global.hpp" #include "orcus/xml_namespace.hpp" #include using namespace std; using namespace orcus; void test_sax_token_parser_1() { // Test XML content. const char* content = ""; size_t content_size = strlen(content); // Array of tokens to define for this test. const char* token_names[] = { "??", // 0 "andy", // 1 "bruce", // 2 "charlie", // 3 "david", // 4 "edward" // 5 }; size_t token_count = ORCUS_N_ELEMENTS(token_names); // Token constants. const xml_token_t op_andy = 1; const xml_token_t op_bruce = 2; const xml_token_t op_charlie = 3; const xml_token_t op_david = 4; const xml_token_t op_edward = 5; struct check { const char* raw_name; xml_token_t token; bool start_element; }; // Expected outcome. const check checks[] = { { "root", XML_UNKNOWN_TOKEN, true }, // name not on the master token list. { "andy", op_andy, true }, { "andy", op_andy, false }, { "bruce", op_bruce, true }, { "bruce", op_bruce, false }, { "charlie", op_charlie, true }, { "charlie", op_charlie, false }, { "david", op_david, true }, { "david", op_david, false }, { "edward", op_edward, true }, { "edward", op_edward, false }, { "frank", XML_UNKNOWN_TOKEN, true }, // name not on the master token list. { "frank", XML_UNKNOWN_TOKEN, false }, // name not on the master token list. { "root", XML_UNKNOWN_TOKEN, false }, // name not on the master token list. }; class handler { const check* mp_check; public: handler(const check* p) : mp_check(p) {} void start_element(const orcus::sax_token_parser_element& elem) { assert(pstring(mp_check->raw_name) == elem.raw_name); assert(mp_check->token == elem.name); assert(mp_check->start_element); ++mp_check; } void end_element(const orcus::sax_token_parser_element& elem) { assert(pstring(mp_check->raw_name) == elem.raw_name); assert(mp_check->token == elem.name); assert(!mp_check->start_element); ++mp_check; } void characters(const orcus::pstring& /*val*/, bool /*transient*/) {} }; handler hdl(checks); tokens token_map(token_names, token_count); xmlns_repository ns_repo; xmlns_context ns_cxt = ns_repo.create_context(); sax_token_parser parser(content, content_size, token_map, ns_cxt, hdl); parser.parse(); } int main() { test_sax_token_parser_1(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/zip_archive.cpp0000644000175000017500000004413212535701144017110 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/zip_archive.hpp" #include "orcus/zip_archive_stream.hpp" #include "orcus/string_pool.hpp" #include #include #include #include #ifdef _WIN32 #include "win_stdint.h" #else #include #endif #include #include #include #include #define ORCUS_DEBUG_ZIP_ARCHIVE 0 using namespace std; namespace orcus { zip_error::zip_error() {} zip_error::zip_error(const string& msg) : m_msg() { ostringstream os; os << "zip error: " << msg; m_msg = os.str(); } zip_error::~zip_error() throw() {} const char* zip_error::what() const throw() { return m_msg.c_str(); } namespace { struct zip_file_param { enum compress_method_type { stored = 0, deflated = 8 }; pstring filename; compress_method_type compress_method; size_t offset_file_header; size_t offset_data_stream; size_t size_compressed; size_t size_uncompressed; uint16_t version_made_by; uint16_t minimum_version_needed; uint16_t flags; uint16_t last_modified_time; uint16_t last_modified_date; uint16_t filename_length; uint16_t extra_field_length; uint16_t comment_length; uint16_t disk_id_where_file_starts; uint16_t file_attributes_internal; uint32_t file_attributes_external; uint32_t crc32; }; class zip_inflater { z_stream m_zlib_cxt; zip_inflater(); // disabled public: zip_inflater(vector& raw_buf, vector& dest_buf, const zip_file_param& param) { m_zlib_cxt.total_out = 0; m_zlib_cxt.zalloc = 0; m_zlib_cxt.zfree = 0; m_zlib_cxt.opaque = 0; m_zlib_cxt.next_in = static_cast(&raw_buf[0]); m_zlib_cxt.avail_in = param.size_compressed; m_zlib_cxt.next_out = static_cast(&dest_buf[0]); m_zlib_cxt.avail_out = param.size_uncompressed; } ~zip_inflater() { inflateEnd(&m_zlib_cxt); } bool init() { int err = inflateInit2(&m_zlib_cxt, -MAX_WBITS); return err == Z_OK; } bool inflate() { int err = ::inflate(&m_zlib_cxt, Z_SYNC_FLUSH); if (err >= 0 && m_zlib_cxt.msg) return false; return true; } }; /** * Stream doesn't know its size; only its starting offset position within * the file stream. */ class zip_stream_parser { zip_archive_stream* m_stream; size_t m_pos; size_t m_pos_internal; void read_string_to_buffer(size_t n, vector& buf) { if (!n) throw zip_error("attempt to read string of zero size."); m_stream->seek(m_pos+m_pos_internal); m_stream->read(&buf[0], n); m_pos_internal += n; } public: zip_stream_parser() : m_stream(NULL), m_pos(0), m_pos_internal(0) {} zip_stream_parser(zip_archive_stream* stream, size_t pos) : m_stream(stream), m_pos(pos), m_pos_internal(0) {} string read_string(size_t n) { vector buf(n+1, '\0'); read_string_to_buffer(n, buf); return string(reinterpret_cast(&buf[0])); } pstring read_string(size_t n, string_pool& pool) { vector buf(n+1, '\0'); read_string_to_buffer(n, buf); return pool.intern(reinterpret_cast(&buf[0]), n).first; } void skip_bytes(size_t n) { m_pos_internal += n; } uint32_t read_4bytes() { m_stream->seek(m_pos+m_pos_internal); unsigned char buf[4]; m_stream->read(&buf[0], 4); m_pos_internal += 4; uint32_t ret = buf[0]; ret |= (buf[1] << 8); ret |= (buf[2] << 16); ret |= (buf[3] << 24); return ret; } uint16_t read_2bytes() { m_stream->seek(m_pos+m_pos_internal); unsigned char buf[2]; m_stream->read(&buf[0], 2); m_pos_internal += 2; uint16_t ret = buf[0]; ret |= (buf[1] << 8); return ret; } size_t tell() const { return m_pos + m_pos_internal; } }; /** * Content of the end part of the central directory. */ struct central_dir_end { uint32_t magic_number; uint16_t this_disk_id; uint16_t central_dir_disk_id; uint16_t num_central_dir_records_local; uint16_t num_celtral_dir_records_total; uint32_t size_central_dir; size_t central_dir_pos; uint16_t comment_length; }; } // anonymous namespace class zip_archive_impl { typedef std::vector file_params_type; typedef boost::unordered_map filename_map_type; string_pool m_pool; zip_archive_stream* m_stream; off_t m_stream_size; size_t m_central_dir_pos; zip_stream_parser m_central_dir_end; file_params_type m_file_params; filename_map_type m_filenames; public: zip_archive_impl(zip_archive_stream* stream); ~zip_archive_impl(); void load(); void dump_file_entry(size_t pos) const; void dump_file_entry(const char* entry_name) const; pstring get_file_entry_name(size_t pos) const; size_t get_file_entry_count() const { return m_file_params.size(); } bool read_file_entry(const pstring& entry_name, vector& buf) const; private: /** * Find the central directory of a zip file, located toward the end before * the global comment, and starts with the byte sequence of 0x504b0506. */ size_t seek_central_dir(); void read_central_dir_end(); void read_file_entries(); }; zip_archive_impl::zip_archive_impl(zip_archive_stream* stream) : m_stream(stream), m_stream_size(0), m_central_dir_pos(0) { if (!m_stream) throw zip_error("null stream is not allowed."); m_stream_size = m_stream->size(); } zip_archive_impl::~zip_archive_impl() { } void zip_archive_impl::load() { size_t central_dir_end_pos = seek_central_dir(); if (!central_dir_end_pos) throw zip_error(); m_central_dir_end = zip_stream_parser(m_stream, central_dir_end_pos); // Read the end part of the central directory. read_central_dir_end(); // Read file entries that are in the front part of the central directory. read_file_entries(); } void zip_archive_impl::read_file_entries() { m_file_params.clear(); zip_stream_parser central_dir(m_stream, m_central_dir_pos); uint32_t magic_num = central_dir.read_4bytes(); while (magic_num == 0x02014b50) { zip_file_param param; param.version_made_by = central_dir.read_2bytes(); param.minimum_version_needed = central_dir.read_2bytes(); param.flags = central_dir.read_2bytes(); param.compress_method = static_cast(central_dir.read_2bytes()); param.last_modified_time = central_dir.read_2bytes(); param.last_modified_date = central_dir.read_2bytes(); param.crc32 = central_dir.read_4bytes(); param.size_compressed = central_dir.read_4bytes(); param.size_uncompressed = central_dir.read_4bytes(); param.filename_length = central_dir.read_2bytes(); param.extra_field_length = central_dir.read_2bytes(); param.comment_length = central_dir.read_2bytes(); param.disk_id_where_file_starts = central_dir.read_2bytes(); param.file_attributes_internal = central_dir.read_2bytes(); param.file_attributes_external = central_dir.read_4bytes(); param.offset_file_header = central_dir.read_4bytes(); if (param.filename_length) param.filename = central_dir.read_string(param.filename_length, m_pool); if (param.extra_field_length) // Ignore extra field for now. central_dir.skip_bytes(param.extra_field_length); if (param.comment_length) // Ignore file comment for now. central_dir.skip_bytes(param.comment_length); magic_num = central_dir.read_4bytes(); // magic number for the next entry. m_file_params.push_back(param); m_filenames.insert(filename_map_type::value_type(param.filename, m_file_params.size()-1)); #if ORCUS_DEBUG_ZIP_ARCHIVE cout << "-- file entries" << endl; printf( " magic number: 0x%8.8x\n", magic_num); cout << " version made by: " << param.version_made_by << endl; cout << " minimum version needed to extract: " << param.minimum_version_needed << endl; printf( " general purpose bit flag: 0x%4.4x\n", param.flags); cout << " compression method: " << param.compress_method << " (0=stored, 8=deflated)" << endl; cout << " file last modified time: " << param.last_modified_time << endl; cout << " file last modified date: " << param.last_modified_date << endl; printf( " crc32: 0x%8.8x\n", param.crc32); cout << " compressed size: " << param.size_compressed << endl; cout << " uncompressed size: " << param.size_uncompressed << endl; cout << " file name length: " << param.filename_length << endl; cout << " extra field length: " << param.extra_field_length << endl; cout << " file comment length: " << param.comment_length << endl; cout << " disk number where file starts: " << param.disk_id_where_file_starts << endl; printf( " internal file attributes: 0x%4.4x\n", param.file_attributes_internal); printf( " external file attributes: 0x%8.8x\n", param.file_attributes_external); cout << " relative offset of local file header: " << param.offset_file_header << endl; if (param.filename_length) cout << " filename: '" << param.filename << "'" << endl; cout << "--" << endl; #endif } } void zip_archive_impl::dump_file_entry(size_t pos) const { if (pos >= m_file_params.size()) throw zip_error("invalid file entry index."); const zip_file_param& param = m_file_params[pos]; cout << "-- filename: " << param.filename << endl; zip_stream_parser file_header(m_stream, param.offset_file_header); uint32_t v32 = file_header.read_4bytes(); printf(" header signature: 0x%8.8x\n", v32); uint16_t v16 = file_header.read_2bytes(); cout << " version needed to extract: " << v16 << endl; v16 = file_header.read_2bytes(); printf(" general purpose bit flag: 0x%4.4x\n", v16); v16 = file_header.read_2bytes(); cout << " compression method: " << v16 << endl; v16 = file_header.read_2bytes(); cout << " file last modified time: " << v16 << endl; v16 = file_header.read_2bytes(); cout << " file last modified date: " << v16 << endl; v32 = file_header.read_4bytes(); printf(" crc32: 0x%8.8x\n", v32); v32 = file_header.read_4bytes(); cout << " compressed size: " << v32 << endl; v32 = file_header.read_4bytes(); cout << " uncompressed size: " << v32 << endl; size_t filename_len = file_header.read_2bytes(); cout << " filename length: " << filename_len << endl; uint16_t extra_field_len = file_header.read_2bytes(); cout << " extra field length: " << extra_field_len << endl; if (filename_len) { string filename = file_header.read_string(filename_len); cout << " filename: '" << filename << "'" << endl; } if (extra_field_len) { // Ignore extra field. file_header.skip_bytes(extra_field_len); } // Header followed by the actual data bytes. m_stream->seek(file_header.tell()); vector buf; if (read_file_entry(param.filename, buf)) { cout << "-- data section" << endl; cout << &buf[0] << endl; cout << "--" << endl; } } void zip_archive_impl::dump_file_entry(const char* entry_name) const { pstring name(entry_name); filename_map_type::const_iterator it = m_filenames.find(name); if (it == m_filenames.end()) { // entry name not found. cout << "file entry '" << entry_name << "' not found." << endl; return; } dump_file_entry(it->second); } pstring zip_archive_impl::get_file_entry_name(size_t pos) const { if (pos >= m_file_params.size()) return NULL; return m_file_params[pos].filename; } bool zip_archive_impl::read_file_entry(const pstring& entry_name, vector& buf) const { pstring name(entry_name); filename_map_type::const_iterator it = m_filenames.find(name); if (it == m_filenames.end()) // entry name not found. return false; size_t index = it->second; if (index >= m_file_params.size()) // entry index is out of bound. return false; const zip_file_param& param = m_file_params[index]; // Skip the file header section. zip_stream_parser file_header(m_stream, param.offset_file_header); file_header.skip_bytes(4); file_header.skip_bytes(2); file_header.skip_bytes(2); file_header.skip_bytes(2); file_header.skip_bytes(2); file_header.skip_bytes(2); file_header.skip_bytes(4); file_header.skip_bytes(4); file_header.skip_bytes(4); uint16_t filename_len = file_header.read_2bytes(); uint16_t extra_field_len = file_header.read_2bytes(); file_header.skip_bytes(filename_len); file_header.skip_bytes(extra_field_len); // Data section is immediately followed by the header section. m_stream->seek(file_header.tell()); vector raw_buf(param.size_compressed+1, 0); m_stream->read(&raw_buf[0], param.size_compressed); switch (param.compress_method) { case zip_file_param::stored: // Not compressed at all. buf.swap(raw_buf); return true; case zip_file_param::deflated: { // deflate compression vector zip_buf(param.size_uncompressed+1, 0); // null-terminated zip_inflater inflater(raw_buf, zip_buf, param); if (!inflater.init()) break; if (!inflater.inflate()) throw zip_error("error during inflate."); buf.swap(zip_buf); return true; } default: ; } return false; } size_t zip_archive_impl::seek_central_dir() { // Search for the position of 0x06054b50 (read in little endian order - so // it's 0x50, 0x4b, 0x05, 0x06 in this order) somewhere near the end of // the stream. unsigned char magic[] = { 0x06, 0x05, 0x4b, 0x50 }; size_t n_magic = 4; off_t max_comment_size = 0xffff; size_t buf_size = 22 + max_comment_size; // central directory size is 22 + n (n maxing at 0xffff). vector buf(buf_size); // Read stream backward and try to find the magic number. size_t read_end_pos = m_stream_size; while (read_end_pos) { if (read_end_pos < buf.size()) // Last segment to read. buf.resize(read_end_pos); size_t read_pos = read_end_pos - buf.size(); m_stream->seek(read_pos); m_stream->read(&buf[0], buf.size()); // Search this byte segment for the magic number. vector::reverse_iterator i = buf.rbegin(), ie = buf.rend(); size_t magic_pos = 0; for (; i != ie; ++i) { // 06 05 4b 50 if (*i == magic[magic_pos]) { ++magic_pos; if (magic_pos == n_magic) { // magic number is found. size_t dist = distance(buf.rbegin(), i) + 1; size_t pos = read_end_pos - dist; return pos; } } else magic_pos = 0; } read_end_pos -= buf.size(); } return 0; } void zip_archive_impl::read_central_dir_end() { central_dir_end content; content.magic_number = m_central_dir_end.read_4bytes(); content.this_disk_id = m_central_dir_end.read_2bytes(); content.central_dir_disk_id = m_central_dir_end.read_2bytes(); content.num_central_dir_records_local = m_central_dir_end.read_2bytes(); content.num_celtral_dir_records_total = m_central_dir_end.read_2bytes(); content.size_central_dir = m_central_dir_end.read_4bytes(); content.central_dir_pos = m_central_dir_end.read_4bytes(); m_central_dir_pos = content.central_dir_pos; content.comment_length = m_central_dir_end.read_2bytes(); #if ORCUS_DEBUG_ZIP_ARCHIVE cout << "-- central directory content" << endl; printf(" magic number: 0x%8.8x\n", content.magic_number); cout << " number of this disk: " << content.this_disk_id << endl; cout << " disk where central directory starts: " << content.central_dir_disk_id << endl; cout << " number of central directory records on this disk: " << content.num_central_dir_records_local << endl; cout << " total number of central directory records: " << content.num_celtral_dir_records_total << endl; cout << " size of central directory: " << content.size_central_dir << endl; cout << " offset of start of central directory, relative to start of archive: " << content.central_dir_pos << endl; cout << " comment length: " << content.comment_length << endl; cout << "--" << endl; #endif } zip_archive::zip_archive(zip_archive_stream* stream) : mp_impl(new zip_archive_impl(stream)) { } zip_archive::~zip_archive() { delete mp_impl; } void zip_archive::load() { mp_impl->load(); } void zip_archive::dump_file_entry(size_t index) const { mp_impl->dump_file_entry(index); } pstring zip_archive::get_file_entry_name(size_t index) const { return mp_impl->get_file_entry_name(index); } void zip_archive::dump_file_entry(const char* entry_name) const { mp_impl->dump_file_entry(entry_name); } size_t zip_archive::get_file_entry_count() const { return mp_impl->get_file_entry_count(); } bool zip_archive::read_file_entry(const pstring& entry_name, vector& buf) const { return mp_impl->read_file_entry(entry_name, buf); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/parser/css_types.cpp0000644000175000017500000002100212535701144016610 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/css_types.hpp" #include "orcus/global.hpp" #include #include #include namespace orcus { namespace css { const pseudo_element_t pseudo_element_after = 0x0001; const pseudo_element_t pseudo_element_before = 0x0002; const pseudo_element_t pseudo_element_first_letter = 0x0004; const pseudo_element_t pseudo_element_first_line = 0x0008; const pseudo_element_t pseudo_element_selection = 0x0010; const pseudo_element_t pseudo_element_backdrop = 0x0020; namespace { typedef mdds::sorted_string_map pe_map_type; // Keys must be sorted. pe_map_type::entry pseudo_elem_type_entries[] = { { MDDS_ASCII("after"), pseudo_element_after }, { MDDS_ASCII("backdrop"), pseudo_element_backdrop }, { MDDS_ASCII("before"), pseudo_element_before }, { MDDS_ASCII("first-letter"), pseudo_element_first_letter }, { MDDS_ASCII("first-line"), pseudo_element_first_line }, { MDDS_ASCII("selection"), pseudo_element_selection }, }; } pseudo_element_t to_pseudo_element(const char* p, size_t n) { static pe_map_type elem_map( pseudo_elem_type_entries, ORCUS_N_ELEMENTS(pseudo_elem_type_entries), 0); return elem_map.find(p, n); } const pseudo_class_t pseudo_class_active = 0x0000000000000001; const pseudo_class_t pseudo_class_checked = 0x0000000000000002; const pseudo_class_t pseudo_class_default = 0x0000000000000004; const pseudo_class_t pseudo_class_dir = 0x0000000000000008; const pseudo_class_t pseudo_class_disabled = 0x0000000000000010; const pseudo_class_t pseudo_class_empty = 0x0000000000000020; const pseudo_class_t pseudo_class_enabled = 0x0000000000000040; const pseudo_class_t pseudo_class_first = 0x0000000000000080; const pseudo_class_t pseudo_class_first_child = 0x0000000000000100; const pseudo_class_t pseudo_class_first_of_type = 0x0000000000000200; const pseudo_class_t pseudo_class_fullscreen = 0x0000000000000400; const pseudo_class_t pseudo_class_focus = 0x0000000000000800; const pseudo_class_t pseudo_class_hover = 0x0000000000001000; const pseudo_class_t pseudo_class_indeterminate = 0x0000000000002000; const pseudo_class_t pseudo_class_in_range = 0x0000000000004000; const pseudo_class_t pseudo_class_invalid = 0x0000000000008000; const pseudo_class_t pseudo_class_lang = 0x0000000000010000; const pseudo_class_t pseudo_class_last_child = 0x0000000000020000; const pseudo_class_t pseudo_class_last_of_type = 0x0000000000040000; const pseudo_class_t pseudo_class_left = 0x0000000000080000; const pseudo_class_t pseudo_class_link = 0x0000000000100000; const pseudo_class_t pseudo_class_not = 0x0000000000200000; const pseudo_class_t pseudo_class_nth_child = 0x0000000000400000; const pseudo_class_t pseudo_class_nth_last_child = 0x0000000000800000; const pseudo_class_t pseudo_class_nth_last_of_type = 0x0000000001000000; const pseudo_class_t pseudo_class_nth_of_type = 0x0000000002000000; const pseudo_class_t pseudo_class_only_child = 0x0000000004000000; const pseudo_class_t pseudo_class_only_of_type = 0x0000000008000000; const pseudo_class_t pseudo_class_optional = 0x0000000010000000; const pseudo_class_t pseudo_class_out_of_range = 0x0000000020000000; const pseudo_class_t pseudo_class_read_only = 0x0000000040000000; const pseudo_class_t pseudo_class_read_write = 0x0000000080000000; const pseudo_class_t pseudo_class_required = 0x0000000100000000; const pseudo_class_t pseudo_class_right = 0x0000000200000000; const pseudo_class_t pseudo_class_root = 0x0000000400000000; const pseudo_class_t pseudo_class_scope = 0x0000000800000000; const pseudo_class_t pseudo_class_target = 0x0000001000000000; const pseudo_class_t pseudo_class_valid = 0x0000002000000000; const pseudo_class_t pseudo_class_visited = 0x0000004000000000; namespace { typedef mdds::sorted_string_map pc_map_type; // Keys must be sorted. pc_map_type::entry pseudo_class_type_entries[] = { { MDDS_ASCII("active"), pseudo_class_active }, { MDDS_ASCII("checked"), pseudo_class_checked }, { MDDS_ASCII("default"), pseudo_class_default }, { MDDS_ASCII("dir"), pseudo_class_dir }, { MDDS_ASCII("disabled"), pseudo_class_disabled }, { MDDS_ASCII("empty"), pseudo_class_empty }, { MDDS_ASCII("enabled"), pseudo_class_enabled }, { MDDS_ASCII("first"), pseudo_class_first }, { MDDS_ASCII("first-child"), pseudo_class_first_child }, { MDDS_ASCII("first-of-type"), pseudo_class_first_of_type }, { MDDS_ASCII("focus"), pseudo_class_focus }, { MDDS_ASCII("fullscreen"), pseudo_class_fullscreen }, { MDDS_ASCII("hover"), pseudo_class_hover }, { MDDS_ASCII("in-range"), pseudo_class_in_range }, { MDDS_ASCII("indeterminate"), pseudo_class_indeterminate }, { MDDS_ASCII("invalid"), pseudo_class_invalid }, { MDDS_ASCII("lang"), pseudo_class_lang }, { MDDS_ASCII("last-child"), pseudo_class_last_child }, { MDDS_ASCII("last-of-type"), pseudo_class_last_of_type }, { MDDS_ASCII("left"), pseudo_class_left }, { MDDS_ASCII("link"), pseudo_class_link }, { MDDS_ASCII("not"), pseudo_class_not }, { MDDS_ASCII("nth-child"), pseudo_class_nth_child }, { MDDS_ASCII("nth-last-child"), pseudo_class_nth_last_child }, { MDDS_ASCII("nth-last-of-type"), pseudo_class_nth_last_of_type }, { MDDS_ASCII("nth-of-type"), pseudo_class_nth_of_type }, { MDDS_ASCII("only-child"), pseudo_class_only_child }, { MDDS_ASCII("only-of-type"), pseudo_class_only_of_type }, { MDDS_ASCII("optional"), pseudo_class_optional }, { MDDS_ASCII("out-of-range"), pseudo_class_out_of_range }, { MDDS_ASCII("read-only"), pseudo_class_read_only }, { MDDS_ASCII("read-write"), pseudo_class_read_write }, { MDDS_ASCII("required"), pseudo_class_required }, { MDDS_ASCII("right"), pseudo_class_right }, { MDDS_ASCII("root"), pseudo_class_root }, { MDDS_ASCII("scope"), pseudo_class_scope }, { MDDS_ASCII("target"), pseudo_class_target }, { MDDS_ASCII("valid"), pseudo_class_valid }, { MDDS_ASCII("visited"), pseudo_class_visited }, }; } pseudo_class_t to_pseudo_class(const char* p, size_t n) { static pc_map_type class_map( pseudo_class_type_entries, ORCUS_N_ELEMENTS(pseudo_class_type_entries), 0); return class_map.find(p, n); } std::string pseudo_class_to_string(pseudo_class_t val) { std::ostringstream os; size_t n = ORCUS_N_ELEMENTS(pseudo_class_type_entries); const pc_map_type::entry* p = pseudo_class_type_entries; const pc_map_type::entry* p_end = p + n; for (; p != p_end; ++p) { if (val & p->value) os << ":" << p->key; } return os.str(); } namespace { typedef mdds::sorted_string_map propfunc_map_type; // Keys must be sorted. propfunc_map_type::entry propfunc_type_entries[] = { { MDDS_ASCII("hsl"), func_hsl }, { MDDS_ASCII("hsla"), func_hsla }, { MDDS_ASCII("rgb"), func_rgb }, { MDDS_ASCII("rgba"), func_rgba }, { MDDS_ASCII("url"), func_url } }; } property_function_t to_property_function(const char* p, size_t n) { static propfunc_map_type propfunc_map( propfunc_type_entries, ORCUS_N_ELEMENTS(propfunc_type_entries), func_unknown); return propfunc_map.find(p, n); } }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_filter_global.cpp0000644000175000017500000001143312535701143017326 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus_filter_global.hpp" #include "orcus/pstring.hpp" #include "orcus/config.hpp" #include "orcus/interface.hpp" #include #include #include #include #include using namespace std; using namespace orcus; namespace po = boost::program_options; namespace fs = boost::filesystem; namespace orcus { namespace { const char* help_program = "The FILE must specify a path to an existing file."; const char* help_output = "Output directory path, or output file when --dump-check option is used."; const char* help_output_format = "Specify the format of output file. Supported format types are: " "1) flat text format (flat), 2) HTML format (html), or 3) no output (none)."; const char* help_dump_check = "Dump the the content to stdout in a special format used for content verification in unit tests."; const char* help_debug = "Turn on a debug mode to generate run-time debug output."; } bool handle_dump_check( iface::import_filter& app, iface::document_dumper& doc, const string& infile, const string& outfile) { if (outfile.empty()) { // Dump to stdout when no output file is specified. app.read_file(infile); doc.dump_check(cout); return true; } if (fs::exists(outfile) && fs::is_directory(outfile)) { cerr << "A directory named '" << outfile << "' already exists." << endl; return false; } ofstream file(outfile.c_str()); app.read_file(infile); doc.dump_check(file); return true; } bool parse_import_filter_args( iface::import_filter& app, iface::document_dumper& doc, int argc, char** argv) { po::options_description desc("Allowed options"); desc.add_options() ("help,h", "Print this help.") ("debug,d", help_debug) ("dump-check", help_dump_check) ("output,o", po::value(), help_output) ("output-format,f", po::value(), help_output_format); po::options_description hidden("Hidden options"); hidden.add_options() ("input", po::value(), "input file"); po::options_description cmd_opt; cmd_opt.add(desc).add(hidden); po::positional_options_description po_desc; po_desc.add("input", -1); po::variables_map vm; try { po::store( po::command_line_parser(argc, argv).options(cmd_opt).positional(po_desc).run(), vm); po::notify(vm); } catch (const exception& e) { // Unknown options. cout << e.what() << endl; cout << desc; return false; } if (vm.count("help")) { cout << "Usage: orcus-" << app.get_name() << " [options] FILE" << endl << endl; cout << help_program << endl << endl << desc; return true; } string infile, outdir, outformat; if (vm.count("input")) infile = vm["input"].as(); if (vm.count("output")) outdir = vm["output"].as(); if (vm.count("output-format")) outformat = vm["output-format"].as(); config opt; opt.debug = vm.count("debug") > 0; app.set_config(opt); if (infile.empty()) { cerr << "No input file." << endl; return false; } if (vm.count("dump-check")) { // 'outdir' is used as the output file path in this mode. return handle_dump_check(app, doc, infile, outdir); } if (outformat.empty()) { cerr << "No output format specified. Choose either 'flat', 'html' or 'none'." << endl; return false; } if (outformat == "none") { // When "none" format is specified, just read the input file and exit. app.read_file(infile); return true; } if (outdir.empty()) { cerr << "No output directory." << endl; return false; } if (fs::exists(outdir)) { if (!fs::is_directory(outdir)) { cerr << "A file named '" << outdir << "' already exists, and is not a directory." << endl; return false; } } else fs::create_directory(outdir); app.read_file(infile); if (outformat == "flat") doc.dump_flat(outdir); else if (outformat == "html") doc.dump_html(outdir); else { // Do nothing, but warning about unknown output format type. cerr << "Unknown output format type '" << outformat << "'. No output files have been generated." << endl; } return true; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_xlsx_main.cpp0000644000175000017500000000137712535701143016531 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/orcus_xlsx.hpp" #include "orcus/spreadsheet/factory.hpp" #include "orcus/spreadsheet/document.hpp" #include "orcus_filter_global.hpp" using namespace orcus; int main(int argc, char** argv) { spreadsheet::document doc; spreadsheet::import_factory fact(doc); orcus_xlsx app(&fact); if (parse_import_filter_args(app, doc, argc, argv)) return EXIT_FAILURE; return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_test_common.cpp0000644000175000017500000000207312535701143017050 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/pstring.hpp" #include #include #include using namespace std; using namespace orcus; void test_common_pstring() { { // test for trimming. string s1("test"), s2(" test"), s3(" test "); pstring ps1(s1.c_str()), ps2(s2.c_str()), ps3(s3.c_str()); assert(ps1 != ps2); assert(ps1 != ps3); assert(ps2 != ps3); pstring trimmed = ps1.trim(); assert(ps1 == trimmed); // nothing to trim. assert(ps1 == ps2.trim()); assert(ps1 == ps3.trim()); assert(ps1.size() == ps2.trim().size()); assert(ps1.size() == ps3.trim().size()); } } int main() { test_common_pstring(); return EXIT_SUCCESS; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/src/orcus_mso_encryption.cpp0000644000175000017500000000144112535701143017567 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "orcus/mso/encryption_info.hpp" #include "orcus/stream.hpp" using namespace orcus; using namespace std; int main(int argc, char** argv) try { if (argc != 2) return EXIT_FAILURE; mso::encryption_info_reader reader; string strm; load_file_content(argv[1], strm); if (strm.empty()) return EXIT_FAILURE; reader.read(&strm[0], strm.size()); return EXIT_SUCCESS; } catch (...) { return EXIT_FAILURE; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/Makefile.in0000644000175000017500000010667712540653650014104 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @BUILD_SPREADSHEET_MODEL_TRUE@am__append_1 = liborcus-spreadsheet-model-@ORCUS_API_VERSION@.pc subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in $(srcdir)/liborcus.pc.in \ $(srcdir)/liborcus-spreadsheet-model.pc.in \ $(srcdir)/VERSION.in AUTHORS COPYING NEWS compile config.guess \ config.sub depcomp install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = VERSION CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.xz GZIP_ENV = --best DIST_TARGETS = dist-xz dist-bzip2 dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src include parser_handlers ACLOCAL_AMFLAGS = -I m4 pcfiles = liborcus-@ORCUS_API_VERSION@.pc $(am__append_1) pkgconfig_DATA = $(pcfiles) pkgconfigdir = $(libdir)/pkgconfig doc_data = \ doc/rfc4180-csv.txt \ doc/class_diagram.odg \ doc/column-width-and-row-height.txt \ doc/zlib-in-memory-gzip.txt bin_data = \ bin/orcus-xls-xml.sh \ bin/orcus-detect.sh \ bin/orcus-test-csv.sh \ bin/orcus-xml.sh \ bin/orcus-xml-dump.sh \ bin/orcus-csv.sh \ bin/orcus-test-xml-mapped.sh \ bin/orcus-mso-encryption.sh \ bin/orcus-xlsx.sh \ bin/orcus-ods.sh \ bin/orcus-gnumeric.sh \ bin/orcus-zip-dump.sh \ bin/orcus-common-func.sh \ bin/orcus-test-xml.sh misc_data = \ misc/OpenDocument-v1.2-os-schema.rng \ misc/gnumeric.xsd \ misc/xls-xml-tokens.txt \ misc/gen-odf-tokens.py \ misc/ooxml-ecma-376/OfficeOpenXML-XMLSchema.zip \ misc/ooxml-ecma-376/OpenPackagingConventions-XMLSchema.zip \ misc/gen-gnumeric-tokens.py \ misc/gen-tokens.py \ misc/gen-ooxml-tokens.py \ misc/generate-tokens.sh \ misc/dump-xsd-keys.py \ misc/token_util.py slickedit_data = \ slickedit/token-gen.vpj \ slickedit/orcus.vpw \ slickedit/external-headers.vpj \ slickedit/orcus.vpj test_data = \ test/csv/normal-quotes/input.csv \ test/csv/normal-quotes/check.txt \ test/csv/quoted-with-delim/input.csv \ test/csv/quoted-with-delim/check.txt \ test/csv/simple-numbers/input.csv \ test/csv/simple-numbers/check.txt \ test/csv/double-quotes/input.csv \ test/csv/double-quotes/check.txt \ test/xml-structure/basic-1/check.txt \ test/xml-structure/basic-1/input.xml \ test/xml-structure/attribute-1/check.txt \ test/xml-structure/attribute-1/input.xml \ test/xml-structure/namespace-default/check.txt \ test/xml-structure/namespace-default/input.xml \ test/xml-structure/basic-2/check.txt \ test/xml-structure/basic-2/input.xml \ test/xml-structure/nested-repeat-1/check.txt \ test/xml-structure/nested-repeat-1/input.xml \ test/xml-structure/basic-3/check.txt \ test/xml-structure/basic-3/input.xml \ test/xls-xml/basic/check.txt \ test/xls-xml/basic/input.xml \ test/xml-mapped/attribute-single-element-2/check.txt \ test/xml-mapped/attribute-single-element-2/map.xml \ test/xml-mapped/attribute-single-element-2/input.xml \ test/xml-mapped/attribute-single-element/check.txt \ test/xml-mapped/attribute-single-element/map.xml \ test/xml-mapped/attribute-single-element/input.xml \ test/xml-mapped/attribute-range-self-close/check.txt \ test/xml-mapped/attribute-range-self-close/map.xml \ test/xml-mapped/attribute-range-self-close/input.xml \ test/xml-mapped/attribute-namespace/check.txt \ test/xml-mapped/attribute-namespace/map.xml \ test/xml-mapped/attribute-namespace/input.xml \ test/xml-mapped/attribute-basic/check.txt \ test/xml-mapped/attribute-basic/map.xml \ test/xml-mapped/attribute-basic/input.xml \ test/xml-mapped/content-basic/check.txt \ test/xml-mapped/content-basic/map.xml \ test/xml-mapped/content-basic/input.xml \ test/xml-mapped/content-namespace-2/check.txt \ test/xml-mapped/content-namespace-2/map.xml \ test/xml-mapped/content-namespace-2/input.xml \ test/xml-mapped/content-namespace/check.txt \ test/xml-mapped/content-namespace/map.xml \ test/xml-mapped/content-namespace/input.xml \ test/gnumeric/test.gnumeric \ test/xlsx/test.xlsx \ test/xlsx/column-width-row-height/input.xlsx \ test/xlsx/empty-shared-strings/check.txt \ test/xlsx/empty-shared-strings/input.xlsx \ test/xlsx/data-table/multi-table.xlsx \ test/xlsx/data-table/one-variable.xlsx \ test/xlsx/borders/single-cells.xlsx \ test/xlsx/borders/grid-box.xlsx \ test/xlsx/formula-simple.xlsx \ test/xlsx/raw-values-1/check.txt \ test/xlsx/raw-values-1/input.xlsx \ test/xlsx/pivot-table/two-pivot-caches.xlsx \ test/xlsx/pivot-table/two-tables-one-source.xlsx \ test/xlsx/pivot-table/many-fields.xlsx \ test/xlsx/date-cell/input.xlsx \ test/xlsx/table/table-2.xlsx \ test/xlsx/table/autofilter.xlsx \ test/xlsx/table/table-1.xlsx \ test/xlsx/formatted-text/colored-text.xlsx \ test/xlsx/formatted-text/bold-and-italic.xlsx \ test/xlsx/revision/cell-change-basic.xlsx \ test/xlsx/background-color/standard.xlsx \ test/xlsx/formula-shared.xlsx \ test/css/basic5.css \ test/css/basic11.css \ test/css/complex/excel-html.css \ test/css/complex/callout.css \ test/css/basic12.css \ test/css/test.css \ test/css/basic13.css \ test/css/basic4.css \ test/css/basic8.css \ test/css/basic1.css \ test/css/basic9.css \ test/css/basic10.css \ test/css/chained2.css \ test/css/basic2.css \ test/css/basic14.css \ test/css/basic3.css \ test/css/basic6.css \ test/css/chained1.css \ test/css/basic7.css \ test/xml/encoded-attrs/test1.xml \ test/xml/default-ns/check.txt \ test/xml/default-ns/input.xml \ test/xml/encoded-char/check.txt \ test/xml/encoded-char/input.xml \ test/xml/bom/check.txt \ test/xml/bom/input.xml \ test/xml/cdata-1/check.txt \ test/xml/cdata-1/input.xml \ test/xml/doctype/html.xml \ test/xml/simple/check.txt \ test/xml/simple/input.xml \ test/xml/custom-decl-1/check.txt \ test/xml/custom-decl-1/input.xml \ test/xml/parse-only/rss/input.xml \ test/xml/ns-alias-1/check.txt \ test/xml/ns-alias-1/input.xml \ test/ods/column-width-row-height/input.ods \ test/ods/japanese.ods \ test/ods/formula-1/check.txt \ test/ods/formula-1/input.ods \ test/ods/borders/grid-box.ods \ test/ods/borders/single-cells.ods \ test/ods/raw-values-1/check.txt \ test/ods/raw-values-1/input.ods \ test/ods/date-cell/input.ods \ test/ods/formatted-text/bold-and-italic.ods \ test/ods/test.ods vsprojects_data = \ vsprojects/orcus-csv/orcus-csv.vcproj \ vsprojects/orcus-csv/AdditionalLibs.vsprops \ vsprojects/liborcus-parser.vsprops \ vsprojects/liborcus-parser-static/liborcus-parser-static.vcproj \ vsprojects/MddsAndIxion.vsprops \ vsprojects/liborcus-parser/liborcus-parser.vcproj \ vsprojects/liborcus-spreadsheet-model/liborcus-spreadsheet-model.vcproj \ vsprojects/orcus-xlsx/orcus-xlsx.vcproj \ vsprojects/orcus-xml/orcus-xml.vcproj \ vsprojects/orcus.sln \ vsprojects/liborcus/liborcus.vcproj \ vsprojects/liborcus/zLib.vsprops \ vsprojects/liborcus/DefaultConfig.vsprops \ vsprojects/liborcus-static/liborcus-static.vcproj \ vsprojects/orcus-ods/orcus-ods.vcproj \ vsprojects/orcus-gnumeric/orcus-gnumeric.vcproj EXTRA_DIST = \ liborcus.pc.in \ autogen.sh \ $(bin_data) \ $(doc_data) \ $(misc_data) \ $(slickedit_data) \ $(test_data) \ $(vsprojects_data) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 VERSION: $(top_builddir)/config.status $(srcdir)/VERSION.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-local distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgconfigDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-pkgconfigDATA distclean-local: rm -rf *.pc dist-hook: git log --date=short --pretty="format:@%cd %an <%ae> [%H]%n%n%s%n%n%e%b" | sed -e "s|^\([^@]\)|\t\1|" -e "s|^@||" >$(distdir)/ChangeLog # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/Makefile.am0000644000175000017500000001614012535701141014045 0ustar renereneSUBDIRS = src include parser_handlers ACLOCAL_AMFLAGS = -I m4 pcfiles = liborcus-@ORCUS_API_VERSION@.pc if BUILD_SPREADSHEET_MODEL pcfiles += liborcus-spreadsheet-model-@ORCUS_API_VERSION@.pc endif pkgconfig_DATA = $(pcfiles) pkgconfigdir = $(libdir)/pkgconfig doc_data = \ doc/rfc4180-csv.txt \ doc/class_diagram.odg \ doc/column-width-and-row-height.txt \ doc/zlib-in-memory-gzip.txt bin_data = \ bin/orcus-xls-xml.sh \ bin/orcus-detect.sh \ bin/orcus-test-csv.sh \ bin/orcus-xml.sh \ bin/orcus-xml-dump.sh \ bin/orcus-csv.sh \ bin/orcus-test-xml-mapped.sh \ bin/orcus-mso-encryption.sh \ bin/orcus-xlsx.sh \ bin/orcus-ods.sh \ bin/orcus-gnumeric.sh \ bin/orcus-zip-dump.sh \ bin/orcus-common-func.sh \ bin/orcus-test-xml.sh misc_data = \ misc/OpenDocument-v1.2-os-schema.rng \ misc/gnumeric.xsd \ misc/xls-xml-tokens.txt \ misc/gen-odf-tokens.py \ misc/ooxml-ecma-376/OfficeOpenXML-XMLSchema.zip \ misc/ooxml-ecma-376/OpenPackagingConventions-XMLSchema.zip \ misc/gen-gnumeric-tokens.py \ misc/gen-tokens.py \ misc/gen-ooxml-tokens.py \ misc/generate-tokens.sh \ misc/dump-xsd-keys.py \ misc/token_util.py slickedit_data = \ slickedit/token-gen.vpj \ slickedit/orcus.vpw \ slickedit/external-headers.vpj \ slickedit/orcus.vpj test_data = \ test/csv/normal-quotes/input.csv \ test/csv/normal-quotes/check.txt \ test/csv/quoted-with-delim/input.csv \ test/csv/quoted-with-delim/check.txt \ test/csv/simple-numbers/input.csv \ test/csv/simple-numbers/check.txt \ test/csv/double-quotes/input.csv \ test/csv/double-quotes/check.txt \ test/xml-structure/basic-1/check.txt \ test/xml-structure/basic-1/input.xml \ test/xml-structure/attribute-1/check.txt \ test/xml-structure/attribute-1/input.xml \ test/xml-structure/namespace-default/check.txt \ test/xml-structure/namespace-default/input.xml \ test/xml-structure/basic-2/check.txt \ test/xml-structure/basic-2/input.xml \ test/xml-structure/nested-repeat-1/check.txt \ test/xml-structure/nested-repeat-1/input.xml \ test/xml-structure/basic-3/check.txt \ test/xml-structure/basic-3/input.xml \ test/xls-xml/basic/check.txt \ test/xls-xml/basic/input.xml \ test/xml-mapped/attribute-single-element-2/check.txt \ test/xml-mapped/attribute-single-element-2/map.xml \ test/xml-mapped/attribute-single-element-2/input.xml \ test/xml-mapped/attribute-single-element/check.txt \ test/xml-mapped/attribute-single-element/map.xml \ test/xml-mapped/attribute-single-element/input.xml \ test/xml-mapped/attribute-range-self-close/check.txt \ test/xml-mapped/attribute-range-self-close/map.xml \ test/xml-mapped/attribute-range-self-close/input.xml \ test/xml-mapped/attribute-namespace/check.txt \ test/xml-mapped/attribute-namespace/map.xml \ test/xml-mapped/attribute-namespace/input.xml \ test/xml-mapped/attribute-basic/check.txt \ test/xml-mapped/attribute-basic/map.xml \ test/xml-mapped/attribute-basic/input.xml \ test/xml-mapped/content-basic/check.txt \ test/xml-mapped/content-basic/map.xml \ test/xml-mapped/content-basic/input.xml \ test/xml-mapped/content-namespace-2/check.txt \ test/xml-mapped/content-namespace-2/map.xml \ test/xml-mapped/content-namespace-2/input.xml \ test/xml-mapped/content-namespace/check.txt \ test/xml-mapped/content-namespace/map.xml \ test/xml-mapped/content-namespace/input.xml \ test/gnumeric/test.gnumeric \ test/xlsx/test.xlsx \ test/xlsx/column-width-row-height/input.xlsx \ test/xlsx/empty-shared-strings/check.txt \ test/xlsx/empty-shared-strings/input.xlsx \ test/xlsx/data-table/multi-table.xlsx \ test/xlsx/data-table/one-variable.xlsx \ test/xlsx/borders/single-cells.xlsx \ test/xlsx/borders/grid-box.xlsx \ test/xlsx/formula-simple.xlsx \ test/xlsx/raw-values-1/check.txt \ test/xlsx/raw-values-1/input.xlsx \ test/xlsx/pivot-table/two-pivot-caches.xlsx \ test/xlsx/pivot-table/two-tables-one-source.xlsx \ test/xlsx/pivot-table/many-fields.xlsx \ test/xlsx/date-cell/input.xlsx \ test/xlsx/table/table-2.xlsx \ test/xlsx/table/autofilter.xlsx \ test/xlsx/table/table-1.xlsx \ test/xlsx/formatted-text/colored-text.xlsx \ test/xlsx/formatted-text/bold-and-italic.xlsx \ test/xlsx/revision/cell-change-basic.xlsx \ test/xlsx/background-color/standard.xlsx \ test/xlsx/formula-shared.xlsx \ test/css/basic5.css \ test/css/basic11.css \ test/css/complex/excel-html.css \ test/css/complex/callout.css \ test/css/basic12.css \ test/css/test.css \ test/css/basic13.css \ test/css/basic4.css \ test/css/basic8.css \ test/css/basic1.css \ test/css/basic9.css \ test/css/basic10.css \ test/css/chained2.css \ test/css/basic2.css \ test/css/basic14.css \ test/css/basic3.css \ test/css/basic6.css \ test/css/chained1.css \ test/css/basic7.css \ test/xml/encoded-attrs/test1.xml \ test/xml/default-ns/check.txt \ test/xml/default-ns/input.xml \ test/xml/encoded-char/check.txt \ test/xml/encoded-char/input.xml \ test/xml/bom/check.txt \ test/xml/bom/input.xml \ test/xml/cdata-1/check.txt \ test/xml/cdata-1/input.xml \ test/xml/doctype/html.xml \ test/xml/simple/check.txt \ test/xml/simple/input.xml \ test/xml/custom-decl-1/check.txt \ test/xml/custom-decl-1/input.xml \ test/xml/parse-only/rss/input.xml \ test/xml/ns-alias-1/check.txt \ test/xml/ns-alias-1/input.xml \ test/ods/column-width-row-height/input.ods \ test/ods/japanese.ods \ test/ods/formula-1/check.txt \ test/ods/formula-1/input.ods \ test/ods/borders/grid-box.ods \ test/ods/borders/single-cells.ods \ test/ods/raw-values-1/check.txt \ test/ods/raw-values-1/input.ods \ test/ods/date-cell/input.ods \ test/ods/formatted-text/bold-and-italic.ods \ test/ods/test.ods vsprojects_data = \ vsprojects/orcus-csv/orcus-csv.vcproj \ vsprojects/orcus-csv/AdditionalLibs.vsprops \ vsprojects/liborcus-parser.vsprops \ vsprojects/liborcus-parser-static/liborcus-parser-static.vcproj \ vsprojects/MddsAndIxion.vsprops \ vsprojects/liborcus-parser/liborcus-parser.vcproj \ vsprojects/liborcus-spreadsheet-model/liborcus-spreadsheet-model.vcproj \ vsprojects/orcus-xlsx/orcus-xlsx.vcproj \ vsprojects/orcus-xml/orcus-xml.vcproj \ vsprojects/orcus.sln \ vsprojects/liborcus/liborcus.vcproj \ vsprojects/liborcus/zLib.vsprops \ vsprojects/liborcus/DefaultConfig.vsprops \ vsprojects/liborcus-static/liborcus-static.vcproj \ vsprojects/orcus-ods/orcus-ods.vcproj \ vsprojects/orcus-gnumeric/orcus-gnumeric.vcproj EXTRA_DIST = \ liborcus.pc.in \ autogen.sh \ $(bin_data) \ $(doc_data) \ $(misc_data) \ $(slickedit_data) \ $(test_data) \ $(vsprojects_data) distclean-local: rm -rf *.pc dist-hook: git log --date=short --pretty="format:@%cd %an <%ae> [%H]%n%n%s%n%n%e%b" | sed -e "s|^\([^@]\)|\t\1|" -e "s|^@||" >$(distdir)/ChangeLog liborcus-0.9.2/COPYING0000644000175000017500000000030212535701141013035 0ustar renereneThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. liborcus-0.9.2/ltmain.sh0000644000175000017500000105152212540653644013647 0ustar renerene # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.2 TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 liborcus-0.9.2/autogen.sh0000755000175000017500000000240112535701142014006 0ustar renerene#!/bin/sh TESTLIBTOOLIZE="glibtoolize libtoolize" LIBTOOLIZEFOUND="0" srcdir=`dirname $0` test -z "$srcdir" && srcdir=. olddir=`pwd` cd $srcdir aclocal --version > /dev/null 2> /dev/null || { echo "error: aclocal not found" exit 1 } automake --version > /dev/null 2> /dev/null || { echo "error: automake not found" exit 1 } for i in $TESTLIBTOOLIZE; do if which $i > /dev/null 2>&1; then LIBTOOLIZE=$i LIBTOOLIZEFOUND="1" break fi done if [ "$LIBTOOLIZEFOUND" = "0" ]; then echo "$0: need libtoolize tool to build orcus" >&2 exit 1 fi amcheck=`automake --version | grep 'automake (GNU automake) 1.5'` if test "x$amcheck" = "xautomake (GNU automake) 1.5"; then echo "warning: you appear to be using automake 1.5" echo " this version has a bug - GNUmakefile.am dependencies are not generated" fi rm -rf autom4te*.cache $LIBTOOLIZE --force --copy || { echo "error: libtoolize failed" exit 1 } aclocal -I m4 $ACLOCAL_FLAGS || { echo "error: aclocal $ACLOCAL_FLAGS failed" exit 1 } autoheader || { echo "error: autoheader failed" exit 1 } automake -a -c --foreign || { echo "warning: automake failed" } autoconf || { echo "error: autoconf failed" exit 1 } test x$NOCONFIGURE = x && ./configure $@ liborcus-0.9.2/aclocal.m40000644000175000017500000014143212540653646013670 0ustar renerene# generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # PKG_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable pkgconfigdir as the location where a module # should install pkg-config .pc files. By default the directory is # $libdir/pkgconfig, but the default can be changed by passing # DIRECTORY. The user can override through the --with-pkgconfigdir # parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_INSTALLDIR # PKG_NOARCH_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable noarch_pkgconfigdir as the location where a # module should install arch-independent pkg-config .pc files. By # default the directory is $datadir/pkgconfig, but the default can be # changed by passing DIRECTORY. The user can override through the # --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_NOARCH_INSTALLDIR # PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ------------------------------------------- # Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])# PKG_CHECK_VAR # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.14.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/ax_cxx_compile_stdcxx_11.m4]) m4_include([m4/boost.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) liborcus-0.9.2/configure.ac0000644000175000017500000001547112535701351014310 0ustar renerene# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) # ==================== # Version informations # ==================== m4_define([orcus_major_version], [0]) m4_define([orcus_minor_version], [9]) m4_define([orcus_micro_version], [2]) m4_define([orcus_version], [orcus_major_version.orcus_minor_version.orcus_micro_version]) # ================ # API informations # ================ m4_define([orcus_minor_api_version], [m4_eval(orcus_minor_version + orcus_minor_version%2)]) m4_define([orcus_api_version], [orcus_major_version.orcus_minor_api_version]) # ============= # Automake init # ============= AC_INIT([liborcus],[orcus_version]) AC_CONFIG_MACRO_DIR([m4]) m4_pattern_allow([^BOOST_]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([1.11 foreign dist-bzip2 dist-xz]) AM_SILENT_RULES([yes]) AC_LANG([C++]) AX_CXX_COMPILE_STDCXX_11 CXXFLAGS="$CXXFLAGS -fvisibility=hidden -Wall" # =========================== # Find required base packages # =========================== AC_PROG_CPP AC_PROG_CXX AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_LIBTOOL AC_LIBTOOL_WIN32_DLL PKG_PROG_PKG_CONFIG([0.20]) # ===================== # Find required headers # ===================== AC_CHECK_HEADERS([stdlib.h sys/time.h unistd.h]) # ============================================================= # Checks for typedefs, structures, and compiler characteristics # ============================================================= AC_HEADER_STDBOOL AC_C_INLINE AC_TYPE_MODE_T AC_TYPE_SIZE_T # ============================ # Checks for library functions # ============================ AC_FUNC_STRTOD AC_CHECK_FUNCS([gettimeofday]) AC_DEFINE([_REENTRANT], [], [Enable reentrant.]) AC_DEFINE([BOOST_ALL_NO_LIB], [], [Disable boost's evil autolink.]) # ====================== # Set required ixion api # ====================== IXION_REQUIRED_API_VERSION=0.10 AC_SUBST(IXION_REQUIRED_API_VERSION) # ============= # Set orcus api # ============= ORCUS_API_VERSION=orcus_api_version AC_SUBST(ORCUS_API_VERSION) BOOST_REQUIRE([1.36]) BOOST_SYSTEM # ============== # Werror support # ============== AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], [Treat all warnings as errors, useful for development])], [enable_werror="$enableval"], [enable_werror=no] ) AS_IF([test x"$enable_werror" == "xyes"], [ CXXFLAGS="$CXXFLAGS -Werror" ]) # ========================================================= # Determine if we are going to build static lib (for MinGW) # ========================================================= AM_CONDITIONAL([HAVE_STATIC_LIB], [test "$enable_shared" = no -a "$enable_static" = yes]) # ===== # Debug # ===== AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [Build with debug features in mind.])], [enable_debug="$enableval"], [enable_debug=no] ) AS_IF([test "x$enable_debug" != "xno"], [ CXXFLAGS="$CXXFLAGS -g -O0" ], [ CXXFLAGS="$CXXFLAGS -O2" AC_DEFINE([NDEBUG], [], [Disable debugging information]) ]) # zlib is a hard requirement in liborcus-parser. PKG_CHECK_MODULES([ZLIB], [zlib]) # ============== # tools (binary) # ============== AC_ARG_WITH(tools, AS_HELP_STRING([--without-tools], [Disables building of binary executable tools.]), [with_tools="$withval"], [with_tools=yes] ) # ================== # ods filter support # ================== AC_ARG_WITH(ods-filter, AS_HELP_STRING([--without-ods-filter], [Disables the OpenDocument Format spreadsheet import filter.]), [with_ods_filter="$withval"], [with_ods_filter=yes] ) # =================== # xlsx filter support # =================== AC_ARG_WITH(xlsx-filter, AS_HELP_STRING([--without-xlsx-filter], [Disables the Microsoft Excel OOXML import filter.]), [with_xlsx_filter="$withval"], [with_xlsx_filter=yes] ) # =================== # xls xml filter support # =================== AC_ARG_WITH(xls-xml-filter, AS_HELP_STRING([--without-xls-xml-filter], [Disables the Microsoft Excel XML import filter.]), [with_xls_xml_filter="$withval"], [with_xls_xml_filter=yes] ) # ======================= # gnumeric filter support # ======================= AC_ARG_WITH(gnumeric-filter, AS_HELP_STRING([--without-gnumeric-filter], [Disables the gnumeric import filter. The gnumeric import filter depends on zLib.]), [with_gnumeric_filter="$withval"], [with_gnumeric_filter=yes] ) AM_CONDITIONAL([WITH_ODS_FILTER], [test "x$with_ods_filter" != "xno"]) AM_CONDITIONAL([WITH_XLSX_FILTER], [test "x$with_xlsx_filter" != "xno"]) AM_CONDITIONAL([WITH_XLS_XML_FILTER], [test "x$with_xls_xml_filter" != "xno"]) AM_CONDITIONAL([WITH_GNUMERIC_FILTER], [test "x$with_gnumeric_filter" != "xno"]) AM_CONDITIONAL([WITH_TOOLS], [test "x$with_tools" != "xno"]) AS_IF([test "x$with_gnumeric_filter" != "xno"], [ BOOST_IOSTREAMS ]) AS_IF([test "x$with_tools" != "xno"], [ BOOST_PROGRAM_OPTIONS BOOST_FILESYSTEM BOOST_SYSTEM ]) # ============ # mdds support # ============ PKG_CHECK_MODULES([MDDS],[mdds >= 0.11.0]) CXXFLAGS="$CXXFLAGS -DMDDS_HASH_CONTAINER_BOOST $MDDS_CFLAGS" # ================= # Spreadsheet model # ================= AC_ARG_ENABLE(spreadsheet-model, AS_HELP_STRING([--disable-spreadsheet-model], [Disable the spreadsheet model implementation in orcus. Note that the spreadsheet-specific command line utilities will not be built when this is disabled.])], [enable_spreadsheet_model="$enableval"], [enable_spreadsheet_model=yes] ) AS_IF([test "x$enable_spreadsheet_model" != "xno"], [ PKG_CHECK_MODULES([LIBIXION],[libixion-$IXION_REQUIRED_API_VERSION]) ]) AM_CONDITIONAL([BUILD_SPREADSHEET_MODEL], [test "x$enable_spreadsheet_model" != "xno"]) AC_CONFIG_FILES([Makefile liborcus-$ORCUS_API_VERSION.pc:liborcus.pc.in liborcus-spreadsheet-model-$ORCUS_API_VERSION.pc:liborcus-spreadsheet-model.pc.in VERSION include/Makefile include/orcus/Makefile include/orcus/mso/Makefile include/orcus/spreadsheet/Makefile src/Makefile src/liborcus/Makefile src/mso/Makefile src/parser/Makefile src/spreadsheet/Makefile parser_handlers/Makefile ]) AC_OUTPUT # ============================================== # Display final informations about configuration # ============================================== AC_MSG_NOTICE([ ============================================================================== Build configuration: debug: $enable_debug werror: $enable_werror spreadsheet-model: $enable_spreadsheet_model gnumeric-filter: $with_gnumeric_filter ods-filter: $with_ods_filter xlsx-filter: $with_xlsx_filter xls-xml-filter: $with_xls_xml_filter tools: $with_tools ============================================================================== ]) liborcus-0.9.2/configure0000755000175000017500000252212012540653651013732 0ustar renerene#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for liborcus 0.9.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='liborcus' PACKAGE_TARNAME='liborcus' PACKAGE_VERSION='0.9.2' PACKAGE_STRING='liborcus 0.9.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS BUILD_SPREADSHEET_MODEL_FALSE BUILD_SPREADSHEET_MODEL_TRUE LIBIXION_LIBS LIBIXION_CFLAGS MDDS_LIBS MDDS_CFLAGS BOOST_FILESYSTEM_LIBS BOOST_FILESYSTEM_LDPATH BOOST_FILESYSTEM_LDFLAGS BOOST_PROGRAM_OPTIONS_LIBS BOOST_PROGRAM_OPTIONS_LDPATH BOOST_PROGRAM_OPTIONS_LDFLAGS BOOST_IOSTREAMS_LIBS BOOST_IOSTREAMS_LDPATH BOOST_IOSTREAMS_LDFLAGS WITH_TOOLS_FALSE WITH_TOOLS_TRUE WITH_GNUMERIC_FILTER_FALSE WITH_GNUMERIC_FILTER_TRUE WITH_XLS_XML_FILTER_FALSE WITH_XLS_XML_FILTER_TRUE WITH_XLSX_FILTER_FALSE WITH_XLSX_FILTER_TRUE WITH_ODS_FILTER_FALSE WITH_ODS_FILTER_TRUE ZLIB_LIBS ZLIB_CFLAGS HAVE_STATIC_LIB_FALSE HAVE_STATIC_LIB_TRUE BOOST_SYSTEM_LIBS BOOST_LDPATH BOOST_SYSTEM_LDPATH BOOST_SYSTEM_LDFLAGS BOOST_CPPFLAGS DISTCHECK_CONFIGURE_FLAGS BOOST_ROOT ORCUS_API_VERSION IXION_REQUIRED_API_VERSION LIBOBJS POW_LIB PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG AS CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL LN_S CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC HAVE_CXX11 am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock with_boost enable_static_boost enable_werror enable_debug with_tools with_ods_filter with_xlsx_filter with_xls_xml_filter with_gnumeric_filter enable_spreadsheet_model ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS CPP CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR BOOST_ROOT ZLIB_CFLAGS ZLIB_LIBS MDDS_CFLAGS MDDS_LIBS LIBIXION_CFLAGS LIBIXION_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures liborcus 0.9.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/liborcus] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of liborcus 0.9.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-static-boost Prefer the static boost libraries over the shared ones [no] --enable-werror Treat all warnings as errors, useful for development --enable-debug Build with debug features in mind.] --disable-spreadsheet-model Disable the spreadsheet model implementation in orcus. Note that the spreadsheet-specific command line utilities will not be built when this is disabled.] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-boost=DIR prefix of Boost 1.36 [guess] --without-tools Disables building of binary executable tools. --without-ods-filter Disables the OpenDocument Format spreadsheet import filter. --without-xlsx-filter Disables the Microsoft Excel OOXML import filter. --without-xls-xml-filter Disables the Microsoft Excel XML import filter. --without-gnumeric-filter Disables the gnumeric import filter. The gnumeric import filter depends on zLib. Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags CPP C preprocessor CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path BOOST_ROOT Location of Boost installation ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config ZLIB_LIBS linker flags for ZLIB, overriding pkg-config MDDS_CFLAGS C compiler flags for MDDS, overriding pkg-config MDDS_LIBS linker flags for MDDS, overriding pkg-config LIBIXION_CFLAGS C compiler flags for LIBIXION, overriding pkg-config LIBIXION_LIBS linker flags for LIBIXION, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF liborcus configure 0.9.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES # --------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_cxx_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_type # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_check_func LINENO FUNC VAR # ------------------------------------ # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_cxx_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by liborcus $as_me 0.9.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='liborcus' VERSION='0.9.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ax_cxx_compile_cxx11_required=true ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_success=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 $as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } if ${ax_cv_cxx_compile_cxx11+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; struct Base { virtual void f() {} }; struct Child : public Base { virtual void f() override {} }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; auto l = [](){}; // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable] struct use_l { use_l() { l(); } }; // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ax_cv_cxx_compile_cxx11=yes else ax_cv_cxx_compile_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 $as_echo "$ax_cv_cxx_compile_cxx11" >&6; } if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for switch in -std=gnu++11 -std=gnu++0x; do cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval \${$cachevar+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; struct Base { virtual void f() {} }; struct Child : public Base { virtual void f() override {} }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; auto l = [](){}; // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable] struct use_l { use_l() { l(); } }; // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval $cachevar=yes else eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$ac_save_CXXFLAGS" fi eval ac_res=\$$cachevar { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi if test x$ac_success = xno; then for switch in -std=c++11 -std=c++0x; do cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval \${$cachevar+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; struct Base { virtual void f() {} }; struct Child : public Base { virtual void f() override {} }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; auto l = [](){}; // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable] struct use_l { use_l() { l(); } }; // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval $cachevar=yes else eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$ac_save_CXXFLAGS" fi eval ac_res=\$$cachevar { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 fi else if test x$ac_success = xno; then HAVE_CXX11=0 { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 $as_echo "$as_me: No compiler with C++11 support was found" >&6;} else HAVE_CXX11=1 $as_echo "#define HAVE_CXX11 1" >>confdefs.h fi fi CXXFLAGS="$CXXFLAGS -fvisibility=hidden -Wall" # =========================== # Find required base packages # =========================== ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.20 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # ===================== # Find required headers # ===================== for ac_header in stdlib.h sys/time.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # ============================================================= # Checks for typedefs, structures, and compiler characteristics # ============================================================= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if ${ac_cv_header_stdbool_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; /* See body of main program for 'e'. */ char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { bool e = &s; *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_cxx_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_cxx_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # ============================ # Checks for library functions # ============================ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strtod" >&5 $as_echo_n "checking for working strtod... " >&6; } if ${ac_cv_func_strtod+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_strtod=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #ifndef strtod double strtod (); #endif int main() { { /* Some versions of Linux strtod mis-parse strings with leading '+'. */ char *string = " +69"; char *term; double value; value = strtod (string, &term); if (value != 69 || term != (string + 4)) return 1; } { /* Under Solaris 2.4, strtod returns the wrong value for the terminating character under some conditions. */ char *string = "NaN"; char *term; strtod (string, &term); if (term != string && *(term - 1) == 0) return 1; } return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_func_strtod=yes else ac_cv_func_strtod=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strtod" >&5 $as_echo "$ac_cv_func_strtod" >&6; } if test $ac_cv_func_strtod = no; then case " $LIBOBJS " in *" strtod.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtod.$ac_objext" ;; esac ac_fn_cxx_check_func "$LINENO" "pow" "ac_cv_func_pow" if test "x$ac_cv_func_pow" = xyes; then : fi if test $ac_cv_func_pow = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5 $as_echo_n "checking for pow in -lm... " >&6; } if ${ac_cv_lib_m_pow+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pow (); int main () { return pow (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_m_pow=yes else ac_cv_lib_m_pow=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5 $as_echo "$ac_cv_lib_m_pow" >&6; } if test "x$ac_cv_lib_m_pow" = xyes; then : POW_LIB=-lm else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find library containing definition of pow" >&5 $as_echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} fi fi fi for ac_func in gettimeofday do : ac_fn_cxx_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" if test "x$ac_cv_func_gettimeofday" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETTIMEOFDAY 1 _ACEOF fi done $as_echo "#define _REENTRANT /**/" >>confdefs.h $as_echo "#define BOOST_ALL_NO_LIB /**/" >>confdefs.h # ====================== # Set required ixion api # ====================== IXION_REQUIRED_API_VERSION=0.10 # ============= # Set orcus api # ============= ORCUS_API_VERSION=0.10 echo "$as_me: this is boost.m4 serial 24" >&5 boost_save_IFS=$IFS boost_version_req=1.36 IFS=. set x $boost_version_req 0 0 0 IFS=$boost_save_IFS shift boost_version_req=`expr "$1" '*' 100000 + "$2" '*' 100 + "$3"` boost_version_req_string=$1.$2.$3 # Check whether --with-boost was given. if test "${with_boost+set}" = set; then : withval=$with_boost; fi # If BOOST_ROOT is set and the user has not provided a value to # --with-boost, then treat BOOST_ROOT as if it the user supplied it. if test x"$BOOST_ROOT" != x; then if test x"$with_boost" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Detected BOOST_ROOT; continuing with --with-boost=$BOOST_ROOT" >&5 $as_echo "$as_me: Detected BOOST_ROOT; continuing with --with-boost=$BOOST_ROOT" >&6;} with_boost=$BOOST_ROOT else { $as_echo "$as_me:${as_lineno-$LINENO}: Detected BOOST_ROOT=$BOOST_ROOT, but overridden by --with-boost=$with_boost" >&5 $as_echo "$as_me: Detected BOOST_ROOT=$BOOST_ROOT, but overridden by --with-boost=$with_boost" >&6;} fi fi DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'" boost_save_CPPFLAGS=$CPPFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boost headers version >= $boost_version_req_string" >&5 $as_echo_n "checking for Boost headers version >= $boost_version_req_string... " >&6; } if ${boost_cv_inc_path+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_inc_path=no ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !defined BOOST_VERSION # error BOOST_VERSION is not defined #elif BOOST_VERSION < $boost_version_req # error Boost headers version < $boost_version_req #endif int main () { ; return 0; } _ACEOF # If the user provided a value to --with-boost, use it and only it. case $with_boost in #( ''|yes) set x '' /opt/local/include /usr/local/include /opt/include \ /usr/include C:/Boost/include;; #( *) set x "$with_boost/include" "$with_boost";; esac shift for boost_dir do # Without --layout=system, Boost (or at least some versions) installs # itself in /include/boost-. This inner loop helps to # find headers in such directories. # # Any ${boost_dir}/boost-x_xx directories are searched in reverse version # order followed by ${boost_dir}. The final '.' is a sentinel for # searching $boost_dir" itself. Entries are whitespace separated. # # I didn't indent this loop on purpose (to avoid over-indented code) boost_layout_system_search_list=`cd "$boost_dir" 2>/dev/null \ && ls -1 | "${GREP}" '^boost-' | sort -rn -t- -k2 \ && echo .` for boost_inc in $boost_layout_system_search_list do if test x"$boost_inc" != x.; then boost_inc="$boost_dir/$boost_inc" else boost_inc="$boost_dir" # Uses sentinel in boost_layout_system_search_list fi if test x"$boost_inc" != x; then # We are going to check whether the version of Boost installed # in $boost_inc is usable by running a compilation that # #includes it. But if we pass a -I/some/path in which Boost # is not installed, the compiler will just skip this -I and # use other locations (either from CPPFLAGS, or from its list # of system include directories). As a result we would use # header installed on the machine instead of the /some/path # specified by the user. So in that precise case (trying # $boost_inc), make sure the version.hpp exists. # # Use test -e as there can be symlinks. test -e "$boost_inc/boost/version.hpp" || continue CPPFLAGS="$CPPFLAGS -I$boost_inc" fi if ac_fn_cxx_try_compile "$LINENO"; then : boost_cv_inc_path=yes else boost_cv_version=no fi rm -f core conftest.err conftest.$ac_objext if test x"$boost_cv_inc_path" = xyes; then if test x"$boost_inc" != x; then boost_cv_inc_path=$boost_inc fi break 2 fi done done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_inc_path" >&5 $as_echo "$boost_cv_inc_path" >&6; } case $boost_cv_inc_path in #( no) boost_errmsg="cannot find Boost headers version >= $boost_version_req_string" as_fn_error $? "$boost_errmsg" "$LINENO" 5 ;;#( yes) BOOST_CPPFLAGS= ;;#( *) BOOST_CPPFLAGS="-I$boost_cv_inc_path" ;; esac if test x"$boost_cv_inc_path" != xno; then $as_echo "#define HAVE_BOOST 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boost's header version" >&5 $as_echo_n "checking for Boost's header version... " >&6; } if ${boost_cv_lib_version+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include boost-lib-version = BOOST_LIB_VERSION _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | grep -v '#' | tr -d '\r' | tr -s '\n' ' ' | $SED -n -e "/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}" >conftest.i 2>&1; then : boost_cv_lib_version=`cat conftest.i` fi rm -rf conftest* ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_version" >&5 $as_echo "$boost_cv_lib_version" >&6; } # e.g. "134" for 1_34_1 or "135" for 1_35 boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'` case $boost_major_version in #( '' | *[!0-9]*) as_fn_error $? "invalid value: boost_major_version='$boost_major_version'" "$LINENO" 5 ;; esac fi CPPFLAGS=$boost_save_CPPFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the toolset name used by Boost for $CXX" >&5 $as_echo_n "checking for the toolset name used by Boost for $CXX... " >&6; } if ${boost_cv_lib_tag+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_lib_tag=unknown if test x$boost_cv_inc_path != xno; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # The following tests are mostly inspired by boost/config/auto_link.hpp # The list is sorted to most recent/common to oldest compiler (in order # to increase the likelihood of finding the right compiler with the # least number of compilation attempt). # Beware that some tests are sensible to the order (for instance, we must # look for MinGW before looking for GCC3). # I used one compilation test per compiler with a #error to recognize # each compiler so that it works even when cross-compiling (let me know # if you know a better approach). # Known missing tags (known from Boost's tools/build/v2/tools/common.jam): # como, edg, kcc, bck, mp, sw, tru, xlc # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines # the same defines as GCC's). for i in \ "defined __GNUC__ && __GNUC__ == 5 && __GNUC_MINOR__ == 0 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw50" \ "defined __GNUC__ && __GNUC__ == 5 && __GNUC_MINOR__ == 0 && !defined __ICC @ gcc50" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 10 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw410" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 10 && !defined __ICC @ gcc410" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 9 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw49" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 9 && !defined __ICC @ gcc49" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 8 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw48" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 8 && !defined __ICC @ gcc48" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 7 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw47" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 7 && !defined __ICC @ gcc47" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 6 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw46" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 6 && !defined __ICC @ gcc46" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 5 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw45" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 5 && !defined __ICC @ gcc45" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 4 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw44" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 4 && !defined __ICC @ gcc44" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 3 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw43" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 3 && !defined __ICC @ gcc43" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw42" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && !defined __ICC @ gcc42" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 1 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw41" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 1 && !defined __ICC @ gcc41" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 0 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw40" \ "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 0 && !defined __ICC @ gcc40" \ "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw" \ "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 4 && !defined __ICC @ gcc34" \ "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined __ICC @ gcc33" \ "defined _MSC_VER && _MSC_VER >= 1500 @ vc90" \ "defined _MSC_VER && _MSC_VER == 1400 @ vc80" \ "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 2 && !defined __ICC @ gcc32" \ "defined _MSC_VER && _MSC_VER == 1310 @ vc71" \ "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 1 && !defined __ICC @ gcc31" \ "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 0 && !defined __ICC @ gcc30" \ "defined __BORLANDC__ @ bcb" \ "defined __ICC && (defined __unix || defined ) @ il" \ "defined __ICL @ iw" \ "defined _MSC_VER && _MSC_VER == 1300 @ vc7" \ "defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ == 95 && !defined __ICC @ gcc295" \ "defined __MWERKS__ && __MWERKS__ <= 0x32FF @ cw9" \ "defined _MSC_VER && _MSC_VER < 1300 && !defined UNDER_CE @ vc6" \ "defined _MSC_VER && _MSC_VER < 1300 && defined UNDER_CE @ evc4" \ "defined __MWERKS__ && __MWERKS__ <= 0x31FF @ cw8" do boost_tag_test=`expr "X$i" : 'X\([^@]*\) @ '` boost_tag=`expr "X$i" : 'X[^@]* @ \(.*\)'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if $boost_tag_test /* OK */ #else # error $boost_tag_test #endif int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : boost_cv_lib_tag=$boost_tag; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu case $boost_cv_lib_tag in #( # Some newer (>= 1.35?) versions of Boost seem to only use "gcc" as opposed # to "gcc41" for instance. *-gcc | *'-gcc ') :;; #( Don't re-add -gcc: it's already in there. gcc*) boost_tag_x= case $host_os in #( darwin*) if test $boost_major_version -ge 136; then # The `x' added in r46793 of Boost. boost_tag_x=x fi;; esac # We can specify multiple tags in this variable because it's used by # BOOST_FIND_LIB that does a `for tag in -$boost_cv_lib_tag' ... boost_cv_lib_tag="$boost_tag_x$boost_cv_lib_tag -${boost_tag_x}gcc" ;; #( unknown) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not figure out which toolset name to use for $CXX" >&5 $as_echo "$as_me: WARNING: could not figure out which toolset name to use for $CXX" >&2;} boost_cv_lib_tag= ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_tag" >&5 $as_echo "$boost_cv_lib_tag" >&6; } # Check whether --enable-static-boost was given. if test "${enable_static_boost+set}" = set; then : enableval=$enable_static_boost; enable_static_boost=yes else enable_static_boost=no fi # Check whether we do better use `mt' even though we weren't ask to. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _REENTRANT || defined _MT || defined __MT__ /* use -mt */ #else # error MT not needed #endif int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : boost_guess_use_mt=: else boost_guess_use_mt=false fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost system library" >&5 $as_echo "$as_me: Boost not available, not searching for the Boost system library" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for boost/system/error_code.hpp" >&5 $as_echo "$as_me: Boost not available, not searching for boost/system/error_code.hpp" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" ac_fn_cxx_check_header_mongrel "$LINENO" "boost/system/error_code.hpp" "ac_cv_header_boost_system_error_code_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_system_error_code_hpp" = xyes; then : $as_echo "#define HAVE_BOOST_SYSTEM_ERROR_CODE_HPP 1" >>confdefs.h else as_fn_error $? "cannot find boost/system/error_code.hpp" "$LINENO" 5 fi CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost system library" >&5 $as_echo_n "checking for the Boost system library... " >&6; } if ${boost_cv_lib_system+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_lib_system=no case "" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5 boost_save_ac_objext=$ac_objext # Generate the test file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { boost::system::error_code e; e.clear(); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_objext=do_not_rm_me_plz else as_fn_error $? "cannot compile a test that uses Boost system" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in system; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) boost_cv_lib_system_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$boost_cv_lib_system_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. boost_cv_lib_system_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$boost_cv_lib_system_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_cv_lib_system=yes else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_cv_lib_system=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$boost_cv_lib_system" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 if ${boost_cv_rpath_link_ldflag+:} false; then : $as_echo_n "(cached) " >&6 else case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $boost_cv_lib_system_LIBS" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_rpath_link_ldflag_found=yes break else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_rpath_link_ldflag_found=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext done ;; esac if test "x$boost_rpath_link_ldflag_found" != "xyes"; then : as_fn_error $? "Unable to determine whether to use -R or -rpath" "$LINENO" 5 fi LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS fi test x"$boost_ldpath" != x && boost_cv_lib_system_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" boost_cv_lib_system_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_system" >&5 $as_echo "$boost_cv_lib_system" >&6; } case $boost_cv_lib_system in #( (no) $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 as_fn_error $? "cannot find the flags to link with Boost system" "$LINENO" 5 ;; esac BOOST_SYSTEM_LDFLAGS=$boost_cv_lib_system_LDFLAGS BOOST_SYSTEM_LDPATH=$boost_cv_lib_system_LDPATH BOOST_LDPATH=$boost_cv_lib_system_LDPATH BOOST_SYSTEM_LIBS=$boost_cv_lib_system_LIBS CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi # ============== # Werror support # ============== # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : enableval=$enable_werror; enable_werror="$enableval" else enable_werror=no fi if test x"$enable_werror" == "xyes"; then : CXXFLAGS="$CXXFLAGS -Werror" fi # ========================================================= # Determine if we are going to build static lib (for MinGW) # ========================================================= if test "$enable_shared" = no -a "$enable_static" = yes; then HAVE_STATIC_LIB_TRUE= HAVE_STATIC_LIB_FALSE='#' else HAVE_STATIC_LIB_TRUE='#' HAVE_STATIC_LIB_FALSE= fi # ===== # Debug # ===== # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; enable_debug="$enableval" else enable_debug=no fi if test "x$enable_debug" != "xno"; then : CXXFLAGS="$CXXFLAGS -g -O0" else CXXFLAGS="$CXXFLAGS -O2" $as_echo "#define NDEBUG /**/" >>confdefs.h fi # zlib is a hard requirement in liborcus-parser. pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5 $as_echo_n "checking for ZLIB... " >&6; } if test -n "$ZLIB_CFLAGS"; then pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ZLIB_LIBS"; then pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib" 2>&1` else ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ZLIB_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (zlib) were not met: $ZLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ZLIB_CFLAGS and ZLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables ZLIB_CFLAGS and ZLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS ZLIB_LIBS=$pkg_cv_ZLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # ============== # tools (binary) # ============== # Check whether --with-tools was given. if test "${with_tools+set}" = set; then : withval=$with_tools; with_tools="$withval" else with_tools=yes fi # ================== # ods filter support # ================== # Check whether --with-ods-filter was given. if test "${with_ods_filter+set}" = set; then : withval=$with_ods_filter; with_ods_filter="$withval" else with_ods_filter=yes fi # =================== # xlsx filter support # =================== # Check whether --with-xlsx-filter was given. if test "${with_xlsx_filter+set}" = set; then : withval=$with_xlsx_filter; with_xlsx_filter="$withval" else with_xlsx_filter=yes fi # =================== # xls xml filter support # =================== # Check whether --with-xls-xml-filter was given. if test "${with_xls_xml_filter+set}" = set; then : withval=$with_xls_xml_filter; with_xls_xml_filter="$withval" else with_xls_xml_filter=yes fi # ======================= # gnumeric filter support # ======================= # Check whether --with-gnumeric-filter was given. if test "${with_gnumeric_filter+set}" = set; then : withval=$with_gnumeric_filter; with_gnumeric_filter="$withval" else with_gnumeric_filter=yes fi if test "x$with_ods_filter" != "xno"; then WITH_ODS_FILTER_TRUE= WITH_ODS_FILTER_FALSE='#' else WITH_ODS_FILTER_TRUE='#' WITH_ODS_FILTER_FALSE= fi if test "x$with_xlsx_filter" != "xno"; then WITH_XLSX_FILTER_TRUE= WITH_XLSX_FILTER_FALSE='#' else WITH_XLSX_FILTER_TRUE='#' WITH_XLSX_FILTER_FALSE= fi if test "x$with_xls_xml_filter" != "xno"; then WITH_XLS_XML_FILTER_TRUE= WITH_XLS_XML_FILTER_FALSE='#' else WITH_XLS_XML_FILTER_TRUE='#' WITH_XLS_XML_FILTER_FALSE= fi if test "x$with_gnumeric_filter" != "xno"; then WITH_GNUMERIC_FILTER_TRUE= WITH_GNUMERIC_FILTER_FALSE='#' else WITH_GNUMERIC_FILTER_TRUE='#' WITH_GNUMERIC_FILTER_FALSE= fi if test "x$with_tools" != "xno"; then WITH_TOOLS_TRUE= WITH_TOOLS_FALSE='#' else WITH_TOOLS_TRUE='#' WITH_TOOLS_FALSE= fi if test "x$with_gnumeric_filter" != "xno"; then : if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost iostreams library" >&5 $as_echo "$as_me: Boost not available, not searching for the Boost iostreams library" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for boost/iostreams/device/file_descriptor.hpp" >&5 $as_echo "$as_me: Boost not available, not searching for boost/iostreams/device/file_descriptor.hpp" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" ac_fn_cxx_check_header_mongrel "$LINENO" "boost/iostreams/device/file_descriptor.hpp" "ac_cv_header_boost_iostreams_device_file_descriptor_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_iostreams_device_file_descriptor_hpp" = xyes; then : $as_echo "#define HAVE_BOOST_IOSTREAMS_DEVICE_FILE_DESCRIPTOR_HPP 1" >>confdefs.h else as_fn_error $? "cannot find boost/iostreams/device/file_descriptor.hpp" "$LINENO" 5 fi CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost iostreams library" >&5 $as_echo_n "checking for the Boost iostreams library... " >&6; } if ${boost_cv_lib_iostreams+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_lib_iostreams=no case "" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5 boost_save_ac_objext=$ac_objext # Generate the test file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { boost::iostreams::file_descriptor fd; fd.close(); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_objext=do_not_rm_me_plz else as_fn_error $? "cannot compile a test that uses Boost iostreams" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in iostreams; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) boost_cv_lib_iostreams_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$boost_cv_lib_iostreams_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. boost_cv_lib_iostreams_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$boost_cv_lib_iostreams_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_cv_lib_iostreams=yes else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_cv_lib_iostreams=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$boost_cv_lib_iostreams" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 if ${boost_cv_rpath_link_ldflag+:} false; then : $as_echo_n "(cached) " >&6 else case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $boost_cv_lib_iostreams_LIBS" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_rpath_link_ldflag_found=yes break else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_rpath_link_ldflag_found=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext done ;; esac if test "x$boost_rpath_link_ldflag_found" != "xyes"; then : as_fn_error $? "Unable to determine whether to use -R or -rpath" "$LINENO" 5 fi LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS fi test x"$boost_ldpath" != x && boost_cv_lib_iostreams_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" boost_cv_lib_iostreams_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_iostreams" >&5 $as_echo "$boost_cv_lib_iostreams" >&6; } case $boost_cv_lib_iostreams in #( (no) $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 as_fn_error $? "cannot find the flags to link with Boost iostreams" "$LINENO" 5 ;; esac BOOST_IOSTREAMS_LDFLAGS=$boost_cv_lib_iostreams_LDFLAGS BOOST_IOSTREAMS_LDPATH=$boost_cv_lib_iostreams_LDPATH BOOST_LDPATH=$boost_cv_lib_iostreams_LDPATH BOOST_IOSTREAMS_LIBS=$boost_cv_lib_iostreams_LIBS CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi fi if test "x$with_tools" != "xno"; then : if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost program_options library" >&5 $as_echo "$as_me: Boost not available, not searching for the Boost program_options library" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for boost/program_options.hpp" >&5 $as_echo "$as_me: Boost not available, not searching for boost/program_options.hpp" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" ac_fn_cxx_check_header_mongrel "$LINENO" "boost/program_options.hpp" "ac_cv_header_boost_program_options_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_program_options_hpp" = xyes; then : $as_echo "#define HAVE_BOOST_PROGRAM_OPTIONS_HPP 1" >>confdefs.h else as_fn_error $? "cannot find boost/program_options.hpp" "$LINENO" 5 fi CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost program_options library" >&5 $as_echo_n "checking for the Boost program_options library... " >&6; } if ${boost_cv_lib_program_options+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_lib_program_options=no case "" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5 boost_save_ac_objext=$ac_objext # Generate the test file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { boost::program_options::options_description d("test"); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_objext=do_not_rm_me_plz else as_fn_error $? "cannot compile a test that uses Boost program_options" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in program_options; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) boost_cv_lib_program_options_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$boost_cv_lib_program_options_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. boost_cv_lib_program_options_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$boost_cv_lib_program_options_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_cv_lib_program_options=yes else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_cv_lib_program_options=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$boost_cv_lib_program_options" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 if ${boost_cv_rpath_link_ldflag+:} false; then : $as_echo_n "(cached) " >&6 else case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $boost_cv_lib_program_options_LIBS" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_rpath_link_ldflag_found=yes break else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_rpath_link_ldflag_found=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext done ;; esac if test "x$boost_rpath_link_ldflag_found" != "xyes"; then : as_fn_error $? "Unable to determine whether to use -R or -rpath" "$LINENO" 5 fi LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS fi test x"$boost_ldpath" != x && boost_cv_lib_program_options_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" boost_cv_lib_program_options_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_program_options" >&5 $as_echo "$boost_cv_lib_program_options" >&6; } case $boost_cv_lib_program_options in #( (no) $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 as_fn_error $? "cannot find the flags to link with Boost program_options" "$LINENO" 5 ;; esac BOOST_PROGRAM_OPTIONS_LDFLAGS=$boost_cv_lib_program_options_LDFLAGS BOOST_PROGRAM_OPTIONS_LDPATH=$boost_cv_lib_program_options_LDPATH BOOST_LDPATH=$boost_cv_lib_program_options_LDPATH BOOST_PROGRAM_OPTIONS_LIBS=$boost_cv_lib_program_options_LIBS CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi # Do we have to check for Boost.System? This link-time dependency was # added as of 1.35.0. If we have a version <1.35, we must not attempt to # find Boost.System as it didn't exist by then. if test $boost_major_version -ge 135; then if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost system library" >&5 $as_echo "$as_me: Boost not available, not searching for the Boost system library" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for boost/system/error_code.hpp" >&5 $as_echo "$as_me: Boost not available, not searching for boost/system/error_code.hpp" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" ac_fn_cxx_check_header_mongrel "$LINENO" "boost/system/error_code.hpp" "ac_cv_header_boost_system_error_code_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_system_error_code_hpp" = xyes; then : $as_echo "#define HAVE_BOOST_SYSTEM_ERROR_CODE_HPP 1" >>confdefs.h else as_fn_error $? "cannot find boost/system/error_code.hpp" "$LINENO" 5 fi CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost system library" >&5 $as_echo_n "checking for the Boost system library... " >&6; } if ${boost_cv_lib_system+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_lib_system=no case "" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5 boost_save_ac_objext=$ac_objext # Generate the test file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { boost::system::error_code e; e.clear(); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_objext=do_not_rm_me_plz else as_fn_error $? "cannot compile a test that uses Boost system" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in system; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) boost_cv_lib_system_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$boost_cv_lib_system_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. boost_cv_lib_system_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$boost_cv_lib_system_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_cv_lib_system=yes else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_cv_lib_system=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$boost_cv_lib_system" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 if ${boost_cv_rpath_link_ldflag+:} false; then : $as_echo_n "(cached) " >&6 else case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $boost_cv_lib_system_LIBS" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_rpath_link_ldflag_found=yes break else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_rpath_link_ldflag_found=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext done ;; esac if test "x$boost_rpath_link_ldflag_found" != "xyes"; then : as_fn_error $? "Unable to determine whether to use -R or -rpath" "$LINENO" 5 fi LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS fi test x"$boost_ldpath" != x && boost_cv_lib_system_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" boost_cv_lib_system_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_system" >&5 $as_echo "$boost_cv_lib_system" >&6; } case $boost_cv_lib_system in #( (no) $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 as_fn_error $? "cannot find the flags to link with Boost system" "$LINENO" 5 ;; esac BOOST_SYSTEM_LDFLAGS=$boost_cv_lib_system_LDFLAGS BOOST_SYSTEM_LDPATH=$boost_cv_lib_system_LDPATH BOOST_LDPATH=$boost_cv_lib_system_LDPATH BOOST_SYSTEM_LIBS=$boost_cv_lib_system_LIBS CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi fi # end of the Boost.System check. boost_filesystem_save_LIBS=$LIBS boost_filesystem_save_LDFLAGS=$LDFLAGS LIBS="$LIBS $BOOST_SYSTEM_LIBS" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost filesystem library" >&5 $as_echo "$as_me: Boost not available, not searching for the Boost filesystem library" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for boost/filesystem/path.hpp" >&5 $as_echo "$as_me: Boost not available, not searching for boost/filesystem/path.hpp" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" ac_fn_cxx_check_header_mongrel "$LINENO" "boost/filesystem/path.hpp" "ac_cv_header_boost_filesystem_path_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_filesystem_path_hpp" = xyes; then : $as_echo "#define HAVE_BOOST_FILESYSTEM_PATH_HPP 1" >>confdefs.h else as_fn_error $? "cannot find boost/filesystem/path.hpp" "$LINENO" 5 fi CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost filesystem library" >&5 $as_echo_n "checking for the Boost filesystem library... " >&6; } if ${boost_cv_lib_filesystem+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_lib_filesystem=no case "" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5 boost_save_ac_objext=$ac_objext # Generate the test file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { boost::filesystem::path p; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_objext=do_not_rm_me_plz else as_fn_error $? "cannot compile a test that uses Boost filesystem" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in filesystem; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) boost_cv_lib_filesystem_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$boost_cv_lib_filesystem_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. boost_cv_lib_filesystem_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$boost_cv_lib_filesystem_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_cv_lib_filesystem=yes else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_cv_lib_filesystem=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$boost_cv_lib_filesystem" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 if ${boost_cv_rpath_link_ldflag+:} false; then : $as_echo_n "(cached) " >&6 else case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $boost_cv_lib_filesystem_LIBS" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_rpath_link_ldflag_found=yes break else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_rpath_link_ldflag_found=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext done ;; esac if test "x$boost_rpath_link_ldflag_found" != "xyes"; then : as_fn_error $? "Unable to determine whether to use -R or -rpath" "$LINENO" 5 fi LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS fi test x"$boost_ldpath" != x && boost_cv_lib_filesystem_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" boost_cv_lib_filesystem_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_filesystem" >&5 $as_echo "$boost_cv_lib_filesystem" >&6; } case $boost_cv_lib_filesystem in #( (no) $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 as_fn_error $? "cannot find the flags to link with Boost filesystem" "$LINENO" 5 ;; esac BOOST_FILESYSTEM_LDFLAGS=$boost_cv_lib_filesystem_LDFLAGS BOOST_FILESYSTEM_LDPATH=$boost_cv_lib_filesystem_LDPATH BOOST_LDPATH=$boost_cv_lib_filesystem_LDPATH BOOST_FILESYSTEM_LIBS=$boost_cv_lib_filesystem_LIBS CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi if test $enable_static_boost = yes && test $boost_major_version -ge 135; then BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" fi LIBS=$boost_filesystem_save_LIBS LDFLAGS=$boost_filesystem_save_LDFLAGS if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost system library" >&5 $as_echo "$as_me: Boost not available, not searching for the Boost system library" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x"$boost_cv_inc_path" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for boost/system/error_code.hpp" >&5 $as_echo "$as_me: Boost not available, not searching for boost/system/error_code.hpp" >&6;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" ac_fn_cxx_check_header_mongrel "$LINENO" "boost/system/error_code.hpp" "ac_cv_header_boost_system_error_code_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_system_error_code_hpp" = xyes; then : $as_echo "#define HAVE_BOOST_SYSTEM_ERROR_CODE_HPP 1" >>confdefs.h else as_fn_error $? "cannot find boost/system/error_code.hpp" "$LINENO" 5 fi CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost system library" >&5 $as_echo_n "checking for the Boost system library... " >&6; } if ${boost_cv_lib_system+:} false; then : $as_echo_n "(cached) " >&6 else boost_cv_lib_system=no case "" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5 boost_save_ac_objext=$ac_objext # Generate the test file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { boost::system::error_code e; e.clear(); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_objext=do_not_rm_me_plz else as_fn_error $? "cannot compile a test that uses Boost system" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in system; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) boost_cv_lib_system_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$boost_cv_lib_system_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. boost_cv_lib_system_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$boost_cv_lib_system_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_cv_lib_system=yes else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_cv_lib_system=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$boost_cv_lib_system" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 if ${boost_cv_rpath_link_ldflag+:} false; then : $as_echo_n "(cached) " >&6 else case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $boost_cv_lib_system_LIBS" rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5 if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext }; then : boost_rpath_link_ldflag_found=yes break else if $boost_use_source; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi boost_rpath_link_ldflag_found=no fi ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext done ;; esac if test "x$boost_rpath_link_ldflag_found" != "xyes"; then : as_fn_error $? "Unable to determine whether to use -R or -rpath" "$LINENO" 5 fi LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS fi test x"$boost_ldpath" != x && boost_cv_lib_system_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" boost_cv_lib_system_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_system" >&5 $as_echo "$boost_cv_lib_system" >&6; } case $boost_cv_lib_system in #( (no) $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 as_fn_error $? "cannot find the flags to link with Boost system" "$LINENO" 5 ;; esac BOOST_SYSTEM_LDFLAGS=$boost_cv_lib_system_LDFLAGS BOOST_SYSTEM_LDPATH=$boost_cv_lib_system_LDPATH BOOST_LDPATH=$boost_cv_lib_system_LDPATH BOOST_SYSTEM_LIBS=$boost_cv_lib_system_LIBS CPPFLAGS=$boost_save_CPPFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi fi # ============ # mdds support # ============ pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MDDS" >&5 $as_echo_n "checking for MDDS... " >&6; } if test -n "$MDDS_CFLAGS"; then pkg_cv_MDDS_CFLAGS="$MDDS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mdds >= 0.11.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "mdds >= 0.11.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MDDS_CFLAGS=`$PKG_CONFIG --cflags "mdds >= 0.11.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$MDDS_LIBS"; then pkg_cv_MDDS_LIBS="$MDDS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mdds >= 0.11.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "mdds >= 0.11.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MDDS_LIBS=`$PKG_CONFIG --libs "mdds >= 0.11.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then MDDS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "mdds >= 0.11.0" 2>&1` else MDDS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "mdds >= 0.11.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MDDS_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (mdds >= 0.11.0) were not met: $MDDS_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables MDDS_CFLAGS and MDDS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables MDDS_CFLAGS and MDDS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else MDDS_CFLAGS=$pkg_cv_MDDS_CFLAGS MDDS_LIBS=$pkg_cv_MDDS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi CXXFLAGS="$CXXFLAGS -DMDDS_HASH_CONTAINER_BOOST $MDDS_CFLAGS" # ================= # Spreadsheet model # ================= # Check whether --enable-spreadsheet-model was given. if test "${enable_spreadsheet_model+set}" = set; then : enableval=$enable_spreadsheet_model; enable_spreadsheet_model="$enableval" else enable_spreadsheet_model=yes fi if test "x$enable_spreadsheet_model" != "xno"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBIXION" >&5 $as_echo_n "checking for LIBIXION... " >&6; } if test -n "$LIBIXION_CFLAGS"; then pkg_cv_LIBIXION_CFLAGS="$LIBIXION_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libixion-\$IXION_REQUIRED_API_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "libixion-$IXION_REQUIRED_API_VERSION") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBIXION_CFLAGS=`$PKG_CONFIG --cflags "libixion-$IXION_REQUIRED_API_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBIXION_LIBS"; then pkg_cv_LIBIXION_LIBS="$LIBIXION_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libixion-\$IXION_REQUIRED_API_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "libixion-$IXION_REQUIRED_API_VERSION") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBIXION_LIBS=`$PKG_CONFIG --libs "libixion-$IXION_REQUIRED_API_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBIXION_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libixion-$IXION_REQUIRED_API_VERSION" 2>&1` else LIBIXION_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libixion-$IXION_REQUIRED_API_VERSION" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBIXION_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (libixion-$IXION_REQUIRED_API_VERSION) were not met: $LIBIXION_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBIXION_CFLAGS and LIBIXION_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables LIBIXION_CFLAGS and LIBIXION_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else LIBIXION_CFLAGS=$pkg_cv_LIBIXION_CFLAGS LIBIXION_LIBS=$pkg_cv_LIBIXION_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi if test "x$enable_spreadsheet_model" != "xno"; then BUILD_SPREADSHEET_MODEL_TRUE= BUILD_SPREADSHEET_MODEL_FALSE='#' else BUILD_SPREADSHEET_MODEL_TRUE='#' BUILD_SPREADSHEET_MODEL_FALSE= fi ac_config_files="$ac_config_files Makefile liborcus-$ORCUS_API_VERSION.pc:liborcus.pc.in liborcus-spreadsheet-model-$ORCUS_API_VERSION.pc:liborcus-spreadsheet-model.pc.in VERSION include/Makefile include/orcus/Makefile include/orcus/mso/Makefile include/orcus/spreadsheet/Makefile src/Makefile src/liborcus/Makefile src/mso/Makefile src/parser/Makefile src/spreadsheet/Makefile parser_handlers/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_STATIC_LIB_TRUE}" && test -z "${HAVE_STATIC_LIB_FALSE}"; then as_fn_error $? "conditional \"HAVE_STATIC_LIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_ODS_FILTER_TRUE}" && test -z "${WITH_ODS_FILTER_FALSE}"; then as_fn_error $? "conditional \"WITH_ODS_FILTER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_XLSX_FILTER_TRUE}" && test -z "${WITH_XLSX_FILTER_FALSE}"; then as_fn_error $? "conditional \"WITH_XLSX_FILTER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_XLS_XML_FILTER_TRUE}" && test -z "${WITH_XLS_XML_FILTER_FALSE}"; then as_fn_error $? "conditional \"WITH_XLS_XML_FILTER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_GNUMERIC_FILTER_TRUE}" && test -z "${WITH_GNUMERIC_FILTER_FALSE}"; then as_fn_error $? "conditional \"WITH_GNUMERIC_FILTER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_TOOLS_TRUE}" && test -z "${WITH_TOOLS_FALSE}"; then as_fn_error $? "conditional \"WITH_TOOLS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_SPREADSHEET_MODEL_TRUE}" && test -z "${BUILD_SPREADSHEET_MODEL_FALSE}"; then as_fn_error $? "conditional \"BUILD_SPREADSHEET_MODEL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by liborcus $as_me 0.9.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ liborcus config.status 0.9.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ AS \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "liborcus-$ORCUS_API_VERSION.pc") CONFIG_FILES="$CONFIG_FILES liborcus-$ORCUS_API_VERSION.pc:liborcus.pc.in" ;; "liborcus-spreadsheet-model-$ORCUS_API_VERSION.pc") CONFIG_FILES="$CONFIG_FILES liborcus-spreadsheet-model-$ORCUS_API_VERSION.pc:liborcus-spreadsheet-model.pc.in" ;; "VERSION") CONFIG_FILES="$CONFIG_FILES VERSION" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/orcus/Makefile") CONFIG_FILES="$CONFIG_FILES include/orcus/Makefile" ;; "include/orcus/mso/Makefile") CONFIG_FILES="$CONFIG_FILES include/orcus/mso/Makefile" ;; "include/orcus/spreadsheet/Makefile") CONFIG_FILES="$CONFIG_FILES include/orcus/spreadsheet/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/liborcus/Makefile") CONFIG_FILES="$CONFIG_FILES src/liborcus/Makefile" ;; "src/mso/Makefile") CONFIG_FILES="$CONFIG_FILES src/mso/Makefile" ;; "src/parser/Makefile") CONFIG_FILES="$CONFIG_FILES src/parser/Makefile" ;; "src/spreadsheet/Makefile") CONFIG_FILES="$CONFIG_FILES src/spreadsheet/Makefile" ;; "parser_handlers/Makefile") CONFIG_FILES="$CONFIG_FILES parser_handlers/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Assembler program. AS=$lt_AS # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi # ============================================== # Display final informations about configuration # ============================================== { $as_echo "$as_me:${as_lineno-$LINENO}: ============================================================================== Build configuration: debug: $enable_debug werror: $enable_werror spreadsheet-model: $enable_spreadsheet_model gnumeric-filter: $with_gnumeric_filter ods-filter: $with_ods_filter xlsx-filter: $with_xlsx_filter xls-xml-filter: $with_xls_xml_filter tools: $with_tools ============================================================================== " >&5 $as_echo "$as_me: ============================================================================== Build configuration: debug: $enable_debug werror: $enable_werror spreadsheet-model: $enable_spreadsheet_model gnumeric-filter: $with_gnumeric_filter ods-filter: $with_ods_filter xlsx-filter: $with_xlsx_filter xls-xml-filter: $with_xls_xml_filter tools: $with_tools ============================================================================== " >&6;} liborcus-0.9.2/install-sh0000755000175000017500000003325512540653525014033 0ustar renerene#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: liborcus-0.9.2/vsprojects/0000755000175000017500000000000012540654317014221 5ustar renereneliborcus-0.9.2/vsprojects/orcus.sln0000644000175000017500000001602012535701146016066 0ustar renereneMicrosoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liborcus", "liborcus\liborcus.vcproj", "{BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC}" ProjectSection(ProjectDependencies) = postProject {03B02C82-1064-420E-8AD7-8FB13DBEB584} = {03B02C82-1064-420E-8AD7-8FB13DBEB584} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orcus-ods", "orcus-ods\orcus-ods.vcproj", "{C19DCAC9-0C83-484C-86CA-29733628C391}" ProjectSection(ProjectDependencies) = postProject {03B02C82-1064-420E-8AD7-8FB13DBEB584} = {03B02C82-1064-420E-8AD7-8FB13DBEB584} {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} = {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} = {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orcus-xlsx", "orcus-xlsx\orcus-xlsx.vcproj", "{0A6D7067-D219-4104-BB07-6218E0CC0162}" ProjectSection(ProjectDependencies) = postProject {03B02C82-1064-420E-8AD7-8FB13DBEB584} = {03B02C82-1064-420E-8AD7-8FB13DBEB584} {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} = {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} = {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orcus-csv", "orcus-csv\orcus-csv.vcproj", "{4B0605D9-32D0-43FB-BD73-A1B8C2AF9A40}" ProjectSection(ProjectDependencies) = postProject {03B02C82-1064-420E-8AD7-8FB13DBEB584} = {03B02C82-1064-420E-8AD7-8FB13DBEB584} {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} = {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} = {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liborcus-spreadsheet-model", "liborcus-spreadsheet-model\liborcus-spreadsheet-model.vcproj", "{7C6822F2-EFBA-4FA8-9BBD-B66434E622EB}" ProjectSection(ProjectDependencies) = postProject {03B02C82-1064-420E-8AD7-8FB13DBEB584} = {03B02C82-1064-420E-8AD7-8FB13DBEB584} {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} = {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orcus-xml", "orcus-xml\orcus-xml.vcproj", "{561E1A45-D5B8-4621-AFCC-CA8A07005379}" ProjectSection(ProjectDependencies) = postProject {03B02C82-1064-420E-8AD7-8FB13DBEB584} = {03B02C82-1064-420E-8AD7-8FB13DBEB584} {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} = {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} = {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orcus-gnumeric", "orcus-gnumeric\orcus-gnumeric.vcproj", "{0E226F67-F653-45C7-AE6F-154843911C70}" ProjectSection(ProjectDependencies) = postProject {03B02C82-1064-420E-8AD7-8FB13DBEB584} = {03B02C82-1064-420E-8AD7-8FB13DBEB584} {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} = {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC} {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} = {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liborcus-parser", "liborcus-parser\liborcus-parser.vcproj", "{03B02C82-1064-420E-8AD7-8FB13DBEB584}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liborcus-parser-static", "liborcus-parser-static\liborcus-parser-static.vcproj", "{C4EFDC7F-B436-4CF4-8EBB-2D55A776D494}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liborcus-static", "liborcus-static\liborcus-static.vcproj", "{68B0EEB7-3FCD-44F4-9363-B475CF493064}" ProjectSection(ProjectDependencies) = postProject {C4EFDC7F-B436-4CF4-8EBB-2D55A776D494} = {C4EFDC7F-B436-4CF4-8EBB-2D55A776D494} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC}.Debug|Win32.ActiveCfg = Debug|Win32 {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC}.Debug|Win32.Build.0 = Debug|Win32 {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC}.Release|Win32.ActiveCfg = Release|Win32 {BAC18CCC-5ED5-4E30-9A5A-058BB0C24DDC}.Release|Win32.Build.0 = Release|Win32 {C19DCAC9-0C83-484C-86CA-29733628C391}.Debug|Win32.ActiveCfg = Debug|Win32 {C19DCAC9-0C83-484C-86CA-29733628C391}.Debug|Win32.Build.0 = Debug|Win32 {C19DCAC9-0C83-484C-86CA-29733628C391}.Release|Win32.ActiveCfg = Release|Win32 {C19DCAC9-0C83-484C-86CA-29733628C391}.Release|Win32.Build.0 = Release|Win32 {0A6D7067-D219-4104-BB07-6218E0CC0162}.Debug|Win32.ActiveCfg = Debug|Win32 {0A6D7067-D219-4104-BB07-6218E0CC0162}.Debug|Win32.Build.0 = Debug|Win32 {0A6D7067-D219-4104-BB07-6218E0CC0162}.Release|Win32.ActiveCfg = Release|Win32 {0A6D7067-D219-4104-BB07-6218E0CC0162}.Release|Win32.Build.0 = Release|Win32 {4B0605D9-32D0-43FB-BD73-A1B8C2AF9A40}.Debug|Win32.ActiveCfg = Debug|Win32 {4B0605D9-32D0-43FB-BD73-A1B8C2AF9A40}.Debug|Win32.Build.0 = Debug|Win32 {4B0605D9-32D0-43FB-BD73-A1B8C2AF9A40}.Release|Win32.ActiveCfg = Release|Win32 {4B0605D9-32D0-43FB-BD73-A1B8C2AF9A40}.Release|Win32.Build.0 = Release|Win32 {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB}.Debug|Win32.ActiveCfg = Debug|Win32 {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB}.Debug|Win32.Build.0 = Debug|Win32 {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB}.Release|Win32.ActiveCfg = Release|Win32 {7C6822F2-EFBA-4FA8-9BBD-B66434E622EB}.Release|Win32.Build.0 = Release|Win32 {561E1A45-D5B8-4621-AFCC-CA8A07005379}.Debug|Win32.ActiveCfg = Debug|Win32 {561E1A45-D5B8-4621-AFCC-CA8A07005379}.Debug|Win32.Build.0 = Debug|Win32 {561E1A45-D5B8-4621-AFCC-CA8A07005379}.Release|Win32.ActiveCfg = Release|Win32 {561E1A45-D5B8-4621-AFCC-CA8A07005379}.Release|Win32.Build.0 = Release|Win32 {0E226F67-F653-45C7-AE6F-154843911C70}.Debug|Win32.ActiveCfg = Debug|Win32 {0E226F67-F653-45C7-AE6F-154843911C70}.Release|Win32.ActiveCfg = Release|Win32 {0E226F67-F653-45C7-AE6F-154843911C70}.Release|Win32.Build.0 = Release|Win32 {03B02C82-1064-420E-8AD7-8FB13DBEB584}.Debug|Win32.ActiveCfg = Debug|Win32 {03B02C82-1064-420E-8AD7-8FB13DBEB584}.Debug|Win32.Build.0 = Debug|Win32 {03B02C82-1064-420E-8AD7-8FB13DBEB584}.Release|Win32.ActiveCfg = Release|Win32 {03B02C82-1064-420E-8AD7-8FB13DBEB584}.Release|Win32.Build.0 = Release|Win32 {C4EFDC7F-B436-4CF4-8EBB-2D55A776D494}.Debug|Win32.ActiveCfg = Debug|Win32 {C4EFDC7F-B436-4CF4-8EBB-2D55A776D494}.Debug|Win32.Build.0 = Debug|Win32 {C4EFDC7F-B436-4CF4-8EBB-2D55A776D494}.Release|Win32.ActiveCfg = Release|Win32 {C4EFDC7F-B436-4CF4-8EBB-2D55A776D494}.Release|Win32.Build.0 = Release|Win32 {68B0EEB7-3FCD-44F4-9363-B475CF493064}.Debug|Win32.ActiveCfg = Debug|Win32 {68B0EEB7-3FCD-44F4-9363-B475CF493064}.Debug|Win32.Build.0 = Debug|Win32 {68B0EEB7-3FCD-44F4-9363-B475CF493064}.Release|Win32.ActiveCfg = Release|Win32 {68B0EEB7-3FCD-44F4-9363-B475CF493064}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal liborcus-0.9.2/vsprojects/liborcus/0000755000175000017500000000000012540654317016043 5ustar renereneliborcus-0.9.2/vsprojects/liborcus/liborcus.vcproj0000644000175000017500000003412412535701146021113 0ustar renerene liborcus-0.9.2/vsprojects/liborcus/DefaultConfig.vsprops0000755000175000017500000000077512535701146022224 0ustar renerene liborcus-0.9.2/vsprojects/liborcus/zLib.vsprops0000755000175000017500000000073612535701146020407 0ustar renerene liborcus-0.9.2/vsprojects/liborcus-parser-static/0000755000175000017500000000000012540654317020622 5ustar renereneliborcus-0.9.2/vsprojects/liborcus-parser-static/liborcus-parser-static.vcproj0000644000175000017500000001243312535701146026450 0ustar renerene liborcus-0.9.2/vsprojects/liborcus-static/0000755000175000017500000000000012540654317017330 5ustar renereneliborcus-0.9.2/vsprojects/liborcus-static/liborcus-static.vcproj0000644000175000017500000002574312535701146023674 0ustar renerene liborcus-0.9.2/vsprojects/orcus-csv/0000755000175000017500000000000012540654317016145 5ustar renereneliborcus-0.9.2/vsprojects/orcus-csv/AdditionalLibs.vsprops0000755000175000017500000000050512535701146022465 0ustar renerene liborcus-0.9.2/vsprojects/orcus-csv/orcus-csv.vcproj0000644000175000017500000000755512535701146021327 0ustar renerene liborcus-0.9.2/vsprojects/orcus-xml/0000755000175000017500000000000012540654317016152 5ustar renereneliborcus-0.9.2/vsprojects/orcus-xml/orcus-xml.vcproj0000644000175000017500000001004012535701146021320 0ustar renerene liborcus-0.9.2/vsprojects/orcus-ods/0000755000175000017500000000000012540654317016137 5ustar renereneliborcus-0.9.2/vsprojects/orcus-ods/orcus-ods.vcproj0000644000175000017500000000765112535701146021310 0ustar renerene liborcus-0.9.2/vsprojects/orcus-xlsx/0000755000175000017500000000000012540654317016350 5ustar renereneliborcus-0.9.2/vsprojects/orcus-xlsx/orcus-xlsx.vcproj0000644000175000017500000001003112535701146021714 0ustar renerene liborcus-0.9.2/vsprojects/liborcus-parser/0000755000175000017500000000000012540654317017335 5ustar renereneliborcus-0.9.2/vsprojects/liborcus-parser/liborcus-parser.vcproj0000644000175000017500000001303112535701146023671 0ustar renerene liborcus-0.9.2/vsprojects/liborcus-parser.vsprops0000644000175000017500000000046412535701146020774 0ustar renerene liborcus-0.9.2/vsprojects/MddsAndIxion.vsprops0000755000175000017500000000110312535701146020173 0ustar renerene liborcus-0.9.2/vsprojects/orcus-gnumeric/0000755000175000017500000000000012540654317017163 5ustar renereneliborcus-0.9.2/vsprojects/orcus-gnumeric/orcus-gnumeric.vcproj0000755000175000017500000001001412535701146023346 0ustar renerene liborcus-0.9.2/vsprojects/liborcus-spreadsheet-model/0000755000175000017500000000000012540654317021446 5ustar renereneliborcus-0.9.2/vsprojects/liborcus-spreadsheet-model/liborcus-spreadsheet-model.vcproj0000644000175000017500000001216512535701146030122 0ustar renerene liborcus-0.9.2/misc/0000755000175000017500000000000012541226372012747 5ustar renereneliborcus-0.9.2/misc/generate-tokens.sh0000755000175000017500000000125612535701142016401 0ustar renerene#!/bin/sh ./misc/gen-odf-tokens.py \ misc/OpenDocument-v1.2-os-schema.rng \ src/liborcus/odf_token_constants.inl \ src/liborcus/odf_tokens.inl \ src/liborcus/odf_namespace_types ./misc/gen-ooxml-tokens.py -t ooxml \ misc/ooxml-ecma-376/OfficeOpenXML-XMLSchema.zip \ src/liborcus/ooxml_token_constants.inl \ src/liborcus/ooxml_tokens.inl ./misc/gen-ooxml-tokens.py -t opc \ misc/ooxml-ecma-376/OpenPackagingConventions-XMLSchema.zip \ src/liborcus/opc_token_constants.inl \ src/liborcus/opc_tokens.inl ./misc/gen-gnumeric-tokens.py \ misc/gnumeric.xsd \ src/liborcus/gnumeric_token_constants.inl \ src/liborcus/gnumeric_tokens.inl liborcus-0.9.2/misc/gen-ooxml-tokens.py0000755000175000017500000000621112535701142016526 0ustar renerene#!/usr/bin/env python #************************************************************************ # # Copyright (c) 2010 Kohei Yoshida # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # #*********************************************************************** import xml.parsers.expat, zipfile, optparse, sys import token_util class xml_parser: def __init__ (self, strm): self.__strm = strm self.__elem = None self.tokens = [] def start_element(self, name, attrs): self.__elem = name if name in ['xs:element', 'xs:attribute', 'xsd:element', 'xsd:attribute'] and attrs.has_key('name'): token = attrs['name'] if len(token) > 0: self.tokens.append(token) def end_element(self, name): pass def character(self, data): pass def parse (self): p = xml.parsers.expat.ParserCreate() p.StartElementHandler = self.start_element p.EndElementHandler = self.end_element p.CharacterDataHandler = self.character p.Parse(self.__strm, 1) def get_all_tokens_from_zip (fpath): zip = zipfile.ZipFile(fpath, 'r') tokens = {} for item in zip.namelist(): fd = zip.open(item, 'r') parser = xml_parser(fd.read()) fd.close() parser.parse() for token in parser.tokens: tokens[token] = True zip.close() keys = tokens.keys() keys.sort() return keys def main (): parser = optparse.OptionParser() parser.add_option("-t", "--schema-type", dest="schema_type", default="ooxml", metavar="TYPE", help="Specify the schema type. Possible values are: 'ooxml', or 'opc'. The default value is 'ooxml'.") options, args = parser.parse_args() if len(args) < 3: parser.print_help() sys.exit(1) schema_type = options.schema_type if not schema_type in ['opc', 'ooxml']: token_util.die("Unsupported schema type: %s"%schema_type) tokens = get_all_tokens_from_zip(args[0]) token_util.gen_token_constants(args[1], tokens) token_util.gen_token_names(args[2], tokens) if __name__ == '__main__': main() liborcus-0.9.2/misc/dump-xsd-keys.py0000755000175000017500000001050012535701142016026 0ustar renerene#!/usr/bin/env python ######################################################################## # # Copyright (c) 2013 Kohei Yoshida # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # ######################################################################## import xml.parsers.expat, argparse, sys import token_util class xml_parser: def __init__ (self, strm): self.__strm = strm self.__elem = None self.tokens = [] self.ns_tokens = [] def start_element(self, name, attrs): self.__elem = name if name in ['xs:element', 'xs:attribute', 'xsd:element', 'xsd:attribute'] and attrs.has_key('name'): token = attrs['name'] if len(token) > 0: self.tokens.append(token) if name.endswith(':schema'): # Check for namespace entries. attr_names = attrs.keys() for attr_name in attr_names: if attr_name == 'xmlns': self.ns_tokens.append(['', attrs[attr_name]]) elif attr_name.startswith('xmlns:'): vals = attr_name.split(':') self.ns_tokens.append([vals[1], attrs[attr_name]]) def end_element(self, name): pass def character(self, data): pass def parse (self): p = xml.parsers.expat.ParserCreate() p.StartElementHandler = self.start_element p.EndElementHandler = self.end_element p.CharacterDataHandler = self.character p.Parse(self.__strm, 1) def parse_files(filenames): tokens = {} for filename in filenames: file = open(filename, 'r') chars = file.read() file.close() parser = xml_parser(chars) parser.parse() for token in parser.tokens: tokens[token] = True keys = tokens.keys() keys.sort() return keys def parse_files_ns(filenames): tokens = {} for filename in filenames: file = open(filename, 'r') chars = file.read() file.close() parser = xml_parser(chars) parser.parse() for ns_token in parser.ns_tokens: alias, value = ns_token # each namespace token consists of an alias and a value. if not tokens.has_key(value): tokens[value] = [] if len(alias) > 0 and not alias in tokens[value]: tokens[value].append(alias) keys = tokens.keys() keys.sort() ret_val = [] for key in keys: aliases = tokens[key] t = key + " (" first = True for alias in aliases: if first: first = False else: t += ", " t += alias t += ")" ret_val.append(t) return ret_val desc = "Given an arbitrary XML Schema file (.xsd), dump all its keys specified in the schema to stdout." def main (): parser = argparse.ArgumentParser(description=desc) parser.add_argument('file', nargs='*', help='XML Shema file (.xsd)') parser.add_argument('--ns', dest='ns_mode', action='store_true', default=False) args = parser.parse_args(sys.argv[1:]) ns_mode = args.ns_mode if ns_mode: keys = parse_files_ns(args.file) else: keys = parse_files(args.file) for key in keys: print(key) if __name__ == '__main__': main() liborcus-0.9.2/misc/gen-odf-tokens.py0000755000175000017500000001103112535701142016134 0ustar renerene#!/usr/bin/env python #************************************************************************ # # Copyright (c) 2010-2012 Kohei Yoshida # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # #*********************************************************************** import xml.parsers.expat, sys import token_util class xml_parser: def __init__ (self, strm): self.__strm = strm self.__elem = None self.tokens = {} self.ns_values = {} # namespace values def start_element(self, name, attrs): self.__elem = name if name in ['element', 'attribute'] and attrs.has_key('name'): tokens = attrs['name'].split(':') n = len(tokens) if n == 1: # namespace-less token self.tokens[tokens[0]] = True elif n == 2: # namespaced token self.tokens[tokens[1]] = True else: sys.stderr.write("unrecognized token type: "+attrs['name']) sys.exit(1) for token in tokens: self.tokens[token] = True elif name == "grammar": names = attrs.keys() for name in names: tokens = name.split(':') if len(tokens) < 2 or tokens[0] != "xmlns": continue val = attrs[name] self.ns_values[tokens[1]] = val def end_element(self, name): pass def character(self, data): if self.__elem == 'value': s = data.strip() if len(s) > 0: self.tokens[s] = True def parse (self): p = xml.parsers.expat.ParserCreate() p.StartElementHandler = self.start_element p.EndElementHandler = self.end_element p.CharacterDataHandler = self.character p.Parse(self.__strm, 1) def gen_namespace_tokens (filepath, ns_values): keys = ns_values.keys() keys.sort() # header (.hpp) filepath_hpp = filepath + "_hpp.inl" outfile = open(filepath_hpp, 'w') outfile.write("namespace orcus {\n\n") for key in keys: outfile.write("extern const xmlns_id_t NS_odf_") outfile.write(key) outfile.write(";\n") outfile.write("\nextern const xmlns_id_t* NS_odf_all;\n") outfile.write("\n}\n\n") outfile.close() # source (.cpp) filepath_cpp = filepath + "_cpp.inl" outfile = open(filepath_cpp, 'w') outfile.write("namespace orcus {\n\n") for key in keys: outfile.write("const xmlns_id_t NS_odf_") outfile.write(key) val = ns_values[key] outfile.write(" = \"") outfile.write(val) outfile.write("\"") outfile.write(";\n") outfile.write("\n") outfile.write("namespace {\n\n") outfile.write("const xmlns_id_t odf_ns[] = {\n") for key in keys: outfile.write(" NS_odf_") outfile.write(key) outfile.write(",\n") outfile.write(" NULL\n") outfile.write("};\n\n") outfile.write("} // anonymous\n\n") outfile.write("const xmlns_id_t* NS_odf_all = odf_ns;\n\n") outfile.write("}\n\n") outfile.close() def main (args): file = open(sys.argv[1], 'r') chars = file.read() file.close() parser = xml_parser(chars) parser.parse() tokens = parser.tokens.keys() tokens.sort() token_util.gen_token_constants(sys.argv[2], tokens) token_util.gen_token_names(sys.argv[3], tokens) gen_namespace_tokens(sys.argv[4], parser.ns_values) if __name__ == '__main__': main(sys.argv) liborcus-0.9.2/misc/xls-xml-tokens.txt0000644000175000017500000002560612535701142016422 0ustar renereneAcceptLabelsInFormulas Action ActiveChart ActiveCol ActiveColumn ActivePane ActiveRow ActiveRows ActiveSheet Aggregate AlertVersion Alignment AllItemName AllowDeleteCols AllowDeleteRows AllowFilter AllowFormatCells AllowInsertCols AllowInsertHyperlinks AllowInsertRows AllowSizeCols AllowSizeRows AllowSort AllowUsePivotTables AlternateMethod AppName Append ApplyAutomaticOutlineStyles Area ArrayRange Async Attribute AttributeType Authentication Author AutoFilter AutoFilterAnd AutoFilterColumn AutoFilterCondition AutoFilterOr AutoFitHeight AutoFitWidth AutoFormatAlignment AutoFormatBorder AutoFormatFont AutoFormatName AutoFormatNumber AutoFormatPattern AutoFormatWidth AutoRepublish AutoShowCount AutoShowField AutoShowRange AutoShowType AutoSortField AutoSortOrder BackgroundQuery BaseField BaseItem Basic Behavior Binding BlackAndWhite BlankLineAfterItems BlockTotal Bold Boolean Border Borders Bottom BoundField Bytes CacheDetails CacheFile CacheIndex CachePosition CalculatedMember Calculation CantGetUniqueItems Caption CaptionAlignment CaseSensitive Category Cell CellRangeList CellsExpanded CellsExpandedSeqNum CellsNotExpanded CenterHorizontal CenterVertical Cf CharSet Characters CharactersWithSpaces ClientParameter ClientParameterBinding ClientParameterBindings ClientParameterValue Clipped CodeName Col1 Col10 Col11 Col12 Col13 Col14 Col15 Col16 Col17 Col18 Col19 Col2 Col20 Col3 Col4 Col5 Col6 Col7 Col8 Col9 ColBreak ColBreaks ColFirst ColLast Color Column ColumnInfo ColumnInputCell ColumnName ComboHide Comma CommandText CommandTextOrignal CommandType Comment CommentsLayout Company ComponentOptions Condition ConditionalFormatting Connection ConnectionInfo ConnectionString Consecutive ConsolidationReference Count CountOfSameItems CreateBackup Created Credential CredentialBinding CredentialValue Crn CubeField CubeSource CurrentPage Custom CustomDocumentProperties Data DataAxisEmpty DataField DataMember DataSource DataTable DataType DataValidation DataValueEditing Date1904 Decimal DefaultColumnWidth DefaultItem DefaultRowHeight DefaultValue DefaultVersion DeletedTitle Delimiters Descending Description DetailFormat DetailMaxHeight DetailMaxWidth DetailRowHeight DetailSortOrder DetailWidth Dimension DisableDateRecognition DisableDrillDown DisableEdit DisableFieldDialog DisableRefresh DisableWizard DisplayDrawingObjects DisplayEmptyMembers DisplayErrorString DisplayFieldList DisplayFormulas DisplayIn DisplayInkNotes DisplayPageBreak DisplayRightToLeft DivID DoNotCalculateBeforeSave DoNotDisplayColHeaders DoNotDisplayGridlines DoNotDisplayHeadings DoNotDisplayOutline DoNotDisplayRowHeaders DoNotDisplayZeros DoNotJoinDelimiters DoNotPersist DoNotPersistSort DoNotPersstAF DoNotPromptForFile DoNotSaveLinkValues DocumentProperties DontShowInFieldList DownloadComponents DraftQuality DrawAspect DrilledLevel DrilledMember EditWebPage ElementType EmbedSaveSmartTags EnableMultiplePageItems EnableRedirections EnableSelection Encode EntirePage Entry Error ErrorHide ErrorMessage ErrorString ErrorStyle ErrorTitle ExcelName ExcelType ExcelWorkbook ExcelWorksheetType Expanded ExpandedColumnCount ExpandedRowCount ExternName ExtraLeftColumns ExtraRightColumns Family Field FieldLabelFormat FieldListBottom FieldListLeft FieldListRight FieldListTop FieldStart FieldType File FileName FillDown Filled FilterCaption FilterMember FilterOn FirstVisibleSheet FitHeight FitToPage FitWidth Font FontName Footer Format FormatSettings FormatType Formula FormulaIndex FormulaV10 FreezePanes FrozenNoSplit FullColumns FullRows Function FunctionGroup FunctionGroupIndex FuturePersist FutureVer GrandTotalString GridlineColor GridlineColorIndex Gridlines GroupBy GroupDefinition GroupEnd GroupEndAuto GroupLevel GroupMember GroupNumber GroupStart GroupStartAuto GroupType GroupedWidth Guid HRef HRefScreenTip HTMLFormat HTMLTables HasNoAutoFormat HasNoRecords Header HeaderRange HeaderRow Height Hidden HideDetail HideDropDowns HideFormula HideHorizontalScrollBar HideInactiveListBorder HideOfficeLogo HidePivotTableFieldList HideTotalsAnnotation HideVerticalScrollBar HideWorkbookTabs Horizontal HorizontalResolution Href HtmlType HyperlinkBase ID IMEMode Id IdWrapped If ImmediateItemsOnDrop Indent Index IndividualCellBorders InputHide InputMessage InputTitle InsertEntireRows InstanceShape Interior IntlMacro Invalid InvertedColumnMember InvertedRowMember IsGroupLevel IsMemberProperty IsNotFiltered Italic Item ItemType Iteration KeyboardShortcut Keywords Label LastAuthor LastPrinted LastSaved Layout LayoutForm LayoutPageBreak LayoutSubtotalLocation LeafColumnMember LeafRowMember Left LeftCell LeftColumnRightPane LeftColumnVisible LeftToRight LengthLevelUniqueName Level LineStyle Lines LoadMode LocalConnection Location LocationOfComponents Macro MainFile Maintain MajorVersion Manager Map MapChildItems MapID MapInfo Mapdata Margin Max MaxChange MaxHeight MaxIterations MaxWidth Measure Member MemberExpand MemberFormat MemberName MemberPropertiesOrder MemberProperty MemberPropertyParent MergeAcross MergeDown MergeLabels Min MinorVersion Missing MissingItemsLimit Moper MoveAfterReturn Name NamedCell NamedRange Names Namespace NewAsync NewItemsHidden NextId NextSheetNumber NoAutoFit NoAutoFormatWidth NoAutoPage NoAutoRecover NoAutofit NoColumnGrand NoDetailAutoFit NoDisplayNullString NoDragToColumn NoDragToData NoDragToHide NoDragToPage NoDragToRow NoInserts NoPreserveFormatting NoPrintRepeatItems NoPrinterInfo NoRefreshCache NoRowGrand NoSaveData NoSummaryColumnsRightDetail NoSummaryRowsBelowDetail NoTextToColumns NoTitles NoToggleDataHeader NoViewCalculatedMembers NonDefaultName NotInverted NotVisible NullString Number NumberFormat NumberOfCopies OLEObject OWCVersion ObjectID OfficeDocumentSettings OleLink Operator OptimizeCache Orientation Outline OverwriteCells PLCaption PLDataOrientation PLExport PLGroupType PLName PLPivotField PLPosition PLSubtotal PLTPivotItem PLTotal PTFormat PTFormula PTLineItem PTLineItems PTPivotData PTRule PTSource PageBreakZoom PageBreaks PageFieldOrder PageFieldStyle PageFieldWrapCount PageMargins PageSetup Pages Pane Panes PaperSizeIndex Paragraphs Parameter ParameterType ParameterValue Parent ParentField ParentIsOther ParentName ParentUniqueName ParseFormulaAsV10 ParseRuleAsV10 PasteFormula PasteRefersTo Path Pattern PatternColor PivotAxis PivotCache PivotField PivotItem PivotTable PivotView Position PrecisionAsDisplayed PresentationFormat Print PrintErrors PrintSetTitles ProgID PromptString ProtectContents ProtectObjects ProtectScenarios ProtectStructure ProtectWindows Protected Protection Proxy PublishObject PublishObjects Purpose QTSource Qualifier Query97 QuerySource QueryTable QueryType Range RangeSelection ReadOnly ReadingOrder RefModeR1C1 Reference RefersTo RefreshDate RefreshDateCopy RefreshInfo RefreshName RefreshOnChange RefreshOnFileOpen RefreshTimeSpan RefreshedInXl9 Resource Revision Right RightToLeft RobustConnect RootElement Rotate Rotation Row RowBreak RowBreaks RowColHeadings RowInputCell RowLast RowNumbers Rule RuleType RuleV10 SOAPAction SQLType Scale Schema SchemaID SchemaRef Selected SelectedSheets Selection SelectionNamespaces SemiColon SeqNum Sequence ServerBased ServerSortOrder Set Shadow ShapeID SheetIndex SheetName ShowAllItems ShowAlways ShowCellBackgroundFromOLAP ShowImportExportValidationErrors ShowPageBreakZoom ShowPageMultipleItemLabel ShowTotals ShrinkToFit Size SmallGrid SmartTagType SmartTags SolveOrder Sort SortKey SortOrder Sorting Source SourceConnectionFile SourceConsolidation SourceDataFile SourceHierarchy SourceHierarchyLevel SourceName SourceType Space SpaceAbove SpaceBelow Span SplitHorizontal SplitVertical SpreadsheetAutoFit StandardWidth StartPageNumber StartRow StrikeThrough Style StyleID Styles SubType Subject Subtotal SubtotalFormat SubtotalHiddenPageItems SubtotalName SupBook Synchronous Tab TabColorIndex TabRatio Table TableStyle Tag Text TextQualifier TextWizardSettings ThousandSeparator Ticked Title Toolbar TooltipInfo Top TopCell TopRowBottomPane TopRowVisible TotalAlignment TotalAllMembers TotalCaptionAlignment TotalFormat TotalTime TotalWidth TransitionExpressionEvaluation TransitionFormulaEntry Type URLString Uncalced Underline UniqueName Unsynced UseBlank UseLocalConnection UseSameSettings User VMLFrame VacatedStyle ValidPrinterInfo Value Value1 Value2 Version VersionLastEdit VersionLastRefresh VersionLastUpdate VersionRefreshableMin VersionUpdateableMin Vertical VerticalAlign VerticalResolution VerticalText ViewableRange Visible VisualTotals WantAdvise WantPict Watch Watches WebPostString Weight Width WindowHeight WindowHidden WindowIconic WindowTopX WindowTopY WindowWidth Windows Words Workbook WorkbookOptions Worksheet WorksheetOptions WorksheetSource WrapText XPath XSDType Xct ZeroHeight Zoom accentbar adj adjusthandles alignshape allowincell allowoverlap alt althref angle arc arcsize arrowok aspect aspectratio attribute autorotationcenter backdepth background bilevel blacklevel borderbottomcolor borderleftcolor borderrightcolor bordertopcolor brightness bullet button bwmode bwnormal bwpure callout caption chromakey class clip color color2 colormenu colormode colormru colors complex connectangles connectloc connectlocs connectortype connecttype content control1 control2 coordorigin coordsize cropbottom cropleft cropping cropright croptop curve dashstyle data datatype detectmouseclick diffusity displaycustomheaders distance doubleclicknotify drop dropauto dt edge editas embosscolor end endAngle endarrow endarrowlength endarrowwidth endcap entry eqn ext extends extrusion extrusioncolor extrusionok f facet fill fillcolor filled fillok filltype fitpath fitshape focus focusposition focussize forcedash foredepth formulas from gain gamma gap gradientshapeok grayscale group grouping h handles hidden how hr hralign href hrheight hrnoshade hrpct hrstd hrwidth id idmap idref image imagealignshape imageaspect imagedata imagesize inset insetmode invx invy joinstyle length lengthspecified lightface lightharsh lightharsh2 lightlevel lightlevel2 lightposition lightposition2 limo line linestyle lock lockrotationcenter map master matrix maxLength metal method minusx minusy miterlimit movie name namespaceuri new obscured offset offset2 old ole oleicon oleid on oned onmouseover opacity opacity2 orientation orientationangle origin oval password path phonetictext plane points polar polyline position preferrelative print proxy r radiusrange rect regroupid regrouptable relativeposition render rotation rotationangle rotationcenter roundrect row ruleinitiator ruleproxy rules selection shadow shadowcolor shadowok shape shapedefaults shapelayout shapetype shininess singleclick size skew skewamt skewangle specularity spid spidmax spt src start startAngle startarrow startarrowlength startarrowwidth string stroke strokecolor stroked strokeok strokeweight style switch tablelimits tableproperties target targetscreensize text textborder textbox textboxrect textpath textpathok title to trim type url useExplicit userId userdrawn userhidden v verticies viewpoint viewpointorigin visible weight worksheetoptions wrapcoords xrange xscale yrange liborcus-0.9.2/misc/gen-tokens.py0000755000175000017500000000416512535701142015400 0ustar renerene#!/usr/bin/env python ######################################################################## # # Copyright (c) 2013 Kohei Yoshida # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # ######################################################################## import token_util, argparse, sys desc = "Generate C++ source files from a list of tokens." def main (): parser = argparse.ArgumentParser(description=desc) parser.add_argument('tokenlist', nargs=1, help='plain-text file that contains a list of tokens.') parser.add_argument('output1', nargs=1, help="output file that will contain XML token values.") parser.add_argument('output2', nargs=1, help="output file that will contain XML token names.") args = parser.parse_args(sys.argv[1:]) file = open(args.tokenlist[0], 'r') tokens = {} for line in file.readlines(): token = line.strip() tokens[token] = True tokens = tokens.keys() tokens.sort() token_util.gen_token_constants(args.output1[0], tokens) token_util.gen_token_names(args.output2[0], tokens) file.close() if __name__ == '__main__': main() liborcus-0.9.2/misc/gen-gnumeric-tokens.py0000755000175000017500000000502612535701142017204 0ustar renerene#!/usr/bin/env python #************************************************************************ # # Copyright (c) 2010-2012 Kohei Yoshida # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # #*********************************************************************** import xml.parsers.expat, sys import token_util class xml_parser: def __init__ (self, strm): self.__strm = strm self.__elem = None self.tokens = [] def start_element(self, name, attrs): self.__elem = name if name in ['xs:element', 'xs:attribute', 'xsd:element', 'xsd:attribute'] and attrs.has_key('name'): token = attrs['name'] if len(token) > 0: self.tokens.append(token) def end_element(self, name): pass def character(self, data): pass def parse (self): p = xml.parsers.expat.ParserCreate() p.StartElementHandler = self.start_element p.EndElementHandler = self.end_element p.CharacterDataHandler = self.character p.Parse(self.__strm, 1) def parse_file(filename): file = open(filename, 'r') chars = file.read() file.close() parser = xml_parser(chars) parser.parse() tokens = {} for token in parser.tokens: tokens[token] = True keys = tokens.keys() keys.sort() return keys def main (): tokens = parse_file(sys.argv[1]) token_util.gen_token_constants(sys.argv[2], tokens) token_util.gen_token_names(sys.argv[3], tokens) if __name__ == '__main__': main() liborcus-0.9.2/misc/gnumeric.xsd0000755000175000017500000017673412535701142015321 0ustar renerene Schema for gnumeric spreadsheet documents Created for Gnumeric 1.2.2, Based on gnumeric source code and sample gnumeric documents Author: Marc Johnson (marc_johnson27591@hotmail.com) updated for 1.4.2 in Feb 2005 updated for 1.6.0 in Sept 2005 updated for 1.7.1 in Jun 2006 updated for 1.7.11 in Jun 2007 jody@gnome.org updated for 1.7.91 in Nov 2007 jody@gnome.org partially updated for 1.10.17 in July 2011 aguelzow@pyrshep.ca liborcus-0.9.2/misc/token_util.py0000644000175000017500000000564212535701142015501 0ustar renerene#!/usr/bin/env python #************************************************************************ # # Copyright (c) 2010 Kohei Yoshida # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # #*********************************************************************** import sys def normalize_name (old): new = '' for c in old: if c in '.-': # '.' nad '-' are not allowed in C++ symbols. c = '_' new += c return new unknown_token_name = "??" def gen_token_list (filepath, tokens, ns_tokens): dic = {} for t in tokens: dic[t] = True for t in ns_tokens: dic[t] = True keys = dic.keys() keys.sort() file = open(filepath, 'w') for key in keys: file.write(key + "\n") file.close() def die (msg): sys.stderr.write(msg + "\n") sys.exit(1) def get_auto_gen_warning (): return "// This file has been auto-generated. Do not hand-edit this.\n\n" def gen_token_constants (filepath, tokens): outfile = open(filepath, 'w') outfile.write(get_auto_gen_warning()) token_id = 1 token_size = len(tokens) for i in xrange(0, token_size): token = normalize_name(tokens[i]) outfile.write("const xml_token_t XML_%s = %d;\n"%(token, token_id)) token_id += 1 outfile.write("\n") outfile.close() def gen_token_names (filepath, tokens): outfile = open(filepath, 'w') outfile.write(get_auto_gen_warning()) outfile.write("const char* token_names[] = {\n") outfile.write(" \"%s\", // 0\n"%unknown_token_name) token_id = 1 token_size = len(tokens) for i in xrange(0, token_size): token = tokens[i] s = ',' if i == token_size-1: s = ' ' outfile.write(" \"%s\"%s // %d\n"%(token, s, token_id)) token_id += 1 outfile.write("};\n\n") outfile.write("size_t token_name_count = %d;\n\n"%token_id) outfile.close() liborcus-0.9.2/config.sub0000755000175000017500000010576212540653525014015 0ustar renerene#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-07-28' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: liborcus-0.9.2/parser_handlers/0000755000175000017500000000000012540654317015173 5ustar renereneliborcus-0.9.2/parser_handlers/sax_ns.hpp0000644000175000017500000000427412535701142017177 0ustar renerene/************************************************************************* * * Copyright (c) 2015 Kohei Yoshida * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * ************************************************************************/ #ifndef INCLUDED_ORCUS_PARSER_HANDLERS_SAX_NS_HPP #define INCLUDED_ORCUS_PARSER_HANDLERS_SAX_NS_HPP namespace orcus { struct sax_ns_parser_attribute; struct sax_ns_parser_element; namespace sax { struct doctype_declaration; }} /** * Skeleton handler for sax_ns_parser. Feel free to copy this as a starting * point for your own handler. */ class sax_ns_handler { public: void doctype(const orcus::sax::doctype_declaration& /*dtd*/) {} void start_declaration(const orcus::pstring& /*decl*/) {} void end_declaration(const orcus::pstring& /*decl*/) {} void start_element(const orcus::sax_ns_parser_element& /*elem*/) {} void end_element(const orcus::sax_ns_parser_element& /*elem*/) {} void characters(const orcus::pstring& /*val*/, bool /*transient*/) {} void attribute(const orcus::pstring& /*name*/, const orcus::pstring& /*val*/) {} void attribute(const orcus::sax_ns_parser_attribute& /*attr*/) {} }; #endif liborcus-0.9.2/parser_handlers/sax.hpp0000644000175000017500000001040412535701142016467 0ustar renerene/************************************************************************* * * Copyright (c) 2015 Kohei Yoshida * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * ************************************************************************/ #ifndef INCLUDED_ORCUS_PARSER_HANDLERS_SAX_HPP #define INCLUDED_ORCUS_PARSER_HANDLERS_SAX_HPP namespace orcus { namespace sax { struct doctype_declaration; struct parser_element; } class pstring; } /** * Skeleton handler for sax_parser. Feel free to copy this as a starting * point for your own handler. */ class sax_parser_handler { public: /** * Called when a doctype declaration <!DOCTYPE ... > is encountered. * * @param param struct containing doctype declaration data. */ void doctype(const orcus::sax::doctype_declaration& param) {} /** * Called when <?... is encountered, where the '...' may be an * arbitraray dentifier. One common declaration is <?xml which is * typically given at the start of an XML stream. * * @param decl name of the identifier. */ void start_declaration(const orcus::pstring& decl) {} /** * Called when the closing tag (>) of a <?... ?> is encountered. * * @param decl name of the identifier. */ void end_declaration(const orcus::pstring& decl) {} /** * Called at the start of each element. * * @param elem information of the element being parsed. */ void start_element(const orcus::sax::parser_element& elem) {} /** * Called at the end of each element. * * @param elem information of the element being parsed. */ void end_element(const orcus::sax::parser_element& elem) {} /** * Called when a segment of a text content is parsed. Each text content * is a direct child of an element, which may have multiple child contents * when the element also has a child element that are direct sibling to * the text contents or the text contents are splitted by a comment. * * @param val value of the text content. * @param transient when true, the text content has been converted and is * stored in a temporary buffer due to presence of one or * more encoded characters, in which case the passed * text value needs to be either immediately converted to * a non-text value or be interned within the scope of * the callback. */ void characters(const orcus::pstring& val, bool transient) {} /** * Called upon parsing of a name-value pair within <? ... ?> tag. * * @param name attribute name. * @param val attribute value text. */ void attribute(const orcus::pstring& name, const orcus::pstring& val) {} /** * Called upon parsing of an attribute of an element. Note that when * the attribute's transient flag is set, the attribute value is stored in * a temporary buffer due to presence of one or more encoded characters, * and must be processed within the scope of the callback. * * @param attr struct containing attribute information. */ void attribute(const orcus::sax::parser_attribute& attr) {} }; #endif liborcus-0.9.2/parser_handlers/Makefile.in0000644000175000017500000014072712540653650017252 0ustar renerene# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = EXTRA_PROGRAMS = orcus-handler-test-css$(EXEEXT) \ orcus-handler-test-csv$(EXEEXT) \ orcus-handler-test-sax$(EXEEXT) \ orcus-handler-test-sax-token$(EXEEXT) \ orcus-handler-test-sax-ns$(EXEEXT) TESTS = orcus-handler-test-css$(EXEEXT) \ orcus-handler-test-csv$(EXEEXT) \ orcus-handler-test-sax$(EXEEXT) \ orcus-handler-test-sax-token$(EXEEXT) \ orcus-handler-test-sax-ns$(EXEEXT) subdir = parser_handlers DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp $(top_srcdir)/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_orcus_handler_test_css_OBJECTS = \ orcus_handler_test_css-css_test.$(OBJEXT) orcus_handler_test_css_OBJECTS = $(am_orcus_handler_test_css_OBJECTS) orcus_handler_test_css_DEPENDENCIES = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_orcus_handler_test_csv_OBJECTS = \ orcus_handler_test_csv-csv_test.$(OBJEXT) orcus_handler_test_csv_OBJECTS = $(am_orcus_handler_test_csv_OBJECTS) orcus_handler_test_csv_DEPENDENCIES = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la am_orcus_handler_test_sax_OBJECTS = sax_test.$(OBJEXT) orcus_handler_test_sax_OBJECTS = $(am_orcus_handler_test_sax_OBJECTS) orcus_handler_test_sax_DEPENDENCIES = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la am_orcus_handler_test_sax_ns_OBJECTS = sax_ns_test.$(OBJEXT) orcus_handler_test_sax_ns_OBJECTS = \ $(am_orcus_handler_test_sax_ns_OBJECTS) orcus_handler_test_sax_ns_DEPENDENCIES = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la am_orcus_handler_test_sax_token_OBJECTS = sax_token_test.$(OBJEXT) orcus_handler_test_sax_token_OBJECTS = \ $(am_orcus_handler_test_sax_token_OBJECTS) orcus_handler_test_sax_token_DEPENDENCIES = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(orcus_handler_test_css_SOURCES) \ $(orcus_handler_test_csv_SOURCES) \ $(orcus_handler_test_sax_SOURCES) \ $(orcus_handler_test_sax_ns_SOURCES) \ $(orcus_handler_test_sax_token_SOURCES) DIST_SOURCES = $(orcus_handler_test_css_SOURCES) \ $(orcus_handler_test_csv_SOURCES) \ $(orcus_handler_test_sax_SOURCES) \ $(orcus_handler_test_sax_ns_SOURCES) \ $(orcus_handler_test_sax_token_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ check recheck distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@ BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@ BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@ BOOST_IOSTREAMS_LDFLAGS = @BOOST_IOSTREAMS_LDFLAGS@ BOOST_IOSTREAMS_LDPATH = @BOOST_IOSTREAMS_LDPATH@ BOOST_IOSTREAMS_LIBS = @BOOST_IOSTREAMS_LIBS@ BOOST_LDPATH = @BOOST_LDPATH@ BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@ BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@ BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ BOOST_ROOT = @BOOST_ROOT@ BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@ BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@ BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ IXION_REQUIRED_API_VERSION = @IXION_REQUIRED_API_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBIXION_CFLAGS = @LIBIXION_CFLAGS@ LIBIXION_LIBS = @LIBIXION_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MDDS_CFLAGS = @MDDS_CFLAGS@ MDDS_LIBS = @MDDS_LIBS@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ ORCUS_API_VERSION = @ORCUS_API_VERSION@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = . AM_CPPFLAGS = -I$(top_srcdir)/include # orcus-handler-test-css orcus_handler_test_css_SOURCES = \ css.hpp \ css_test.cpp orcus_handler_test_css_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_handler_test_css_CPPFLAGS = $(AM_CPPFLAGS) # orcus-handler-test-csv orcus_handler_test_csv_SOURCES = \ csv.hpp \ csv_test.cpp orcus_handler_test_csv_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_handler_test_csv_CPPFLAGS = $(AM_CPPFLAGS) # orcus-handler-test-sax orcus_handler_test_sax_SOURCES = \ sax.hpp \ sax_test.cpp orcus_handler_test_sax_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la # orcus-handler-test-sax-token orcus_handler_test_sax_token_SOURCES = \ sax_token.hpp \ sax_token_test.cpp orcus_handler_test_sax_token_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la # orcus-handler-test-sax-ns orcus_handler_test_sax_ns_SOURCES = \ sax_ns.hpp \ sax_ns_test.cpp orcus_handler_test_sax_ns_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la all: all-recursive .SUFFIXES: .SUFFIXES: .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign parser_handlers/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign parser_handlers/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list orcus-handler-test-css$(EXEEXT): $(orcus_handler_test_css_OBJECTS) $(orcus_handler_test_css_DEPENDENCIES) $(EXTRA_orcus_handler_test_css_DEPENDENCIES) @rm -f orcus-handler-test-css$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_handler_test_css_OBJECTS) $(orcus_handler_test_css_LDADD) $(LIBS) orcus-handler-test-csv$(EXEEXT): $(orcus_handler_test_csv_OBJECTS) $(orcus_handler_test_csv_DEPENDENCIES) $(EXTRA_orcus_handler_test_csv_DEPENDENCIES) @rm -f orcus-handler-test-csv$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_handler_test_csv_OBJECTS) $(orcus_handler_test_csv_LDADD) $(LIBS) orcus-handler-test-sax$(EXEEXT): $(orcus_handler_test_sax_OBJECTS) $(orcus_handler_test_sax_DEPENDENCIES) $(EXTRA_orcus_handler_test_sax_DEPENDENCIES) @rm -f orcus-handler-test-sax$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_handler_test_sax_OBJECTS) $(orcus_handler_test_sax_LDADD) $(LIBS) orcus-handler-test-sax-ns$(EXEEXT): $(orcus_handler_test_sax_ns_OBJECTS) $(orcus_handler_test_sax_ns_DEPENDENCIES) $(EXTRA_orcus_handler_test_sax_ns_DEPENDENCIES) @rm -f orcus-handler-test-sax-ns$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_handler_test_sax_ns_OBJECTS) $(orcus_handler_test_sax_ns_LDADD) $(LIBS) orcus-handler-test-sax-token$(EXEEXT): $(orcus_handler_test_sax_token_OBJECTS) $(orcus_handler_test_sax_token_DEPENDENCIES) $(EXTRA_orcus_handler_test_sax_token_DEPENDENCIES) @rm -f orcus-handler-test-sax-token$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(orcus_handler_test_sax_token_OBJECTS) $(orcus_handler_test_sax_token_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_handler_test_css-css_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orcus_handler_test_csv-csv_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sax_ns_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sax_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sax_token_test.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< orcus_handler_test_css-css_test.o: css_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_css_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_handler_test_css-css_test.o -MD -MP -MF $(DEPDIR)/orcus_handler_test_css-css_test.Tpo -c -o orcus_handler_test_css-css_test.o `test -f 'css_test.cpp' || echo '$(srcdir)/'`css_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_handler_test_css-css_test.Tpo $(DEPDIR)/orcus_handler_test_css-css_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='css_test.cpp' object='orcus_handler_test_css-css_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_css_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_handler_test_css-css_test.o `test -f 'css_test.cpp' || echo '$(srcdir)/'`css_test.cpp orcus_handler_test_css-css_test.obj: css_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_css_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_handler_test_css-css_test.obj -MD -MP -MF $(DEPDIR)/orcus_handler_test_css-css_test.Tpo -c -o orcus_handler_test_css-css_test.obj `if test -f 'css_test.cpp'; then $(CYGPATH_W) 'css_test.cpp'; else $(CYGPATH_W) '$(srcdir)/css_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_handler_test_css-css_test.Tpo $(DEPDIR)/orcus_handler_test_css-css_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='css_test.cpp' object='orcus_handler_test_css-css_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_css_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_handler_test_css-css_test.obj `if test -f 'css_test.cpp'; then $(CYGPATH_W) 'css_test.cpp'; else $(CYGPATH_W) '$(srcdir)/css_test.cpp'; fi` orcus_handler_test_csv-csv_test.o: csv_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_handler_test_csv-csv_test.o -MD -MP -MF $(DEPDIR)/orcus_handler_test_csv-csv_test.Tpo -c -o orcus_handler_test_csv-csv_test.o `test -f 'csv_test.cpp' || echo '$(srcdir)/'`csv_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_handler_test_csv-csv_test.Tpo $(DEPDIR)/orcus_handler_test_csv-csv_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='csv_test.cpp' object='orcus_handler_test_csv-csv_test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_handler_test_csv-csv_test.o `test -f 'csv_test.cpp' || echo '$(srcdir)/'`csv_test.cpp orcus_handler_test_csv-csv_test.obj: csv_test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orcus_handler_test_csv-csv_test.obj -MD -MP -MF $(DEPDIR)/orcus_handler_test_csv-csv_test.Tpo -c -o orcus_handler_test_csv-csv_test.obj `if test -f 'csv_test.cpp'; then $(CYGPATH_W) 'csv_test.cpp'; else $(CYGPATH_W) '$(srcdir)/csv_test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orcus_handler_test_csv-csv_test.Tpo $(DEPDIR)/orcus_handler_test_csv-csv_test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='csv_test.cpp' object='orcus_handler_test_csv-csv_test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orcus_handler_test_csv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orcus_handler_test_csv-csv_test.obj `if test -f 'csv_test.cpp'; then $(CYGPATH_W) 'csv_test.cpp'; else $(CYGPATH_W) '$(srcdir)/csv_test.cpp'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ else \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? orcus-handler-test-css.log: orcus-handler-test-css$(EXEEXT) @p='orcus-handler-test-css$(EXEEXT)'; \ b='orcus-handler-test-css'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-handler-test-csv.log: orcus-handler-test-csv$(EXEEXT) @p='orcus-handler-test-csv$(EXEEXT)'; \ b='orcus-handler-test-csv'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-handler-test-sax.log: orcus-handler-test-sax$(EXEEXT) @p='orcus-handler-test-sax$(EXEEXT)'; \ b='orcus-handler-test-sax'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-handler-test-sax-token.log: orcus-handler-test-sax-token$(EXEEXT) @p='orcus-handler-test-sax-token$(EXEEXT)'; \ b='orcus-handler-test-sax-token'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) orcus-handler-test-sax-ns.log: orcus-handler-test-sax-ns$(EXEEXT) @p='orcus-handler-test-sax-ns$(EXEEXT)'; \ b='orcus-handler-test-sax-ns'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-TESTS check-am clean clean-binPROGRAMS clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-local distclean-tags distdir dvi dvi-am html html-am \ info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS distclean-local: rm -rf $(TESTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: liborcus-0.9.2/parser_handlers/Makefile.am0000644000175000017500000000262412535701142017224 0ustar renereneSUBDIRS = . AM_CPPFLAGS = -I$(top_srcdir)/include bin_PROGRAMS = EXTRA_PROGRAMS = \ orcus-handler-test-css \ orcus-handler-test-csv \ orcus-handler-test-sax \ orcus-handler-test-sax-token \ orcus-handler-test-sax-ns # orcus-handler-test-css orcus_handler_test_css_SOURCES = \ css.hpp \ css_test.cpp orcus_handler_test_css_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_handler_test_css_CPPFLAGS = $(AM_CPPFLAGS) # orcus-handler-test-csv orcus_handler_test_csv_SOURCES = \ csv.hpp \ csv_test.cpp orcus_handler_test_csv_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la orcus_handler_test_csv_CPPFLAGS = $(AM_CPPFLAGS) # orcus-handler-test-sax orcus_handler_test_sax_SOURCES = \ sax.hpp \ sax_test.cpp orcus_handler_test_sax_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la # orcus-handler-test-sax-token orcus_handler_test_sax_token_SOURCES = \ sax_token.hpp \ sax_token_test.cpp orcus_handler_test_sax_token_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la # orcus-handler-test-sax-ns orcus_handler_test_sax_ns_SOURCES = \ sax_ns.hpp \ sax_ns_test.cpp orcus_handler_test_sax_ns_LDADD = \ ../src/parser/liborcus-parser-@ORCUS_API_VERSION@.la TESTS = \ orcus-handler-test-css \ orcus-handler-test-csv \ orcus-handler-test-sax \ orcus-handler-test-sax-token \ orcus-handler-test-sax-ns distclean-local: rm -rf $(TESTS) liborcus-0.9.2/parser_handlers/csv.hpp0000644000175000017500000000325112535701142016471 0ustar renerene/************************************************************************* * * Copyright (c) 2015 Kohei Yoshida * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * ************************************************************************/ #ifndef INCLUDED_ORCUS_PARSER_HANDLERS_CSV_HPP #define INCLUDED_ORCUS_PARSER_HANDLERS_CSV_HPP #include /** * Skeleton handler for csv_parser. Feel free to copy this as a starting * point for your own CSV handler. */ class csv_parser_handler { public: void begin_parse() {} void end_parse() {} void begin_row() {} void end_row() {} void cell(const char* /*p*/, size_t /*n*/) {} }; #endif liborcus-0.9.2/parser_handlers/sax_token_test.cpp0000644000175000017500000000154612535701142020730 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include "sax_token.hpp" #include int main() { const char* test_code = ""; size_t len = strlen(test_code); sax_token_handler hdl; orcus::tokens token_map(NULL, 0); orcus::xmlns_repository repo; orcus::xmlns_context cxt = repo.create_context(); orcus::sax_token_parser parser(test_code, len, token_map, cxt, hdl); parser.parse(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/parser_handlers/sax_test.cpp0000644000175000017500000000122612535701142017523 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "sax.hpp" #include int main() { const char* test_code = ""; size_t len = strlen(test_code); sax_parser_handler hdl; orcus::sax_parser parser(test_code, len, hdl); parser.parse(); return 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/parser_handlers/csv_test.cpp0000644000175000017500000000127212535701142017524 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "csv.hpp" #include #include int main() { const char* test_code = "1,2,3,4,5\n6,7,8,9,10\n"; size_t n = strlen(test_code); csv_parser_handler hdl; orcus::csv::parser_config config; orcus::csv_parser parser(test_code, n, hdl, config); parser.parse(); return 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/parser_handlers/sax_ns_test.cpp0000644000175000017500000000140312535701142020220 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include "sax_ns.hpp" int main() { const char* test_code = ""; size_t len = strlen(test_code); sax_ns_handler hdl; orcus::xmlns_repository repo; orcus::xmlns_context cxt = repo.create_context(); orcus::sax_ns_parser parser(test_code, len, cxt, hdl); parser.parse(); return 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/parser_handlers/css.hpp0000644000175000017500000000532112535701142016466 0ustar renerene/************************************************************************* * * Copyright (c) 2015 Kohei Yoshida * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * ************************************************************************/ #ifndef INCLUDED_ORCUS_PARSER_HANDLERS_CSS_HPP #define INCLUDED_ORCUS_PARSER_HANDLERS_CSS_HPP #include /** * Skeleton handler for css_parser. Feel free to copy this as a starting * point for your own CSS handler. */ class css_parser_handler { public: void at_rule_name(const char* /*p*/, size_t /*n*/) {} void simple_selector_type(const char* /*p*/, size_t /*n*/) {} void simple_selector_class(const char* /*p*/, size_t /*n*/) {} void simple_selector_pseudo_element(orcus::css::pseudo_element_t /*pe*/) {} void simple_selector_pseudo_class(orcus::css::pseudo_class_t /*pc*/) {} void simple_selector_id(const char* /*p*/, size_t /*n*/) {} void end_simple_selector() {} void end_selector() {} void combinator(orcus::css::combinator_t /*combinator*/) {} void property_name(const char* /*p*/, size_t /*n*/) {} void value(const char* /*p*/, size_t /*n*/) {} void rgb(uint8_t /*red*/ , uint8_t /*green*/ , uint8_t /*blue*/ ) {} void rgba(uint8_t /*red*/ , uint8_t /*green*/ , uint8_t /*blue*/ , double /*alpha*/ ) {} void hsl(uint8_t /*hue*/ , uint8_t /*sat*/ , uint8_t /*light*/ ) {} void hsla(uint8_t /*hue*/ , uint8_t /*sat*/ , uint8_t /*light*/ , double /*alpha*/ ) {} void url(const char* /*p*/, size_t /*n*/) {} void begin_parse() {} void end_parse() {} void begin_block() {} void end_block() {} void begin_property() {} void end_property() {} }; #endif liborcus-0.9.2/parser_handlers/css_test.cpp0000644000175000017500000000122212535701142017514 0ustar renerene/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "css.hpp" #include #include int main() { const char* test_code = "p { background-color: white; }"; size_t n = strlen(test_code); css_parser_handler hdl; orcus::css_parser parser(test_code, n, hdl); parser.parse(); return 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ liborcus-0.9.2/parser_handlers/sax_token.hpp0000644000175000017500000000572612535701142017702 0ustar renerene/************************************************************************* * * Copyright (c) 2015 Kohei Yoshida * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * ************************************************************************/ #ifndef INCLUDED_ORCUS_PARSER_HANDLERS_SAX_TOKEN_HPP #define INCLUDED_ORCUS_PARSER_HANDLERS_SAX_TOKEN_HPP namespace orcus { struct sax_token_parser_element; } /** * Skeleton handler for sax_token_parser. Feel free to copy this as a * starting point for your own handler. */ class sax_token_handler { public: /** * Called at the start of each element. * * @param elem struct containing the element's information as well as all * the attributes that belong to the element. */ void start_element(const orcus::sax_token_parser_element& elem) {} /** * Called at the end of each element. * * @param elem struct containing the element's information as well as all * the attributes that belong to the element. */ void end_element(const orcus::sax_token_parser_element& elem) {} /** * Called when a segment of a text content is parsed. Each text content * is a direct child of an element, which may have multiple child contents * when the element also has a child element that are direct sibling to * the text contents or the text contents are splitted by a comment. * * @param val value of the text content. * @param transient when true, the text content has been converted and is * stored in a temporary buffer due to presence of one or * more encoded characters, in which case the passed * text value needs to be either immediately converted to * a non-text value or be interned within the scope of * the callback. */ void characters(const orcus::pstring& val, bool transient) {} }; #endif liborcus-0.9.2/NEWS0000644000175000017500000000004212535701141012502 0ustar renereneorcus 0.1.0 * initial release. liborcus-0.9.2/AUTHORS0000644000175000017500000000054712535701141013065 0ustar renereneKohei Yoshida (maintainer) Markus Mohrhard David Tardon Tomas Chvatal Fridrich Štrba Caolán McNamara Stephan Bergmann Dmitry Roshchin Eike Rathke liborcus-0.9.2/config.h.in0000644000175000017500000000570412540654301014041 0ustar renerene/* config.h.in. Generated from configure.ac by autoheader. */ /* Disable boost's evil autolink. */ #undef BOOST_ALL_NO_LIB /* Defined if the requested minimum BOOST version is satisfied */ #undef HAVE_BOOST /* Define to 1 if you have */ #undef HAVE_BOOST_FILESYSTEM_PATH_HPP /* Define to 1 if you have */ #undef HAVE_BOOST_IOSTREAMS_DEVICE_FILE_DESCRIPTOR_HPP /* Define to 1 if you have */ #undef HAVE_BOOST_PROGRAM_OPTIONS_HPP /* Define to 1 if you have */ #undef HAVE_BOOST_SYSTEM_ERROR_CODE_HPP /* define if the compiler supports basic C++11 syntax */ #undef HAVE_CXX11 /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Disable debugging information */ #undef NDEBUG /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Enable reentrant. */ #undef _REENTRANT /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `int' if does not define. */ #undef mode_t /* Define to `unsigned int' if does not define. */ #undef size_t liborcus-0.9.2/doc/0000755000175000017500000000000012541226365012563 5ustar renereneliborcus-0.9.2/doc/class_diagram.odg0000644000175000017500000003240712535701142016047 0ustar renerenePK2=.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK2=Configurations2/statusbar/PK2='Configurations2/accelerator/current.xmlPKPK2=Configurations2/floater/PK2=Configurations2/popupmenu/PK2=Configurations2/progressbar/PK2=Configurations2/menubar/PK2=Configurations2/toolbar/PK2=Configurations2/images/Bitmaps/PK2=ϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PK2= content.xmlZn6+ ]A=lH2@Qtf DKl%Q D~I/GcMl璗^ʹp(َpAYuk!dzfJXJӏvl}m64!%ےTNX%s֕X5֖W+ Ddb5:^鹚!ds 6%9ȩ {bϬu~M5>0`ϼ8ʥW}0h\w8q&.)LAn-SSXӥj[>>,YTkN@`J2mN&kМO֙J%HK%HM|$+^NKaOJ8'/AUelvy<=p Op%\@d$o"E1ݦtt_xӷ6(i19 -d)(J G.'5f!=G,z;hE( ;JZ'\>NohP()c[ ȡ&B.a}z60m8%fnlc'B%>>[ۙ+DIWB&v,ptm:.tu&!ܾo%S'>Ms,迳滢Jkd  ?BSs5Έ厛f4i5ט;~BXݠ-ޮn%%bf׷ v8T|l\ }+$g2OXIhҢv rB/5V7ԏg+a}\͆i;u>MT\},P@-ZJEAT2yllu|Zg1gel?'VtlA.) +L) + _[,WKmlD& JuںZ"]z:*pLZ_bKA <Ұ[4z5zs߉P𲵎aݪ;BBWs\AYۘ++G=zw=i7kvlkD*K~Z+|)d~z KM/K p02$80;1BSE c4!8EN\H?#r©~ڏ_w@`|d2@>Z/0J!@`ON:}!QffQ/rBOw/'ꁴ k?ڏAf ;keX/3"X;a2 #<F P_pQ@EK'S!'L~Qb>kB)$G^L[ċ .)Iey8|IሊA pq#W)8@׊X 7%t\a$0 ޕ,%W'q^AI M^nrGE|smvZl:=ܑPK׭ht#PK2= styles.xmlr8v,mmjHgkvzkEB)RERV{frrT2~$J$EْM?wm$|>eݳ8gB7;}ӷM4."wda'C ɵ̼:r?%KS:Z0/tJ_[qŅZ:eӶl3kg!bgӶ0%QŸ@G-WNsnz4]]ͦQ|70@v :X͒7쒥NqYJz9cqk8ת%$B~BjRkݻj.u?b{eNiG~|WlTnZ)QUZ1ϊQ|)qQux2ə=K?h5t'[u՘V f(N t222xn.z{^(UAΫl^i;A NPOYQpdu;a dk咾k!.*B58D܊y>7|'9O'47diq{Փ9A/KhyvhA9qF u !ʲ݋*Ô> J'wϯ>b?hY+QsڬB\8Pug4+ٚY.}J"7,w%Q7 icjKg+ "f4Vw5M~YOۘ3»hZ-Wbiɂ?r<ɡK;)IF RKD`UJi֡nz tO,V]GFk>9L4C 6d:ciRnepۻiڦplQ9 [5?F>+_裒ic&ǚH~2DYM\?!SnjXDM*825yM!bښ"WM y(똢2$`7hM62Wt)յ4Ԝlxe_=h<'H:}Ӯ&W T+%g%ӘܛTE7=mhkCn "{-gG6 F'ExT+7luMZ0%:!]DSgO/t iWFUZ[%i}b$!ֶn~D P UҸfjD1sӼ ɘ$|Տz;N0ac:xX_ObR1e?*8ѹB .VedLRUGi&N|kMo)}E_?NEszǽJ5Fb22c@3yVMKU0uRY颤[yn#Fn7z4FuuTnOs j]]U}]^ yl ")VPLh6o({;|b|4]d'4֗iyICTq^[NBZ쒮*! *Ĺ^{ڮoF7fi&M摬QntVQO%+h?EK'% ~BFSr%O˂ >\J_3oJEZ@5Mi&7ZiLus-iM|j;ACr!Irfy~b. +xVOX.+Y|U5J@C5Tݳ@ uT<]<1Gs~ע)vAݐ;L,*ܱp)ǰHL3M(Ue$gl9 %r~Όx>S/B,dWi -4yBV*-4>Wi畎ӓYhJ -:i8F5P+ZkPdjtoZqB![%d"*"b % d` jHZR0Z KIq[ kZq?``ȴ(G꒵R&CŒT{Y7^YJkME^HSCge^(T׫T#"ڜ-W Gv?1 |齎W*́Τ&t4ʿUG6[?ѱKujf?ҕ#)Ɨ{?gEũ#4Q33.!p [j9il({i_ni?UQdNQ08}3jz&e?{|ʶmUc7R;v 8 o֬=nXntɂ9r5V9-sF/2T|!=xӝiXHOݧZtɜd?c"QQW+-Ԣnŭ?LLLLLuB S S S S S S/0_DD pш]Fde}1魑tB??????g~W"bTMϝ{2 ObmDM/pB/qj#Ez2wr vQ0q?pz΢+8YۂMe,$\M R<^YК߭:[62IK=5%s5!R]=Q2eK;p=n{pN?U4`k[^䮗MPK&[PK2=Zmeta.xml Kohei Yoshida2010-12-04T21:43:242010-12-05T01:23:40Kohei YoshidaPT03H40M18S6OpenOffice.org/3.2$Linux OpenOffice.org_project/320m19$Build-9505PK2=Thumbnails/thumbnail.png sb``p b``2r0Im M.!s޶ghH4xEc/u+Wۇ1x ,$֥"~xt[s>?{,wս=_0\bq!̐ɤ˰q¶ׯ_WWW?Xa43'/ݻwrrrqqqfNB')ϝs[| O)Qw56?jk۹s^zڵ/nnnY")BjϏR}?Iۼk^qUc{lm.>UDDPfCև߶p޳4cCѼjN;0巼`wA}5|,qy>;?sykNy:3<=;ؙ|>"?^gY+mܷޝ6\3fff;UbS[]\Wb2r{}j X6_z`!EHtddƧx).Q-Fi&伽j랽MOW?uN MPKB^PK2= settings.xmlZ[s6~xN`.LŽ kɶb+ȒG__@ʂeSB;HW_^}|G\kS];Ħ"6K/߮a͡vC"J !2R#^#& .ήdWZjrE)enRVԀA.>pw.MrEY]O)}Z-X+ nyyy;˥lRf g+@,{Zeɾ٬1nPgVBGN6JkMR^޼GKZĕLX!"B*U|S]$э9KB7gw^ƹn_APBāQfk1èՕ_TY!7؃(0yی}z &T?."X s]D`*(ro=C[,e@)*F Xw?-ܱ"@ūl]9 LEt1U.t=6\Elf?`%#>>!`+^>:,yG Hӥ:?c>5 VاM顈}b~q㫻 ңLf Ѡ?cWQStx{ 61*nM)9 (ynwic!w}njo޳Sq|qt_|*"h!7)`J_1>eeχޖqg9ӥXY?!9Z8KfQq=q:hnzYR$Ȝ0wH{ie$OPߴZ,?ӽ2Rщ騛YP 熠71S+c$kR_uVU_p")?4s̚H[{9 XHڱHN' yJ2fnH/ 2br $J;<.1,%Kdfny׊Hd+G!ǁq*9zf0Ak *D~P!N$+-*@m@/[K_}PK=sl.PK2=.++mimetypePK2=QConfigurations2/statusbar/PK2='Configurations2/accelerator/current.xmlPK2=Configurations2/floater/PK2=Configurations2/popupmenu/PK2=NConfigurations2/progressbar/PK2=Configurations2/menubar/PK2=Configurations2/toolbar/PK2=Configurations2/images/Bitmaps/PK2=ϣ[[-1Pictures/10000000000000200000002000309F1C.pngPK2=׭ht# content.xmlPK2=&[ styles.xmlPK2=Z!meta.xmlPK2=B^l&Thumbnails/thumbnail.pngPK2=# )settings.xmlPK2==sl..META-INF/manifest.xmlPKI0liborcus-0.9.2/doc/zlib-in-memory-gzip.txt0000644000175000017500000000057212535701142017143 0ustar renereneSome notes on future implementation of in-memory compression and decompression of gzip format. http://www.experts-exchange.com/Programming/System/Windows__Programming/A_3189-In-Memory-Compression-and-Decompression-Using-ZLIB.html http://www.gzip.org/zlib/zlib_faq.html#faq20 http://stackoverflow.com/questions/16682719/uncompress-data-in-memory-using-boost-gzip-decompressor liborcus-0.9.2/doc/column-width-and-row-height.txt0000644000175000017500000000503012535701142020541 0ustar renerene== XLSX == Spec name: Office Open XML Part 4 - Markup Language Reference.pdf === Column Width === Spec location: 3.3.1.12 col (Column Width & Formatting) (page 1946) Column width measured as the number of characters of the maximum digit width of the numbers 0, 1, 2, ..., 9 as rendered in the normal style's font. There are 4 pixels of margin padding (two on each side), plus 1 pixel padding for the gridlines. width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}*256)/256 Using the Calibri font as an example, the maximum digit width of 11 point font size is 7 pixels (at 96 dpi). In fact, each digit is the same width for this font. Therefore if the cell width is 8 characters wide, the value of this attribute shall be Truncate([8*7+5]/7*256)/256 = 8.7109375. === Row Height === 11.1 Spec location: 3.3.1.71 row (Row) (page 2012) Row height measured in point size. There is no margin padding on row height. == ODS == === Column Width & Row Height === Name Value Spec doesn't say much, but it appears that the order of these elements is significant & determines which column gets which automatic style, from left to right. liborcus-0.9.2/VERSION.in0000644000175000017500000000001212535701142013456 0ustar renerene@VERSION@ liborcus-0.9.2/liborcus.pc.in0000644000175000017500000000064012535701142014563 0ustar renereneprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: liborcus-@ORCUS_API_VERSION@ Description: Standalone file import filter library for spreadsheet documents. Currently under development are ODS, XLSX and CSV import filters. Version: @VERSION@ Libs: -L${libdir} -lorcus-@ORCUS_API_VERSION@ -lorcus-parser-@ORCUS_API_VERSION@ Cflags: -I${includedir}/liborcus-@ORCUS_API_VERSION@ liborcus-0.9.2/m4/0000755000175000017500000000000012540654316012336 5ustar renereneliborcus-0.9.2/m4/boost.m40000644000175000017500000014625712535701142013737 0ustar renerene# boost.m4: Locate Boost headers and libraries for autoconf-based projects. # Copyright (C) 2007-2011, 2014 Benoit Sigoure # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Additional permission under section 7 of the GNU General Public # License, version 3 ("GPLv3"): # # If you convey this file as part of a work that contains a # configuration script generated by Autoconf, you may do so under # terms of your choice. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . m4_define([_BOOST_SERIAL], [m4_translit([ # serial 24 ], [# ], [])]) # Original sources can be found at http://github.com/tsuna/boost.m4 # You can fetch the latest version of the script by doing: # wget http://github.com/tsuna/boost.m4/raw/master/build-aux/boost.m4 # ------ # # README # # ------ # # This file provides several macros to use the various Boost libraries. # The first macro is BOOST_REQUIRE. It will simply check if it's possible to # find the Boost headers of a given (optional) minimum version and it will # define BOOST_CPPFLAGS accordingly. It will add an option --with-boost to # your configure so that users can specify non standard locations. # If the user's environment contains BOOST_ROOT and --with-boost was not # specified, --with-boost=$BOOST_ROOT is implicitly used. # For more README and documentation, go to http://github.com/tsuna/boost.m4 # Note: THESE MACROS ASSUME THAT YOU USE LIBTOOL. If you don't, don't worry, # simply read the README, it will show you what to do step by step. m4_pattern_forbid([^_?(BOOST|Boost)_]) # _BOOST_SED_CPP(SED-PROGRAM, PROGRAM, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # -------------------------------------------------------- # Same as AC_EGREP_CPP, but leave the result in conftest.i. # # SED-PROGRAM is *not* overquoted, as in AC_EGREP_CPP. It is expanded # in double-quotes, so escape your double quotes. # # It could be useful to turn this into a macro which extracts the # value of any macro. m4_define([_BOOST_SED_CPP], [AC_LANG_PUSH([C++])dnl AC_LANG_PREPROC_REQUIRE()dnl AC_REQUIRE([AC_PROG_SED])dnl AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) AS_IF([dnl eval is necessary to expand ac_cpp. dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell. dnl Beware of Windows end-of-lines, for instance if we are running dnl some Windows programs under Wine. In that case, boost/version.hpp dnl is certainly using "\r\n", but the regular Unix shell will only dnl strip `\n' with backquotes, not the `\r'. This results in dnl boost_cv_lib_version='1_37\r' for instance, which breaks dnl everything else. dnl Cannot use 'dnl' after [$4] because a trailing dnl may break AC_CACHE_CHECK dnl dnl Beware that GCC 5, when expanding macros, may embed # line directives dnl a within single line: dnl dnl # 1 "conftest.cc" dnl # 1 "" dnl # 1 "" dnl # 1 "conftest.cc" dnl # 1 "/opt/local/include/boost/version.hpp" 1 3 dnl # 2 "conftest.cc" 2 dnl boost-lib-version = dnl # 2 "conftest.cc" 3 dnl "1_56" dnl dnl So get rid of the # lines, and glue the remaining ones together. (eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | grep -v '#' | tr -d '\r' | tr -s '\n' ' ' | $SED -n -e "$1" >conftest.i 2>&1], [$3], [$4]) rm -rf conftest* AC_LANG_POP([C++])dnl ])# _BOOST_SED_CPP # BOOST_REQUIRE([VERSION], [ACTION-IF-NOT-FOUND]) # ----------------------------------------------- # Look for Boost. If version is given, it must either be a literal of the form # "X.Y.Z" where X, Y and Z are integers (the ".Z" part being optional) or a # variable "$var". # Defines the value BOOST_CPPFLAGS. This macro only checks for headers with # the required version, it does not check for any of the Boost libraries. # On # success, defines HAVE_BOOST. On failure, calls the optional # ACTION-IF-NOT-FOUND action if one was supplied. # Otherwise aborts with an error message. AC_DEFUN([BOOST_REQUIRE], [AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_PROG_GREP])dnl echo "$as_me: this is boost.m4[]_BOOST_SERIAL" >&AS_MESSAGE_LOG_FD boost_save_IFS=$IFS boost_version_req=$1 IFS=. set x $boost_version_req 0 0 0 IFS=$boost_save_IFS shift boost_version_req=`expr "$[1]" '*' 100000 + "$[2]" '*' 100 + "$[3]"` boost_version_req_string=$[1].$[2].$[3] AC_ARG_WITH([boost], [AS_HELP_STRING([--with-boost=DIR], [prefix of Boost $1 @<:@guess@:>@])])dnl AC_ARG_VAR([BOOST_ROOT],[Location of Boost installation])dnl # If BOOST_ROOT is set and the user has not provided a value to # --with-boost, then treat BOOST_ROOT as if it the user supplied it. if test x"$BOOST_ROOT" != x; then if test x"$with_boost" = x; then AC_MSG_NOTICE([Detected BOOST_ROOT; continuing with --with-boost=$BOOST_ROOT]) with_boost=$BOOST_ROOT else AC_MSG_NOTICE([Detected BOOST_ROOT=$BOOST_ROOT, but overridden by --with-boost=$with_boost]) fi fi AC_SUBST([DISTCHECK_CONFIGURE_FLAGS], ["$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"])dnl boost_save_CPPFLAGS=$CPPFLAGS AC_CACHE_CHECK([for Boost headers version >= $boost_version_req_string], [boost_cv_inc_path], [boost_cv_inc_path=no AC_LANG_PUSH([C++])dnl m4_pattern_allow([^BOOST_VERSION$])dnl AC_LANG_CONFTEST([AC_LANG_PROGRAM([[#include #if !defined BOOST_VERSION # error BOOST_VERSION is not defined #elif BOOST_VERSION < $boost_version_req # error Boost headers version < $boost_version_req #endif ]])]) # If the user provided a value to --with-boost, use it and only it. case $with_boost in #( ''|yes) set x '' /opt/local/include /usr/local/include /opt/include \ /usr/include C:/Boost/include;; #( *) set x "$with_boost/include" "$with_boost";; esac shift for boost_dir do # Without --layout=system, Boost (or at least some versions) installs # itself in /include/boost-. This inner loop helps to # find headers in such directories. # # Any ${boost_dir}/boost-x_xx directories are searched in reverse version # order followed by ${boost_dir}. The final '.' is a sentinel for # searching $boost_dir" itself. Entries are whitespace separated. # # I didn't indent this loop on purpose (to avoid over-indented code) boost_layout_system_search_list=`cd "$boost_dir" 2>/dev/null \ && ls -1 | "${GREP}" '^boost-' | sort -rn -t- -k2 \ && echo .` for boost_inc in $boost_layout_system_search_list do if test x"$boost_inc" != x.; then boost_inc="$boost_dir/$boost_inc" else boost_inc="$boost_dir" # Uses sentinel in boost_layout_system_search_list fi if test x"$boost_inc" != x; then # We are going to check whether the version of Boost installed # in $boost_inc is usable by running a compilation that # #includes it. But if we pass a -I/some/path in which Boost # is not installed, the compiler will just skip this -I and # use other locations (either from CPPFLAGS, or from its list # of system include directories). As a result we would use # header installed on the machine instead of the /some/path # specified by the user. So in that precise case (trying # $boost_inc), make sure the version.hpp exists. # # Use test -e as there can be symlinks. test -e "$boost_inc/boost/version.hpp" || continue CPPFLAGS="$CPPFLAGS -I$boost_inc" fi AC_COMPILE_IFELSE([], [boost_cv_inc_path=yes], [boost_cv_version=no]) if test x"$boost_cv_inc_path" = xyes; then if test x"$boost_inc" != x; then boost_cv_inc_path=$boost_inc fi break 2 fi done done AC_LANG_POP([C++])dnl ]) case $boost_cv_inc_path in #( no) boost_errmsg="cannot find Boost headers version >= $boost_version_req_string" m4_if([$2], [], [AC_MSG_ERROR([$boost_errmsg])], [AC_MSG_NOTICE([$boost_errmsg])]) $2 ;;#( yes) BOOST_CPPFLAGS= ;;#( *) AC_SUBST([BOOST_CPPFLAGS], ["-I$boost_cv_inc_path"])dnl ;; esac if test x"$boost_cv_inc_path" != xno; then AC_DEFINE([HAVE_BOOST], [1], [Defined if the requested minimum BOOST version is satisfied]) AC_CACHE_CHECK([for Boost's header version], [boost_cv_lib_version], [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl _BOOST_SED_CPP([[/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}]], [#include boost-lib-version = BOOST_LIB_VERSION], [boost_cv_lib_version=`cat conftest.i`])]) # e.g. "134" for 1_34_1 or "135" for 1_35 boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'` case $boost_major_version in #( '' | *[[!0-9]]*) AC_MSG_ERROR([invalid value: boost_major_version='$boost_major_version']) ;; esac fi CPPFLAGS=$boost_save_CPPFLAGS ])# BOOST_REQUIRE # BOOST_STATIC() # -------------- # Add the "--enable-static-boost" configure argument. If this argument is given # on the command line, static versions of the libraries will be looked up. AC_DEFUN([BOOST_STATIC], [AC_ARG_ENABLE([static-boost], [AS_HELP_STRING([--enable-static-boost], [Prefer the static boost libraries over the shared ones [no]])], [enable_static_boost=yes], [enable_static_boost=no])])# BOOST_STATIC # BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND]) # -------------------------------------------------------------------------- # Wrapper around AC_CHECK_HEADER for Boost headers. Useful to check for # some parts of the Boost library which are only made of headers and don't # require linking (such as Boost.Foreach). # # Default ACTION-IF-NOT-FOUND: Fail with a fatal error unless Boost couldn't be # found in the first place, in which case by default a notice is issued to the # user. Presumably if we haven't died already it's because it's OK to not have # Boost, which is why only a notice is issued instead of a hard error. # # Default ACTION-IF-FOUND: define the preprocessor symbol HAVE_ in # case of success # (where HEADER-NAME is written LIKE_THIS, e.g., # HAVE_BOOST_FOREACH_HPP). AC_DEFUN([BOOST_FIND_HEADER], [AC_REQUIRE([BOOST_REQUIRE])dnl if test x"$boost_cv_inc_path" = xno; then m4_default([$2], [AC_MSG_NOTICE([Boost not available, not searching for $1])]) else AC_LANG_PUSH([C++])dnl boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" AC_CHECK_HEADER([$1], [m4_default([$3], [AC_DEFINE(AS_TR_CPP([HAVE_$1]), [1], [Define to 1 if you have <$1>])])], [m4_default([$2], [AC_MSG_ERROR([cannot find $1])])]) CPPFLAGS=$boost_save_CPPFLAGS AC_LANG_POP([C++])dnl fi ])# BOOST_FIND_HEADER # BOOST_FIND_LIBS([COMPONENT-NAME], [CANDIDATE-LIB-NAMES], # [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], # [CXX-PROLOGUE]) # -------------------------------------------------------------- # Look for the Boost library COMPONENT-NAME (e.g., `thread', for # libboost_thread) under the possible CANDIDATE-LIB-NAMES (e.g., # "thread_win32 thread"). Check that HEADER-NAME works and check that # libboost_LIB-NAME can link with the code CXX-TEST. The optional # argument CXX-PROLOGUE can be used to include some C++ code before # the `main' function. # # Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above). # # Boost libraries typically come compiled with several flavors (with different # runtime options) so PREFERRED-RT-OPT is the preferred suffix. A suffix is one # or more of the following letters: sgdpn (in that order). s = static # runtime, d = debug build, g = debug/diagnostic runtime, p = STLPort build, # n = (unsure) STLPort build without iostreams from STLPort (it looks like `n' # must always be used along with `p'). Additionally, PREFERRED-RT-OPT can # start with `mt-' to indicate that there is a preference for multi-thread # builds. Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp # ... If you want to make sure you have a specific version of Boost # (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro. AC_DEFUN([BOOST_FIND_LIBS], [AC_REQUIRE([BOOST_REQUIRE])dnl AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl AC_REQUIRE([BOOST_STATIC])dnl AC_REQUIRE([_BOOST_GUESS_WHETHER_TO_USE_MT])dnl if test x"$boost_cv_inc_path" = xno; then AC_MSG_NOTICE([Boost not available, not searching for the Boost $1 library]) else dnl The else branch is huge and wasn't intended on purpose. AC_LANG_PUSH([C++])dnl AS_VAR_PUSHDEF([Boost_lib], [boost_cv_lib_$1])dnl AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl AS_VAR_PUSHDEF([Boost_lib_LDPATH], [boost_cv_lib_$1_LDPATH])dnl AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl BOOST_FIND_HEADER([$4]) boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], [_BOOST_FIND_LIBS($@)]) case $Boost_lib in #( (no) _AC_MSG_LOG_CONFTEST AC_MSG_ERROR([cannot find the flags to link with Boost $1]) ;; esac AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl CPPFLAGS=$boost_save_CPPFLAGS AS_VAR_POPDEF([Boost_lib])dnl AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl AS_VAR_POPDEF([Boost_lib_LDPATH])dnl AS_VAR_POPDEF([Boost_lib_LIBS])dnl AC_LANG_POP([C++])dnl fi ]) # BOOST_FIND_LIB([LIB-NAME], # [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], # [CXX-PROLOGUE]) # -------------------------------------------------------------- # Backward compatibility wrapper for BOOST_FIND_LIBS. AC_DEFUN([BOOST_FIND_LIB], [BOOST_FIND_LIBS([$1], $@)]) # _BOOST_FIND_LIBS([LIB-NAME], [CANDIDATE-LIB-NAMES], # [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], # [CXX-PROLOGUE]) # -------------------------------------------------------------- # Real implementation of BOOST_FIND_LIBS: rely on these local macros: # Boost_lib, Boost_lib_LDFLAGS, Boost_lib_LDPATH, Boost_lib_LIBS # # The algorithm is as follows: first look for a given library name # according to the user's PREFERRED-RT-OPT. For each library name, we # prefer to use the ones that carry the tag (toolset name). Each # library is searched through the various standard paths were Boost is # usually installed. If we can't find the standard variants, we try # to enforce -mt (for instance on MacOSX, libboost_thread.dylib # doesn't exist but there's -obviously- libboost_thread-mt.dylib). AC_DEFUN([_BOOST_FIND_LIBS], [Boost_lib=no case "$3" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$3" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=$3;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?]) boost_save_ac_objext=$ac_objext # Generate the test file. AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$4> $6], [$5])]) dnl Optimization hacks: compiling C++ is slow, especially with Boost. What dnl we're trying to do here is guess the right combination of link flags dnl (LIBS / LDFLAGS) to use a given library. This can take several dnl iterations before it succeeds and is thus *very* slow. So what we do dnl instead is that we compile the code first (and thus get an object file, dnl typically conftest.o). Then we try various combinations of link flags dnl until we succeed to link conftest.o in an executable. The problem is dnl that the various TRY_LINK / COMPILE_IFELSE macros of Autoconf always dnl remove all the temporary files including conftest.o. So the trick here dnl is to temporarily change the value of ac_objext so that conftest.o is dnl preserved accross tests. This is obviously fragile and I will burn in dnl hell for not respecting Autoconf's documented interfaces, but in the dnl mean time, it optimizes the macro by a factor of 5 to 30. dnl Another small optimization: the first argument of AC_COMPILE_IFELSE left dnl empty because the test file is generated only once above (before we dnl start the for loops). AC_COMPILE_IFELSE([], [ac_objext=do_not_rm_me_plz], [AC_MSG_ERROR([cannot compile a test that uses Boost $1])]) ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in $2; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$Boost_lib_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. Boost_lib_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$Boost_lib_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" dnl First argument of AC_LINK_IFELSE left empty because the test file is dnl generated only once above (before we start the for loops). _BOOST_AC_LINK_IFELSE([], [Boost_lib=yes], [Boost_lib=no]) ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$Boost_lib" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 AC_CACHE_VAL([boost_cv_rpath_link_ldflag], [case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $Boost_lib_LIBS" _BOOST_AC_LINK_IFELSE([], [boost_rpath_link_ldflag_found=yes break], [boost_rpath_link_ldflag_found=no]) done ;; esac AS_IF([test "x$boost_rpath_link_ldflag_found" != "xyes"], [AC_MSG_ERROR([Unable to determine whether to use -R or -rpath])]) LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS ]) test x"$boost_ldpath" != x && Boost_lib_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" Boost_lib_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext ]) # --------------------------------------- # # Checks for the various Boost libraries. # # --------------------------------------- # # List of boost libraries: http://www.boost.org/libs/libraries.htm # The page http://beta.boost.org/doc/libs is useful: it gives the first release # version of each library (among other things). # BOOST_DEFUN(LIBRARY, CODE) # -------------------------- # Define BOOST_ as a macro that runs CODE. # # Use indir to avoid the warning on underquoted macro name given to AC_DEFUN. m4_define([BOOST_DEFUN], [m4_indir([AC_DEFUN], m4_toupper([BOOST_$1]), [m4_pushdef([BOOST_Library], [$1])dnl $2 m4_popdef([BOOST_Library])dnl ]) ]) # BOOST_ARRAY() # ------------- # Look for Boost.Array BOOST_DEFUN([Array], [BOOST_FIND_HEADER([boost/array.hpp])]) # BOOST_ASIO() # ------------ # Look for Boost.Asio (new in Boost 1.35). BOOST_DEFUN([Asio], [AC_REQUIRE([BOOST_SYSTEM])dnl BOOST_FIND_HEADER([boost/asio.hpp])]) # BOOST_BIND() # ------------ # Look for Boost.Bind. BOOST_DEFUN([Bind], [BOOST_FIND_HEADER([boost/bind.hpp])]) # BOOST_CHRONO() # -------------- # Look for Boost.Chrono. BOOST_DEFUN([Chrono], [# Do we have to check for Boost.System? This link-time dependency was # added as of 1.35.0. If we have a version <1.35, we must not attempt to # find Boost.System as it didn't exist by then. if test $boost_major_version -ge 135; then BOOST_SYSTEM([$1]) fi # end of the Boost.System check. boost_filesystem_save_LIBS=$LIBS boost_filesystem_save_LDFLAGS=$LDFLAGS m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" BOOST_FIND_LIB([chrono], [$1], [boost/chrono.hpp], [boost::chrono::thread_clock d;]) if test $enable_static_boost = yes && test $boost_major_version -ge 135; then BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" fi LIBS=$boost_filesystem_save_LIBS LDFLAGS=$boost_filesystem_save_LDFLAGS ])# BOOST_CHRONO # BOOST_CONTEXT([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Context. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. This library was introduced in Boost # 1.51.0 BOOST_DEFUN([Context], [BOOST_FIND_LIB([context], [$1], [boost/context/all.hpp],[[ // creates a stack void * stack_pointer = new void*[4096]; std::size_t const size = sizeof(void*[4096]); // context fc uses f() as context function // fcontext_t is placed on top of context stack // a pointer to fcontext_t is returned fc = ctx::make_fcontext(stack_pointer, size, f); return ctx::jump_fcontext(&fcm, fc, 3) == 6;]],[dnl namespace ctx = boost::context; // context static ctx::fcontext_t fcm, *fc; // context-function static void f(intptr_t i) { ctx::jump_fcontext(fc, &fcm, i * 2); }]) ])# BOOST_CONTEXT # BOOST_CONVERSION() # ------------------ # Look for Boost.Conversion (cast / lexical_cast) BOOST_DEFUN([Conversion], [BOOST_FIND_HEADER([boost/cast.hpp]) BOOST_FIND_HEADER([boost/lexical_cast.hpp]) ])# BOOST_CONVERSION # BOOST_COROUTINE([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Coroutine. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. This library was introduced in Boost # 1.53.0 BOOST_DEFUN([Coroutine], [ boost_coroutine_save_LIBS=$LIBS boost_coroutine_save_LDFLAGS=$LDFLAGS # Link-time dependency from coroutine to context BOOST_CONTEXT([$1]) # Starting from Boost 1.55 a dependency on Boost.System is added if test $boost_major_version -ge 155; then BOOST_SYSTEM([$1]) fi m4_pattern_allow([^BOOST_(CONTEXT|SYSTEM)_(LIBS|LDFLAGS)]) LIBS="$LIBS $BOOST_CONTEXT_LIBS $BOOST_SYSTEM_LIBS" LDFLAGS="$LDFLAGS $BOOST_CONTEXT_LDFLAGS" BOOST_FIND_LIB([coroutine], [$1], [boost/coroutine/coroutine.hpp], [boost::coroutines::coroutine< int(int) > coro; coro.empty();]) # Link-time dependency from coroutine to context, existed only in 1.53, in 1.54 # coroutine doesn't use context from its headers but from its library. if test $boost_major_version -eq 153 || test $enable_static_boost = yes && test $boost_major_version -ge 154; then BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_CONTEXT_LIBS" BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_CONTEXT_LDFLAGS" fi if test $enable_static_boost = yes && test $boost_major_version -ge 155; then BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_SYSTEM_LIBS" BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_SYSTEM_LDFLAGS" fi LIBS=$boost_coroutine_save_LIBS LDFLAGS=$boost_coroutine_save_LDFLAGS ])# BOOST_COROUTINE # BOOST_CRC() # ----------- # Look for Boost.CRC BOOST_DEFUN([CRC], [BOOST_FIND_HEADER([boost/crc.hpp]) ])# BOOST_CRC # BOOST_DATE_TIME([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Date_Time. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Date_Time], [BOOST_FIND_LIB([date_time], [$1], [boost/date_time/posix_time/posix_time.hpp], [boost::posix_time::ptime t;]) ])# BOOST_DATE_TIME # BOOST_FILESYSTEM([PREFERRED-RT-OPT]) # ------------------------------------ # Look for Boost.Filesystem. For the documentation of PREFERRED-RT-OPT, see # the documentation of BOOST_FIND_LIB above. # Do not check for boost/filesystem.hpp because this file was introduced in # 1.34. BOOST_DEFUN([Filesystem], [# Do we have to check for Boost.System? This link-time dependency was # added as of 1.35.0. If we have a version <1.35, we must not attempt to # find Boost.System as it didn't exist by then. if test $boost_major_version -ge 135; then BOOST_SYSTEM([$1]) fi # end of the Boost.System check. boost_filesystem_save_LIBS=$LIBS boost_filesystem_save_LDFLAGS=$LDFLAGS m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" BOOST_FIND_LIB([filesystem], [$1], [boost/filesystem/path.hpp], [boost::filesystem::path p;]) if test $enable_static_boost = yes && test $boost_major_version -ge 135; then BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" fi LIBS=$boost_filesystem_save_LIBS LDFLAGS=$boost_filesystem_save_LDFLAGS ])# BOOST_FILESYSTEM # BOOST_FLYWEIGHT() # ----------------- # Look for Boost.Flyweight. BOOST_DEFUN([Flyweight], [dnl There's a hidden dependency on pthreads. AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl BOOST_FIND_HEADER([boost/flyweight.hpp]) AC_SUBST([BOOST_FLYWEIGHT_LIBS], [$boost_cv_pthread_flag]) ]) # BOOST_FOREACH() # --------------- # Look for Boost.Foreach. BOOST_DEFUN([Foreach], [BOOST_FIND_HEADER([boost/foreach.hpp])]) # BOOST_FORMAT() # -------------- # Look for Boost.Format. # Note: we can't check for boost/format/format_fwd.hpp because the header isn't # standalone. It can't be compiled because it triggers the following error: # boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std' # does not name a type BOOST_DEFUN([Format], [BOOST_FIND_HEADER([boost/format.hpp])]) # BOOST_FUNCTION() # ---------------- # Look for Boost.Function BOOST_DEFUN([Function], [BOOST_FIND_HEADER([boost/function.hpp])]) # BOOST_GEOMETRY() # ---------------- # Look for Boost.Geometry (new since 1.47.0). BOOST_DEFUN([Geometry], [BOOST_FIND_HEADER([boost/geometry.hpp]) ])# BOOST_GEOMETRY # BOOST_GRAPH([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Graph], [BOOST_FIND_LIB([graph], [$1], [boost/graph/adjacency_list.hpp], [boost::adjacency_list<> g;]) ])# BOOST_GRAPH # BOOST_IOSTREAMS([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.IOStreams. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([IOStreams], [BOOST_FIND_LIB([iostreams], [$1], [boost/iostreams/device/file_descriptor.hpp], [boost::iostreams::file_descriptor fd; fd.close();]) ])# BOOST_IOSTREAMS # BOOST_HASH() # ------------ # Look for Boost.Functional/Hash BOOST_DEFUN([Hash], [BOOST_FIND_HEADER([boost/functional/hash.hpp])]) # BOOST_LAMBDA() # -------------- # Look for Boost.Lambda BOOST_DEFUN([Lambda], [BOOST_FIND_HEADER([boost/lambda/lambda.hpp])]) # BOOST_LOCALE() # -------------- # Look for Boost.Locale BOOST_DEFUN([Locale], [BOOST_FIND_LIB([locale], [$1], [boost/locale.hpp], [[boost::locale::generator gen; std::locale::global(gen(""));]]) ])# BOOST_LOCALE # BOOST_LOG([PREFERRED-RT-OPT]) # ----------------------------- # Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Log], [BOOST_FIND_LIB([log], [$1], [boost/log/core/core.hpp], [boost::log::attribute a; a.get_value();]) ])# BOOST_LOG # BOOST_LOG_SETUP([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Log_Setup], [AC_REQUIRE([BOOST_LOG])dnl BOOST_FIND_LIB([log_setup], [$1], [boost/log/utility/setup/from_settings.hpp], [boost::log::basic_settings bs; bs.empty();]) ])# BOOST_LOG_SETUP # BOOST_MATH() # ------------ # Look for Boost.Math # TODO: This library isn't header-only but it comes in multiple different # flavors that don't play well with BOOST_FIND_LIB (e.g, libboost_math_c99, # libboost_math_c99f, libboost_math_c99l, libboost_math_tr1, # libboost_math_tr1f, libboost_math_tr1l). This macro must be fixed to do the # right thing anyway. BOOST_DEFUN([Math], [BOOST_FIND_HEADER([boost/math/special_functions.hpp])]) # BOOST_MPI([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost MPI. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. Uses MPICXX variable if it is # set, otherwise tries CXX # BOOST_DEFUN([MPI], [boost_save_CXX=${CXX} boost_save_CXXCPP=${CXXCPP} if test x"${MPICXX}" != x; then CXX=${MPICXX} CXXCPP="${MPICXX} -E" fi BOOST_FIND_LIB([mpi], [$1], [boost/mpi.hpp], [int argc = 0; char **argv = 0; boost::mpi::environment env(argc,argv);]) CXX=${boost_save_CXX} CXXCPP=${boost_save_CXXCPP} ])# BOOST_MPI # BOOST_MULTIARRAY() # ------------------ # Look for Boost.MultiArray BOOST_DEFUN([MultiArray], [BOOST_FIND_HEADER([boost/multi_array.hpp])]) # BOOST_NUMERIC_UBLAS() # -------------------------- # Look for Boost.NumericUblas (Basic Linear Algebra) BOOST_DEFUN([Numeric_Ublas], [BOOST_FIND_HEADER([boost/numeric/ublas/vector.hpp]) ])# BOOST_NUMERIC_UBLAS # BOOST_NUMERIC_CONVERSION() # -------------------------- # Look for Boost.NumericConversion (policy-based numeric conversion) BOOST_DEFUN([Numeric_Conversion], [BOOST_FIND_HEADER([boost/numeric/conversion/converter.hpp]) ])# BOOST_NUMERIC_CONVERSION # BOOST_OPTIONAL() # ---------------- # Look for Boost.Optional BOOST_DEFUN([Optional], [BOOST_FIND_HEADER([boost/optional.hpp])]) # BOOST_PREPROCESSOR() # -------------------- # Look for Boost.Preprocessor BOOST_DEFUN([Preprocessor], [BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])]) # BOOST_RANGE() # -------------------- # Look for Boost.Range BOOST_DEFUN([Range], [BOOST_FIND_HEADER([boost/range/adaptors.hpp])]) # BOOST_UNORDERED() # ----------------- # Look for Boost.Unordered BOOST_DEFUN([Unordered], [BOOST_FIND_HEADER([boost/unordered_map.hpp])]) # BOOST_UUID() # ------------ # Look for Boost.Uuid BOOST_DEFUN([Uuid], [BOOST_FIND_HEADER([boost/uuid/uuid.hpp])]) # BOOST_PROGRAM_OPTIONS([PREFERRED-RT-OPT]) # ----------------------------------------- # Look for Boost.Program_options. For the documentation of PREFERRED-RT-OPT, # see the documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Program_Options], [BOOST_FIND_LIB([program_options], [$1], [boost/program_options.hpp], [boost::program_options::options_description d("test");]) ])# BOOST_PROGRAM_OPTIONS # _BOOST_PYTHON_CONFIG(VARIABLE, FLAG) # ------------------------------------ # Save VARIABLE, and define it via `python-config --FLAG`. # Substitute BOOST_PYTHON_VARIABLE. m4_define([_BOOST_PYTHON_CONFIG], [AC_SUBST([BOOST_PYTHON_$1], [`python-config --$2 2>/dev/null`])dnl boost_python_save_$1=$$1 $1="$$1 $BOOST_PYTHON_$1"]) # BOOST_PYTHON([PREFERRED-RT-OPT]) # -------------------------------- # Look for Boost.Python. For the documentation of PREFERRED-RT-OPT, # see the documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Python], [_BOOST_PYTHON_CONFIG([CPPFLAGS], [includes]) _BOOST_PYTHON_CONFIG([LDFLAGS], [ldflags]) _BOOST_PYTHON_CONFIG([LIBS], [libs]) m4_pattern_allow([^BOOST_PYTHON_MODULE$])dnl BOOST_FIND_LIBS([python], [python python3], [$1], [boost/python.hpp], [], [BOOST_PYTHON_MODULE(empty) {}]) CPPFLAGS=$boost_python_save_CPPFLAGS LDFLAGS=$boost_python_save_LDFLAGS LIBS=$boost_python_save_LIBS ])# BOOST_PYTHON # BOOST_REF() # ----------- # Look for Boost.Ref BOOST_DEFUN([Ref], [BOOST_FIND_HEADER([boost/ref.hpp])]) # BOOST_REGEX([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost.Regex. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Regex], [BOOST_FIND_LIB([regex], [$1], [boost/regex.hpp], [boost::regex exp("*"); boost::regex_match("foo", exp);]) ])# BOOST_REGEX # BOOST_SERIALIZATION([PREFERRED-RT-OPT]) # --------------------------------------- # Look for Boost.Serialization. For the documentation of PREFERRED-RT-OPT, see # the documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Serialization], [BOOST_FIND_LIB([serialization], [$1], [boost/archive/text_oarchive.hpp], [std::ostream* o = 0; // Cheap way to get an ostream... boost::archive::text_oarchive t(*o);]) ])# BOOST_SERIALIZATION # BOOST_SIGNALS([PREFERRED-RT-OPT]) # --------------------------------- # Look for Boost.Signals. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Signals], [BOOST_FIND_LIB([signals], [$1], [boost/signal.hpp], [boost::signal s;]) ])# BOOST_SIGNALS # BOOST_SIGNALS2() # ---------------- # Look for Boost.Signals2 (new since 1.39.0). BOOST_DEFUN([Signals2], [BOOST_FIND_HEADER([boost/signals2.hpp]) ])# BOOST_SIGNALS2 # BOOST_SMART_PTR() # ----------------- # Look for Boost.SmartPtr BOOST_DEFUN([Smart_Ptr], [BOOST_FIND_HEADER([boost/scoped_ptr.hpp]) BOOST_FIND_HEADER([boost/shared_ptr.hpp]) ]) # BOOST_STATICASSERT() # -------------------- # Look for Boost.StaticAssert BOOST_DEFUN([StaticAssert], [BOOST_FIND_HEADER([boost/static_assert.hpp])]) # BOOST_STRING_ALGO() # ------------------- # Look for Boost.StringAlgo BOOST_DEFUN([String_Algo], [BOOST_FIND_HEADER([boost/algorithm/string.hpp]) ]) # BOOST_SYSTEM([PREFERRED-RT-OPT]) # -------------------------------- # Look for Boost.System. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. This library was introduced in Boost # 1.35.0. BOOST_DEFUN([System], [BOOST_FIND_LIB([system], [$1], [boost/system/error_code.hpp], [boost::system::error_code e; e.clear();]) ])# BOOST_SYSTEM # BOOST_TEST([PREFERRED-RT-OPT]) # ------------------------------ # Look for Boost.Test. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Test], [m4_pattern_allow([^BOOST_CHECK$])dnl BOOST_FIND_LIB([unit_test_framework], [$1], [boost/test/unit_test.hpp], [BOOST_CHECK(2 == 2);], [using boost::unit_test::test_suite; test_suite* init_unit_test_suite(int argc, char ** argv) { return NULL; }]) ])# BOOST_TEST # BOOST_THREAD([PREFERRED-RT-OPT]) # --------------------------------- # Look for Boost.Thread. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Thread], [dnl Having the pthread flag is required at least on GCC3 where dnl boost/thread.hpp would complain if we try to compile without dnl -pthread on GNU/Linux. AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl boost_thread_save_LIBS=$LIBS boost_thread_save_LDFLAGS=$LDFLAGS boost_thread_save_CPPFLAGS=$CPPFLAGS # Link-time dependency from thread to system was added as of 1.49.0. if test $boost_major_version -ge 149; then BOOST_SYSTEM([$1]) fi # end of the Boost.System check. m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag" # When compiling for the Windows platform, the threads library is named # differently. case $host_os in (*mingw*) boost_thread_lib_ext=_win32;; esac BOOST_FIND_LIBS([thread], [thread$boost_thread_lib_ext], [$1], [boost/thread.hpp], [boost::thread t; boost::mutex m;]) BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS" BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag" LIBS=$boost_thread_save_LIBS LDFLAGS=$boost_thread_save_LDFLAGS CPPFLAGS=$boost_thread_save_CPPFLAGS ])# BOOST_THREAD AU_ALIAS([BOOST_THREADS], [BOOST_THREAD]) # BOOST_TOKENIZER() # ----------------- # Look for Boost.Tokenizer BOOST_DEFUN([Tokenizer], [BOOST_FIND_HEADER([boost/tokenizer.hpp])]) # BOOST_TRIBOOL() # --------------- # Look for Boost.Tribool BOOST_DEFUN([Tribool], [BOOST_FIND_HEADER([boost/logic/tribool_fwd.hpp]) BOOST_FIND_HEADER([boost/logic/tribool.hpp]) ]) # BOOST_TUPLE() # ------------- # Look for Boost.Tuple BOOST_DEFUN([Tuple], [BOOST_FIND_HEADER([boost/tuple/tuple.hpp])]) # BOOST_TYPETRAITS() # -------------------- # Look for Boost.TypeTraits BOOST_DEFUN([TypeTraits], [BOOST_FIND_HEADER([boost/type_traits.hpp])]) # BOOST_UTILITY() # --------------- # Look for Boost.Utility (noncopyable, result_of, base-from-member idiom, # etc.) BOOST_DEFUN([Utility], [BOOST_FIND_HEADER([boost/utility.hpp])]) # BOOST_VARIANT() # --------------- # Look for Boost.Variant. BOOST_DEFUN([Variant], [BOOST_FIND_HEADER([boost/variant/variant_fwd.hpp]) BOOST_FIND_HEADER([boost/variant.hpp])]) # BOOST_POINTER_CONTAINER() # ------------------------ # Look for Boost.PointerContainer BOOST_DEFUN([Pointer_Container], [BOOST_FIND_HEADER([boost/ptr_container/ptr_deque.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_list.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_vector.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_array.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_set.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_map.hpp]) ])# BOOST_POINTER_CONTAINER # BOOST_WAVE([PREFERRED-RT-OPT]) # ------------------------------ # NOTE: If you intend to use Wave/Spirit with thread support, make sure you # call BOOST_THREAD first. # Look for Boost.Wave. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Wave], [AC_REQUIRE([BOOST_FILESYSTEM])dnl AC_REQUIRE([BOOST_DATE_TIME])dnl boost_wave_save_LIBS=$LIBS boost_wave_save_LDFLAGS=$LDFLAGS m4_pattern_allow([^BOOST_((FILE)?SYSTEM|DATE_TIME|THREAD)_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_DATE_TIME_LIBS \ $BOOST_THREAD_LIBS" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS \ $BOOST_DATE_TIME_LDFLAGS $BOOST_THREAD_LDFLAGS" BOOST_FIND_LIB([wave], [$1], [boost/wave.hpp], [boost::wave::token_id id; get_token_name(id);]) LIBS=$boost_wave_save_LIBS LDFLAGS=$boost_wave_save_LDFLAGS ])# BOOST_WAVE # BOOST_XPRESSIVE() # ----------------- # Look for Boost.Xpressive (new since 1.36.0). BOOST_DEFUN([Xpressive], [BOOST_FIND_HEADER([boost/xpressive/xpressive.hpp])]) # ----------------- # # Internal helpers. # # ----------------- # # _BOOST_PTHREAD_FLAG() # --------------------- # Internal helper for BOOST_THREAD. Computes boost_cv_pthread_flag # which must be used in CPPFLAGS and LIBS. # # Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, # boost/thread.hpp will trigger a #error if -pthread isn't used: # boost/config/requires_threads.hpp:47:5: #error "Compiler threading support # is not turned on. Please set the correct command line options for # threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" # # Based on ACX_PTHREAD: http://autoconf-archive.cryp.to/acx_pthread.html AC_DEFUN([_BOOST_PTHREAD_FLAG], [AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_LANG_PUSH([C++])dnl AC_CACHE_CHECK([for the flags needed to use pthreads], [boost_cv_pthread_flag], [ boost_cv_pthread_flag= # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # (none): in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -lpthreads: AIX (must check this before -lpthread) # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # -llthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: GNU Linux/GCC (kernel threads), BSD/GCC (userland threads) # -pthreads: Solaris/GCC # -mthreads: MinGW32/GCC, Lynx/GCC # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # -lpthread: GNU Linux, etc. # --thread-safe: KAI C++ case $host_os in #( *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: boost_pthread_flags="-pthreads -lpthread -mt -pthread";; #( *) boost_pthread_flags="-lpthreads -Kthread -kthread -llthread -pthread \ -pthreads -mthreads -lpthread --thread-safe -mt";; esac # Generate the test file. AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0);])]) for boost_pthread_flag in '' $boost_pthread_flags; do boost_pthread_ok=false dnl Re-use the test file already generated. boost_pthreads__save_LIBS=$LIBS LIBS="$LIBS $boost_pthread_flag" AC_LINK_IFELSE([], [if grep ".*$boost_pthread_flag" conftest.err; then echo "This flag seems to have triggered warnings" >&AS_MESSAGE_LOG_FD else boost_pthread_ok=:; boost_cv_pthread_flag=$boost_pthread_flag fi]) LIBS=$boost_pthreads__save_LIBS $boost_pthread_ok && break done ]) AC_LANG_POP([C++])dnl ])# _BOOST_PTHREAD_FLAG # _BOOST_gcc_test(MAJOR, MINOR) # ----------------------------- # Internal helper for _BOOST_FIND_COMPILER_TAG. m4_define([_BOOST_gcc_test], ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl # _BOOST_mingw_test(MAJOR, MINOR) # ----------------------------- # Internal helper for _BOOST_FIND_COMPILER_TAG. m4_define([_BOOST_mingw_test], ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw$1$2"])dnl # _BOOST_FIND_COMPILER_TAG() # -------------------------- # Internal. When Boost is installed without --layout=system, each library # filename will hold a suffix that encodes the compiler used during the # build. The Boost build system seems to call this a `tag'. AC_DEFUN([_BOOST_FIND_COMPILER_TAG], [AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag], [boost_cv_lib_tag=unknown if test x$boost_cv_inc_path != xno; then AC_LANG_PUSH([C++])dnl # The following tests are mostly inspired by boost/config/auto_link.hpp # The list is sorted to most recent/common to oldest compiler (in order # to increase the likelihood of finding the right compiler with the # least number of compilation attempt). # Beware that some tests are sensible to the order (for instance, we must # look for MinGW before looking for GCC3). # I used one compilation test per compiler with a #error to recognize # each compiler so that it works even when cross-compiling (let me know # if you know a better approach). # Known missing tags (known from Boost's tools/build/v2/tools/common.jam): # como, edg, kcc, bck, mp, sw, tru, xlc # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines # the same defines as GCC's). for i in \ _BOOST_mingw_test(5, 0) \ _BOOST_gcc_test(5, 0) \ _BOOST_mingw_test(4, 10) \ _BOOST_gcc_test(4, 10) \ _BOOST_mingw_test(4, 9) \ _BOOST_gcc_test(4, 9) \ _BOOST_mingw_test(4, 8) \ _BOOST_gcc_test(4, 8) \ _BOOST_mingw_test(4, 7) \ _BOOST_gcc_test(4, 7) \ _BOOST_mingw_test(4, 6) \ _BOOST_gcc_test(4, 6) \ _BOOST_mingw_test(4, 5) \ _BOOST_gcc_test(4, 5) \ _BOOST_mingw_test(4, 4) \ _BOOST_gcc_test(4, 4) \ _BOOST_mingw_test(4, 3) \ _BOOST_gcc_test(4, 3) \ _BOOST_mingw_test(4, 2) \ _BOOST_gcc_test(4, 2) \ _BOOST_mingw_test(4, 1) \ _BOOST_gcc_test(4, 1) \ _BOOST_mingw_test(4, 0) \ _BOOST_gcc_test(4, 0) \ "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw" \ _BOOST_gcc_test(3, 4) \ _BOOST_gcc_test(3, 3) \ "defined _MSC_VER && _MSC_VER >= 1500 @ vc90" \ "defined _MSC_VER && _MSC_VER == 1400 @ vc80" \ _BOOST_gcc_test(3, 2) \ "defined _MSC_VER && _MSC_VER == 1310 @ vc71" \ _BOOST_gcc_test(3, 1) \ _BOOST_gcc_test(3, 0) \ "defined __BORLANDC__ @ bcb" \ "defined __ICC && (defined __unix || defined __unix__) @ il" \ "defined __ICL @ iw" \ "defined _MSC_VER && _MSC_VER == 1300 @ vc7" \ _BOOST_gcc_test(2, 95) \ "defined __MWERKS__ && __MWERKS__ <= 0x32FF @ cw9" \ "defined _MSC_VER && _MSC_VER < 1300 && !defined UNDER_CE @ vc6" \ "defined _MSC_VER && _MSC_VER < 1300 && defined UNDER_CE @ evc4" \ "defined __MWERKS__ && __MWERKS__ <= 0x31FF @ cw8" do boost_tag_test=`expr "X$i" : 'X\([[^@]]*\) @ '` boost_tag=`expr "X$i" : 'X[[^@]]* @ \(.*\)'` AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #if $boost_tag_test /* OK */ #else # error $boost_tag_test #endif ]])], [boost_cv_lib_tag=$boost_tag; break], []) done AC_LANG_POP([C++])dnl case $boost_cv_lib_tag in #( # Some newer (>= 1.35?) versions of Boost seem to only use "gcc" as opposed # to "gcc41" for instance. *-gcc | *'-gcc ') :;; #( Don't re-add -gcc: it's already in there. gcc*) boost_tag_x= case $host_os in #( darwin*) if test $boost_major_version -ge 136; then # The `x' added in r46793 of Boost. boost_tag_x=x fi;; esac # We can specify multiple tags in this variable because it's used by # BOOST_FIND_LIB that does a `for tag in -$boost_cv_lib_tag' ... boost_cv_lib_tag="$boost_tag_x$boost_cv_lib_tag -${boost_tag_x}gcc" ;; #( unknown) AC_MSG_WARN([[could not figure out which toolset name to use for $CXX]]) boost_cv_lib_tag= ;; esac fi])dnl end of AC_CACHE_CHECK ])# _BOOST_FIND_COMPILER_TAG # _BOOST_GUESS_WHETHER_TO_USE_MT() # -------------------------------- # Compile a small test to try to guess whether we should favor MT (Multi # Thread) flavors of Boost. Sets boost_guess_use_mt accordingly. AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT], [# Check whether we do better use `mt' even though we weren't ask to. AC_LANG_PUSH([C++])dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #if defined _REENTRANT || defined _MT || defined __MT__ /* use -mt */ #else # error MT not needed #endif ]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false]) AC_LANG_POP([C++])dnl ]) # _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # ------------------------------------------------------------------- # Fork of _AC_LINK_IFELSE that preserves conftest.o across calls. Fragile, # will break when Autoconf changes its internals. Requires that you manually # rm -f conftest.$ac_objext in between to really different tests, otherwise # you will try to link a conftest.o left behind by a previous test. # Used to aggressively optimize BOOST_FIND_LIB (see the big comment in this # macro). # # Don't use "break" in the actions, as it would short-circuit some code # this macro runs after the actions. m4_define([_BOOST_AC_LINK_IFELSE], [m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && _AS_ECHO_LOG([re-using the existing conftest.$ac_objext]) AS_IF([_AC_DO_STDERR($ac_link) && { test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough. }], [$2], [if $boost_use_source; then _AC_MSG_LOG_CONFTEST fi $3]) ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext dnl Delete also the IPA/IPO (Inter Procedural Analysis/Optimization) dnl information created by the PGI compiler (conftest_ipa8_conftest.oo), dnl as it would interfere with the next link command. rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext m4_ifval([$1], [conftest.$ac_ext])[]dnl ])# _BOOST_AC_LINK_IFELSE # Local Variables: # mode: autoconf # End: liborcus-0.9.2/m4/ltoptions.m40000644000175000017500000003007312540653645014642 0ustar renerene# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) liborcus-0.9.2/m4/ltversion.m40000644000175000017500000000126212540653645014632 0ustar renerene# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) liborcus-0.9.2/m4/ax_cxx_compile_stdcxx_11.m40000644000175000017500000001254012535701142017474 0ustar renerene# ============================================================================ # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html # ============================================================================ # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the C++11 # standard; if necessary, add switches to CXXFLAGS to enable support. # # The first argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # -std=c++11). If neither is specified, you get whatever works, with # preference for an extended mode. # # The second argument, if specified 'mandatory' or if left unspecified, # indicates that baseline C++11 support is required and that the macro # should error out if no mode with that support is found. If specified # 'optional', then configuration proceeds regardless, after defining # HAVE_CXX11 if and only if a supporting mode is found. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 10 m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[ template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; struct Base { virtual void f() {} }; struct Child : public Base { virtual void f() override {} }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; auto l = [](){}; // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable] struct use_l { use_l() { l(); } }; // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } ]]) AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl m4_if([$1], [], [], [$1], [ext], [], [$1], [noext], [], [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], [$2], [mandatory], [ax_cxx_compile_cxx11_required=true], [$2], [optional], [ax_cxx_compile_cxx11_required=false], [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])]) AC_LANG_PUSH([C++])dnl ac_success=no AC_CACHE_CHECK(whether $CXX supports C++11 features by default, ax_cv_cxx_compile_cxx11, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [ax_cv_cxx_compile_cxx11=yes], [ax_cv_cxx_compile_cxx11=no])]) if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi m4_if([$1], [noext], [], [dnl if test x$ac_success = xno; then for switch in -std=gnu++11 -std=gnu++0x; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, $cachevar, [ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [eval $cachevar=yes], [eval $cachevar=no]) CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi]) m4_if([$1], [ext], [], [dnl if test x$ac_success = xno; then for switch in -std=c++11 -std=c++0x; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, $cachevar, [ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [eval $cachevar=yes], [eval $cachevar=no]) CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi]) AC_LANG_POP([C++]) if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) fi else if test x$ac_success = xno; then HAVE_CXX11=0 AC_MSG_NOTICE([No compiler with C++11 support was found]) else HAVE_CXX11=1 AC_DEFINE(HAVE_CXX11,1, [define if the compiler supports basic C++11 syntax]) fi AC_SUBST(HAVE_CXX11) fi ]) liborcus-0.9.2/m4/lt~obsolete.m40000644000175000017500000001375612540653645015172 0ustar renerene# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) liborcus-0.9.2/m4/libtool.m40000644000175000017500000105756412540653645014272 0ustar renerene# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS liborcus-0.9.2/m4/ltsugar.m40000644000175000017500000001042412540653645014266 0ustar renerene# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) liborcus-0.9.2/test/0000755000175000017500000000000012540654316012775 5ustar renereneliborcus-0.9.2/test/ods/0000755000175000017500000000000012540654317013563 5ustar renereneliborcus-0.9.2/test/ods/borders/0000755000175000017500000000000012540654317015223 5ustar renereneliborcus-0.9.2/test/ods/borders/grid-box.ods0000644000175000017500000002006612535701144017444 0ustar renerenePKGCl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPKGCeٖThumbnails/thumbnail.pngPNG  IHDR`}@]IDATxݻkTi֋]D񂅠 *X؄jD0E *((xF0 jE̾Lf]ypr9IF~gff, ``hVHiVHiVHiVHiVHiVHiVHiVHiVHiVHiVHiVHiT-,XW/oVT[2V>jm޼ŋ߾My`=|(۴}Vɲ7n(_\RN4n,\ӧOorܹG/^ܶm[}{oVZSSSo޼)ӞYhQٔ3o߾]zu-HvcҥK;'Kaӝ$;3`[n͚57oܽ{۷cccgϞӧ׮]{;wt899 */EK," X+^jۃ;ǏovfVOő#G>|8229~\ X+~oݻw╵R;r,i%յRËD5յZbZ!RZ!RZ!RZ!RZ!RZ!RZ!RRG{*YFSJkT zVR]+TL+BJ+BJ+BV*y멒e45Vjx멪wYIuP1 ) ) ) ) ) ) Z=,i%յRG{Q=+\jG~ sFg5[ٷoߞ={N:Ui۩~di###Vڻwʕ+_~Ov.xҥAؿCCC;w> URJzjyewΜ9N-Tn-[t_3rA8n4>9gL@fvz߻wATo_͍7o7mr? Q<|7Ī[Y|qTvD_o 9wb^1 UҾxg=#|> 9wbўsabխCwb],䭧JԴzZ 7BBJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BJ+BUR1IENDB`PKGC settings.xmlr0} wb )I< ӆ6m3mn^@Ydm$8`I.gkAH|`u:V >ˁu3{>·op8>zQ\%(Ȗ^Υ Hp$(nt ˞<0Jб8K{zzj]V~*  JdʤzΑZ[%g wvV@Ѧ 6DE:k /YE랯nPmB=H÷GgW`ߨVE_]?=9o$lSyQTFTQ≟R*&N} 4h% @u+x85J!^d\/QG07dT}F_NMg~g"4St )}J]SY~CbN=Pn#j`ێO:d"A ~>w4rqrF(+"c=`fj2K]!:{ g }Х!͘d5W~d ٵW>f(M$$%:➊HA߄>rA(@&)Ef|)  }](ωDlK@/K+U*pc2Y@^Q~k!H"[(S-Tiui.{7 PKIٻAPKGC content.xmlZK6WPlUn2~&c%auA`eDI>-X0gw;{[_w9{"|&S!<!Oh|w'E%k$VT'D:EJx7~J>AU6ؖ.ގ\ڡXe6#1VD=IFǵ:=/I{j5ƥd* <ˆqdU؄h<6),9:4XOJ59PSU_xtu0;,GYn"_*`{TW2`[ $MGoӢBQ^НOW@gṤ<8 0 ꈋ/hy@doJn"50r V?I L#ʕi0kOTH]&?|![N'lxt 0c)ߵfzXy9O*̦- > S$21`A),aV- L ZgDABE7C^&qLU0ZthB%ïYC挃)^zjswSqW "8QB0;v)L"#05+hBq~S~uZ ńC UNj!R~{,iQ*yj?yZ JGIo8A/QR8?:ȭ{1PK9δSAQ f~pt,njHMr"o%і@yA㺲Xsco:Y.Wt!nRb iKF#4i|v g j`Zf9}}&&pG$JqLPդΘ쪱#R2|, WZRxfsL_A+h35G$C̊qKz&{TLbi %ftW!\7%'2%sDl~GRe4H#ȓsu}ʨs\op#<ݺ=uw?\$!,*3KO;ƹؘɭ[|Ð b 654kpZⓜk-[t;e nZ+,h4O\㓠^¼eDIa,6<Ղ뵯gkQ+JN5*|LZL"-6姰MJyb>[$Q/ ]5mZuHgg!9#>;4*x~m~$O?n^gsRؖT'mtӞ1VSU5e\湁>NHh!ՊlH4> <|P)o\mzcqYIvβ.սxY MyBʇ/Zgٴk_פA S{>lyZ_ +ؔ ̉BTmZZu%Jm_y̆S6W{)ap'%(^#*vW<mݗ'yrH(z ۺPij N˵{)aHh! "#(D+OS{FӴ9ٗp翗(87$y(Wź7-KTҪQ+SZx8J9*^ $ݘ)@Vx1 I~MehNɸm(0s=AI޿u.<8hP~,T/nUGiq ړzW:DL7P5u^nTO=K]LR"Խ^hg#*9nh0|]P[F-v,ݏ5A Qΰ;s;rVC>Ww,uZRE֪|*ΫW֏߱F u11?| ϶u򠢠^+&a,1xn ƽ稱>tf6o&gf*72OkG= H`,b$IZcTJ6W/wkGL=t\񧊳,u?L/#ZuS \xJBL{\]x 9Y cĄAQ($?;ݺBW?zYB>υt2˂Y)~6s$̼zp*O1գJnx$np u5StJMOJ\`G'o17kk,a :nUrxEL[!ʼni eR`^FgUL+٦b1#Y -Xh\cu;ҀG0 E}8n ŽmȨh?zzU q45+b3wWޢ_16FHh:zѦ^Khpc= UKI ~O}S}5첧Ru)B($ 1ϏzBVj *sAn존p允7i~S_eIC?%׀mM/g4 "*Ed\xP{_ː"8yP=vwE(HAiCo>JKߑ%xirPK8bWPKGC'Configurations2/accelerator/current.xmlPKPKGCConfigurations2/toolpanel/PKGCConfigurations2/statusbar/PKGCConfigurations2/progressbar/PKGCConfigurations2/toolbar/PKGCConfigurations2/images/Bitmaps/PKGCConfigurations2/popupmenu/PKGCConfigurations2/floater/PKGCConfigurations2/menubar/PKGCMETA-INF/manifest.xmlSn +" 5ҾF ¦j~I6L֛{ٝNElī|þM춫M0: ַi#JF 9hfcl-w*ݳخIs?_&tWc#tuKF:a+ܧt`r8yR| e~ 5R!`ކ0f3K||8sT|=#q* f`&( f`&( b-[F_3AL.B)YMP0ea[f ;f_xqz<ƍ&(ƫW޽{HRd$K`kk+AL0$zE&γg~` ,%(@&_&( f`&( f`&( bRriH'?c:>ClH >W $,EL⋼OLL$MMM,E nݺuc9uTCCCrpVz<+%{g) `6o$AOOϹsq%gMP3AX3DHЇ!2>?% f`&( f`&I5! f0wKu=~xww7=N?ٳUUU׮]g) ySSS{ ӧݻ|>|(\pfffƍ ڵɓ',Epޱ1jP>>=K`l6yfdtttMzp`___r[__~yժU*L]ޱcŋM0g _&7*nL)9? JIR/-%R`! f`&( f`&(2v w" =4*RwХ!A.·~]]P[[=oWjGuvv&n6qNNNGHm9r…ѣP?`f~a<}%9طo=KQ+++GGGA1\.ё<ӳۖ-[޽Cczp .WSSSxs?^>&?.:}vxyĖYmhhx 5OKPi'sw?'iQK`X~`&( f`&( f\OO WAwQ| .b/_ܴi,=H9K׎ɓ')ʤd]? \ϟ?rZ.'Ng%x[ne|ߥo2+AW4`Az-o4A`YLBDǯ 3ALP03ALP0Ĥ~<];?^@?^1>Iɏ.\%I㧛8kkkə~.L,ęjllAW^vK.577ӳ"gff)K0Yfggƺ޿OXğ,bIW\ fw`}}==KQU0in6l|2=K9̿ '<߄K0Ԛ&N jQzj@ _'F~(q*`&( f`&( f`2^`w O>Ex &κ6rK_~}mUU=K9td{{ 2&&&ܹJ) /_FFFvyС3g+++GGGA%uޞݻwLpnn.utt$,yfǎg)ęG+ m^~MOQ>LP&?o f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( f`&( ?g+hIENDB`PKGC settings.xmlYv8}`uV!֬@q && V#K$c׏̥M=!3P^Kg-"9dQRUJRĥ"26>+_jGŠG(Dq( r8usUP@^nlU^,0"OU"q͊%MӊmWG4ԺKSҟk2+ceU,+ )+ӯl ΐAqBH9O)i^G:`HCe(lDD(0" \*}>|<᧡__zJӅz/Y3D<ޮ)/j 1܇0;K.D]LC Cy2B#b>HM𐺘k ۔gJVRߧL dy:(? 4+tY{ʇof%9oaͬr$nF ?N Cr҈N@m]ђz &_ѯ|`:r×"yZQR62Xf ,bW%R<L@V=3n3S?@ߣ"/v[ A1e;И&{T(5ԣ4nCry|L59wH3C1n=pHM]S5po$Y0!띩KOf]T~,9#ID 5@Zggqr`s Ma b Y?;vsIcec,D: .ԧc7龤^kS"2P=gō"Su!^쿕˔YiHғ4R7IoV`[oFZ.%!{UN6ݼ쭇aJ~z =,IO(2b ͩdFyi6ٕRmTsP";M^aә$ٝqgJEz xnv*Hsuwc7fxd d억J+q͍ -iUTG#g:n%+;R;z[ ݎSRKAziJd"k72 Ff+3bXr=R32z?m{A@ЪYe|D=>ADhMO{:{a"t_Ëhz١OˎU{ʬ AQZƶQsU,6ݳ1〢4$+gÄeq\ㄤK^"J̝Ѫ!w!>cSei"’,>qdLQ ӊs_9H mhVpS T5aÊꐾky֯o+U )&W[?JĖ-}No{C@o6y>ckɢ7p]1oEk~e|V~`x6Q>w8|i|{S⫩sfO'$vGjۯBoodO]򘻍H,P*BNqtt)MW1H%$LJ6WfkAnEҶ_Y=w}K[lo ,J/nCnHVv3Y.-v dCe ,3m#"p_R 6 ')@:2۔ufM7ϔq*s?U6b2owPz˞W<;-ArS[c^ݙm[a4q*7Nsn8@; Dn$sk.nyaq0. Gb̊QؾTemnpk4w,[X4膒݋u㿴_ ے6xb˃b;6`ۄp*pJ=UES~d mV5}g'%#n/Y:w5{nά1:";%  Tku mT`M>8mp;􇊝.M] 9Wl~r&0}[ӆ䶻hC]U~NFVslJSyV2-|K E,de s[/.1F8DI,KۈƈƂ*)jζەB2m#bK {6'kT>>c5N 9 UA$a'*ls!1W3(͡~i]82VٵϮIIZ;ˀ/{UŧQVCUq1?PDd]A֙d!86af\\4Y^d m2@JV3gxGp1ٓŁ>^DVw吥 5[6|K2ᱝ?]l=^ qA4jubiŹU 4 гfwipG( AJ(>>CΖ3{FNnN;l: j8fڝS$oF7KKdJ9٣Q!*N0G\4  J3U$a<5}ijӅ݋KJ95ȋ 8~tHZztA1b ~Y7o\?~34thqDv\[շ.]I{>,Փ;g-D8A|ʉ[U=Z.<)IibL-^ŋV.|irj`e.? T$bLM/J|ǃO4+{<.~ocW>-d1b700%1q0C36irؙyăEݪtTKnK=nA(WWuO" yXhQ• ⊫i]'6Q)X \Hi TW61JaUfJ吸K #NrE8M0lEBY8NK Ϻ)y!`e ^ o,2rWC>ݻet]3!XTM0x+~kh.j4d0$>xb8I^v ẼX wl+BJJ#I 6([&PƵ6, S'FY娊+'J 6b_ũ2aн4j5f i: w. v&K#I{ɓ^%ʥzSsz-&;h] ] } B lWm} Vgb:!mwKZ3t!ejEfydf: ͧ}giם*4vQ^{;RLș65 oݺu?L/^>}zɴ0j+ܵk?L?^pڇO]0j+fwkg\|۷oׯ__[[=>F|mp~;Fwgcon~z*Bz*Bzn&1ova7x_e| ^;aڇ v7q5]G7xPn𖗗7oC v7xn/z*Bz*Bzoƿ5]&nf` ^8zMj|5ohښGhv7^e|5C5ݻw7Eh|7Coڡl I =S!=S!=S!=S!=S!=S!=S!=S!=S!=S!=S!=S!=S!=nŞ={~˗A/zK?~8E+*܊߼ys苖^|y/Z[[\]xq&RV^ϟ?/..޸qcЋ޾}{ȑ'N|xyyɓC_4ETZ]]}=zW\Ǐ޽{&RV~g.vm.HTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHOTHO СnIIENDB`PKvA settings.xmlZr8}Hu*6٠]fKBɶjd%#w=SSX˹WWG ~=|6#J v*gAdRP qΡr? ϯ JHxԇd3-qt~il2LjL +d0M2Z.,{7CmJh菦( +gtU̬B+M6_[X}#(6gȵ"MgQSv<804+Ne'"B)^鹻̯0߂~c [=yV9"Cg wr/a֝-/`2bڷ<@<x{_9`&H$# "?P(} uv]ʎnB~$wGS7lfpn2 ~߄kkɑ1}$j AGzhFG=mԥzh F[. lR Qp7q܁s AgS#AD't\RtﻵrM{|{T~ػ~kiAOߧ 8X;ڃWV875E9a?yhX վ/˧PKPiYm$PKvA styles.xml\ms6~Bu$%˶T[Mo䒴7$8dH |ESk#`}v`)}=ff9=8vkZ/|m"  Bwތ7,^P _(|!Mp Z 5nQʺWhDR0uY }]KY]?ZQˣQ)Yx-Dv{Q|>Uon%*)߳qdv\;@]퓲I&ì34HJT92/)2>]Ay27FH{eNE]璲ޣp_!?Ƀ$L ɵ?W],fhcRa9qnn)v:ck訔OX9y_wZ87%Xi<@Wr=)'S!2u<^NN(87"_-,/(O9S2G7G6F0.gCnHBs;/86Xچ*٠> ]x>|7Ɏ QW=,^ % x#|(nJ]%><>?N.->7ʴO!:xuj{!uvɎ?_)-:J9-Uvǟj60ڈeq;0*'tOe20,A1SUMkRXIn+yBAWAM>v6 _gM/|?G%s dV=Ρ)4T z딈b@.]xyEԩQD| ,QÓui:ϗݧD_Pu:<^lv\F IiȤ}NKҫj/49:|ӣfG8O& -z*V($4qŶ !YjgK-^XõU~w/+/ijVdy57[V=q3NLs͌X]-]h v3JR% 8,)yG%\#cb)=D0$ĖĢΘZJ+2pXS}GՂ$ T;EU| `}VdgrZH=$wGQC"BFݦP{IhIW#L&EVD}p+|8rԟBF$%?Ultɛ@K0j+4n"LըֶFJrAn`(LbN_ɨU]4j15iZJVyfy' >o$W" rAdK|yZ~DjRj2@A Τ:E`-/S|0ijhzEuR1k.j!˜3Ei.wS5.݀M?`geEBl\mqh"*PM#dۅm KmE`h9gS7lYF[&*8s}n*59,45h] W0O,&g22TA ˒JAB=O/{jKB"YSj{8]GJ&(Xyݹcr19!F|D>s}ŌZy9nӎ\ERS۷檨58kY]-7_cv1mIJ(.˟y6T@M>{KaK7h*j]qw ; āA=z)?QФ4G㍏ iRq'u[8Nj\8 g~rҧh߳6wmϒ{ҏ՟6wCn,e&괔{P=NBGhHw]o\PK(" CRPKvA`gmeta.xml Kohei YoshidaKohei Yoshida2012-12-11T23:16:002012-12-11T23:19:30LibreOffice/3.5$Linux_X86_64 LibreOffice_project/350m1$Build-41312.0000Novell, Inc.0falsefalsefalsefalsePKvAConfigurations2/menubar/PKvAConfigurations2/floater/PKvAConfigurations2/images/Bitmaps/PKvAConfigurations2/popupmenu/PKvAConfigurations2/statusbar/PKvAConfigurations2/toolbar/PKvAConfigurations2/progressbar/PKvAConfigurations2/toolpanel/PKvA'Configurations2/accelerator/current.xmlPKPKvAMETA-INF/manifest.xmlSn +" 5ҾF ¦j~I6L֛{ٝNElī|þM춫M0: ַi#JF 9hfcl-w*ݳخIs?_&tWc#tuKF:a+ܧt`r8yR| e~ 5R!`ކ0f3K||?0ͣ'syɋ/.a<|V̓'O`<{l{{r &L48wǎׯHr! \| s L78ݱ3hp.;;;?~=|r4v 58‚VW B.r!ׯ666NOO.azӧr sY^^]{{{cg0\>~۷Ǐ]sL48r! \vww/..fg۷o.a~ykkK.sap.+++GGG߿;Ç۝3hp._~}L48O>@& \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B ȅ@.r! \B Jxyޅ-IENDB`PK$D settings.xmlYKw8ϯx;'6Ss= 6NV#KIƐ_?2qtQ6z|}w., ㈒RV$.WѰyI\fȅQP9t+1R#^! " !M쏮6-KsU+b5ebIӴw7ԥdRmFSQJ%6¬ʪyW [!TSVj;=_lWH MaۜVU$ee`]kʡy؈#CA0Pv""zW]p&A#O۳>G_ BăK襩`|xsu1ø㥤IPj9%isB&eAhDS֧ iOȓ ")C/#ѥLߧ L 7/;]˟ ktyzʧ佰Y>Lzj A O) GiԍVOĹ'OCiP! JMF>и.~أ!e=.;e~6e.g0Im00chѵ} ~O;o!'Ŕ1MP|{S.<1E}9h = I6,Mr!|t59wHrZ[0s/Bb 鍾w&ɍ\wf]:&[_^_"n3J y =3~X`͕Wb`2sH?":D<ҠA Ou_5v|li* ɗª d-lGE#(}o?l|gQ+0G!&v/^sбw]GGoNG t 4dҗ˵TO,!7ײWF~[o`E}pj}QFP _V ;du8~yW9 ~&;~qZvy:5O[4Gx/ߦC56p}`6zd`V˨$S`t;lj"\7z]MaiHkM{0lؓ'Ukj_f)IvId p{#"ϛH}} zՈCv]Ug'>>PKtȌt|PK$D content.xmlXo6~_ah ijk4m1-Q6JHʲS}wwo)TLdKO"l>C3꧅H0QLHd>GZ]zBASaFRB"Y$J`u v5%-Վ%)*,$UOP(4's=-yqYr:r|jK8jqy!Eg c7ؔj2"]S985DgKfn3v4G["יwKe/iDo{w`>u%ӡ H|pBTBn0\귃./K4<ڌ\c@ 3%6IQp܂UkhKSr#)McfلHoML2|n-Ny0 t#,L1hbc3[/[;O/*l0mKvܴS",@ ϩdfpv,t2i93 v*T䡣23gRɩœs6kȜq0kOx WVQӈբȭxT6=n;z$L2~Xz\'J: mhV%Sș`dTej/cqB4M')Xlݍk=s{fq^rRhg }v":Fi5PTjF(ZR ׍^{lܰD.fp}0'(' 듨׀Cͧf+pGHSŽV/E|8NjԒXm)իE>k;8# WJh!'8p,pE ΨN#"9r1Mp&lN|Tq,=,߃)FxA>`!3g}Wω(~c'}}$}I~|~_* ?06+ӗ0?0B^ N!S)4չ8{h̕4*Hn oꨜCgμ=PKDs,edPK$D styles.xmlY[o6~߯0hɒyXQl@S응(+% $KIQ=eH+;߹Ƚ=ft\o`; G,&yq>~x>wnܰ$!cΥ+b\fs<D9ʰeV(lC}YkpSZ⣜+-Yt?d nJ +,)GA݄ $IőIYw8%kOքWjTybueYl%Oa2|kD */)jʴkή}:h@@>la1MfQUm2OkG`< է0H`,b$HFcTJ6W;< /u꫼vs`^˿O`j O`%W^BV9L)gBmQ(\~Vq"~|t2ۂYy4*pq)gԅ>I3T* Dn{)Lщe]OJ\nbܕZKu \3dGqvڋ·W_WfYUt~S i)yẌCwxZ-X:?P|b<"՟E L)%Lܟ#N{8UmdH*yҋJ|ԬgooEalX't¯"io"`<.@ʖA665z')x=?>w[]y$cŨLJ.4#z++uMI%~оGxTLcy#T[('s=wMf noB8tS,KXBk.M +/wI̖d*?*C]:]aS|ݥou"偭@ `K"'wR7jʢYypO2JkzJtIF?[|yɣsh!DJMZ6jлM*Em[? PKRxPK$D'Configurations2/accelerator/current.xmlPKPK$DConfigurations2/toolpanel/PK$DConfigurations2/toolbar/PK$DConfigurations2/progressbar/PK$DConfigurations2/floater/PK$DConfigurations2/menubar/PK$DConfigurations2/popupmenu/PK$DConfigurations2/images/Bitmaps/PK$DConfigurations2/statusbar/PK$DMETA-INF/manifest.xmlSn +" 5ҾF ¦j~I6L֛{ٝNElī|þM춫M0: ַi#JF 9hfcl-w*ݳخIs?_&tWc#tuKF:a+ܧt`r8yR| e~ 5R!`ކ0f3K||СCϟ;vc .j]tqj޼y7okndggNR)>|8x3n޼i|cƌ^|VZƗL:4hPfͶlbmܸ1??…M4S'lGf͚3gά\ ߾}իTզM,whΝ;OJVfѣGϜ9Ӗ4hG{}lذ͛7v>Wvݻw˖-s5mF~x{ʲW-֭˗c-6m 8?F=zTwJU-5{sڵkgˇvZzzO촭< ͛7=z֯_k~U׭[)>jRWfZZ-ʕ+zYw'fdd߿?TݮO4nxC՟WU|Kp^^;w2dȩSZhao ,hݺ%m6٣7؛\YY4 \z-<{,77׮݊دᲽbk׮u[jD].1bĴiRpB̠𑿢O{mٽZ:u~aWW_|i QV?0'*P) ߣݥ%|H|j@H "u‰\j7ΩF>BVV־}j0[Z$$6q3Hg֬Y&LeHӾIؗ+V$/N1t钟2enzaÆvk?>|hOg6ysv)#щ-[F9p[^$$=w p&6^4;vpG?xɓ''uj?;I)Ǐ_~֍3gNvvGPXXh#N:UΩەg5anmZZZ1^x/Nܬ㢴]%K#kիbذaEEE=n8ONld=ndPnG8:}/_cnaEU8IcҥMڵݯl'Nedd#Sݻ֭[vS#G֭[?Ҷm[ ;~#SwH*//ϭsΝsÞIs>}nD;'OLv@ Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "RA Bj!5DH "R߂TuSIENDB`PKͪB settings.xml[w:ϯVĶS]Yxk*x %5$$OrLJyX fgg_ϹfqDIQ^$6un~~,sKcdÂCDs(t 0R#^ !YO+l.,wiQq LaI&3˧6%c4WTDD(%6%t}w{&Nor=#9t%p-Hb}aR &_)EސtKLߧ."U)kQ.[Ý7JxܶK@vZ-:?n 4K$n4ch;n[bR,;nn˸ZFC(`\ŎvH@YV2Q-ncy#f]ϿT>l~F)BcmvӴk V\xĠ=lLR $2Ҥ@o@f Ϣp;DIߡn/)vV nUGrx?of}߭9.V!Ÿl#v²"ԪbCN~J3(p =( `Rz>c4mz f( <#@ZEvT2\V3ȣ:yVt|i* kʋJ@͡J,u px}YF\ߌt-/Ѡok.L49{f{1%m[꾣V/"a9C$s% Ps9w:UPUMmmGFw= թmCޤ[3ֆí;z0T lOt6)W;jckwj@ͶZQnm^-c:,%璾NnLMbOxBd'|cɮ>^t9dU ߦ;;|"IV\PKpmPKͪB content.xmlXKo6W.CKNXMECRM:2f"wH=L9$^h<~bmwb6LUnfiݭZx I2iI'-MRMK- 7d9Ħ*@6ZIN^؃]<~g3vcXdy,?a\~n-Jwn~FłՖpR R fFm9X6Æd?fً B.1 u:]ήzyTgSe9\?ǼؽTb1+tj:=x6wޝ4xz2WyQDغo9 (ĴZn&4cu0X&.' mъ[nVZgY/),b[ÂzPO*D30mIb_R̪6P9hjIB+sMA$79PU$v|?ΜJN-Thjwֈq띂O VNV,A*jȭxR};w{ݻw$vsq e~:Uc$:k1Dmo4BS ?Jc!@V257Lr%}~Ie#B5Jgbj-X[?Fke-uMuIoiy$px=ިRIzei K02@_Dՠ\N2pAPjߩ{ 5JY)vojqR;5_Ou]!헍*ë' Rz e:8gw|l0Uq׽R 1`]1͚, .M_r2Q"h1$yR󿵡&C% :kGI=P?wkz}Tz@GیkIA7NF{}yCHc5:́X~vWRŕN3Ŵ]^c$I|udsCO< \d6ywSV7EsJaG2-:4㚲] 0 M|E˛ϻB8(mJ΄d{˙.irmPKXPKͪB styles.xmlYY6~0E%ٛРHlhGDl(Q ){_!)ʺW94fɑsu}sAXu,pyWs% pp.]!O"4[yȐ "QE(8BåV6W\ɹ ےEOtq‚O +|'07bY$鰸$uRqdNnV]uM+A{U]oJh+3 TCA+ ;|ZTO]K\LR"Խ>h@g#*94tT_F!(j΀Sv˨eӎ6&Q1b$0u inYY ]o8m\8cӒ2.ćuVSawn}~=hN<&f< Z>Hm<(hO\0<7ߧi5ևz>ai2g֯nې|\7>> Asxg#%Hb5RDPop$sV坶c͟s&~z-:.2^FDB/4MG͊hzJ[T=JqB'*&S4Olm3{^cGj9}}}S}5UϳvHՕ}?$6!aZK:`Gg,j{(-?X@q?_P K8_YJ?'*׏V_o jͦ 4kRz?PK PKͪBmeta.xmlA +ovC/]J)rC!N}mlNJ=2fx:7:y5[R0Je-{S//JV U[hZgT x'0/iF嬕ENnZWlHΨ:))hO =?I >+$yJ,ewʴ~' `r;@rJzUZb6r|>-}P"z QfC֬RDʂ\5_PKOqTPKͪB'Configurations2/accelerator/current.xmlPKPKͪBConfigurations2/floater/PKͪBConfigurations2/menubar/PKͪBConfigurations2/popupmenu/PKͪBConfigurations2/images/Bitmaps/PKͪBConfigurations2/progressbar/PKͪBConfigurations2/toolbar/PKͪBConfigurations2/statusbar/PKͪBConfigurations2/toolpanel/PKͪBMETA-INF/manifest.xmlSn +" 5ҾF ¦j~I6L֛{ٝNElī|þM춫M0: ַi#JF 9hfcl-w*ݳخIs?_&tWc#tuKF:a+ܧt`r8yR| e~ 5R!`ކ0f3K||=V#B@ZΞn<fwij^OowY"^S{} ѯ1rxB]4i jڷ05k^R/qj Sk MVɮJ[mү/ɃS<oFCQjʇyW5.qfff_DFgi.fi:Kh~@H*9[ξŢǨ= 2032s0311raa|iQqIa1RҲp*dO##$ $z h4 0谅:@Sz-*PN|`B1(RA)$FwLh z eF=ȳva G;).+'pFclbjvN7xy߽yA1Q'O32sr _UTVU~S]ֶ޾oߧg~/76wv~EA/ DKB+$MǩfqL(=ׅe gV<{"er/g_( =@ >FwÌ.w?bKZ8rJ ?d@uTRUEkTdҪr9d)[60չ` &ۆ.=efo^[˺b*=:t'ƣE9F>p**X^KQoxD]xoԓYuΔ ωj'V*!JcNcMn'F܄KRIΙo1MYPL%չiC.2BIl{QSѝo?7͸k`OzX ]~}T:$A4]xԕ)uFӶi<8O5OR-bm@v\* ^lUfQJ.{),<&9e*Wyď :ƺkIT=}{JTx)WYBNIG9\:UFu=\? s_N&ҘG^xyYt35;vf N9[}BGFv&rM }f.* ZrE}j|Q\omO>pA8ؔ/4:J~Dz[FX}w/Ŵc褗/"䋣L0'*T8K\n7g:Vv{UZBO_n:)`YOpL/!l7r]OT=uHә;UbStM1YҋŖQBإ̄}EfI`/ %Gln.~pW l;OD^AzЗ\#&E#IЕ~iAFٽվ\6T=;^mT[)8^#Cė2QGZ k2NR?>ۖʬy擜2oIfe8f)E?c&6U颊Acݧ3nB/oxsC<s>)H3cYn2sd97b}/b2)K\<=\<5y\(uSYKL7qKꏝo^7.n(Kt#`*kˁX3J{kGks>qqrg26i}-s(K!h<9Hgv>ڳbf=cDRl:Cg1]~#LLHqlgύ&o㲦_AD(IŻ3lOX{="jぷ"Um6Wkx]~Wf*tp"af%M'Z=.Z=GZXiqSUYA+mjy)ݯ/\rI>(zb9(L޼s&cf='|nk PNT Fy;VirgfWh Hp }K~ 㥿Cᮨ_UBۦLdqG`M.^Mz|wqҞ"nެm")Q7b1qQڄ8CzyDG]ͧ˨zt}mdw gNDPڒKUY[-_C~BbcϮYFq6ߛ&DSAI)S Wr :#?¾5Of=Oty?㥅3^evV/y [?~HM M l[dW3^W@B/~|uMy'jFAm[3̧!̓dcG:\1* N;gW?B䆇5HHHk2=/"#k$'cj\J3;"ZC%G\P{[(nAޤ@E![\8Drp|RJ0$T]V~&z-EцG2f_u6N̹hpZPz'iw6+pc_:%yv<*SpDrl(7{Y0E1cReAHK({UdDkkEnAq&>Ͽ7|Q3'i*~n }0;!ZtR@J^}G!oqnKȸ.}N4:&v'j ~5=vu<u O6*rGoE/ooN)-fjb/|+ 3 tnW'oHs1?^;^G[>/eg1ў7Źq٨_dB4 Us޸"UvǂtL3oՠ_,ܻ*3Lߓ}~;qU!5EKDxSfRQ)hP1,L@ɾu >)Nfh8 3H!WrT[45OgAͶMf م<# 9&yN==k8ty$mq%{Ji"LY bmE 3&ģk#^WƎ_:\#\W)T/Ug%o0j_^16c+trn̾k'[m6Af6c cU1taN[ ~fx Hlu*yh-{!7 0 vQؔ~~ y/QdsykK >&QʹbpfLՍ~[ ܹŽ*- 6Iϟ Ҋ^(y0<ݴU&,~g%20!48ֺw{s v^۫yO\i^@>sYfRBĆi3_WƟm-qh%/\R\{-5uc}j3¨X-V^#qBT &O8,˜f4BTjеvR~ouŵSbCɨ}i`VK t=p3HLf)C+OWF%eʑ]Κ^!oꋎbA mE:k>3 FM BU &b4FStFfU+hGﭚ_pm@1%/E^U7`eeS]8wUnCӓf/JM&ޛwbd0C2h_\EqlT`jSGGNO/ȮJ6}r$<ψL9{$Ye'|=3nGo{M4}UW{%&8+k'Vq57p6m)[ ΃/mG nkO~_:@ RF ؀k \bw6Pe6RG}[K,ԗoΣ}-Zf5L;Gprs+|=6{$zݖ eU|:PUq룑RHМi.]oƕn _*֪tPnc[̀'3묹@5iqi&:6Tg{E#^sO$0+Wa^Ͼf R(VE翆kzV]5>󈤵{V.ZJXqB{hF(qZba`47v"ϟףtq ;+hߟˈ-ghIg WZbmF^IH!OgzKUO?34i yc?e$h8NdLcvp a{aʝ( ^.+I3lw|& fS62ܿs~I38cm.JO_KZɯS_?N! 3N/4TA@`*4>sq #Ըe /\c84 =kwL$^V3qYs 79 M56!@?krQ: qi# dq]7z>kzT61c{ډhy^Rmč^#0Ԫ*/v>>ȿTlV3~*LuLsцEَwH>zyi?a4j9 AK[8&U}!!mC6Psݤ{Em/qޔRI+b P˵~x* ȔVq>d+*kܻ, `en'دrX;HABK>=Zu%9%ϴ3HeqN$c"h2qm$ !(I<@>5dw 2 vѝ \nl~4!X;X%1aټx ;{%SL38z9VTXc.tE2/ȉGkl2hâV+dэ镠N BȰ%Y&zm }3Chx郉"M7Un3 Z՞ĹE)LH)"IjC؉oڦA0?UT ]COo_/%Yش X_n l)ib:| -+XZ,\ Lb=;$L>K 0[Z/Պq&Z^x2˦lTNl:vIж0 g84ecZ^e#w >b-2(n3,7CĐ_䦶vK(4~NlK֋$K*\o,e%/Z^sځ|4L*>8aTrbmBY˪yŝqn%4ە IGaoGIeXx%InSUS<.43Y_}RQxH*T5HUW)k /l[!%ь}ؙ+0ؙ Fhp4G"vPI0NHYm˶EӍKA>Cz88>V341<%EPV,ybof "k:`|KKi>+%t- t/9r| !ƈaO " kXYzDw;}!lW˜EK.f<4;A/]egFa(^#&c2Ey}8!ޭlMS뎑LҔ H9WN)jB~rPjjPn!ܶNv_>t?MWD ѐ찴uN> HBIt,c f醂Ch!کg43?h1`9ɑ[cG!';ȡ4Z ^AuxYFvC52HmnrMpo81%G9Jκ bj!ubϬvFwo vONĊƮ"fGIvo_6zzGݰ Q#z4UP`p"H;ZB{1Vij;e[C8*0@;o?yoVM⻝K(WզURk㚈2Wkt@k(?"bgb)*':w`뙻4ʻp:y>q|=:Wj#52eB>>!dw}ո=qB& ljEaU/EGv L7smCmk23/um:FЋ#By!$q4 gn0 :sN4Eڱ;(}& .Y3$*jjn=/L em{2P Ӡ&ȧ޼W Np`B5B1X(.nm;l9n /k[/Qe%;ޟوmeSeVkwMme|!|xA6kՠ0TtJR4/dR%xJbߞcYw PT@2`C TRUg7Šc<`G gCDPk9}D&ٴO_dUq>Cr2%9hjpqr& 3s"-HXL[ ?Z9@|=O}&B̀Er=Em(񄎹[4 Ŏ(vS&^-ûE 1ɣ`Xm8\ßfSTqq[Fee9gGét %u8\߆]jlT!FC@-3l ́r]Kk8XI{'|41i=E\rFCLfLT}_=~.Og3$6ӏX#aC Ǜ(|,Ms() (j>P/8yit4e%@($to1u) 3]9FVC#~ iŶ=7UHgXs>Ks-,U [wHZGִ[GjnN:8$em+Ud0ni]Mo)Tzæ䐮f0ɦo_\<WCxַ2Oԏ]vNM?e\~oNj.y3u%`w'b!6p3['B퇢-:A ϫ ,]&2)Vd0h$l`#f .Pn{<&/H:Hgw6?8`yF?kȶI\݃:4D|I'&/Rza7В5 "Bz}  Q\/FjȦPSĤ_-alO-Xl>fHߝxfb鈀C#@a-fZ 7c@ճ(K P Opoy\If9]y8炵}e %ּ]['JSؕGg8}>Դ)+E( :Wi K^^zd6dÆ[<ήb "Ė(b(5 ME$!sĠLUN!S;x3(䛓{g֒oQ A*X# LD 8.j!ť'Vn#5!wW'tr#֧m}ChIqc/LҘi%ZmS_/{h\V]ꉭZDj7iSىnD;]u7ྪwzS - ==&UzY)XzžfmG3ͪ*{s' =Yԝ+YMռfr29qxY \Rc@`ɹIEQ{`lh r##<Wvr >hqYT>'XX*>XSLlwXE-HigGe־zgI[Wۦn#E 6#B\0pn!]nT_U>V8nbJŸInIj^itA\7}WXb__HNc#g\<Ă]J Hz1ѫZv=im"ځ,aH"N@|ӹg')oNPI`{ -l vzZ,( $[NM! ȍK|ApKq|fn<*&Ȕ4W'-> \Ӗ#(#SlONuVtIbh3u+b{Z-)!FtBe,_vܑ˥(mթ; \|7Tַ4C]u1PpxU(QXz>!CD kAR _-*r u:%e(R!} :ow.=Y;O׾<^?gi{ j꪿o8Uaϵu #AW:F N'ݎmゖR| /Q9C2 jQ+mHQLJMOmS4ZjMb?B #o^IkBOV_󙑞 IBNX*is{g9,Wr,\VRYrGzKx=z$&?=bUFb"ךSɃ"n_ٰiЃ0y ^Dž:?7d&Uix _1Dp3y[rEi/l$٦C& 0all&m>ᶧ_R](sw}Xqi1Sd)a\#ϰK-(5[b^CΚ}_4;ly,t^j's3zeqQZ^U9ѓP ;iԦvkVϪ<wA[,!˥ӯ6[}덜e@ko iEèEK*VKG3-^c磋=U XysCBgo*4NDZV}L):* /ͅ@P5r4/׼]х1kuj~TW-eQ@LQkJR1P ЭO rq;s#xaO$(&cEԨ3WΝ N#;XVCJU7 IML S7~тʁU'ZM/tתUֆ3$'-BĬ>nPg^yhXhhL h.,!A ~Exggbp5"cb~x-g-I)&rq*.\eD!gUUyY '?4wXX\jf<&<r(k~*/m(ar=x]4%zJ2@6. u)Jl1)54? >U qOG2hfek7fKOl2% HjHPa(}DPVߦDVrq0]='TH/JAhW>s*O⤁݂kڔn `IS9p^"ɨGhe|w^ 4&1Q7K-\MWGs%$߹t]3eE<S4x-YŗDH*/%BpqJ볽6ѮZlUGg+kqjw Hh[xX .Enݶȿ9U^ĂbhN'q@4l ffӽ!8Fu%ì KP#Gmrv0Ƿ!zcr%1Yȣ,:5q u_奕y2^m7#`šp Ēx^&=?nhxql1rC6ۀZ{Gyiˁ5' O~dIdg9PMWpGj*;oPiPzKշsawk %NH^#DI؆h#\oe16c(G}PKpq?챝QfP@r$%jDWVi| ޤ(jse-`A774] '|X!{8ulW[n=)hxXE-<=Ub\1ݶ-؍/Ch}/fiEWh17?vTXﺆo`D1koI?=s[OVZhъu^127]T#0*\ fhD6.ݗ xcwC.w"|dAȄ`ۛn&pЊŪlp cMmHF6hb-<{+bJldnJHKO%E;y{O.E/N &yg6*$ UyOӉp,Ͼx-z#$B+1VO714x 7Fi?5)QDŽJj=d"@a@pke X$Z݉'H]~\9L#Β%iR n>݈ndI௫ C Rj:$N@({a?WO4JB{Ā~Q4D[@xF3ބ\PPaEu>|kAyr atQ8`5%1sJM)hdoyJCLkaaE@:s1k-k-tȖDVfQʨ=:X:(`׍%s^[KWX~OWb&8Pty(}<#V=Q/21{ ^^lЃW#{ç}i6eAn^rC rgRA3E6/r47p}g>c-ViDv ;KYd cWeA@i`j^0,IA.:c dN겴C_٢Ɣ-fz֊-Ԏ?S,kv)!yE2BiO5>GL'jřQl ܠ /Dq!{U%x1LW$K^3 wj'tt#Pe[B7,/d_7.ZsnDY/l#8^ W4~ rb]T;th! [ޒ6]>u&YY>AT:[P~-Un:rl^+n nݣr' mQηGG8;ndNH4CBq|оc{RX>j?O.42b9>S{)= r^k˪UeJ73ɓ}0Xܻy.'RF.SV, дhO #PmO(l9n1d ;?}no'g_Z뮡I %#;(GIY%2|W! d^R@#ȡS)kO٦ t')FGB3X/76fN,-ѵwodM]$X:6&ؘ{g-KiK,b6):T)MMg(K3ɮq:>CS9׎L<PYb9I9#|9Oܨ #)PO5HjnWF+ǖF"!9%$S^٧4魜ʗt)L8Si+Kኀ+LjZ.!mu65_JۭB̶>XˬVS\)/3L ΞH+_Nbj^OS@J`J X&Wl"?y={$]>(8$ӽ?ZKPิq9pɥ-Q,mԘ#d .mSC[f8hͨh ꤖvDExy~s?7:M;v3>%6֧g0{ ~r3<~& K?le9y ؖ42 *Y'v1ђ#O!cYZwq;2a릆?I xRaoD=$IhU{2n\MO=ߓyX̥Y0L_H(&c^-0|jjc"}O,?JY\Mڧ:Grf ۶ nU )XYQjP*)laѥ< MHv7*DeQ0rQt6ǤxA#tΩ *Om}W.&d*Xĕjۦ)Q_G>׿у{,li?9eMk(дfYz\3yjCbdMX- Y`irG Ye=&!'OeYO^2 w "Y7&4ۮW~7|GFX .H=,F%D{|*Wqx<\c X̕|-q U:E<1ғr|[#i1nlTa9 yPlFC [Yo&H)9wgrhI`4Å'LZc4D\N(0>KU 4Luc8`噍u{w3gྫྷCCE:mv ZdIV:0=˨tZtv ˜]hI|E*y്WZSG'3{u}7 [pP'JDH]դ ғ1eS|LapWyg- T%ׂ6%JkCxƚˋ?|Lrk}wY,rkl]xHIb.̘V-Je4I q JGuCkHש%X: ZcYy"Y|| 1@)rBI>U+2uRPy j%dgWA5N'_cزBA%#% ?4.9Wy{`=قI<*]&}3{Mg!Mqce#%Zagemѯ%#`a:LƉ8,y1_Q݂2cV'9 >LN3aS.k) (y$t_ P/sg'G+Ք#GF[_ Z犩oneM}&SsJMrV#9<#v *2Y6b@km"ͮC1ǣ(8n94oFV LN ɷW| 4|qR\ѥ//DjF!].RWq$_yo"H XG{)5)~$Mog p;xy ,eAW#cWÜ\Tκ=N^?7'rΛYm jW4W_X̫&hLԦ_š%W)®N-}Nq%R|,3/c<;а@Y{Ia;viR5)}+A¤&Jv|4kTUɐ:}3'r\?t+G[^ݪLSpQL`7bLJDA]a:Ae|/:2X0-/;Hal8J'[JպЉ% {8vup^Շ{Lt5P9?iKZZ7}FR@iM_Zu}&9[1:w94aTԤdmbA9 fi rG1JiIM>wXgoppF]s){We??]mW򪣯ZIj*( @cGvyq=u437{!ihO663bkO({Z}=~rAMtTq^*i5Pyâ'2dsvp/.fw]J]D,ݱMz}9}@LA֦5o~#lq?N"{_O4쮄xkrGRzM%*fwx΢G33UV:+NMN&I47dp6k하JCTi%jEExv=?E %u¿Kb N,}QŸc3U4I22#64}9\4aN?z#&j GHCO?F^b`01<$̼&cpoHn2EQ|nj>o-deVRBh:(NwuXݑ]VG\7RڂىRȿOë~ɑ\xd?r%QA z$S*CJr8n}6k.ƫ,rz:dXM M8:mW)^%d߭m;è#C {õkIV].xe'khy鉧xdY T"=( 4i:@b*"JKږ&^/1v<,`\jhH]73֯MTٜ͘w+B|Ԧ:mww  !el I=أ}OW(΢v*ћ3 >4]*r9&~(+MהhL$JEDfShྶY55NxǟӇn=bXs2uB{bӭ=F 3p 2# 9uQxD0o_\ʥKR⭔{==D<}5s3q_u7^{oҊ @ `0O@5Ttiy0E:<)L`G _ .Qa}9.Un-* !a|9> *_l2! `tuS9LG_n w6=j9ѾB1[?3 rk/meo̙CQipn~ʕj&F!T? ~xm ?? oߋ^/iشTMŔ tidnWv37Vٹ= a ޺ݖ(QG^/P=9]4T$ u,U_B86(kpNq#~?" ICuǭ*t秮!7{`XKߩ$AlMMG>k`}ұk\x QAc&އJHM;vy9<$j[L:ֻiqbl]hd[^;yzMj˥iDn%M?.,s@rK/O o.*oX,>GAXJ:~@/)Ȗx A7:]b5LAu~`>*_@\{{>jboûf )|DňJpdhO.xH)eTg`Sq/i|yEQO} 9W =`s\ (3'N;`PyJmA OE*T}7 guhvs_RgY'R wsZsHLf34mFVUxPP( k3SO)S[2Gx8b,Wwpvx%doӇx1\k/̨5 ˈ+Խ/E"]'ɡ#7h L0k‡.=?~9ѢF̟z}P6sSJ@< [ Y里3פ<4W \/XF@ő:Қo~ܓ;c G^`,Xri\6>^CPyD Vbl`'~UɕF%[]+؜2mXr#= G Fn[Q;kWT|x-{Prb]_Emⴇu5C*iƨ@jλԻ䌟uv2$?.Q7U\|?b~B@OEƭDz0Hҍזoݧi(ȱn+u- MTa[3 DL [u ϿlWм ",qfx:H^JM>u~:pw?n[A׷4u𤮹XJ4MvRkx| |U/kJ"9*g:D.r.zELW {Ɣ@7׏{iNo7&uKR߉AɟGpVdurХbtKw[I+@[f)!:J<234iF:{rq ס{oŞtSpz u/nYIij[k[7,#{y]RB8N.wc/t3c] @PdK#7F*dܗvX;ΉNH"׽ebxGyӯrrRa ˂ 8w 6.lo7+j e Dkr6,(~Y>MK)wSIɋ>]dʳ)dfLJ] jzHHAD#K|cw__Gt~4KG1}>(ùQgON[޻W!#wTn(Fҍ~8ر4&x\ % ~Y^ש dF<7$Hcn*0C^8L<*`Oqǟ*E-o+U?aM|OM=q^AKUAŭ>(tBxoP'0^[Zӄؤ/lJҪ:ڌNf?=qWk]3_\uQкo^iWc=Ogj}dݗtʔKO_ =t"8/Ϡbn.* Ah-J̵wPٶƶK\uG[7݋Q$[r >{ NveDPXUUc%)6FK>oBۏC&5s'xqvUY иb. Y 9 \MaTq|v#y/Rzjr!IS.f%!gV-zؓhQ#{Χɴrw93)qtUu(Iߑ<tS^ΫU]n^)C c>9oo.jikW:.:ٕY,>yC}P w*qa=8"OOPfe`g1WQ2vZTd S2QkUH^9\WxG)D@vFygTꇅвuyPҜ~i G-A.O!^ mktvg"n)טFgPˬ%-@3,pGn%eȯu_J]9Goi(\1; Lv)[^L Y4é2_q{ֵu_gd&.1`6M뇜Wo}& ߏb}hx3d~<ϣ,G? 1j]`XL솅Xy#sf挖A7@Q% 'jܧ%k $3mgLcK}uTxRA-[=L =1-^$Z\YzZܢda).꛺ir_#J{" ;%hk6^Ǡ-u$jgzO8ԉ0?M6kh>Oy-Хk4K`(֡ sWX*skZP,,holLJǛ]Z,iXU7#{7cSv0ɉ!Í_LjcGJCF/sxu/)y (S9)x]&niRb^>W`LjpN<>+fcAXۭ ~E&V)I/$Ɠ=rc GΙh%LWbz Oh 4˂ag"rsC@-,>a#Zy #="<4߉@X0WGMwWT|NX>y_'\:I įy* %D0K*1tqEK,p#h Iv?q?GTBK7H#nD x~xn`r_aKQT d}[Mv}TLi]JQ:\wyTik fBBDm1->M{uqǫKUiPG4~/,ީ23Q2%EhF뻝8@Se_3PI+.V-R2vV[ڞl&qӭSlAFFtb3Q%*1Q; Fh7݊:чPG;b]~$yj,_}R%6xsQGS%d eZIk4ߴl $vZof@D ȿ HuC2?ݸCl,_oԐB&'vX-w#77ƽH QJ M_{w4 ':6*E ukA갴w3%Ν%n`.3" b[Ss[E |61pTu "D+y桚7w")mܙ.*_r%{6ﹼ9vBETb'͔v*wgzJK52q%'0`/~0(hc+.&2]JdlEarؽ# 4ഄN>u}L&&('FJlCi~Η\-$6~kҦaOa#wA^|T::r{p7DDyP@slU`wŘu"nqM% 1< \ c:\ κ FM7aX!NtvaGS**ˑbϊ8u"+5rV9p]4\e0qQz;õ!"T 1T^w*_C4TEl4ebD?BS8o;R%ݔ\d? P%6~GAn`,de""SFBmJ24x $S.i+7A>QDV$}A S d3b+bG{ѯzH4^Qᎏg$S,{KrɻIzKokRLy-lb}9S5F3#|K+E߾t~)&+a,ZwP:}߈l+qfkZ`Hd}GwV-+T!f6R׫<3/Hx:?iJ+cnE6V:﵉~ n-gc448c5B&@b0!$IBӫ i1P,1Ac!?N};魬esǙ@ZKDܗn, bȳ _ w4麛ga!{0%YK^"HPIy:2R2<@3wA,K@ITj9.,o`_1iIDS ҄ ] e] n'BPBo?uwPx ԉg +pͦU.\h~72jyf7tLn|׋κ~\];4-.Gf:o\SJKlp!?єZ ;e6lrg`֜R5~Ldп' \)j-Gl7}ъmJܚi?,|\>Y{.?U;VM \9?|sv*>3}^M abqAzz>E)ZRxe "#2:n*ojD9b)NgҠCׯˇ^o\~]TN, e91rDy>ssuYSߊIۤ3M+5'2 %HA|)mYL_MyZ*AbYl=g>OxAsއ!ǡ0ML%z*_3ԎĔjk/qUp1$Sc}[\пI\w '>D"UtQ.; 5w͋v>+G-.;w'sUitzcJPm,dx7`v6%*hY R_CI=bWz=i m9]z(Ft}T$`ܭI)sh*[HwWewOB$|tu_:a}eOj]P;Յ@i}R~fF_C5ySV!AP5nIMt(K 1`Eɛywbc~9^-QwX|^ة6!"gUR?a ѳ`5O~n(FOd.=FD3I(*% CnLc֛Ns4&zXe9>8Sv\tv ߵoYl)ORJI:zQak؂F?* ޚkO2SfȺf5ȴP,hWA-V~r|ف2kA\P4?\WZ.rC3ĩ ‹C>nwݶypE)䪵UqtyĄ jM# nZo zyJoE6p(~escB$LCId+B 8kaR~:7{1B+x[Vfz;M2BR@RHbZ~w_.}eM6 a$Dz )=d:/ +Z4{L1 oF>r-(B_rXDKgؘIgʫO`rĆ=:2(5Rz?⦅rsGC+==Dk_5Fg +NC 'T۳9UqwojU`큻*g[,^h jcI>@ztxiE;JsC[@Nr}U8t ̔u"h|jU GK>zcҗٶWfI,?hNpjdƿgyjIk0ֻ!QA:PS˾X|C 1>1),0ӱY g} |tZT 1Y۴d\s]HG,#XWuK#f13Hd[YkŪ^,Yǿ)tf?&0zSg9^7Eh&1e4@rxWꅣc\b9)ә_m1zwQ5sG{6UI(rKW,Wѥ.)uo 4 |K7U~ 9}Z!՜>Q[JH{k!!A.~Z'/݂ x*[ݖ6C w1W:|-CAb?µR>_qS: BypU^\E~+A|`7n'Lyĺ7IskZi4>~û'%}UU1'gzJ;0Q)auvG̤'5@n="fN'"*7f]fXh efOGzW^?^c_"(a2o56#fHh BƐ&.7֚J9RVYA:qK7a9u\?.ڞTMT{ٹ)ONleV9xJB^N_zxX{sEp_ozz_Ҹ_o.X](COx߹>I\!뇟W}-@-A?K6VW_i?Ԁ ;F1Иpe(ȈJ>),-PvuL#o}B#/,fosjթsP c Q[[ڙ)䨟aD UּY޸ee"Q6 Ra%7C֞yN[/_mۈȡmR^P:d6sٛGg=`ٖW+ʬc5oQa*8s͸'`Γ7Ȁo|aת)(`H)}VI٭JpPע&{S\ֲݨ|vk?GQ/}oqvw\EfIijoP,q% ɮ䩲(&n#^^A{J4oòo2EGc>۠ᦒ.#_h^H,J D)vUҢןz`8;z_]ƛ %F $/^#ꅒ }r0͏faz_h7]|lUW~z:e~`#9E< z{+n(g ]TSewǬrV| XDOtu\9&vƟAo,Q( fss?V ]*{tȇgLj]sfJ?z5_+J~![Rح Cӯ6^>\{ySX.n8 ?rgC|k8鑘V!svq/z ?u;kc& ֘RD5zxФcydچ9GDz~eDo+Vj/)r+x[b|m4@ Dۮm1)uŪ.\B˽if"Mh~ZKۉAi%<[!;膼e^7SWF*}K\m/}nXLL*Vў"WZ.˺ayK*v~tNjM:lYqiѺ+1M \m9B"1ɾTc48\wegu}dZ2V_9-:[J]fu/v|\Y//e48*qjbXS+OXI,ҲrZ-,3G⣺xE* jOW+W[q!^7TOjAkikɕs{?.]x(] 7(,:)7GrAb)XxƍINɑ {l)Tb j;Q j^'>0)ȺQOH]]O",C9HIrr[>=~Gǩd|D/bUiAʼwyU ; ī3BK<ٳI˰Qm3h7%>չN,prൃR[@Ad.֌'XWL; >.ԛ.?,vUb4] sEe }}Bc1S ZS;3*(ah .R4T9p|)+WmRVBn=n%*X}uՕ^ Ub5".&Uy=EX΂ YdomrT!EO P8e%  H $AZ _^z.\q'!r6L> OglN3?;n>G6&g Y]DO!ۜ8peD|8J aD a-Ul銘}8P3&I1#rci}@TcB-љ"2 - v N$Lü]m%V+ɺ Y[}T/- ep9pԧ=e ASIdwTOm+++sQz4&ى3c "E$ <+AD̫$eO :^"yH==3V7䆁xčءƹMyF޹@O1&XeMsf4]OJRw,U:@C%f$W ykEEU!%;eLf*'%hPL0;8{m#3e澗tۧG1"l!]1C ɮql(7yi=V$Di#wYyC؝lVL/0rf8+%d ]֧}oe01VY rQ.!w/U#fnN\C,$'2Jp8ҤN~Hu0_]C *yWi[vrK ›ujYն@ 7ݤYa03! /^ {9'Wb5?d-W i~hNT1+p/,=`,p|Xv젶 Ӎ+՜>2Ŷs0=mr`R/g&#B]j+،Qe5yYXcۥ9|W]ư),|Dݳqz*^vprtl .,+N8pgfc7ЍO1OUȰc2;*iVYAxh{_K<4~>ͼnjJD% $iRHCK.(kREHjoT7Ʈj1KΏR<_p˨w)M^!7n`GcˎK.*5o+W/(aMmJ 摲]|ԍ&2aI@*U^q3(ڐ%ӣv>A#[D =7ׁFW[n|1WCNO=vV8,~0?]{V^Ztx(g:_Tg%ЮV%k0}2KF9aЦ 12{iddS@u#SOᬵ8 W/4 @Ϡ9Vg%eloǫ؀@ 5 uIfʨg"NW[T [0/ͯ X]2qyePhW^t*Ud\cl^`UQ BY>1]׌t\;ϵ3 s@gM5&ۙBԄ:d}_Iwˡ31|1xyQٰt;A)Bm!uH(S^Y`xy2[XB^\dX~&d?yMz+y2ƒiQ€gykf:x㦃{P!*ef˚,!7 G8á%OSWv)δ%9ժA_|;PPyLdʤCy` M^{~SZDϗؗd 7q5H_]QDE-N~hQI!_$Sh:ͼrgWCx">&Zr#S5@%'ܰKhcecşza3X@\ ݰ\;g$e ӈe-nxjzn-d'2@|.g[sHcV8* VcuJ4T5۽\+,NtAF%.C.7ѓSH`%rf ,ɻEaq9j0 ;rϫe;ⳟS`^g8hlZ#8W4cy# zomey '۬? (DYUvI2Yh4EkȆiR3ϗ/&*K5=qao_  :|2/5@bh':` PV~߇.^=Fk>VI+49+*o B_}`GGD֋vr cg+s&^(8pf^ΧC hcopW Ӿ=k#vGi:k W42 恄&2>{6!I(fӷ,U=#U 2`I5ƄLӷ?zyQ֢f9+?|U#,4%aOpU K|:5kլ]1ѹQ⎺ ;cc0=)ԚX{l#텣uqJ:'!E 6NYiO]Y$"pGgîJGx6#Z[Uva>b!w6ř6+k! tهb\5*b%Tvv\67睲I}V,`32XעY|#<搗*ʭ(_i.l7 Kׯ uO{t[pHb/Y#r)a@@=G'34f7D9[+tM<㯺pz援-}4kF)|GҸ2_2jpg) bQyp2b5e[}E%s_љ 6KPv[\9q܄&)vro9_r9gb_Kdž=IdaBAo@`8BΛoy bɫx4R-.JX7 75^fdM"Q#?owDͬ C #B{I_d+.ºƮs_wX#߽? ɹii|dEv'km\PZ [d 6t.n{/&1Ox+Fı*BNܧPd࠭VcYP%'Æ5 x gy>uy }taq’^#60ATNt.Z`SN}NF z9/ĶjWc<^8 |x9# UWKVcm6f$hTJW]zCP)ѓkrEI[WMf@%&H8ژЅLd#6}rq"]cwvUK)ƹ3j0IAc)K Y;{`ӆ-q6?/^QфhV_~Tp͠vqW#͛;Jū AP#m8lO_6TucdxluF&6"w.\l>Ys/6$|7$GL(8±4h8:>\?#3y>N"=~c?Qn+jGnwrU>v 0uw ŅLm/ׁC^{id{ijpW~KtR#Ozq"mL6zJmaQNvͶ(*%Е kY!X듅 w5OYrgtԛg`?ywXv'K'=C7k| _gT-1ŧK|HBWe  / ~z{z":W=sPY[(x#IWg6M'!5wWnK gOJsfl_1X?>k/,m@ИIF~mLU!I|N4X}xx<'.mu8uat2{7Omڪٶ:'~(qάGT$:bpɧdG/?ZWn%;vp+"C٘=#/9WIOua {u/o ǰ<Q\[ ^NસY H[p56i־5ϧK/>cS?7Sf<&*mh/:פH:n^[w6s\j]R3(ֿOS2"$: kܮx2_(_$EVTAr#3 qW}ӗ ={=]m0@7I+Iy7-+F\Rat7!?ߝ_FVH |-ixbc @PO%o7 xocWDS$I}cȃUsWUɟmݻ|PZ Nm T՜&|̙,eMgz]ZuK?eʒ4p۝YtCd~ɩ#Qa[_xoc$pqr4Sk@  4ۓ4 ̼")`/ ^_;KR^?iq=,㛕 CK䬣\aJXC+ͽe[1ޑqd(䶲+=/y{?{CQvDD ägAo56YsvySk B Jc"Au8#̜]iGqMF"е3@j+e0|}d|r`"p;JWVf1ä]aR+N $}̳Uر@|3HzbCbk.a .b^58|i϶3}q7CHT~{6kDkR:`>߸ݽO|՞G%1&@.́Mf?pp@M" ؜Ї{(N9KGW)JW·YPpS{?<^^t\8tǦ)yĻMgl*2 pcP%5 H:uʜ>Y@E==BnzSsI:=;I{nfG3#&/ ]:b;tku^hCVҘ#kޡ\3Ʋi =a9>O9qVSy\x <`l!Y]rCKadr-|q?EŭAWEkKc4 БDސbd۔OC RK80Tz ]k ]˼SLN{y,i* [T ,1!i Bݧbf: m:;5}ϕ6Ac./:Z^Vo _|OYGkB_J%>&(L=Q5E;L=bl|Ц֕&?{z紈mXrLmW1C֖'k,q3M StCeAW?/y|ƥ_Uցs:˅0ȭ."@/7tHzQw{yu=5Dm<0%ӼJ1E$)*i /<?<B% ̑\yC].TPz7 kTë-sƤzǒvC·,+'2NHptkE6cD 䲣jF&}6A'pޢS !~$&|&Mht̬&soŁF'LxߨjHq)*i-~H< iTcv2ϒf/,E=`'b1W\Eh̪澼#lh]Bt>zarؼAA3oΜQ9$\hT|'%~ X `ݲ/6*I(&jZHaS|+.XM·A&ۆg]B׾/%pD Bֈ_3DzPi</xZu`7/i悆C] ;Ky<ý}xw%юqo]6!Pp@3nR"Ţҷu(w)Aƴ/ Bg3NT@SpuyBpbA`DR@)εрsK)kz ߀ٰ ^=ְ:Bq?8hs]b7gBѨd!$Qgo~,;7 eeHǚiQFA^˵<|#D" w܋ qd)7md᎝N0YْI{&vuAZ\H~M2i@ Gnasm}M 1jSjƁz X,>CU鿻>s۰q7G'eLSX|uG|+7h?3c9oX{{Clt$n:U:RVc"Nۊ^;u;hLu53 iK@1eޝ]Bsf^i1;6 NO v"ST] H +zqSmzӻ@U d{v%sN@I$ȉ-Ȑ/4"WLc'Žo{N~U~z,e?| yzaJze|p~I޼L4 sSU/jOF6?ݐtZ)#:w$>ƍy|H2Hx0$P3l|yBdM0b!|Ɔ gH r1IX /y n1M$37(G~1SGVcyPeueֽ+ˋ?Ez"2wzF\Ŭik„x1YxaWݣ6u&^KUgcFbw-WLARcG16ξ4% ~4ZW(%Ǡ;)ՓQ嘱]{m_ ( טnNR/nrna_"߾~vO{lSy[ IǤ<,T„{bfENз|vgc_g .;+.^E}p .LMڳHWY~7WydgEPQRPH0r䛶L͚ME]U/ryu/R%5:B1!:ȦΫq@ V NXYht x>uB#%xÃcn[(A^d`Ì#xB$7 }d}۠Oc|khQxKPӠt$4rTJgʾN ՠ`6bg]ehoư<'FW2ց߷k~UD7!&<xpލѰKg5h=q) 6։&kǦ 38H#ɢ1S2f^1XQ*:]!O]<枕? ௩cbXgkZx-FY4;|$qh:gG.MzUlU|aΖ>g+q}- rn|=fui 24E]1CB^ԯC K .4303-Nuʯ?/[KWr'Ik|×O5IX PX MB$H 1,rnٽI8f~CۊVߎ G!:׵7*tE҈ @7o#>7$ҬKku qaXm 2;Jǹ.rj2a ƭ9]k!HWMil&%:@?w#҉m;e/;kSvӖ˸an*[K.}{sV{)B)<Y!#*9&gw0#MȆ1CsF/C$kYҦ/ˣ4ZF @oͦy"q-Oil)MCC'zHs7.wpK+7~=6-x|\F_{;Wi`( A[cq.uGI3N?\e)E/szBaa jb ԟt%;Hs_[lGQ|b?L\R8(ju0Rp6+E}ϧٸp y1ŒecXh0q&5yJcۨkN;G aN,bv9 ato\㻴e_YX)xj3@WeϿHz(*y]3}cÌ@w⤫?91~/`dGe*lZמIC6Gͥ4.6 Ochס c8/sw%5-ugaO s]̈́ǭk:-X@lt몳kQڍV$z=VPx0^'bux#8pZUr^H#.UM7VgUHqwFWs dێC#fkt!f !* hVݫܞP olVj͡"#{+puHFnIxl[lbYtyo~7J9|pEZt(Spiiqa#KD{I<C,7lV&$K!ÖkNO-BP[ޡ];7_Q_lq%m) V1)b9+p!Za8xSF?**DLLØi(6݆M~$ 8hlBשԎ/]. 3߹Q dvv/}9$2BGܮ; ^X8_|HJZR,y=TL_9Z'~8I 8쎜>,*/#zSeJ:-.aAgUz E^~Xw*0%zғO%>3i1(gP7ǝl,-JՉ:;k+6)ڶq@Ԍx4}Ҥ wY*Hbml=?wtmXenw٪x> 9~Dc@h`p L\[sV+e律rsT `^C3=ҋf܃kwCL~M]eLRK]plʕ\#Eh<|Il~yW|-):4;fWsց"gNq@-+;K,pN =,۽e/H87ɵ)_͋%Sxg6Œ >xjbC`GQ{SZ]J`Gie<%eî"f~cP]ƝLi[cdFmћyR#o{ųU3EBK? 炳E'6f7MΔ OW^SwN~^q:GŪ2h3/,YPn7Lu͛,,EV54Ě ."iF]ʈׅ5t=?;KB:dz ~0G}s9iZb>{Gi&cH %íZܫ/MTTGW;~u` -TKRHsF +ݯ(I hdRltJukR(_ӧ@AtzBF%ʘ_ZI⼿X:p֦V/O mTz!󺫊r _Ś8_!#uɒgӿ> tڝ;+jowqJ:>3TUg"ߧ,1R)l#l{ as(ytSN$Jd{̋&?$`Mtв8(&:cU/H%big)J``u3f#8i0&|QX~/jE,?DwH]$"&*^Bܠ0FdPXӶsNF xD#9S-jeۃbp2 :\V%:+1rलwtO !h˾p ־UJH&9L^jTbitOq c`bL\Y/JXCƈ?~U!*Rwa|:g>3Ei&K#V%M>f~s6mDHdRS1)^d#3v& : Uoݹ΢ nؽB1gP,_׊d- 3tQ&]_3qܬ"|kiqrWrOPH gbģu3OENtO\R78p(-0r:&CP[ +.V:lO=4 J-ӗKunbS䐁G74vkx3rK2/H8q:yDTT<, v:2'ix=X;i3 Aoݏ_9UkO\q62pGsh# u5dd>9H4H`&iO,nS'"GB#~NR "{TweE t5ӄW 7Cw$yo">[l&F˫#>\y5 =W v"TXc8{^J6Ax+voHMBBfZ¸~1 N}c'%eh )]K6)G֟THFl&ti7_g/KbRƣ Md$r\|s\qբ_ bs-]6R8&;LkkS1{ŽޯW#%]_9vF`Ïߊ;;m{zVŮE (o ҒlXyeDD&t\H]%3 e wC_lw>~.>)cG:,5-0ͩ1GF~7kxw$#1|jTFdBTۮ$/.Om)o _Z*6lLqHzTgI΄FIKz#i[%L2^˟Y\}9q ]ؘBV79pJ?vs|D,`zb,#TB5kVj'RעmK?^4ׯ,W:oKt.9U)i(:FgUT%Fh5^Gy%qȖ'XYсR3MszZj\ 84C\]Ȇ^)PN%K@,\?_z=_|~cĽvxU'!!%Gm˽5M}W 'I 8ЀM#lr`|[ o39aIL QgYb#&-ӶoaMwBmՕY^[lYN1 Z]M: =zSHIPDoIpyh@Xȵ1 HDO2{2Z= KTZr^AckMђy?*gm͊0et H]LD J >"(tN9.L5=@Rׁ>Tpo !YTC3_@{v:(JNujS/+3F^nPuE~~݉`lDФqߔU‚keEMr1)˸cPƣw#Iȏ *Gq 2:+dziLޚKyJPQ!)Cw1!­L6CPWeEp2ѦTmH"Wv@嗦"δ2 )6ţ RLɽI2.kU9qTP ǔq[#<ᩆht8RғuY o׉k5)5II:޷W薵+?_Q쇌v,1Xm6_/?9ԵACS_)ψ~Hk~iIkb!< u80@EH;﷬&dv̝*Csv6V]͛%50;YF 7gҩEEcw}.Ou9¨ε'^eR`q,GIdP0n|}Z{뵶je lo^ y^`8Swxxm*vJB!5:XLb ,Κ2L7>>aʜmDMw᥊v#X ]rDFnL5.:M_xORkB=ݰt?jnKtV䘾˒P:Dz|.G1ۡ'Md뛀vbzr*nQ)?z;O<SŎ¹#3dM+i%lkۼ-]qm'qL8_Hd'\7 ʾ^EGE2lOt*ho?63e-xv+]O4VwɇEtimI紾/~v rhv{OUqL9,b [m2%iUEpOܯJ8Ju}q1:[}' e^w?1U{=ي6qG1WN1ݤj,'ooǺ[Qs 52Ok,5X3j6Y$ V/z&v**Y͡mT_;Ao42UM{/)\)x: RzirAS`(}@ĉZ%{T]%/g+n3>*,KӁ7_ضv?mQsCݻ1WGrHI_$k?+-uaZ*SDDKтU~=rYTWΫ|9Y>.l49VU§jXӲojm B 'Z>;yAi{fiTBD1wK< 86+96{߄)uljYԘNUq- 7u;}]溄q:˺TxɸOO]m yp7Ε)w켹0q_~2|qړV}[Ø"{5 < TߟCo\'<:7Q?=" kvu3 7V;al wڰvex :-igl3߾9s|< a^5zFԌO[Z`u^H @ DCy(]&B`_ȋ8Δd JnL_tj?X0ekL L[yxpgپg]H'!_͜vw]O(ԏW$lj<రI)֫vs퇷z4ԋ{UO''4`$4R] =O#hRr%gBAo|*ZMκ[,2kJ ݛb5U-=5@Rht\sm >u&I&=)a3٣)Fծ_.3Ncd/AӉqYUEkZYbaCO޼)^m+4U$D `sqdi; 4`+yv&pLT mD2ѢYZ𻻺R`1q[HשSf qrONǜ'cg/\Uyrěߦ љ0j`Iߒ`d ֛\ O!On`2bW[#-] }_\q+ #R4S{#W#FSR  f^I'c#|izۡ;r EC%9]S סU@U5w$DL?]ȣd[wf&Eb{4M5jn5 ^OKWbv9 $>mAρ)ۙl8sTJQ[}ڊ}޳Pd**XeC3}e'FY7y)Ԟ:G{M)6Y0>d:[P7c@LB%J  -@Hlx>ܷ\ lzAkRZ `usz?\搅 qm%Y$q1i YOVVessg%咔S0oi8nM:G a0ҵGiۀWoD* u*aAxٙ oY[Y{9kE  BD2"@5?͖{&( Wj6y|{ {"\eRU"!󖣑}J$}X T:P/kHfȮ3_ITVO[ޥ/g?(uۓn` wF6bjQvik!r>3`la/JGX[(پOھC|㍔3g?jZ\qNV.](8|u!ӽeWN}QQ+:쾓~Ou=+-|iO=|U%/,3eV|V(tkmԴ條HW 'QOGzC+ɢN5{x{uT^Ona}gtmp2!#}(EB(i'wf&+Ҹz^<+b5~2ӚƖKŘ@u'c NT:;L.[OٟU磪N!&dlD'7u(!Kډb9*~LcQ#}J. 6q"#?[>0f-ܘa`G#VDlRfT"LcހW0{eSw 9)rGC}C*:em=_^PRA4^Qb`!qe717ca)Ec0}1yǼ7gd-͸XKa>@t{"~!AFVv1qB KM|ÌψMDD2SNaY6"S"Y<&lU9 Ei(J0OK,  VA\s>NZ1 eU#z#G,#5<b4p•>&2( 1 mc3Txp乍{2R?x]YPƟ/xYyxT B_EPyr׎&!㥐1v|÷iƇ:(9c_^Wi^&nTb)'*)?w# $Ʉ^Jn2ڝ1eLq`&Ȫq[*"gz֡BC~@,N WX o)㘬ea՞C'WAˋ(Td'ews%| G,3N%%Ę5<~B`l3-]4o_ ~,5Rn[*'XR bg9t $(_N' #(;ǭ$Cc/TS40zS㌍xdXg%TCCx{<>ui7_zҙJUMVV&`,Rbesy H>"}' N,դ/F^ nI٩-Vų8= p*@ x]EӣB( =-Jl׃ d/L1~{KQub}K޲F0:t{gNK=f4kΪfNBCVў[x$r "O?a媙-eV͟W粧vV ٰ@0F+&jt-T:wżS_dO6Mԇ[F*뀁-!Dœs⥘*` w6&P⻈@ېJ"qa']>=,cb a$L=Gc+@xz-bq[C,֊^N.,Ba5z\b' e0s;b#(dz: ^F?6ku+: "WL]Cur 5Ra?ǀĒ(+cpm=|v`4` @CO0 L@>?Wxi_sѠS˴"jW- Qe^7I|80iQ^ aXS;)&WWd6X2-pA*!b𴃷͗ONh.5{'EdT,P2`((0hUB&CXԓ5/jo2RUg[PǰE!a8l+Vd2VF;@[:|IADJb W95:`EΧfT"l}G3h$t3ub(xE5!rS pF`O%in7}$ܕHA_EyXmx} <- WYa V!>638t0^/p;TQ#Y4 4k3ЎfS+& |G:35t[uLTqVRb_{og)S^kkmk*Nu+[ 4btDfOu;ZE:ցJFT'kritCHjtHI.Ӵ\nQm&|ˢ@=[Ma)6`1 :_) u DbUѕymh 9HMD)#ETtU#8.sWDJyZbPJhS9`dIH0;%NMZ2biH*lxk- -`Sqn7U%Uf ǠrY[2vA(_\9TpiIjMj@)M "GF"S,x%sVOLC#Sp5g\uj0S*yh0c֓LUH-w6?~ky? TcI_?Sm#簺tӜ%xZ47Z' EG$T\;On9bB1SKR;4M[됍͉-$`&?#Jo,pdWncՍ hMmß$*׊3\MQ5QtD6p,}+ ً c".uHڮټ6eqZ-fl1)T 'ǛqōǤ?l$\=Wnx݌uV۸G 4BGqlg^tt jGY 'ɽuΚ'۾ne 5|łk ] h=7jRleet[ uNOMH2u.l41u6ei muܶ$exñk c{R?;5{ClAFD;s&ԁn&K/#Z;J>.-=ԿwnEK>/Tĉu2o>-ή/8gmn^[DY%/Hw%cy_j =su=2'ǿ[}g.?TDO) ӴЁwG1Cu^Fc|ٜr{bn-G3;NB\櫵?^Tr_BZI3SkΈ_{_dF}Ϟ n}WpNpoR]#:+G&侩*iLoy}s7Xi>)g-hC3FX7xvny2@쌑hNHƟ75|i#v'e~A#bZOS!Ycs>2~GiiK< x@:=n?渰<lQ%YY˯TU>8GRxbW/{2wr*&nRGgţNW9\>egqR99yc#Me 2l'x_ϐE2OoF8UٜWBlz?~C?Cg]B-}fㅝȸ~ꞸE͠-᪙T_1:Xܥ3Rŏ˳a^R8c/8]kwԅikԨWsEi&2sFEx6;ZX#%hrpؓmӜ.]W鷵=onɀZ౶ވSBcL=MAQw9J*WW$3oYl |fquF֘Ĉ{.z<6~]˧*4A?|$hy?q:ÖOԥl?` i|Cc':mxJOM|<6;7KT@rGU8p_ZB:z]ܖvǞo:-rk͘쥟N!ri&էqPKlxrC Rǖ5.ŋ}$Rb[O䟯"†'\ g/OAk][CK$/>9\)-Z)prn)cuLT3D'_ pw)2,4w5zW6 _Un.0q.Y߂O^x:v1 \f{t7,96-p{ Sx?oEMqi$\Wa\^H0i{7T|GMeB;o]fj5q%'{|^gr#z „$zbZw#5h:g~2H~aџ xbU7_>CoNYowwܩܪd9O`Sz<3__'P1B+]E4?)14{u1?Io>q7=pC$U@ne=L6$GP 'bˮ˛˝@ĞrQpU{L;ncw3mZ!`Aۊ92rIĔhOoԺem$; ^%1XljNUJ~k@y哿,ց[Wzq7Acv\w,N T"7弶d*uZ`v Y謊dD[ͮ:h4l\rOZڨM~dMoRKOGjSu\5c{EQv.h3uJ,g?hрeYbm 6-mO_ zU-vF(R댮 ))B 7x1zTA:d9RM! eDhMu ˽3~_Y9Gέ+͉\fkƕ`e90SiܖF/|OEn$lZkaOk ̄<- c}MwycW.$bfLoe˹'F c Цz6Ǘ:{mCK/V2p:|7O52љ]˭LZQ) `_fk z롧.fo9EB֭# [Xp#bj'Ǭ; sRӬin_s:+,GW qs~̓-1IzObl`T뽯 fV"H1^>(UaV(y@T<s{F`=_3R'U %%,Etz샮?>gTμT6VxYToc{VtNY끃pN:\l,hÀ^VE~ P1|pb޷҉!-3}3~qbqn-"]rK\bu>K=r@'^\MݙR8R w.%t~6h~8ҰXs5F/V`{Dhx=g?.TJq;7%z%&0Vߚ,k$kz=C~}G>wܥl]sC`h%b˖Ƥ Fy/4##;w6/7u:P0;ɧ[C9]sݜqj@b25e #ȉ[\Bx124l>J8܅2S&fDa;;ӭtq-W:"86Pml(q3T>wU *5龲TEyP(8k|ɔ]B#i>f[f[qx=}Uc>(T>>QX "R ][݆c!@.4u}A{n#"VL}! @WUܶ g;6}տZ@.>;)Ckt`g tҹzc`LLHx8 )qxaBahi蘹xo!)<*ܭF!n5*D@سc5&Om\X3Nm÷:ErS$UWa6 ! أGpȈG8BÏMujX{)FڕP *; +: 0ɢ6CЋX)[hI>P lֱk5QVxӫL9S4TdbA wKv6[f-&"B&+ BYp ߤsjd' e;=U@Ņaw[z "h0dnTuYic`]i45 ˵2$ûtnZ 篺RGfsacV5*ugL/cnlD>}iA~0W{6}$ RVC1tJCvLxRe*a\{(#leR, e?I=]갇Uw ?N/.Hw1O8i8{A,@|;RCQ53zQZA^i=\#FhAJ={9: fۏ涠%KnM{xY@O%$37Rku=4."mbϸ: WM|J1g ~m3Y'Gpa,Y*4w9tjY ;@nqAݲCL74g!FyXnX=n'-J5nzL@{2mFu Ig%8DzQ,s劧ѱMo‹AO : Xe AXMeK]o=WUz=UJr"F^F>Y3-[edfkIpb(9`I2D0HHg>WDUa5`OZJ,o.}(p[=H0!%Пix >ښ{Եˀ~ffxwcH)ƞer /oO 8<N\ry#Hgܖ{PXPtt"AF@ht$H& ޑ>>i!=٠+݂\u1n.dacAo]tsxh8R5,ÿ}^cw36)*Zj5GSxцw=J u5k՘-c Mm$-9Xqډpu.U&C, Z߄E:gK0h\HYsYl\&-F:??vPzSOG);{{;tlz'~394vd_+Àѿ2u3eF>ssوh `nMZV;{|S~@ψs`_?!/D?Gf^bSp%g4Zv6NGܻ,O;T8ccpL&ZzKБ0.Ksu|1MA_x[>=U bjKL~플n`" +mQ& Yb/B}~_͹fC Y2ԜOԈؚ(rqYT7L0ZrVm uZΕ%$bF 512c sUv T"Xe] `:Jybl|A=-7_XN*pl|_GWvY=2FC[D8h|pjf#XRBm*I@daY$yĎ3UI:7akxS?bM(I4<=P@Q{$ԔRzvOB|vՕ=}L qBbh}G%DR*+#soQrX1ecIĐ,yP,n]f/ŁD`Q˃߅BĥZ*z}gL{"Y}I6`\TZirٷW_q @'u Ni,Xp >l~SfUQ>zgK$ց]`<=R 3eQҡՒ#(m: C>ں=0^%wcz; @O UoǁJDZg;Ȇh ͪS*ɟʋ&6mwiQ&qZ5 %&0ĦCt?L)QԒD ?ڇ8GN _|:w`ޗm=izT@_Ag'K\{i @/ lR ws)u YDXz-%| ;H z4CYTlNDj䒉~mǶյwN<^3U h/Db4 \@'mx@i\hQ@Ǩ536+*5Jz[^lQ~/WUǀ txϷ4qb`F>q;꜠ZJi#NCm vd/#\!S:]wKg3a@0?b|,OKlU9ڹB_QIk?9K ׊=/JQѱ63O±ÚwR7e*>94Cv }mg.WU|P}i]XpTt[qjhoZ)ϐV;zlJ"^;#E\=PwȨOop>o_ĥ/஭p ~7ZZB'=:5؋4^Ө^]>~XчAa^2ʇQv]@`ܽȻõX޽"8 ׼!o uwg|\LkL3sW L/[ஆA Q~/ΛdxUMy!BY!scS=*2i5lMt]~ ҆}\Oѧ5VJ*g[( {RBY%:%k>(P)]@+aޭ4 $/_cP2* 6 *Bh};_0|uGVK 3ѼtMw>g;/R'rY4zzWL\Y-7ZGCx[ѽ|H l@J=db67]o̲ϤQyEboTԳ[s,'vAF9VDx*"w,V}zMJiu:u7+;dun<‘^~}K;1x`9yk@TPoyn7x[]  P^*,vˌa8^^$n̶|˔7Ghi ֱQ a>}Մ4xq67R>j w/~L^M|$rItR!@ $6.` Va8,w_ -h bK~Y p9}q-~p`TEΫ leordS 1?2)/Y,pB _.}PYx$ݡӻz-Ò?O+{ba]l|c~,0 eloG9)]GL39iWI(xĭz0+1G jsr>9tX(ܕ,-Xl+<|m7G׏~z);SfAc{h5 G'(I 2ٰ[qYҿFAI]@ %iI o晹Xm/v oRRQo~̘E| g A}͈G3]7n?(rROmnmemLX_@ryYw7 3>٣x;k6hߗxIJSXz>E:HmHʳ=0H!8~gXӟL=U^v5W@` lR*Nvt?|z/ỳɫSk3=R(<*UD/$P37Ila+S)v o6yE3s_P VT#?Ԋcxq'(Vh]loh^Y8b_"ΗxR p% 5T]eYVEI+X1I+sH*p6ْUpV3LHRv 6ˢv y-1S?? "Ͱc\Ajԯ'ia$\CߨɗX^ Z`.9kR(ŀ[)Vh!s(dNI1뱺^d倧T HԫDyȕˆt*JbBr%C=wV]+\;|cH&`볳~0i( U3Iʐ@> wx_9<ه3Τ5'4\Q: Gj-Mmcr޸(-GA]]МG*./y)-65/OFe>D,6y#Zne WJq%7\HV 1[Rqhb!Qk>X0@I)5c[oպVTХ'dpj1xA3ϴ#,bq]ZgerR;bqn\հ"S>8:> _J#DTafo6v@P64/^]$ٓ2[H '`93\@wM_q|tͻzPSpM] (@(ƯY <gh~Hu=4Z'd:,Qs窘/^@sUf7'%繁wH0guaTPjm*XD/oDUsVjBV^sQ>Ñ|_l4tU_Er~P0?1͆K q%Q!*=*,[s?Fi i B<|txo=rV|$,efz.{ uro_'ʦ|)#-JS Oz{Rcw˺wT2׬~C+aP)4g,H&+MBmA+avV,R S8ksmjif9x5ۅv!DC=nSb4ywAc܁_m8R o=ކzP1S/jW 7Q,."qr7ꈥ:VCdzU-yv чN Sy$!9}η 掤i]3tz:dDE lhTwTR[6i wv/[.*~v} OOXJ$oz6Jp 5vmb^0B$#>:1 LQc@^:E峂Z@Ǽ.6)/w*+K'Ř?>Q $ )ǎtbKTΎGF<ޗc\T';'&vU -/+pV(`Jky]CroK,5Mofè2l#UA[Am0:AZc+MP-M9IܥiE&B_3yv%_()<2fa,?#j;ښhCb$ffU-Q՟eh[`  i;V-S1 {',m "e -;'N_Iy{J7+PbEExE^ϬsZVfI~QV~ tzP5 d գ51!*OŃm4Է+17[oW~\jsAU'Ki;ֹΗwCVz M:5U3 `OxU-{ԀB^;ˉdA*0)Gj-XN֍(D2'.0}X`gjIۿO3b6B(PaJ m*UtN3Q #`G>d<2sxۙclhb`?7P_3CY. Ѥ(kFU޶TЛnDmB[W S4+I(0PGD5y48}!s~"gY)?uȷW, f[5y/$WMp3g d3!aM#~nb:5~VEvE;'Zg)AXZ+:c\Mc dkLcnB'ZX4}թCCW.זo 9\28r_߿! U 1kP_l>@m߆F3E}dSI]7C4!@u-ݎ aƘ A28gn70`9-TǮ5h=^ xC*D\73э7*E,߿Ym*eOAKdoMP4VZZv` 4(%3S'ɍFͤWp6|ĝ*Uyt!vAe.>#ij4RTW6 3$֚[9JaDŮ3T0řJ|;pyahޣ. N,-fjԶ:ǘz+xO~`cFh*8mQev̯,\Jw_7Ň['ɼ ~|K< =Rk߿57ZA˰@AZVmXt 5@ ߌ=cD, t+i Gdi%~& qnPϥy .RtԩGLJ|)$0LKnUh;"H094^9a #K 4. x{?vڲ&\'Iba-E;B*>76%!YP'\fI|N? 4nCcWAQn1t:gźϧ Z92cG77w$w(ZEHP[v0Jl?, %-6xMDZЗ5t|;Q/vb m]4uQt^6{]z$|PՁ69D0g<⋞(n Q~3#r@DX.pꙪES={|08XFDy6D<\AWa}CQ |H\-h7]tV+?:0#M f%ikK-f:#PW[=OUc: T=?u* 54^Dμ-YXUgC+k&7_.DR37,;J{.όOs0-`Oo>BZTq~B6|(tݘW{]9)>"Q<-KCM( B<#ּ X k5G{>ve ̺3JvyjAA HG^;ӪAAU>dBLY`;iuQn>󝊵'=qFΈOI2+۫8s#zKœ"i[63fHi ԧ+PtNj>FNXc%xrT3mRV|r-$%8sxl%x<3sc__ O&ڶUeV"b`/c0)eA\8w:f̴/=W72sN` ?ULʳ\MlN)3BrM3p+ޕ|á( ObEݶ!P2*-}xs}J>/]3kX#/ `l-:m7>(eK55kUZMQU/6WǵůT BK/j<'D71<ϲi}گB#fD7X 639ç_^;Q1ZS{2Z]kF7RdzW,OfiÂ9 Y[BڔrÑz=MRci= ׮I}@[:KEnPw|5|iu.Uxq/6&5|p"^5*1p -HY)żwaמYn+h nzr,K\^_[Oo{S5K>!G]u_.ygKCZ"?tt{ZNJPf <dͽETJ HؗyTfGhR'7.Wz~婄x^WE5E[F6g%W͆ t=.YUC !hw.k?1#WQH-_pK^;hNwϣͱjrGk\GEb.`ءڴ2u)4__BSt9v\ytzfѯ.D):_ M__D%]i0Ghɗ>9ᰝos΍Qa;jG/mR\Ff?eMfW ' ߿u ηof^*VLɤ{vC!2țT.gW\~sڗWB^'R )sm*#IKH݅ʣSHwUL{VmgG呩CG|jj0~tĝ]Ek}Wis'(ʳ-8x祵 c_O-hT #m ëu$8lqj&%- 4%8SF)$֞k)`s^brWeݱ )ǯd9pHCRߖ3 o?@_ʕu=*{fHO؝JYII~2,F_:lį48r㰙姂aO' |Zy|4Tl,Nx~IΏ:R\c};xua]n#G&>;jZ{KW6I9Z,Mڢ䄐-J3kiPg{4z4_ޥԙoɼU3~ypsn?p/t'O+=zފWFD)Od*#Df~\L0i;-?OMi8}j}yQ=C ]vl(1JF9ty55iEۃ.ԃȺW~ॲj>*fʆ8~.&֯hYrhڧ((H ڿCv5rQ_/:b%&/{,;)Q&1S_e)M/]D -XIp(o]DJW DALiȀ<2d8!"[.8̸.n\R5/!wU_]j3sM3 q߹-]7kM*c1bGsC;a??SUֻ&Z3ab, Zީy;V[2s]q7o&N+cI=6_9?uRV]ŸϪmdI%õ>8+?G3=kOoOU#r\ HZV0Uz*|Lk5:)`~uZE|7e;M )}HZF/{k|y\.gZb* wurJU{ձW5w\}WٷP?S%箱7g>u{C9\sCM{##~ Ҳ<=tE an z+ѳtJǼ`n$K?>\m,ZSAY7T%Mx"*1OlTrSۼ);8ÓtUQ|?j73 oLו R֚OK@pXe+^{~O5($Q͓_Dw5x7xU {M.>zVw>NsEGd׏ȇ5ObdE&tL+CmI;-rwta"d1}1ZNNϿKF,xh\# $fVA)0iZqi( ?#~& r':X?u?GL+"ýrqfNh'c!H%hљ.C;:@ z%a&zWMVwRzB6y#Mw-ӏn^`Otv ؾOTMQ;| +|U}<ƃ Mz4s,yBTy=r ?L<&S<ϐ?~qцgɟӫE `S̃zUs|6s6խYa)ƥĔQV4t샺fO4(7/{O[*\`x† )RA,Q-|Z0অIofJkRjOR*QCFQ"AˑF-;3j*UzGjA "8"Mb:3}NmIx=U/ ܶ<"4@6" B$T]y]josʃwYS\^LWcN{9/ G*I]]VɀD(\_n4ڎJ9"[9Bcm,LОl(`vTxS=v<^]yſm2fM3&9ڈ.ˆ×;mlMHmW0[ujƁEgҰhs Q Fg6.v6pĈ[= bE]({+> v6㸏C&u.1o^ @7>0i*7r̚\gf]kӅoQ}K #`g̓ &|Ǫe67}} \FӁZM,z?_ӑJ/cꊈ1㞀{- {mx%蛤=֬˟"WwdͤM +&)T(cX3LBfy+N6'ı8mn{FV=Ʒ4Q9a` g4"͓N?DW~0(,XwcIU' NHKu^_{x\+V52Bщtg9,4p'n '1i0 _ƪw%kѶSqK o'81Bu5c R@\3Tfe`)OT c>"v=. 0fZ,TwpeAi/uK-]WN { Ө‡IS8c>rwiZZQp[VW چt_k/>-WʆO3ǟƉC*(DpڄS@3,m%=A62U O~]ϻ׼e%m qdB!b١ NYG~C<:CkqonAݶޜL A4 G\Fnsb9ib[ctkj?hw\֬Yٱvs#]#?ˊN) OĠƩm T52Mۋ귅㻀8E<kfU89gPٸeM󃍙v2#.Wą""fE >ʷH'}3ntؕ2\ KByՊ*glsu 5FB Ԋk감!`~Ӹ򞠞h=XgKr=X"m-ugҺE֜7&V@nP"BpcF;yuk;o]O`N}(ƒGqDՖg)wT-Y9ƲPiL+f 8URWv!8IVy݆IIwCU-?9D~Ww/HT{#vϗeq GPm^6EJ^WڨY.QGjaFSF~[CL?K^(Sxcu^Uy˩yӐVcӗ4)=k szH,w1 .g_; TZgv nGqթ)XpԲz"$uIl*P#WmRkp'=6:FQGb}V\xe qf $-Y!Lc!a?IZi7ctf{OQq-\~W/#Sa)WVR-XmӔ W4YxUK8Gΰj\~eSoBf2ex\qk9Zo1M`\$]<pߑ}xbK ŋ Y2n&}ًO+plVp}=i̡JmT0NsB\͂r3ŏ&m x=q{TD . -Vmts^{ / LG5O.,[oBӬrS,Fyь]I&EqiX(u>~n;2-`Ǐ2=&[t#tƺ C׽ƦȉN ]A4ׁT2^*_sagsЇL#YF 5pfjpkMˇ#m- Rsm[ 5*M\b3rDJ [AZ:%tFPJD;FJ7ʐ5r0=}~}zGe栥 k5v bf>.tSUUX^Qi'֏ 0h Ah75\3LK=W*}n+)oȖ/^B^zޖD$=+` I ^ poޒݱ,)72 #KKĄ<5GH08v~!A THW/0P-&FS#ga2x OazC┌%\릢eqZa'*VѥúBa4֯+sEsPEr4Pet 1ޑNJf?Ow͞dܣ+\SU$%S*泉,"Ak6/؞@nN7CAAU'd:zts vЦ)W6[$,\ĵ!ٿ]Si0Gj:7F\^RΗtkgD nXN}7)bDp@ W0#F={+zL`™Gp:A7*Cfwd!| i%d3d·BwmD8;"/&9Yp-rbvHIu! eD퉨dYϥ3ol C飾56J ӡ+~y2eg ^S—?6Uu6ejDG҃tkݎN&tNPd뼉n{;QEĈQR%1Reoۼ’#qPcz#/ǀi/J 2X["BJBE9Zb )(y.}],*y ]j+N~PI[?/.YGb_@h\KySwkp(i~[>]*ٚmu7=4CifAӢ^&{ 3K撸xh#g6.5b=_@Vb%,\۝%+[gHŧfܜ|?(!,#ǜN6盖`$-@w@umBB`O 0Tb4fI.rH56kq?$qk8XZFT:8dzzkԯ7>}]ۃSC dq|]pW:L> ;/҇8TC/O1Hq}X[J\O26^ Xԗ3p9~L:YPb~C fZf^^nUӇ욺|yrNmYls1nLFm;O֗++Աh㊙ҡ9F`n_W^زk?c^?DQ|f@f0g_KTVGg8Y59NAK O[t 01ၥǟge?$/;#5%LIrm=)VmJۯT/geJB~z%VYSt_4W„1XK\97LR1 L׹}w/K MW"♷02::S@4`[(C]# AijLJ2b0\w=Em2oW.h0ߙ%2^ijDΏf&*k%h'y B:^BGO= D(4yi@!M>B/ J~R%}RqU\eS9bBp%.P@ط].ofg;/ |m 2/;{hS?bރsU$~Lv-t&<AEG%A4U\9m01D&'9d?iQ9oŶ8λ9 ?\KmHp NPWW| 3j`v.k=.__d R50:&:¹)4>1ajO=Mv(tCG厭@+I3WdcCc0ձ؄e' LB ׾#A5AۡKZ!x@U-wJש* ,Q]VxmcۃԱȤg:j#F+ %k$ 7Uρ,.[6>Wto1CY˒.Kzۑ.o{0FeǼBzJG>_*-.Eiy%4ىN2i?aBڍD/k>ziT=j)R&IGeg :,4}$'ǯn)Am fKTȯΟ{QrLʅ)3ymZ4{/2 ~4s{:&Jũ{ѩ!\7&G qJ7 f-?g>C(Dʳ}oj&(3DdFhdWZ>(LZBrmE}NjENם|M䜗JƬgOMHVgGQ@& zD7'{eƃ[#ݪ=S8-wޢv2y)uW?2G zbmAنd>~*CDAMm -(LR^ }۷th5Cl>zI~:ҏAjkdPRJF #&pdLhX:z*LNv0x֜V x< %goDu9}nwޜxPW$!.:.մ}%ESbM& ɢҐS'yͳ9:Kf:)'Iٓ'mɄm@߶گk48M:(1纶Ї,b`m;#uj0~%꺏S9n ?^`.lY+5J eE#$rMˎڢ*E;<7HbS,n}wG n|CSf޷LeSxۧ%یl=^P>JIaB(}XK8ARN?#2nrŚ|sLcu X+N Dm%(I- pPHtt9\9R*4lT}TLURt~:}F>} :/?.Y7\ԿHe+X4N cOaaMEj_Te>b4Ӄ+/cliTոݪ$$*&cYGbo=R 3ё(5 ״)2d3+߬0H/l|G_B=(d>6+jcZp IGz:l8'E'\f_j*8}HYox [fO&ԇ~'(UP-&N:aViee ivxUb\`J{PKs[#&Z 2W=^=3fpS ˋ"'TYXrl[y"ιiiݛŨ2Kin` s*lj}~A3_c0ñ,ΤS9Y/B=r-23ҳ) SꯘP}l3)!薋yeZ8nL TtWW,{^$QU%-dv8c@sz<[%}O5 HWȨVH] `n-?3﷾w~νA jk l2B;x08Rɤ?'.n&F1c+6R1VVf=(|Oc_Uj֋ꊽK4رW*XK_gbZ2U޼0Wr/!.ߩ$'42a""ҳfɹZN5Fw#c4Rt6NI3CE[?KYqDXCBI|&4K 8C:X;ऋ)y2LjP+Fd;[ j=|&6Wfv4~y"W=AW&&TU-{0}xbv,d)^<BII불OrA (K,*#z]taI]TpӱXKxk>ݥw8sa7E")hk@n^tUj4Tto|R .TRJ9r\p27O fX^m뭐:%\tu!9I|Yu!q?qGky-f(sC˅3k}̯ x+ޅ~Ȅ7& DI QjsAO@,8㨗Y,tϸőw:՞bl-0Uu_yRDP| #*"Np)XS;%?#;|n1;~N&2cGx(Kq1!u+G x ku8J>f"tOx̄wHn Mt-zpc@Ia됪k-P!'sW˅߲ܳ(uڹpdC^f׮n-a"?2/'ޖ# ӓA(0G(˦>⁷u7\K #N9WVaݜQ&@;x]8&K{>:lxV$/SȚTSb8鎮OOX] 8w A7>7'O TiHϧ E!"a#?A΃S#6HKC⮬T.`po|[/w7'U2Y*e4U൭__,M2=k@˚K_0/'Q>]4O"#BOX@D 71h/F8zkh~2HƟ5P.Ól*=!|XD($.6̇D/M9<.>NV8&09F"+>f=d5&>0w),vrra _z~>J5⯶s VjyJ;FQ^~N23?s_|+g!2Y@Q R\g&H6 !˸p }{է^.rL.GJH~ r d6bnb>W.&8Pq=EЋ|Ȃvt d36jf`}!?x{vX`i_ٯ>HL ߩ(~L˃"u>_ۃzbb 'kI1Sx8ȴyDU <`{ԅMV=,;#lkWTyS6ٯ`v }XAFDrpXpԱ<L.Ä< Ɔv|wi{Cp t:uq9l9 Ac8DŽvH; Z.SU2mHVjJv=1+Hv1s!XKEg~R܂"Pjjv1uJBd  ln9praQXApg'ܪ 02L3\itؾ}H {Wttܽ h1Rb=pYE"51 I'{l{-9LO(&в|px'p |!l%.C;=5.vN@-e cjN_]8"|,RM-QrվVhwՓ;@|Ż #L~~v"+s&[e"B~v~W1rR_>ySlfI(?Oǟ?C3YX 1Nx &+r_<۩ .NXX5;Z"ĭqwo;@X{hjna:yofY*vxH՝B{[>)k03SAnƮ.}{Y6C}ClEbHnɋ[|'ãL骉:pZ(vGMoǽ@f|~=9}[mǛv ʁi];爝!BL6VӄIiJlotղN͟!(0\LNb-12KQ#%@!Ovùu-RCXx :0_XB'P5d yqX )B-q%6c}EDiJh?#w υVCEMԨD1/[=У]jC1 nP^A |K[UzkHD\n0k:֛`!#m⟅>uì>&S_sK/?V8v:G|Uj֓ȁߖi-96V>v_6$ 焆@36Kce؜.%<:cT"Kah$3ٔNU7NYX~֟38>+~9.J^\Xg4g߲0?SwՏYT ? VLVf4?ڢ-A+;>G++s.T•oa]=uݖ%)}Fm9D4d,lϧ*C7e3!\ih)QV,Ӻx]V`kWNpfA`q\Cfg]_&췑v-F)U`hvַz,뾝כ,%&)AҗqЧUC"Q}jjIiN}_ ݇.N }v\Jq$c*y,|ÃG#o1}^@]<c!J _hQl@ acۖO^WjT2*jނgEZ?=ab[|SE;"&w.AyOɦkA4:ËW/ +Y'_B&h&jp:va!z FhF;/erبž Y&;)jG27 J}Wֻuc{E[C~sJUgz9n2\b tWd(6#_\Lzr<"S4I*PhDS${K⁨ +n֬~ ^*=z|Cp)pMwֱsZ4FggٚQGS#pB:i\%0BNIf_:;8 Ŭ? nq 2PT)Me1Ct%imz<$g\PdO=O0ٞ*Z{E7jQ-a*Ze_^!}l豭oA8iC%ÓHb#n'|W6l M}A _:HGPBOHf@ͪ(1%!Y+ɪM jDIpir{#M!\~y'y*,Aݤl#$izr`1Ddp1e`DG2JL3dl!O$Uej\tD[jT#0V&< hs+Zv "juۢV 3@BnoV6 4SMY? oH\U5qke3=Ě_҇|[X}1k^l~BWꏼa( =:F=}LPB⠝9k Ps+flBP{= tbrpD{Wo [kImf5h=I2́M DmݭMcȯē&sWYkJ\=WtŰ|,9ާl԰),Svd+ qa\=89T-qV`+:8_ˆl݊ݐ.}z1kX5)WaF!,崮Mŷ }ad|h_Fq(3fR7mА |@'(/N",FQۇJ[QLMxşQ({ȪׁQQS^sZ6j,.lL?2)ݒ8 0FS|ںxc&ɂ8xEs҇jqZTcǨ!baga=gNd*'( R7^pk"4LX|Plu1ӪW0<?p:fGR+2 Us]Cj^c ~Ttvm,v q656;q; ^lTa+fI)2,s?⬤jh#){j%H}7:{|$(00.Wa\ĐZœ)v٥G)Ln3\]N$Kb][2GAo%63FQ[ 1YS^mu9gOf+^g}“qJ䗌8:)P$|ydzmMI rzpa .<7Kߖ/{=͞E],vD9b }ns:` _q5 05t;PAy (6w]G*=3cu_zyzeT=[+)%C>V;@Mnj?gGZP#ŭâE[cVb^dgANٯ+Rv ]hxfϟ觭6-!YL`O?F Jڿi4!Sȯ b42J:~a_=VڡFF>wܾQk3HU?X~aK0ˈ+:8$6}C_A']cԠcUR~wQF 8v8s/ ?;;.'/LDsꟾA7!$#Sa"d6&Tn}Kd<:/' (*Ԣ&ZzjseqbI"WFO%ӳ97_k:x "|kW(۾m׷rأqr \gOѨ'Do * ңq#$.@:JϪ^WFy\9mlGB\[ބǍ:X#\ YҮ8^25d3ޖed#_j4'sx#Vȷ5c0c$ vWRr7 DH쟮g6o6*ZO_~@}kf7{̒3M/nX]Z(B1{LtCѡ V wi\Dwݜjh>X hC#85a N&O?3scK>$%ʩe}y  p&rfAxr|h[cPjK 7e[ a(\ qBsEx#GI"IzlO -ϜN4ٞȖ~ (]ܤFKRNEŮj(w|/kEm z^T ~h6_roP7奨;Θ_ 8 J7=j(p"$'X4s CI;6c5;o,~48{HrEYǙ6HIi G[,~\iaU+x\ߢF0)R\dQ;ozwjPA#I۝k^vr]o@pL} ;]g, NEdL$~ZLJWL{ K'm!~DYAj/=YZ><\]~V=|PF'31n1!I H &E=Y1BA 9^&aˊ(더"/jm*  mD y{ UkX,qtqM}JI(R#EZZjF( 4G)(*1t@:Fnlq{>{N*~T4ٌ+ aUT'9d>_ϭO|)T\i> ^jBߪ`0B>w):Mv)d}l:!W}Lmf3hsP &D!7pt7XZ缤aՠ ENRoIu*3C@ ۣ1_Y.ңvd@ج+ɧ~-2l&spPH%X]} G8gf4xR+Cūi "ED<T>Qluw,@B[hͮǡ9祸Q7FreW #9/NuvN IWg*pM>$r7U' KA7Ͱ40Hc>Ju`l&Pb\B8Ϩ`v.Ӡs2Y!LOXP==^Tm|SD#NEgpEQve1rLQh\!1 D,l&lNE p?m-5.2NM8:K;ֱ-YV$_zarj8s!p#pj\у*o{*ƍXt(*L|)t~szXxZ!)VpAc<P'Eh"j~iymn5G^9_u~\;&PX0<iMY {]S R'VMG 3* ''ꬭ!-g<t@$f};7Җ--lUj"'KUL ڄ﹅d=6LQQ΄M8^۳`p:&ʃ !A@Q#"PGH,7uPh?tXFCSU:aZCzpxGíS`ܫ\üh aA&$@.z0E`v_MMk-, #Rpa J)=+ܺaa0i{W s ^ϿS&PO@yB9C%GϷo)[Ё84}O}R>~X}-/7x衄Vj~j\toA tɂ~t -O"P4Mԉ+)ήf{_xq!{v\=n aꋴ υGyGXN{f:_B&d:m O5d3O,OMAvѽG o7nb,t܉' /Rler)b]gXD>G>ڽV]8V< 152X"=L^>Pz3brE2c4$=Afk>orV-LJE|Upb"IBNsƱf UT??);w)+s :dIJ댥TO*}FSg8t1-h}(Hl  lAZE<*bhnS0=S^b~+zb5Z2` /).31gߪwd' {#583z_ꋪђ҆D,SIWbmZ*s W0oy%w0l/QI媥V<4 J5-;Z+ܦ8,rBIԩ? ;3xQofh 1;?Wn.# 'T\C{84=#2%5E+URy]Q@xLl./tx ؒi磆 ^N&͈'=bIMO3j@_O'0E*+Rp#ض'?w|A6EF\ le4IB" :\%4E=fЂ, u !'L+)TkAb&yk?s^qZ{jטbA ԯi`=^ : bHLkpp~FANv=s<;'^@xqc\PTu]T=Қ/R [8H3J!~ja^1U"8ͰMާ,tЂ"VRN6 kx^ O^Py2'ײg%CY`9RhLlE/@}{k;7 ޸ы,OT8zm]*m D*Wr)..)yၨp.g= +qZE vBlQpm7/Ź^>$-HrYIF1EQb}#F5/Jju12[;4%[h8<KXxK^3dGP} 10+ .3H<: mD_Z[ѕrvc.yUΜVXCoP-dߕ@2{ėB>3AH͆" +Si+UdzXE| 7bت1h7Z<%J0EmͷR 4~(nS m@":2;!,IhUՅ$ eyL \ںI,HYV;D2^$~8;rxԥߺ.XSN 4$^"@-.R!J+u *+˽*v4N-pMcp 0,Rc̓I٨ DmW[# 1~s&Jࡵ c}m64@ ER5(`vk~9p a2a5Ǝ~uۈcه2ٮJIWx5Uͫ\cz?`$>b+lVdARcY [5(V]CY}6<,!@_r6If?^U:2h v_&x傿ZlRB>3Mjz7RL]:^RXpS.en]?@iGؑrc- EBǃ5b]2d~)[  ^? ,м\X7Mq5 )pyD3ryߞzNPc/PC;*ĕ*}2[JxZ#pk#Ze}j:PkvjGv]d;M "==#-C~HpQQվ,zn0{R""4s.aU)On0x2K1}ݺpsp)_5ȝ Xu_j_z?l̿ nKn;DYE5Rx$Sp>/ި :^;jVNuWś*Ww䈹"kN2xӏ{+ӗuǯ*|ueڲ4`ɈIZU_6鯃䤑Os^_;Z7) C8ezZ-}s8'Y?jVFachb}d<ዴӽ>5I4Fx,]b]U{w?)=ϲPkdz{gkVʡP9/gB>5)r\*|EFvu5VW8 F:w]bb E6e>~e\nO= L>8F;԰ ; T"[lE0Q 3ww.=?_ՠWo4I$^կzLP͇nKf`6{X7h2}y27XzRIjE<Y +uˮBGl0GX5飑TXٷHu.~m99yg'ot~8ۮM'c34^hWYOoN9PgsfVKW hgJ}RC1oꚝ=( U5zh$w1%BFL{GVZ6-^?bmCF~sePvlSVE%л2Wx݉#pɱ<|;s̽<ȓ!F PRk#(Fl¨:n\Nw(pDCUxُn'Ilk< ZAuӻ]Rs;M(?P.sL1X84QvHzґE&yq}Dl/-Z .ްE}> {m7 C~PI9?AZ,)JPz1JVUa-G=}%T*=y %.ׁO$ux){H[VeP#mKPݓl:ժt<9T͕j (Z$rFGMNe6gv# @==ϾΗK=R)Jj;ƾzi }pWr}TQK )Ae6d߂V^H=P fp6l%5ȻԿf3Q}"/~=noSWCSV8U).sVSmX# ݚuֻ#S;&灑1C׍͓Jsw=YU5n2^$'%CO vM6tgnC#cz;Z?lLS#lL )-r?f[M2dgr|/wl{_ 1]&+jJlW%7 "q&_#j+x H޹imz;[ A)gb w8e[^Ny#cȬ]mrDk>X1N(pDm*'dTYy5cwOpA"bҏǀψJSI`QB|.Ҁ?aSӼ;,Z#g׈_apϼRiߜyV~L9' DO'"3cdO^:4v}a>Djw Ae&p;ƞ]M"S*z[tsFw,m>YV@(G '\;&!jݩ$jb~wݝN)V70a 䠢CP{ڶTW2`WWGKC7Uo ǤnU]b DHaǶ%F$x^nϴjW]JbP! yeR%w~v]cPz:,ˍ|,6pʵg̢uZ9Ɯr~'89'Luuٟf+*yJaښB/>qxT;9GL$Vz0^Hr 򠵍j_e3 nrljoQ8T杖jHm죤T?gMV1󤏪nj%gy 32 ONr'Gy*Tjv[ @js _!ݳLZiY|#rzo'$g&E1uYYO&qJcﺟf7$}aZYRoK𡱵{^o~b]76E>/nsN27l;UjUo@^o>z^9uS}uTܴ{ϬG,m$wۭ܉%qF3Q$5t4Ҍlm?퐮S ;B񺢫>2]2!)ՒRJ?6+WsT9UtyO#X_bj@e*67mIuuV1S`g,yb=>IIzi-Y0#I_wۯͅ 7t/W\b$WCVAOci6or[%Q= sǖ_"1wuLj~ײ9;@< ?¾䥉DDYk[j)x?k0 Ο1,j y.robՅժ* j?ǴȌܛmLlZ1M:=ޞF$j5#lKZݚ꾾CvY!sWf)Ygw)Qs߷<'Kɬ.FdSAzI_cw($3cem`a#?*goE7u`Tǿr* E;tSst覆?O"iOi{#}cKMB6Hҙ\g ,V1αdΞbq3S +4yLrcBl ;Lw,OEPv턻<0Ho?c憵Gz-1P2&w`,!Ͽeouuؼ$/ٮ xpVWb/#_~h$R,`i5+:$ $'Ytj's?>0'm]DTCA5ݬ3]N=7.CW_NdcSs;o4KՍ7O~?Oeյ @W+A`rVMi}p+dթh+[S!8W!yџu'Vs}d~t+V{,/=7ElOb3ƍ;1lםnzvUHT{kDBb249n(\~7o@fp?-k ,F1F3s=tfjpRL;dNZ%b#6l=0Պl E1%U0{d7(>ǬR6'£,pޜJpz#Le:szSw?`:Lj(F3֔ LPS j}c^^?wԷj)Z]hcV5H7E^| ЄSJ3ݸW<%NJC3\\$[&v\(祳7OWIWY,u{\eA(vqm(H_T b7i4(׽@Ue[ xѦ4}Z! rO^3 mxq\mN'4~Jy4r-|/]b]@w;n~m3'#c})o 3@ #\ M"O6`Y3LXqmdF#C|։drҴ¢I:#b빞0STYjS!RR.ETD!'T("'ZUU= 6*( _AFI,)h5RDt[~̄ پȃݹO0v(1rUHƛ+(5cm_~t'v&ukErgBqgR ü7 ULRl6z~s34t_qkUB!G.-8a&zJ`r49H!9eØ.YeWS51х15w6ܙdU!q/f1%tƥH5*M$_:P 7uECP*\@Y8qx (> U[̬jF@}=XsXW@;OJ(|ڐUM8/bxB=VhKBfN=Hb،-H&DͅN׈I<'%&y/\*A B灐E95۔د̹ v  iF9#ng6,J(GU@=Fjx+R:E pӁd JKR7WhwJGrcIu*Eb;C|E'$v )*힠 W$#)&25Gu݃ow9)MhIsei@د4|͒սzcT?CLxrF+ ݕ`(VB2J[UXikNJ_Qm4xbs."omkv- ARHbЦc i1-HQ4Q qcm>P#OM8_Z/s쩸mk5"vKʥ\ ZH bES^=5,If6\b~&=PvIФ':^VA(453l"3$RKrs$3^Ӕ^ L-*[\tgsvS 40MNaNO$DngV Sn9 .t~#YWusq1z,=?."sH8;;ʉYr^Sʀ&q#d4m[!6,w ߰H{(d]S4_拆fВ&4#jpxU.w_{ ΃#}ђ6/2 3JI MaoQ8Ydi'MtPgDh'6>mJ0mUxW)T^:t4M7w2YJ6^Ċ11mi]0uVc^ea x<*]sTLOӅ6s٫ JĂ޷h}++$z//.P24#p>9Jl۲(.M{Nt)W"t:vG.d;7ZΑZ[S3veټ.2$tcw+`:KޘYؒꎜ"|VVoMR) rB)c^d!L $Ox0ڠ&vx;.p<ߘ,1]:O"2O./ WG½x|HM+Y$: QWC@pL(+zP;{:DWw'w 'pc'5[>w(G#vٸ FsXW/' 48Ձǰ9r= \'`B"Hp0?I9u`QdsTK)7vᑡLE+9<0O}@P<ޝ$B`Dd:Iss4S_ŭEչ$82)r\7-SZyHYNm9\26vw|/fY#]Cc<\_aӯ6u112( sXbnO)7~neI2T(z:?57b/h+|@T,DWr02F073"ch֏_dgO@/JG5ʳW' {b+gбҎdUU1v'edhH^xis822{1?^o<̃y H)ጥ32p,1o#NY!F/o=vs2g9ULZQw`[pXGjlusx+5Tc8/OTJ:YPtL6S3aܤp*tS|ʼ+RJT(Q8{}O<Js#f)^{ (X L ?pd`fK3gsP_>7Ib+Ǒ 1u5:bK|kOսT1v]^˱H3Xw$Xe',%@{MLY3{{&J4&|0ȔN2rE+qNGGcxx,\[|ڍy%9o.OVNݰ#kL5+eyw|KVjPI%E~nę VY #jR͊M4~KB^)/ O/q ׷.Z|[|LFKQ{3ɐGUOZ3ÕNr5ػN;#V6EEý^փ*abu7qdlUW箕jn!XSх_joJ|THO<nVr\Z;¨C3׊ J϶?_x4|+ڟm8 n<)$X]WssdJuYj%cEfiBce&5MYaV4WBH%d@^)&vL}vRN {vٽO99GN&,& |2eAK98v.˶?ɑr̜\-W@=SgWɨWP^W),XI"kw x*Jk￸xAq\ѣ96.EA\nyfhъ +I)`}L܏g=maߩJYZX7WJrHA\M> Ϥ_Px3x->^r1-|*tTȡB̖i Dx!%QlX}?X=O2DGȖ(`r% h,O~]k8/Nq,;sn˸Ǐ9f1b?̈ܠNJR`,UL}#;|}1%.{L1ɦ8#DzC/-K+$2Z1e;ŒyG# 6!!pe?N?mi?=|<~5BHWIQvajbp¿#kT1ўcĚVFxgFrԯkJG{QYd7qȪ$Yo/;~%.2xEoIsNXL&Τ%ZV$bl;&JU]}Y>>Y{Lإ0((2F,9 Î$ʘ;׺(=2HͿPb\ DgUC#&=o#OnnYVsI1\' 5J),k$X|JU -~BV1#96h֖ǖܔ/|O,٥2"KdZMr9_[ 99q̌8c\yK5= ժ@UdF+ő֐dFw&5V ۹~New!7I!(ig3zõ}bccDd T99_%ϼ0rKY9eR94F!6[_3a)ijKRvRWLmzjWT|q>Rn{iw r*'a47dJKe^7y,aSmzЯG)JG;)fL.WnEvYfE!%P1UpC3.Ѣ*0[Rbvפvsrr{rƕp"J2"Ӱ_QL2#&q1 |$ԙJ̐vJʆ&t'[=^'\-q0qNjlӖ_'zbY$&wxZIhMI9m4 bk:oo Cֳ̫8YW`gkES%iIB819ójyqNWT V(t$d (Uy-^?hxO1zrrš~'eډQ&K=Ğ/;b|>C U@U܊&rLbx Bi ˬ#AV"gTF ,̑oFe>qҫnU8ے7,bi:lCXIe䬦aqa1eJA(g1p\~:U2RBHɋ*X<1m~E~Ž=~8Kڸb9z-N䱍62 -H9+"lD4yQFF'K{OJ6Yl׳wޟ#Ę2ۑw"[+"g?T^bcۚYBj6rb{GLk=>;-`ⲳ8tb6ݪQGbC2D}q7!YF.'X**r[CXvV#L>gx`?k![F,HF%[3cѱ0{}a+UBvtL )?%cXD$ e7 JPQ6 2XfY)-:u$9 X Tt#P#$H!U1"}WJ|Ϻ9ϝ2yr4YxRƺ Rilٰ!\ YF**7d}|}H.. ޑWz6 ? Ẍ"HaQ*RTcO~;PY0-s#kkrY.,2䫵;! 6pk`4 1 3%ǟ$J1($͹ey%e3mg"7 gsl \,I @j *ڹNUKRcsW|1=kaG՝'W3UI?d nѭZIH$!G jUnk5Hf 76DD<)ɗE\1qCLj1(I2/r8l㾻Ϳ[\+a}"Uzq4s7 h:Z3kx[}nlqhʲv ZJbh?I-]Ȇz)^OA `kC5MCB҇G;3PSԏ{KjcbmOrl^2G!/^5ekVqXaZ.I~/kpϻɓ1˵H䜞Y#ȍaڏcG 6*"4i#P`_1b^4s>qrjlwU1@FT+I,X ]~$s3JVZ^VvTEFZIuie5%UrS>_w8ALfڂyTTU: `9w*5U.rR$Ȗ[H#DB]dY\ ^*cB8erJX?{(Se&Iㄱ&_V+dWwn^8k!GWLݦ95=~1+}M֖^˻1+xnUQF1l$=c;1$h\zB!+Ks)Y֜FikuԽU?F%#4ƻi:>HT)U V0Q6::NJ%Զ'wl:ٞ?#f9nFx$y 2maHYxTT!,= yW< W#b2M;aiK"-f,-"D%}>$lQ"t䍂R $ 3({yВ"ZGb<^K=N9<$ׂHÚȠ3K5ZHlb-qyV U$Z[Id,uj^%l$VV\x\G Z庖Sⷻ]XVR ":&%OPǧD F~>fL}4;[O4Ib?G0ɖW1G/#}XT9..#0߀Hktm*Ȓ0ENB4)CeVZyz:1U@B 5+4b[QTı-u(Zme #,Rĝx?Ǐ,<<7f8:w*W'ܓc[@P.G |mxcwbf&i͊rЦ~hR77RC|I#L"JNK}.Ö cQbCKVg-W)گ,;n0X8Y88aٚIwĎY^;OYtFfdrJ0>kՇX\Ej޺Vdx+ ČQ㑋U:hFaXtcNGR: a:CQܙdsIH!$Pm}K,xBS p&ǀH#쟳!\ ݭvzjGFt bퟠiF%K+bB^J^,:abB6kN; LJ}PT4}z7w1ˆ8Lq.(S~#&N;IXr$Ȣ#'g>RPlo[o:Υ^t@v| ${yڤ#CGmǃoףD !|cz$ ]2@;;Pmc6@ yw#%JהnKjHG:nu >~?h(ߝxǧFw˻v4~l+AJ '«~l!XzhnZ>7eI$}Dbb[+n1?޺eGUgϏ,雷nGt]@ Ⱥ#=T>HAuvDrkEW tluc>_jziR䤫O!6$)`u`wOF2 ?#]>u$lA :c ($`F 6@;mGV_^im!EYʂɾV: ?_۽ i G'[4^N'C"T>@xDXλ |45'ZߟMu??%iк}#<~-b{m@'ϟz|v0hƙ)]z.󡿠vH$hD t,v w唐H|#^d@$eS| t@ iX(U||׏:ֺFW;)z+G>ϑo쓲z ?$@mucx - =Ax;;⟢aueYK%,"%t3cCau+Im >ߤ>.`x; y #GmFς4']`!Ptߐ}:{'h}Z_NM/ne^m<u!ֺ${P?䪒PS v ?:k쮂>F?gej4g@`7}"тA_@vocywҪMWJuOtK&ŏ4ݟGˍ<S 70: nvt?Dhh ^m#d)d*Pv@*`u;IKuR;#uV4i?+UDnx/rRL(xк6 c@kd)<?[}`H:-h)T: 7OH$ߓ;X]!tuvƀ*T?>?&DZW.2+"PuBbvep6.u;~RY)ڲAo'C %6GP?c?V O-X#jgEÔU .˲˻?t  VcDC)hozMېu*75 1]l 'ZM#jH ;H`gJR6׊5GE#@'l|Dj4b G|:mP?GGױE䂪< xzlk{%z=AN?O<>|:פz #N2J4 wGZ2GeNǏ, :>U@MkRRoZ6!I^t>@I_NƉ_gεkz;UAc` : h.אO|'~~- N l5l+v!SugX.Qவ[ߟYԯvOa6G<h^c kmGߐDxSδzLտw]-ߍ>M/Izi~47;NϏG06#]_?Nk>5 #ȩISC(>5E~oa1wEƼk_: Yy FO?!?~#D)I*C|;__I;|xGG utW+;_auB V>jO5@kwI:A$D~?- l h0O6-а#dlkGC^=z]);#>ly'LUSK.~ʢFv^(>H>twz߂^oץ@^5ד-֊fN?@ `G߯k^|y׭k~h, f%,p`vTvoH"4}$X{1u"H%RcOunDO=Na;R#K`܆&GU꼏RKgŦZKlkX7d)'GLO_#Fo6TjzRK 3*UA::9urOJ93ȋjX%hETڒU~{{۟cdq%[\K^jnac"3ºE }zc@$mVB2?T|s[܈X;G0rH +6z#R/MgF$8YWL$՞(eR؂" TñW ?lq=,q/DOo$Zn =_=IObx0V6ִ[{g2s;1Ra0'ޡ~qİk(rjK[pYJp$ԁ붎)ퟺ>_3|c bl{8z+-Y$F]}kgC+ʏFj*OS- j5iy`Zu_}>znV6n|8_ "Y ENgk3䛏o22K^q_<]-9īNr#Wen@JtS@h ?dpky[,ѫY [M:),b$2Նg(I%+kG >%f!B V/E8JֲVA#5l4 Ԙ8M$W%!BK34/V2=Yzc,\z͛^ӱ̌pC-SR{r9xvX{<1rw])`_33K$l+>+܆2\}x,N:)fUh"j7'_sQWq/b,]|x14!D"BN,G>1YZ5""?Rdɔ~F>4CȑGjūzyW#=Y.C+瞦 neV2Eeiy#* 0sx\51vnT-:mw]"݋w`ͭ?x a+XOiB7xU UIGqUZH㲥V`X2vSGI|2Í#Df2nh޺\#>L29ψ."H33[XC#ܚVubνJGg@H2ji1_Tbk;)ZvȮ> 0VfHw+30a%' ,;_<K9sgĹjSW6q:J^&U3)N4d.# ykhXSPg1bmq7-Rc-g')=lu ?>  '~xc;ḍv$lwp 1%1pɗ$>f,XsbT6uzxNW7Onx'^ 8/8.CٯiV Gb)UXz7>s o9cy[܇3#,^/#5h\mԂWZJێLU,Lڄl iѥVTJ(#[5SgD%m Bw?VXK:Sn?-Khq<|dx }y?SӞ'e}ܳN&i91c1^ d"ͪ{HJw~w8]ԡc8ASreR`_[C0~P3Rz̒oJvAf efVm{\VQ$o6"ӿVGF.Eb a\)E} |.{kUdp;% 톔ݽbJP4v*v5yL8pcaxQl7u7&8`iLF$#RX\! }JQNYdݑ q]h35?5N3;lZl+#[*^+j(1mcGm#؈/-ΊL ̪EJd%[I}cryMB }يY Yk_XՅ+ _0Uh>#_$C;^"us[~S$U! mՕ :FFr0Gq!>rɗ9YBo;L=O|;c,a&cx9\F9>!7P{uXbhv 藱ߩOFXįZv՚3rH1#u:JĎEXsj&rZ||m|ԕ{BeD^ɖ-)3.=Odq9$6wܫ#$§b¨C/KeBI]=AU ;3O.\8!$CK~(ɇ#{4M&9vyeDcġ#Mݕ*N6o_% JċZC;B'Y yM\f9 :"$HBe_hwܯg?K\r,c!W/n(۽V6>TװK,2;+3~yzW7oX4 Y_.Ռsh\l79rqgSOܡQ5Kwkd2lQi*?iORRB,'AQϤoa9sύ՛ik;ywMcvI!LU W&3%Y"ߏr9w~4fRWVсz b M^Хj|v؂)[*:[ E-ԐM=֟OҧbǛ/hK4a2Jk.a#IܘWd X6h/t>l?-K/lh(Ji̓AO'f Y$ا#QRi቏)p?Z 1 }ETO/Imyzꭨ]}scɲFc6c#|0#5J_"1H:)9)(c4yq*VjpWO.s^1dCiRHh^L;X-s3o;]VUGÏ:c 1&Oi4YrȽ4Bw{(i޴ArC1\Zp^Q";􅂺hrS|P{)S(% Nx]FAEzяu,0b}B2Ծ9pAb7Wi>5GW5Q dtŴI$SգIRV ~dq* JbÌE<⬑ZKRJOrvDĝV@CKY #qVBVYM5dpXvIX9eg͗o5)J!_#9Ǩ^18ռ?x RT¢|%[~ҒYܩ!G_cI&GP4һ XقY饑4ǫ{hC%8?s2 Eմĸɢt@My:Q9lE2k|u),Jh7E!܅*GBr 26K\$&ثI:IҞ_mWS k*bsQSsU13^°KIf4V),m|QυdK}iKY:( ReXZ&7̶1,FDP&&XjIZ2w‘$ӡ֘O%NS5."#]ug{)F}B,s oVnQN~nZ=|-GF:1Y i,4eV/וWqLo' Y*B*$*4>+L0A5k${,$"C ކ)ERI^)°obSMC[qد,ft5Ɍ??Oℽ_`~͗=,Ǐ&E. FU$e3zo빦_e,12Fcǎ"prR)1j,Mr;ȽUdor M R^Z|N*\]5C+ǭXEktoEXeG3\w)w=ɂ]2u#hcMTxk Z;L޸#9~^7g2qq99r˰Ffzl36y$cq3乡WsF,|W؎7,.,8~CM8r1\Z|VSq{VDo9,yW:ҥg:2XD I; V՛r s٧,LReT^gqL-/,5=4mF[ 2#kCQⶱ,j2]S?!{8ب ~2C Oo(hLyq,L3FP$~K~xf8?p8"2Õ̌է28~yG-pXf3vc^ZR2I Ѵ6K{{(0\&N$DO!"8nF#vԡ] 08ee0قb4P*ݥfJU㹊*WO"G 2ɱ`h+ݶ(=%8 .T$I(x2e&'`|R"ZRw+c@1 5Gn\i[@}8`d٦Tk՞46Jo[՛86g '¢KH_4mZPOT V@BlocҎMs!k*4R)v~7sN'*Ek\VUPM)oy!:>pS?_Hi(`{!A' bB׬71 R%+S%>6L$vmEH.$LZdbE N÷I^< 'ǗB],gvr =.lٱBYfSYJ)9 a+Z0×g%2|;ȲrV*'~5V[b,7(X˙͘ f=9-k إʙ^7sE?K5&?ҳF/S^˓JJ(^랣dnjX0`NY%( $)y;(}{N&f20sI\"&\y6S|}uxuHA Z'чMl\Ox<ݡy_Xk9IgՎ b!@%P$7b~>D,r|] N/*e b? @5ݷNɍsa0BSg$l qIqMpD<NJ}bIdd܄t9H4%]+;`@g*\]? W*/B:%ƁObw'G~!29]3ܺ!KXdv;WFoM,~7.{ފ+$Pr*S.Y|K=vS4(|F$eݲ2JW><1eW>Tu#.pN"@im%?W}hhv|SB@E~|7jaV eI"|qՁĀS ڂtA$Czeǟ]D3cIA0oDS=9z?GP``5o[CħӸr/ޘ8Ƽ]1WWl$@IA'za uׄ6{ Zz?:$" i$+伇ѰwvκzI|zB@hЃڍx'o`:'ƕ@>SAtd>ކ~ ( y$wiu od4Ha_Z zvH4- 4o:K!m2lQ7O|h>"#@ ҍ#c~@>7ztA;#L?ϯY6δ4;#DVѭOC^R]3x& Z(] x Gړy#^|oε~!Ȏ`"b  />O~==w>}};#:Pkƶ| ށB >;h6t6a؏?_Hޏm麅SOH$>?Sv46?m~$  u h:C?gE [;*WE(Q~MVO;C~%O:މl0'?޶Dl& lAςF~Im "c߃ވtv MxE*^]OR*`Iߝض6޻I:v$+:<~GD6ԪO<z/]?Dluu'%?_➣e,Fʶ n7Fo`H_$4@v|x;g(aڶ;ވ: IGD;JNVߏ>h%,c]utԎWϛutkGF)B,.[46Q 6'A2 xH6w2F(  =h ĀJm6$ dMhyN[N}_.y7i.] a); #J|񳽟B4Iz$:e; >^;y'^F<7y aWj}5' ?No1ȕX?&(][V[+Pz44O{$vBNh 6ݡoֈƉm*T0@ 5=餱k@+$?J}]~*w%hiT}RB:[@) 4||;V$#[Aߝ։)v=AmG:_?{|)4I_?[c[o^G=p&)G̿T;׏㮲"%VI[ӿ?Ǟ<_.C!|`lJ1455?$h}MT:?-vzƪgf!HU Fס2 mwUzL/|G~>}>zς2PX l(hx(=1k|F { Ճ>>4I=31Qc?8P4I$}Ƈ9-uH'gOֆ;TH;?^DNGu''#Ue_浱b UG[ۭ(ޚ|Lހ:?^Nϝ:R"Igxb H뮙ي ~ ; @~k g㥚,T^[8V&&rE~ vKkz̩ -ooD| /;,C͍ן̓1qo1k7&GbByRGU$|7Gٔ]>Z]R$ec)Q}5xF,ruldj\LVfq]ZI${?븞hCqԱ-xr]f7IJUwmr|l^+5 lAzGffI{1Gs8d'HdfG?/y>&LlD'6hC1Q5&H˧pK&<h:0ch"r(6K#PlwU̿j\"QbHP0*BMFѶYe}QO5N-jx5-$t\l"cǴ34+A|㜏'bd';^X6#e@v` UzQ_SS^ȫ++s51p2Eoq&;!d1vt?Tw0>Xø {9F Ƿpő)>ɂS[sGmdzb81[FYg8F?J8<J8ɫ{ lÎ6_SV;[͏R2F YeE0O<]?c VI q>YNFbeB.SNCʓ#surZB;(gwH&X(K!-`yc =lvp\:yGԫcVզ DE,\ yѽ 2b=G;Wiwl{sG4"!:=Z}%vo齄%k<ٸ%1sC9'$,ێ^IQu )#݀:'dk^p[1ov21)eTU cWI#Glh0]d5XDN  Iׁ]Tx*<-?E(eH6x* I6~ WS򎲎P}Bu>uչ d!F(A VbY% a^*RKg ޫy(hFL3x,`$ [ aꤗ,:cwn0JǣԆ*T](."q1V?lK멡\Ƥ6HuM24^3yt8D9܎&\p[N%ѭ-xb+cĈD_)/cr]%f/q4QFֱ=_T0o='_s 9V"؝tܘpz0YDEERh^w)Z0PK$KA[)AVG԰hPW{_c;\Nj>\2|>XbdR܇/7nKha; `E1*֩rLfyg";eYLN!⢎EJ=^&{ߘȏmxVXYQ*Qj.CKFb57?.#33UJ7qYQ+e/5{2Bw#}a迺+XWbxYP|+GH; ſ5f/)bK'{z݆<}7a|;b59sXX8,ˎO,pϿ,]g/pnTDyJM| ؟&3˂fYdUl6`v RݯL tۄqEկ ekW8B7vvA^Fi/v;=ocFuڝ@ŹgJhA#^=Bfg=UN""9g|R k1Ց`4Vn#QomN zGa8IO3ĕ3όfGw{a#93J5qT sI!9_o8x>;#i.\+Xr| iHDi[s+@53H*ҭ¸~CQ- f[,ڕut8*F8.<%ɩyR3'ܧawhE2TV@!WiKɥX`Veɏ@5͖.$yU<#V ٘ f!ذ> w݇C<ݗa8 fw'q\ܭ/q{nɗǗ..$N,ˍLpɄ0JU+]P d1RZ.Ŏ@AxеHe(T+"U]VRP{ Η u aĒ8%f/^G,S\vK!7YPtUHgYzUdZsZ!&Wrk1@aU4'V N${؞H0S,J7GŔbǔ|2E*XY{|(!%2T  mF.O9h 1um/t ُ\rG҇ɗdsKk".d%Wg 6=Dy6zc^{q5 (Ư^U)HjY[ ?u`мa𨣩92H>%zNA,c~h\/TKi Ubi{g}by?-/$[OƜpDmY;|x9C)ČG&X}6}ke͏&Ic>{sb͖pU,ɆBՖP;N㶎,8wXL0k(wTo kH ]IUB 6[r qRۊɲ$HD1$e4R_K0h*YH'8'eeLaSx#Xrг+Ѣ"+a߆w]QЂ#5EF5k@@5^899tQȈ񘤟|ys3c.ILn$ʍn}w?C`if+Y`Wgr[}X&~6 Vn)+u}A:}{$>| $4?O6ܲiܭp nCkL-qZp 2lO_'f:-AT#Tz ;K̛H!h$Әܞ,{Ȍe73QJ+ri:?ٙLJzccگbm9/TN7{>G;q|{ykiWWVkpC%^[U3ضkB$HFĒŶIrI ~+NϮR1 meLrzx le*WG%E2 d-貴lQg::Uc=󬄸 6*F .qب*ܜ*3,anȇ9{5wqӳe[1|Vu2M1S=^;l.pU$> =H? ?v"lÏ6Pd-Eރ{j9#*q%9"h+'R\1Nwֱ?lM,\0@Hrf=U{&_r6ཝ(.']-+0Ydԭ4I-N~*r>+]L'\:v\d5EvQUz˧W@MP4[`uwW7ol8G8_%$4QJ ]~:t(%qԫp^ՃoI6ŏ9cqrd9LHC4s=}Gɐ\%F,AQx1 ,R2E5*!Gu+ z{{.C^ݳr"+W)U5eO]->? kCQ#w?L?\!q<3q G{iG5Hg:-<:bu_^ީ~~ӰGd; X8pN&Vqvzyf IGؐr@#&T"aG#^r~)ο\08kN W2v!7V!Mը.E}ą)_eKd2C *זQMD'嘞έqkC5G7j_s^jɏePٱhݚvY|{3[;] \u EGSZ#egRXD"ZCd^{uM,3j*K3c,.uF^ع+Z;"hxO)x7/qyؑEa bwB=X%f+b;˓)>,uf:*߾6},ABŷQHdqz3%,}j* k|Dt Mvҟ^y{>gb/qr?lpM;~.pǻRϒX{x$oRU(o~ wr_veu~kq.#R{wbIUJԭ.o'+u+S]lY|;> #R T*mֿVKXlEd¤Xm*D}L75if&g,%(!{qݣ/>=ύ0خIx2\8%*2N؆xYwinE$4Oa#J51k:?M?hFڰ%[Crk#KX87WAo C;'M]h',<NJXfi ˟[ܧ%V͈ Ύ 1-`P48Jz5]6XFᗸu:cc#u&U&:X982\rpw)L)H1$TO8K̆]ӞX6.'#X9K2镢v Kiy AGz- K$RY%s/ubz6JN7L’6դV "(:ڲBGbE<%!Y9f)^(e2@w@1D$ɅiҌ!^5I''D[r/wBԆ}HT6K1[QݤY!؋`B]dXi,C3Է R"th؄eTܹ@M;DU:ʐE#-G? z+59Hdic6bt8Bɻi0ٳV*EHH=)ȿyk#K!I?.bJStػpW=;q),YE.- xa<V O=9y2AOW*U>!ĪOFA-n7,C) ,@38t:FI8,YTxeGfFwh--(xB;yrX0>fUU3GVq߽|ǎU|C2Xs-N2-[>[e$QHOJϬg}IqǁV,^GKwaoV/H$y!9OYX4:AlK,98(+CPُk,cEbUDx7plu1FRp՟n#x;P tPpUI}9ݬtx6 %1^2Fv;JEV ;Qy4{^S^196q[+/|U)׻2*n:9}b}ssfea'B+^y<\h)"^smC#9f,DaL\{1MFPOznd'p18%1&HIJԣ(ȒqqЯ'7ɕG#Jq5֤7-3 |P4`EʇzcWQ{;~~=q߳6]Ȭl |}F-sY|%+<[ dYTdbYl`zEZwX̒pܮW/_ x 珙˼|eVuZj:*ҤnJ7%0J'N9UÎAXtckA5*yUb'.Y=c/Of{-g8s;ijk(ޢr q̆:diyd-e|v[R[e㵲?ʃ'u|tVjI^24-^ 30(>R`Paw~Ϲ08Bn'aȞ\>YBI,xRoDmd!Y=Lr1ca*s.IW \>bU:,5\`Xa9b jHp\X盽;w?isǂ.W 1C)%Z: ]y0⃚d Tcq&g*j[!JdbbGPteo  cPIqR<rU2وL".Z]觬 ,: =s7Z8nl{%x$̈́2Z7 DyUb;(c)YXXq$C, EJP+GgUv #A>?_fLAH$&QV5V;? Q9%3VǑ8xczUIkȪP3o 9 )c cҸ/)#B(ghՊΰX^,ac1:UZM8>R~%˰Y6\S1V$~a Tϼ|:eqm7$Xz ̑8T*|vWTH,vf&b4Ce$rwݠx`WaԫM'L}C8F̝1 @q%pYu_ӞF1sƑ౑)\e¥$6E^u k@xoc~h'$y޾ϓU-T׎+ biIvE:WR )"PO46]ʣ|RǏ#It{]#Ly!$d͎~@%nĞ)✱d,yN2&OWA| 5X:|y!N H&2?C:b7uB@do``G:&r[(GMy/~e)Rnj:Q%ptp w `"RNvN xߍ'0RuԒ$kϏqm4<?HǓmy<!@1֕]~꿊^4Xhj6:{uhk%%v =hB~<-ukHHvz썍O[?{j"xU5m?^G} V;y'z WzQxWZ{B=Nވz$PzA֏hF1euJD >I?<Ǎ+F/bVljU{R'/&Ʋߐ:ԟ?'z#&/r:W`>O@$G㡰Hkza lb6vFĦ k{%vdlk'v%{A,5F/uBV8& DT5o] 1 Th5t@GnNP"I mA :Y?#Qxߏxv1oΏgUt i+^>YGOBo;h+omϝؐz{#d|uxe]Gύt>1h>G]7:<} і7 %R?ֈvP҂>vIoxPOOSז]As?u@*AϢSjmd[<NB1@?Kbq7`ІUTDllyc=`|@v#c/Ro7褑t:ƏR:t؝4G[CD6N֎ο~^E"ejk/㦧rVʺW6H,Ij']0o`)#{xo P#Gdz0ѫU L6VԀ"XFKSuxe= U ~a"9'F|v"4z>Wg[%@#z hא<v7>31qߺ(YIRW k8cV=-V)3M/k@+p:^:5|=Wқ1Iq~ڑm1ҀZU/k*6䁾,KmOzy҅z?#3u _nƁvjns veA'[\&uM,N,]$m!/fEwd]ѼOg$3nGf%~Ė:jm<$5$y(t#HN|5=Iq"NoPY*GM~+I$#-rP蝮Osg9hc'[[m?n4JĞ S3GR4C]Pu (Ǔ  ;bZ 1Y1!ʠS*#ŀ6Abє*\!5ioƪG8SdFĒ8@"ԝܩ>@T~[-f}AZR 8HT9`d xAyCqq/֞ I%hq[)P4{F@mf_1^Ʀ\jeҿ$fiUh׳Q +YL p@yX=תv]<;}= G-iz;dM$8"#IG3^:\^k6d-׿Dy 0X>AG}#pӏW"2m-A4I3@G3C^RI?ȏ#U!cW\ߵ|u⿒;?291ʧ垉rg)eXzy~gmb>p4ĂPrM846ן8G e2Q5%FTXdlChVK6Th?'E^*_r6\x9*"ڱ&LXm._d_*o{{m{_\fcrÙ.[ձڰ+׮ƫ-܄qIo^Uq'?*3;A}IYř_#A? m QfK{O##.}Vx϶.׳B.Ivr5=O3G9{?MSqJT93w":`y>[)\c^ w~~y#3)DHZKQXw&G[DœM"<%Or]QvXH@Xh1zW }IC1?wuc<<8 $ig$ֳ|4ңG+jxInWVNҖW_ d[Ky1֕$.z/{c {SԧwO,ӄ#SǏȉ92-}W?Q~ced;pˇێ+DIɩ2;&F[cTdk6{+26`żVW 33,;BL[#d$g1U6l%8bgd[7$U*ǏӴ+6m?AȲߣӯGMRPELjbI4w/OY{n8RKmS%ڳkQD#Zb ^dI5cG߯vx3-n`o#rN$d!amE4*2c1uN.23%z/P>}.#I÷"yL2)!) q7'g;}l]hY@ !<\35ˏKιr^y%͎mÇGB 41U[hd,J$G{gXOǵO̱9)Ֆ$7!MK<I>AHߦ엵<{|C÷EmPrգ /땏6?` 6R)ߖr+1r8r|ZZhO%J=Ƴ#Ñޭ,okGŋ1yl^(eLr8$, |OKo]>&n(v|c(XRHrS#Q)Zh(LaIA|VfE,K<t5I! {SC!@_T7Vl)ؖZO"ˎ 1Oӆ~{)q:?HfR!(qN-Òq"b mW|ݕE>:)!cXM _3\H9LernI:"m@,lBR7ܾGid)֫RZ@cJ֩Ws#QFKFß>YYūbFbs\-, n\0;e?_ɸ~"/-u_,bf42: $r{` Wk "q'sgj8e$I.$=1dsF60lQr\ qW'>{W)~L,2c+"Zឨ^KBlOȲ#<5+$ʉBB,5)@Y, -)hvysOAr&WǩcV^钓Zhihd gUQץYy쯷vW`z7S2UfG:Wf**djrq:"ʠqN)ux8Bw4Kb 0Wjh=rKTm&B)dW4n?U_N=|/}={̑Ɋ_pgۈC_ԽoHl?һy&|qbϚ7ńYӗ&6E3c1YIG=zNOI)Y"/"G"A"̏|0._ǰ\aeHMɮ]G44\t#V"w=k>,"õ "gL[c(*Y^O}p3qv% 5gO?%VJQZ)0feov;xnjpG1ˉ98LjH"GuўR=."nx'%Dn\nެc9|Nn39*r8d/Roje*f`'*Ja2E: e}Ynj;YoAAaiQc,Y0a0qv6W6a_5Zg,q*  >i1qd'R  nh*~Z:]Y$#`;ȎNﳆ#)OSF'xn!Ǖ9"N:}fcv "WDߎ0$Ϻ|'=¬v>!hVH2|w+وBIONM1uвoZ*e<*w,o@2/sZ<ԥqm4rKCi-~rЩ C"ʽX0$}xr/$ZY3g[a>8s 5ÒkҤjn+rc/{$ n@(^N+=5\ЊMjnU:q^dG,Yds ηo]yJe2!sǮ:̹Mle)JāV'?!a&ER%#ECqZ{XkΑ&$-7cM ,}QQ|{ܸ^s|xy#. XuoؖcWסݿG&\e$C$!kU?{ANVBƴupqӳWVb9^)V1p,Xl#m8t23׵8*<2Y`ε.!, g~8_,W/4"إj>'?s *tc+xbVP򃰼D_Le?d ɏ4 QF),Mo+#1dpEyǿTs3No0y" "vl+>i,цڭ 1]{XGjڀvZ,r]#-w_q8 O\Sjj{[bfq8ܜ$A+kk\?kss^;Ƭ/cj؊OK,_]Y$R*~वjճ˻!JqD#!j0wQmzgmO`Ý\9b3oU^^@pE{U/ aO5\KEAGD2yJt+[[fb%n'.mGp\.\RI+MS>,^[;/!UJ"~l%Kz3@"Ԇ$yևq/ r\VX.Mɳ*u>>R/hԓxzqv.&>LHI>nLF ޝs)=<9rJP#Bb5wE6H x[*>B&䜓yJs'dHy'je@$tk ⍦)XEpLFaXuPeYv6Ƨ_;RHGϑms^#{5 ^읈XD#R2着~cxG Nռ.&i0%9m*֐Cfu|~ԲmdW}l7#~p(^$e9rwf2y~ϛ1X'Br8#D%jǔWgTduG43]vrB3ν~Xմ×S#NdV/%f(O5 P2kdhfmS`}GWKAERig%F,0RX"Ie} rcOGt.c={9 =I\$ْBZJ%&F߮ԡ.Ivi(R;81󜨾*>ϵqgs&eÆPÄW"\ƈ-Qֲq_E=^*t=r9v C$bSch$թw &O޼Ѵ !'d;0"8F^˛pCs424&wHDoJveKJ䓌n=Ӟ*-Ugjz4W(*56 ݽb} J .sv ?t=$aII#+c=aXN1sG n޵0%YY%h;8_<گd,5yǹ99bVdP@jǦtV@ uUP%FS]vJxoGSY pZ)&o=0,s{o7a1Rȹ.zX[fZ7쉢c"|SG ʱCs"Ͻ9Yc8jDYJYI-X%#,ę11pĝ[9&'< '/TRX|v|lѾN!ф24b2e\!,PYGs'A4K}ĥyGȷ9(*OE|}NIu+$N*4w؊^uXj9'|Ejdlc۶y5t$Rs/zG\Qܼ\DVV~ }8YBNEb6H: /d3u0jyjk2% ܳ‰bUJw3q,G-{Y.Ǿy >X㟷C"JY+qߩmSıHYh!IRP%K5T坐qܤ\sO/aHgNզv޼rF ej[pW>枝.&*Uo~u15AbJL6. u|Þp}Xf3XKgH(A] #.G1ɓ2j:e_sEK#f,ğT~o|2X|~J50_㠵x9QrVH{3@!#vwC/gvS&LQ.?6W,?diw s&~$ǒP=#K G+Ʀ{, Xeӆ>O6f~`r)vq mZ$]a>JZ!*=vGޯdlomNA -$<m瀉׉ b-b[y*Ĥqt?6r;SqIytYҧaXl=JKQ1O)fWOWO>iB2h9RdE$̟I8^_yHz~lا2PqeKxȁi3>/1A"(|/2,ѺGUV_GT2\8^UI?f(#ua 7+~ð(RXOr\r15fox8/u9.R [32(`t6׽]Ũ&$12D)G4Q2+m/%b(&+XE5b,HrWj\&3YH ._E@ŔwX(+4Qq .a]ؑU@I6GJED8lX#֭^Tה Wn#\6Mx㝅,'RxGzpw9}2](B˷HMrH^ ȒlF<ˎh~]]Pc\J-MāHHC (NYp9ankIUY RAA:cSN*XT j(p©.UGX>OzLuS# Lȿq_oHb~M^װ!߷N`,e E4=ňXS%5HVH98-$Y!Hgxd(gvcL# c;A,r+$,3)b ֈ(_j}ꤕ=T2@:8TC U,U4 v57,R$}^| gc;[X`ҵ\=@\&Lm=!d;> Ʌ8YL#Br+=sc,Yq)y >K'ڍĢJ%u h6B?G<5zu~@>N?@L^MלuSVYJ]EDWF@?ߊ۬MC~~`|v?}T8EpJW܏l?u ?Xce c{N)˸_ W_,70_]|#`?&^޿ǂFǮyr?>(OHLӧ 4q7F쏠'~Y-n:?VsW;Wu܅Ux_4{b:˩]}#G-\V~^Ga6ߟH]Dtry-oǀ4T >OCN H,[gzO)?P}Bߧh_m'hvWPm=rիAߒ}65mHB71]wI$z_5e=;bV k@Cx;$H郍OE_UQv "$=u?~üR]Fe'EWę5dKz?m ==܇bU& , ?R}b)dy!G Ѷ+]pl$.tRWwvJ~E+2GuH'dI'l@_7`mLFXAD2>tI2~r_铓e^s#&^m|ԭ4Ifd*ނ& 4T+0魂=s2l38{J2hd[,qqF%xV~;r,>HJr_^|Qg܊2;9)~4gb%qǠ#TI]ᔄM3ى +g 5OB?^{/c@ `T&9I#ڏ:>uW_OSanj]!Qbnv>K%,toB׋ md6R>;=~@J<EP  ?mCLf1z*@of%W7KR sJҬ^o(xaCvRy{|SDێ, &K!I\4[bO@?=Gj}sǩȌ<ȲZ};9%,JdK'+⣾2sG^D*)nP >>>%e:kϦ"b{fbԈ~II]kF#PK"kG9p~v:_WK#FBz;uϠJ{c?tX80{\\n>b㕭5`me&׸TցjTR(͈c],=b1`^|H8Hƥ"7ֳS09{ɞeFHq{%Hd~JGVQF2U*Y)ږR$;?JO]\J z֊A>;i?J?70-l2!wgzU]ˢY<0Qf8f%%L5#H XWzwݴxqKa*~DF~4/l~̳߱Nj%K@̯Cq?HnL7@ y:$uTRU=buQvLv #.7+{40$xMI@CI=ւؼs5v-l6kjV,} ";`c^_22GvsMvX#wn{2ÃeMGESFG\``mt5Ewvci?s/ƉZ `&Ch;5}hM&o)̱M|)E~*l=,l짋$@ "K>deįMkRW)GMF,~k,?;U0*1[,@%;iU'ŢVyK-ܟh>Zt&I?`P |x,IVH H][8{ϗ<@:_S߿k0ЈxPQ!R6QDlD#=Fq9eKiC2;גW;t&~^糏Y9;DAy9u? Xc=u2NTa9g-5q*-ޛJ8s|VD\ w[@ *m{h^{u-(sHI4kի]CBjx2ٻ0x Y,\8}M ^'UwpOmo`>Ն=kpl~kH,5 +!G_#xELe%({# RxQQ/{k{x9)gb*088vC1wH1 Q;va/G>!Lf +\<ैƧ%I&H$+PXo:xϽ8UXekܿA!t^|Rٻb9{0Ӈ% q:vW~E+=5ܷ#̰^H8ތI5(R88 |\|o+8o1:cn>_'bU]Fei#ZLbvukߧ{,y<}-rsXc&D㉔Im1t?PwqbQ҉vFtA &s2fd"Xf2qd5O빩\SU58fT͘vZv{Kapy S2dsJ9oӍKv! MebI}lV3ޟf82|7^1tvs*YaC)pH M#M`?wH[L[ ?۾,ز,TVX95ٻ{ yrY3c1Oݖ8{1G9ȉopbȕ&n}{Ka{ҔOw!pqɊ֫f&rT|e#44y&K1G\j_(,=G[ih[G6-ܛGTv8tg9 Ę[@?pE7>r촪_Fh/vHrVQ]hL);e헴{y&y`l| ;Ink! Un/X۷ Ǟ]qӷ;RHE%f>A <&9I Mo/v`Ry ٽc >ŦeK]j[\csX "ӭ)NCMi Xǭs˹alWB>U d-BRHʹkɰ|b]2xDmjt<N/k/ϥn6}WpAqۘǟ\뿩=S>/y0/cڮomڗzFY?O ZIEO[gCsI!>pp$y8`x \>;1c՚[8 qc(ZdvqR^$_hb>sGܜbNDX N>DlB.1!J/Ho䦯Aq4v|#^6ҭ>N6'G}2q}d9˛J,8O$ ȥ%Ml^wec.8sGɒ7~r^Hox)ؕb>~=N֒=^L=?xe"3no  uFupAK=n4ob!(F-WD Qt//7 c&%ęNO!4G$e^G &?{c!U>A ػ~OL%f_H]s#p`Ǽ,+kȋ32Jrk1矫{q|r}!IG!~nČO2kU-]ݹ5̆C#/VK/2 tGf:S)>'{;,_=Ejz\E%FRHTA )P0ra@Sn^71k/ZU*gk%ۓ)n5%cf2< ˸c9aNC)t@#j{t)E#T]Tz~˃4raCRa">rMHPXF`c7}rI1B8dbdwO5+R8'ĝ{f̪F{{S߸~QlɲT2U)KM-UIzf-Q{nIqv`[ulչJ&b+0P4[hp2e }!r`4iRY$` z ȽTPwmkqLYXˋ,dG^7c^*_^v;y ,IɎE"\kq®Uӷ9DZY<$X|R;BQ$Z/xYo\p,֍՜ >6{  ,폫r39NG=fU9L o!cYV) -)TSvw,IU#x=+ڟz,w)c!hbq+ eq/Vi%dhU/]fLNnI\֩{6A˗5;㺔s8GTa#wLh"KjY{_ jI*RI<o%)EO]v^U!Vb ܄)n[a :D5i+tFb?D{_ qj0u;2XzUܤL~9IxE0C SeyGf|Z:WYb(]\U+߹>O$T\SHľ/['韧%NJ8ᏸ1(I9J1@za ye,l`eRlj4EEU"ZG`71j4k,PY"P ]+SWa_:򜮜DO45+;ew4Kjey'u]UϭpN4&[sY[Zkn$ΤCwv2;7װ7ǚ+֣T! ۱t~BU ,r'"&HD" <1eDY8`T}I?*l[#bjuqF&6:V'*kwlCBDKɐ}R n/`:`U9.u!QwwUZ5dtI&f+8 h>;'Tw#LZ( gL&gIFXJ>ayc<+u*~j07j۪D2&Fv5R[չ@͊nOqK.[ #A!DnbEH23cVB:WUCWmXpz7[+Au2y1,7gZMw]kc8FnJA,ح"FIv/EdTiꜲJ%J?)LK$Meh[W{ xocC)+1`11]YiN:XK q=|?ow}KslX9gon8FHćS ~+ 4o GG|$a%)05eY d+C,L:H4մ'B$x܂U:3U+;/iv#rɃ1.YpGJ5ѿ=OlaC$<$ }d3r/ur>[x^5U8V0Qi)'d->I,ZnS;jaE__s1ŏf K傭Q\r㨉_ (RLcąf|C9fWq:*|[TˑX;p%kJ[@6_ /1Y|}CF1?HQdZYK0Џ՞>߶;oMLHDǎ}|$3$Jf=PKD۵0#.s16G3ZD#A2ZH'm'ow>d2qcb5DH>S (a>.,I!A59+JZJV4DxIwP5C:+9~sR<#XHb]5WhI2c܌YKmBw\Ml)hBzrDRK/$Rң=iqhܖv})a{$l20X'F'u*֡}%$(ʛZK~FcgGGBTx꒷~;+\WP6$1ǥ58Kr=Gf=:=Brp8켓 o:%\6")D|IQ-|Y=KouoqLϸ8#G4%n`9DX)KJcV;@JɃ燿7SIK&b.Xe5bl}h쌄rc (*~4nWpUևd3X٭|b 3`(d"Ⳗ't35 ퟵvyFJsxl I\Գ9cTW%ol''sQa#S4Qe K穧\gxDr.-,;zڕ.G]xɆ刦a3Wף;ؽo;@ Ӊ`&99q$dy2\[Ż1Y"c=x/j)+؈i:K\ZIIQ׎Yf mq wq0,Q{|K)P[Fk>YᆴKݐ~#ԿGw9;U298Yp%ð[qb}3&X1!d$ B3c)IHd/WSʦ)љpWQh(S$6vw@8V?#r +[shkչ(Gk1tQ딗vܤfi99'$XH yp.X+t6'札S > OO#{/f,S:4t$3rߡqz١n궣 [ۚE) jbedG?b}jYsr*nv69Z tBC%7'bzsZY ~'=!ŰySc)SLB٧1_P2jJ$hW0V\Yr#.@?&+g% %T3'N:W$t kǑ!*PLts+RC 1YG ,qw2BWf0KbX ԭc%0|9`QT.رF=:Iּ쏼1\dgwjA1*o:ϗwp Bc6 콄@0j$j,OHVPTcZ*$3s (%Ȼb1H%Rǀ½pYߨ_)W&g1'!kHub8@]$C} C͞a9dБ4~ӑ@D_/k!HBDBϵ&¹6Vh4%\Nf4FDK%+hۻuh^?/q^ MO'O -0YXq)gxDG,IjWE:@"JX NeU bA'V1A&J֕ϘX!@>D[S|QIOdG=/ݔ /|=Ufю&$EsD|~4bǷqjY˱iWSU4/2WM7$g :ìK䶘ÓchQk9;eIVX@"FF$PV:loG7Yfv1Sݭd&AZf4R&l٫REEe]Xq甈1%.uՍXTh.zpwNQG`}ogηIwZi?ef7YAZ3Is'={K)a XvCqblxV[ ԀQlץHf}׈ 'u3}"ǚ,9!$OQS,y s&M\&d)[:߉o꯹˛VOɰ_N2TV121;^Бc'?DIS&!['\IdGEN"),wn]5A? YղbڥGNhc3"̍}!L41*w*($: 4Z?ύyֵ~`6?5NҳVY+̧EX/NσF3z?}znoobu_?PFG?IZVfd2ʑ,N~.f ;Y'XP d=@;,ގ髦-4 V_ךz+Άc9 fNS!X,"0ڀ9`yEhNݣu*0>_ZWr2<j%)ΣHQe[3C!l$$3جGD៨[v_0[W{qdrrFBťS~=}wٻ.;,#\e0X2UvoTe0|x!,li뭼^ clV T'kdReVYȄCGYtN|v rb=|1m؎|}9%\m:`DseG(`rW=kQn#,5x)%j9;2ӧhkNMֶWӗ0ce&K%O&K3'\S7+B?2b5Jz};Ҹ(,ݼ{vcG,F~%c5U;#LM'=G17!|KE?Qd< CO5PEk_i[- BT8TZ[x q̿/ڟ;6:31G 9)Ix|q?bpV l NA91龇矽˒")em]q'i_kLFR}QƇ,~#IKGhHceow?o!݊GCv! LN*uЕqODzԑƽ)n\e^zȤoN3Ć>秷I1A8~Ac(6k%AVNT/Mnd*WZ5g6]늋-w(g:۩Rp- %(~EnGV2 LxYL%۹ XCL&ZODzǖK|3mp1UQaḴd^d 2;`J?N u),@'8#}~=>ݓ\p2X{2:P"ӫ !T/{ VY"@u#>{sZnr-C+?MR{1? J)2$yĭ3b}8{1sr EF2j+m%Lprr"C6)Rw"$KyUat7!ͣF%hvNA>t=1A,_ZԳjH1;I+ icK/(@׿Zc(E&3FՕY7*y+#$׊}d"~S>>%etK{8TK$hu|zɓ]`+2N2s1e2NTq# 2Ň%ȑt(n=ڷO?U=Kl:S=V*!Or+9=eHDy$ Xx^ӣxnn.8㛶iRK풲 RY~r;ޙS˟Ç$}֋yYt&+G+ތVjJ{A-܏ZɽOJc!(kbz9:DuEkU=opǸ=Xdix'ʴfk-'XY!N:Ge<m-Lcx,Rsf,(d2c?֊H *8~d=cHwO~~NB**)T7 fWT>4^{I&OGeڑ`eE|%#r#MN8"DrC̣wOzsRC9;v#v 6 D冶X棈)O^ᗿv!)N7Ij0ow|&B2 Ȋ4bЭ(|E?M֏D. [#׏o0W9Ÿ9p3a# 3YII #T.T#Y+c$`Wow$XWάH%Ͳ~%ly֘/AqfxҬ @"QUAה~S?ZNy~k,PqwG.k2BOB靴1K'y1s.>L0 J!C͓k'4-jJO5ZL'è z =̋s^ڮmcYnݶ31jAi^39,\ 7Z5*˙PЩj5H,Ni)rwՖFXfb|mg@}s/oXn(㔟s&F Lˑ8Ҕ<+G7qRe~ۑU(] _.06;/,_ 6bv@[/0; tdK`f  {'g.[H H.@̱o؍OxotrS )E?U([sπҝ ~MP]BIHMMlv񾏸;90\c5{.dO񊋷rb@V8ca<}뮬ֶd|ecs*#uG~{,IʙI63۞FGUbPy6/xcDG,Lu % ñqPLGn.1¯=W|~ړ9}C!%a 9i.~廬0&^ qid%hcAblJ5'iL ݌A !U=]UGP+~eӭ +lT|-uX fVAv ze}:/a̠ Rt 6xkMG ɱ`f=;FvDfXB6frGbzł2#h{Ĝ||"yNILwRrvkK3ti5=w9ax1?N j8iY tC6}~Gy=_Ӟ0䜲3/e+߿(^ I3? ¬6v1߫/Rt嗐qS:.cTXGREvb]JeFi./. Ƿ<_QY,IQ--elbէDy [9L}DgTWֽ}}3bzd1arweoɓ9UruֶFCd4;7p$c^{K&踇!Z1=VkyVR\x$Jc*G&跸?q9TUژXBkah} YQ#Ivc\ԗd̻g*c7^;QRJTq'߶ˀ;u.џS;\' Sqv*KkYfzYo9i&v~.KL^FUviQKl*j^سN>1 "6,HMz:}T>y-E~KNogBG~eQ_$eW?^78fnolQ'Y4*ঁw!n ؒ}36>} 8{lQB&I21).r8\C#󓓺B_9>Ƶ~jj/K Č %v2!C$=v'尘=K)b+ӆOݥU  tj:=c,I#з8( ? F><7@4YW'ܽj$ٯR `׆I$X.7>a+]b'x]ϠwǤ;

K) -h5 LVy3C"5雏ས{CS7B(%0EBVfULdg18ٺC_Tyz^>Lx{N73չ>RWWƭOiq Y{Q&25Sy efWyyDFIB@raE|a20v;npcg2qqYxpl a#E'8QBQJj8ŕkg)_eYTqx)B߫OMhbAjk;($9'S?>KwrFwqwڒYsn[ 'ՙ@{-N U'N<)fMگI*xbIn8l(R}n?30< RlbLNVԦ:Ōs cm wi˹cϒ<%_s%dep>e8bPBqJK'?M_}N<[sl'JK5ӫթoՂk.+[ױbӴ2V Ci7Ƥߕ=kKCnH1 K%e M<x>lZr86$h,!xH|o7 >O//=ْ*9kX"ba2-{v!x)V =o?T .Ӷ>)r8q {dY((7M2Nh?v1ѨNH˂xիv8>f^篹fnEWzqUe-߲$SZ .My,[ԦX~əwVNWXvA%W䩰)?jG~r,%lQ q\a~,,tM("*6(e_?ųw٩K]>,ə]+9+;?dX^ӻ}kqXvHBRG!R?nv<0#-%m<מP7 /iLsX^3K!fgr,uc }Rv063RE%85.+{"b$ٕ[?َ?Noq*b!`U~D-)1VD]>jghziVw{ێenҩGl/,^/Q?`-ev0ኒc;$Ģ?yG*2qWZ9iG~P09fN5xG+I$DIDlhLr,10mڗ/,-d42Ҫ-Ou?+)Ȳ}Y9hpc8^z5\bٯYIjG_F) Nz=~}c3ifd{#D1e/%fh4u8Y8[3;W+j(;>$U2`ǗpgQaw\q@$Ɗh"\B%FdT/ܖ+y3*&`6B8FQA 3797{gÂʥykKY!k={N qY]%_k=l{ufœĸ}Gv$1p;Bޫ.;ˁ弗N6Ҧ=r3P jJD#@زɃ/67ygsǍ4@ZQ?sC+LK1O%_./fEG۬DzUq)&Ec㗴**ol9mѱ+Z*U8.;#aVQG i&z䌐wGXl]=j " =˘~)I.e4Ryo0|g2ԂExO-C#Z+'lW-/˝Ypޜ`9aq5lfZvzW+֍f47Eb#O8K|jZڔjܲPXP" J='{8Gl#B4l\Ֆٞn+]i$&@EYZ(A~@geb\aKsp8`JܝqUx$.eb9UZשa w2.xARLBL@-wS˞b2v ̖;ifx?8k/{2Y*.>MaǺ,VxlHR* { IoC4үdE2Cz{q\%Vց,(*ƫ%jF e]k\G#xٺ8~=Y%\?ɩb'qV;3Br)x1'ooiT`k!X gS_Ir"qĕI#qa w-'k8Ϋy8X$!(S]jY˛(1g,a_ǜT"lV5y+*shR'r1Zy˶N{-y'YkQ11Ĭ?i 11=Tx1s/-^TET]'@y˲iiLr+usɏ"RVr"}/x}xS10k6Os̿M^}m1gRg+-j֭(^%0\^ͦz*+:/<~3#a="|LлԞ.Atr%4y#eo4.sʪ(,|lUPIQd7ȀRv*Ut>QH3CbDnYyܬXa5ub xqs]~G3}F5!qɴUDhk *JU]v~v}#4qc>2D:.a+*n' ?a"دFH4C1.QWerP˳ǭkԸZKJIF%8fG8;U."Rk~ ?#`R{-dc3*DZy2ADdWyT1΀ %fqWs3i&x R '!)$y^8JX 8ߪǒ)%av>_႑ ~~.-SVyWO aid%[GE.1נc vAܰX9W/'6'8'3rec4͉gqrGVk֐Z a*+/{/[v%=eLFSqIRܳb՘O%V8 C xeFk 7ӏwm2dr9C{1 Sl9W7'cq|8Iٞ0s $2c'P=/m1>Cx;5l/4\-$U!~> jWhH%,Kk. S*bVVU^-zgcs=Q=͊= 8^VMEILj$@"؍JeR~Lj#js4dd Tqy,zOru&X`4GLdFMIQFr tqOjbub?C-'2X=3={QTL5_'jYCdQު|?An{T.Rk|^|.'/, dp$mX;Ŗ`,mV?8G -!0LJr;dEVecJ>$Xq2BU(^Lxsr ?vz]ˢI'cDRߏ{K9a"Y Go,8T&I`Ι!6A2yWY {$w8/OUUz]hZ>ܦQ%y~0u˲4r}QإR/<_{=Yӝ5eb"s汹NkL'ah3(DwW[ׯVW㹷WȨ7̵:\Hzp͘%I"-y^G˴L1N7wx1͒ nE =[qa:p! $JUYLiks#rLJjW>caeBy]mLaVdTQb+E2\||F #a0FzdωR֞Y򘊭\G#cVGece3Sig!3Gdh}@(O5Nޑ%PK,20P]QGE t\ޗ龱ژl(  HOx2ⷾ2bFB,]}fl/2d UAvo+4lrkV EdZ=FI`xWPd%vF_צ̻ T^RݣnjL27V u;{cVSwRh2fR r~'IV}@#.CLrx<&Lt\K}߮ 0߳2leG ] %-"1ZZ:ġ"č'eEb?|8% y.R1c.JIXdVCEyq@{&_rR"4Wb2Ng)]GNt0דyYP^ &Y4{pfjBZґ;E=þgcxaoC'6pxñEzjG;xr)H*5bcFE<$KwOgȱp~r7*CcZwkf-AN? &~Syiq6 ^86& O81<8KF?,~5J>Ga,Xšr|.n}0A%W=1PǾ *1X ftt* G#`UtLm9>Zn?:X&;)6?+5XC$vD(_c(/d;r]+ܯ#E< T[X"=Ց *+#3Ʊ</;Yf!Tq7{7?m<>q3arXleof=(85ZK?}~{21w䴊z*,wjޭj|~/65-s4V\BrOz9K, $F[2Gr7v_ϼ-vYg6VW' AI%zc ^)Y_jWnTޙ_}|?) ژK/WiRW<{Ej(d..+X $^ ٮ^0\&#ЏdzՉZ+#j)AgؐsjsPgqZUUޞx2A$bl~iltR1_+K׋`;҂j\<a-c46/T&PjGlOVivX,?Rqpc9RRQWLcɗ) r۹cd\dJq|#+x \Kڛ<2nQWgD7g7#4\R[U5^e!$ $x?ͣ 7kNN6VR\VHh3YLuhdv%XGY2?ʠQ^f~<89 l:Z)QJ?%Ii K?}M>-x-n\Ra3r+!){جuk4%3ύlW ^:ɓO%RUyIG(R޾Jp6Ojx5J=$|#Ե?ԠjO%o,ʵB$.)c]PPNEF8ZHXC|Nrr)OYg.nõc:.Ӷ{K!8'u/m.;lp38[S՗S2 A+0gdW&3U Ĩ;7w(6s%ǎ_\<^*ۧJ2 s]U\͖("id15~Z>&{k8٨rI$zX/xZ\\=d<5c"{ʅ8Q2֘9:?pBw/~ex67)dqNQVlb־&Nl 8f 4D𽌳C͇ !<6\VJ,Lo+a˔l8qsN\8DŽ1̂Te"2>#myinGE(y*<_15Y宑C d>j.xJD?St]3V;g|cg͐?afK yȼRB5' Op.;{3=_լӣ%n곭7࣍uE5gc;S!>Rk!eҹֵ-Ed/ʄK9dxO)cƼgpL=.d"^39q8G̸-?e9#"|]$򸪳Hi sfoY`SOg!f՟ʲGO8PJ!Ápuv/8/n5{oAoy=v'92=laŚRWBћ:%89C3*W0XdK7LKOtP u \y_yt/&swR>G'7&a2t)yl;t/R*jik4gIӵfHqOS/'+.DI2WRnIAof<>cZ)`-;1ZqC$0C\mI_bՍܚ,Q0y o$x +*yYB+4`1Os !g^䪘HP : eDd^_]-)50l*~p2|57^62|fb`%z[},{^˲V8$8TouMcbF?a3SFR&(^F^GYIy*t`}ƾ OK6mIfzŊFlxQZVi"ҬOQڟYi\9&zRxiIY?mʽْ'$^N~`ߙ7X&#`cU͇,PԖVSVq59嵫Mf:((QѲ:!I#n(p+u>LX=ø2 c匔a"2!~bzfl2aW$%dڱdR\?V?srᚬ;9A>S%zL/ˁNdXI$f%׿p?Ryr%kW*?l2Gfy-ҵRܵNy;KiRuqJI^{H܃|qհ,dX쑈NV"w)K9՚\FMEb{ kCñ~GKX5LWÌdG7 ĕ-D%hԢ2On_Kq9x͒ ~p>?,XLLM}zm6?P<| $3KI)_A3x"5AKovh3RUqw݂{ P5ߴ^O1ckW-n%➜ף^:R~ap:6:܁v2Mic˚K\lܕ,^*ׯ4c5xs_>_ڗs|Wg(fMgEbZ됗kY7%!4!bK=GrY y?FӎX2 g-ϛPǀrbK7/(LAaRP?ܚ^g|O[8 29r|kײb_=so_QgnHUb#U)@KI)xpd3" s!#nO^ZY];~{{WWbb(p։+٣ZqĘS!R`XM.N==KbŕJBd[J X?ZrK`gsD8Ō^/~jL3Y~) ڕYca A,PFqfeܣ=z!^Kq$VI'xMf8lXRyn:hXdr|W${wڕU04o┥XS,k"+tP5]h=(L%]KU'#(G%iOU֧ #ݖYK,xpI/,E۱bǑi# BDg#ŶW˽{sgK9g)x!.6yzCG1]GS) <)agvb͔f#cQygqlTkR`JWpƐ|F;~+˩ 1/B+f0ɍ*~DVXY4q?S)Q 8aݗ G,a5mFG](ٙ3fF.7ԋ=2xkEdٱ ۽B`|A #$ԋ$6o[G.f:SEj+@8In5y!-y@,n c+$g [m/c7e.LJ!ѐmT -Yb.2mrB$i28$F2 ,םY\43: ܿ.8F]@|h~M\w9n+Rdhp*GjU0I_$u"HɃ 軐$`YbH Rq6̪nGt$زqfa;5]G5.83#Aɑ>˹V[:|q0cdO]AމRCs_~3w JH +XЌ߆r6 O飁49J8@JJ5#WV@ݫ%FsnjA3yW)( $,%%{XY;y_Y=7J]{qm'U.Y5'E+vuku@2bB-t#秖?Xs)^{nC9a1,rU@{_ XZy>+,kX\UB6Iw3HDCd}qpk,:bV #|t5c'] vEQx1c=޷c5cbeYWXJ,E@cmC(OXܯ}ѽ+N2W/(|r{Ã"n}F^[+I\XdXo$ޥ{}⼖&9͹̓YS;uNY,+@;3LUUu^̐*Hn}W;6cܰekO Fg`|n0FOsc/ywIdž9ag)Js5/?2v17qJcl/g}XCd%AS0+Sb18ܺW(QyO+<=V&QJV*$aԁCZ׮-l?c5;Z*W8/5DUei #?V^G7%k|Dvcrس]C$;Б$Q/' ,Ǩ˗SlPɚrKe+{-y?WcaS,sҁ;n ;1O?By7,TL7!) o4Fl|FR C1QM폳7o-HjWg'9>F -UHxJpZRZ+GdҀG܏׏L.77 K-w%k2>b(gyO F`#_鳌}3yǶ>{,WR|F XA$.1uX1~<|>}3N=Y|qcx#YܒRq͒]Eɔqc}8\{%닊xGto#/_q=H2V.(ebA/xsVbl$+ Xd\CQ27#62M1:PArPE\٬A'Pk(쇰ٜRz~yf3뱒0rKJkӞuDr4{w8^]ɱWزϒeyY,Ngڞ 5pcA2mvǵ_wY(r\}HvpuLL\ý?ݽ>(D8swB.9${d-X`Lroo܍橊: mЂ8 ia[ܥ^-O!m),{s8!b@rV?eHdǭ*;{x3 tK2C1f|qJ* Ѐzʵ?V<ӯ1魺f nD/[#_OpccRrqĸ20vԪeTkx7tLlkb<%[Ը{C h^ΏoCXYrM5~Rsh3^C23ÑrQҵ^g_;~DGl:B1QbYfu޹w.@ֵu:4KQ2u;Կ1Ƹ?P6g' Ƕ| +,'DTK%`:<Y 0q'^׶gX;|9bTc,쥌#)2Ǜ7HGQs.n1ɏ"9o!儑!(*Ǝp|GV*\+f@Yibd[8'!Z䰵JtmSC8wmN 2C_bqbevM$唻6M^zw3?|_v\X'p;LYf]z=-LYbΝ|DD%qn=7O{Yygi9.#!E+DFxݖQ.m&SSVW~?YP(Dyxɲw8nh;- y$>[)~7V.]=j4/5SQ3FX}oٽrS`1V$ 1-V֋S/׳~vKj=k gb|\c:|GS _fcoՇз\Qx+-^,>Ej:)HzEB}\N%mV&?Ah>w_8GqۤH䋛$%Ta 'V]9Z26_N_9&ryd:Y̖CZ*,d ݬ vfŊ5NJ6髤л구0R(n5jmeI,ƧO d~T%&R9b;btF`|,(,"$aMQTU#+G鯞nW+8'r϶' NVs%z~{jz̐,\J >3W|?$<"١U1nl~- HrVY@LrW-aNm }?^I~j4P,zI ?c5Ö.\%d2BDqƢҫtYOv c<1&)NqQ6). MaO[{yK%xwITҴ1eV%oM+(>/#I5? /,ۤ}Ka k^_{k~3/p0|F8c~+'"%hzU1l{qQ!X=cn`}Zv+E}3 G$!9L+s$h$ZЬI]%c$;.;{^υڙe' X!om>qYLqɇcɔI@.ϳ%+;Ua;Ҳdk]%|.q܏/_XFW. iF  G*6m_l}`bd Y! oz[4a98Du& :@0z'^ײ?QL}.붜.x{X{>8rsx$1Qsq݉qO'o(lq\XM7g]~TC(f^$cYSN)'Rq9f{W ? \R*9 u|/T\eTy>9~8/ VVGtx;F TD@aڔ*qܧ 8OYj(A}]{7"a/x;,{\flY7Rqw@t{ϻ;~<{|RaAb0h+&,=wp}fSJ7|F%+mAGJ"JI?> cf1U-HkC=k OeØ−ZF eQK [_2?i#%#@ӂ::?^ $Ը lKIZ1Ȍlղ;/k3 q+b0^*H =%"0K<5 )Ȓi&55܏y;k߆Q WZi"?[O}7v2CmT3wS9#.R%P _v>ߧ{_{/u2BcxaXZQm[._I>Z[_b ՞KPH>7m h/~E{\0SQp> x>5(qO2s_Q3XYD.CYOV$P?/k6hoq4JAl-Kc^jO+K%QbdMn_/`pY/Wg 񟴩U5@AgRt/v/s=I8kbrK9+ "iaIhlE;NՖBZ!s|hzAkLo6Ӱ?S3\Ϲ?YCΞ5.<+Yzpn_YE+I>Zk}i;p˷φmS2&7GR A螣sfŅH,lp9sD?+Yмl=/c<-/ܯrk̈TAښYV%fu?+pGr̨qQ|mV@lm[@(R52Hʁ⻘GͶ3qjAk/>זb2O]r?%i-:50AǍsSri$9y]h@ػ8f^y$c!|>M5 ԐHL}賻k?K˞3Ȳmd qSgETg$,9"F;Oo-xﳞׂ55,_7ՙ!ƪ S(Ig8HTwYaNDR{y/j2\\r8İT`c0|Yշ^b܎Qɱb6+xM#fߵ^@`Mm$~}Mn5=\/o- 5[dYq!49n)#qgע (F=7ѿOvQS9 $I+$ӝ}slze,f8 B-ȉMnHxʳ+jZQ&FGG[mB+ܒ>{iUgxfLp_L_^gUa'ŬxqX:B%5V5=(XKv_~ӣjY,xNfJV,a%FL+.rdFF+67'rNt{Z9/ˇٻaz*8X*L,Yy yُ m<FB3c5Vkl{3W7j`=źurͺ#^A%]*ɥc.O݀ KrzXW_פXQu뻟c+Zt)KL 'ɿEqpAbĶocTqtnHWɾjf3J j.o_|qد1Y+ k^?%*mп:_4;Y1アUl1.8^[!F*F;]Hsbqdxƴήdl;!Gx{}x-K-eabir0{f!bQq2&jbiD1^ IbHrlA"; {UR# I^V%(D/<&T-fN|8" VˆY_׫ "MjaiZ2*CǶyqalȵc$*PVL򹻢pɣل@> ܾ"-ս>NX $\0;iNbevSSUwc\ c$P+ P'bha#|7O4xĒEFڐdؓ!#wrjf7Ԋv[9hriDqmO?m#"9Lgڊ#)*TaT(j2uŒ@gF2/?.-5|2:vVZ1[1Af)c%sE2;fAٞOdPܥ[B  %;,OX$wcjKff$(&†h46dbIK[N, {VP@bk244cRw3Xs噑HA|PO<T?jQw+OvPlc2>{V; h䧂rռ.Vh&J|MۘDvGR57&&.Zϓciq\ml6[Ei1/س5xfcRxg#}p3V!O~իR`j?܏71Z1x"YqR_.֯j5 xFJ!{z..|w(ʸɡorqEn,%ݑxboc2\ݳhYOc>1EZu};2uэ0԰,(~ ("3<,M%MpnaTjL{E H`l2m##JlNI<,$.Yq23lCcܣ"ccw>z,e`pV2N$eY2/I䏷ݞZ vS:x xfiIXC]4kq?=ޅ-cQjV|%5 ;(V NJmHTu fi Yj:K'`Uـ:yBblZHfq3~^EPG6^'kd ۦlG +qKY[aZSP0u1>"KҿD \(j%=զ17VS ?seҬ8OƧPf;!{"{' Oc9C`A45㩌ZYII2QeLNfXuIR7|rx2ˮ'qY6SƱVn51.eZ'd3 "]pvpMz/>G)w, lSO TG._'G^Z,m7러=CN&1){/|Y/7/E+v2φwddsD]_؜$ٜo97dN)b7ơeFʻhf^ԐON/>?ZRj4q1˰@ Sƴ/ 3Y{=Rd9ϭL$zTȻ[a\(|EV֞G0+~=\Kܿwi{.C{-c-kf*j+a[ Uyی_ƱKW sG,s!3@ŏ&JS J,zfeǽA<s9?'?)cHh>0TSRHq L{q5tL&3R 6.9YT2XJ'D|2{`b,b2IH/~mW<)T/{;su)ˇO0_2 ,U>*9\QSpugOoXO.A>3)ab: _'6FX[Z_V,Jx;Er?c^^ ǼLI$M !L0g/94rXt DKK ֠m{Rl .3Ȇ3).;֛!*8jйfZ֟Ax?``E_|\cisQc ";s Bzran6n%3Qc&K%;Jt VR.bЮ`%Ug\dE"Gbxx=\2odC1ABڇ=ly*\+yH"$ɤ^Lo<ˋ|sX$E J2"E{Ӳrq7@98BKSLOcOys={sO\Jl㗥Xzs|q՚ x,WҘȱˬ1~}<|ck(*(f"I 3h+ TV)KJգZ2Wگr4K\Pdb!8hj1i^kNe1"K8kL\xb:K[!8ilg(>hȗylK{ y=ݷs3q8&Oso.^<@u1~d2<=}ӐqH mb'>&sy_$~l'˒̅)Xy&Fkѽm:pLBS2V,5c%L 9)^5hK =,WyXN78wزXdc8ohZ+E7V F*Ƒ5XhTx9. r̩ܟY?Azق<՚dyۚը~w=S'͖|PL(88eR#}C/D;VX<ew.E a ")r|zfW܊<ȿ fs%0#R#/cKjѐO1-!^!g lk^!Ȏ:GIx/)H&8< ^6p \|,.AB C- lH)K1PyX}>s08h桨̭\qbFW!Z5de+{ 0Sһޛw}qÎ8eq2aDrF Fckv}ۼ~nNsa/pŋ\ፔ5"#.!Mo,ɱJקvJ_'nƣz7r:hLʌp}/RLr>G b[&>j;L^>F+媙i_KN-0,1ŝ螞eKzmX\L\y?98egǔJ^IVv,ϺK1fC}px*ZIqw-~~}|\OV۵e5j:Uu"*cWqX %[!޹?q#,e20ፋQx%2s'A鞗񌣗ڎ!qs d?aQ9(c?A=wQJ&v.9l*O",^X"a_R)!GaF~ :{):8d_.gQRXW½ .' 2b0+7%!*bq`Y `amtUc뇿V>T^\FLL0LXQXQ$#X#OPoԽ,a=acN`9qJOS&[}ʹ$JHqqT7)5rVE:TS۵%<֝"o&E.=?azu;Nd7}$$!){/L?up1a\!$rXkE9U山lYN,XzfjrVxDq$bӰK'O6rC3`ikځVx@8mU4>G̑Eeu u^H[V)*# j)_MOOOfLW Վl}Fj 4К1Y!Dֆ%CRͽp)jU zh#ob(U*觴~?06kY%-9&XP?y };T٣,$Ij̱ 4|F{S~?su<ws)2h^-Ѯ=OɃ/eqdFD*SvNӲO$5N',xNU,R#E.|Fw4md WmRw"􄚉( $M6Qك8 `pk#]ۗ4-1؆ܑ3yJ&DA=}mqkSiK"'F֖9]F ww~*Ƃߩq62z lضw- HcD}bþvD*$Ov2c5 R]q#Yøs)dH#)ds-TݡɿiCEW]LQ҆Iq߶1ŷ=A`:`A#{* Wߙ+qk4C/&BI$UXH1Q 0< q6N^J&2j;3S14b 4n7fpߟe*c|ſ{y{ IbŚ8܍hY׊aB9WX-#hU3_"ŋ79X:)L2dc( M{.cś'9$.B6<W %*-uS:Kn;-J8θF%a,O4t3Y^ԑYF9q?~R<9gӯʹ89n=n$DPhF *L<`^}kx9|J++0Qݵ gViE+2ғ]yg)]?~wW{JlV(.+,Y>Ms{0LY/jJF-q>%[d:rxX2*ݝV=Wk6xkpzr<X|eBYT`44/Qoo8XĨdi.˖Qz YroyIyC mbqY\o E!./-۲LU$ /wQ+W#g<)Wʝpe'Y'&L&[`Wr=6&*x#ikM A^;M;4X^̱G'%н_!F=`% ^(cde%{iw>$Rˮ0f,T)2^Mu}Ĺ%g/yhf"aW?SaqbFs3Bц=JV_7}S58>77tϓXi |\-t m,fxI`9&c>AcEGC y"U\zJ{91*w'}{kQ'Jq"Lf*N$P'IK={yƻ/{iv3nO%k''n\r0ČeaN#9nIMnjMF})rK|QXx݈x "P <0a֌Nd~5⸞&]N(u˧F$1tS̰/bd7dgIWK %˫S[Lkr5+پvnKlCc#ןwS[Y{M'{LHB ΋='ՌؤD>I屴_տ wsrtuƨQ3HÏM i{[=Th?r %RrqkK Ԭ+K ч~?zl6k/K旋VHd>ӖEHZZ=y{l~\KZ{_+.Y~Uj]AF.,($C3 &p޵h埗7qv,q NYvqG(wɒ$KKn}|"$2Mq2e8nw62l Ub`Z1"Q1YJ@oi]\OymJq-xq7A]TDF!]5`2̽m?q!< gPȖ(ݵRjHxxb+]7G_جW̦K]ȰŒ1w5hrRY85uO]Wiw8'P$;IϓqH|qrtt^߸yW"B$'WRIK1;];]w937#eH24 8_\=V~E\c1x/_4Xflъ*З:+2Xt}\^ D4SZ 3cI]EXd o'_fgy1a9ÖfO('NLqԜ Qb ,soj}yuijnsiVɼ|g%x4ž7V(yY gQ%w`;Nxq{\sL9y&ɌF&Lr[/K>8g᥉ OņH˟xW9/pTl7VE,I)/H1[d<^ř IZ4r'oUG6ھ`S<6k *ZjڿMI0ѽwGQLMT[dXe-ˑop֞i8FjpbK9˼É$.h`4iw=׭v waS}T##\xl.2ufO }9 GO)Er&!Kh>厂ԊTAz۟G_od3~-yx-Zܤb$/KJtX %DfN˗v#(L%l"B8LnCJ|-1G͕E'*ئd=أC;ȥBK6WΦ"„db$BȨq~=1x|z fA<fXso!|}o BJ~o9ߴ>aGPĿ͈IV.׮[Hi뵖'rM3>k[O%L#ޒVK 26A>>s\{pcFyWsSݵ7wY{Rg.7)qjӎ0ۢ8gobJ$I-buk4 (K`fBPP#um~R^`'z 8/6d ud'tbd|`KVO`8|3',KbHz V2ǂ= zza3,%Q`IZmI1yûeqϐ1F4ųޘy`=r1>i\gxN Ǣ9^㕎 6Hc'0ط{3$֋JJEi㩠ܳc$rw06R_qjfVqr]kbIӼQG0ҲZ:Ic=p{ýr990Ių//umZvk˜AM[$ JF$PF@;;淸_/쬣JV:V?C9r>"M+dӂtO`TYF׶+GrFAfM v|xaޞ>٧b>?5Zw=&'")jK ucOb2UGd*Q[$? ҾU:,&q5B,O ijJy1qciuHGKdxM{bҞgy!c.TɎDe=bHLw< Z߳\wcYZrxjKA<2n6 _zZK߹#| F^aȑeEPuOJ_X~I,JoiHfW?z2.8xib-%9o~779|e4/9ek)B\= xb6jp؂|AbPڛ}7v82I?Fq;\P`{@%$R MT.,I-4$c+CNR؊NbK7hڃR*K3Z"<FV&vwڃ=vFv)vqHz_r^|oOyB;_]?ZՆ~h8WoC=ŕN+wŷfn'o̦Cͤ(qrBT$s=wP\C8q9ynscg,z ?0v/Hkc98(,Kmux^Y)1PN5mJK#RNR?:ӕZSr8a+oupZ4JKlD.6P#|dޯ q[C qLg!( [/̞)Ƿ癙!,4mѶ{ ʞ\<\Z[^RAs%)0iO*;ռ"%{"jZv?;R~#{|e#n >)$`m, 3[Kٛ%>{'_ʱ\_Z' %Y*ƶ/ ͑X%VXSO)T's՟3ϳ^;x(KFc{C`csZXAmƱYI,v,"}OձK2F)31K`dJSwc!.&?c `O6Di $ʅ|8ߋ|uߪ(9gYqv,Q<y U-1"&+V(ɆJ27~X1 ~3+"S J-$U\tA-eQs;~F&_q~+c(V;76zSL6Tqh3AX4R-?簜C@apP{FǺ \6ڞ'ELV /VK=>* Ԡw'mC{%xw<9rJ~aW`/Fm"K'mX#Œ9! d>rj&ًkĉR@$PuVî=T{ٗs<1xKY<.*L(3Yy۴G?[W57H$DYy$/Oc.?9XS7I'YHjם!|rʟM_qo-^820qVOcb[4QZ,b6쵋3ZJ=|s`!e Dx` C:fA39Nx{ls͒&bVDEuyer>s fwh< GRؒ⿈;c\ZaSǚнtũ|H`tJcnBy#3oU,ŽCٿ`q=š#~ 6>?pˌ\bquvfѬXJG"UۓJSC5:RFKZԱTCPbVץJ8X'|K*p'AMFoe5R$ȓ[I#~YOۼ~Sx.&A7NaeqX!ZlCϺC$2ע&w_n-염U+㙼{Bleh|%t)Zڷnqw}#x&>+SC'eb6VȂIaVTGKL@+DI=違x-K9%I].0GxcI51⎥2 #dghmt%j펪Xq`liZ-맿V[>Q_{ΐYJ%z`,+YӸL'jOS=ˇ{[psl}s2T"N;BGbt֗jښa+y\z>F$%4J+En#!#r+6]#)R8Gx #QGpL >]#bqRtxC>I֛WX29w)45ۯ 5c!+-ZYg+ai ҳ螺׳GJ@$JQOz7o^L95r PPɕᛌ<~2q#I:UtovV?7K3ҿLa{W$ (#J=NBbxVGZk21zHçPvTj+tm[U+uPRS:XճQ+K4IpBߎnNX8>6\Ȍ%8cʓ%1~:^*4W"kj󥧮#/dxg/xnQ!ǷXS8ef:hKI2ԡĖ;451WA2ld27q1Ro+/ibj$.Pc,wXe6XCcՎGkNso;pi{[ U^)Z\N W_EWY1N4%U$Ò_01zcv+XլQrx:_+LSnqɏsdI[UWo?UZ\*.]Gu>>֍2Uc )}rwܟOpgI`^Pg5\2*3:HREnxlؐXV)u?102|sxNZ%Jӻ{ `l"k#ԆN.+{LQ>0K8<X޽;XcN' G)2͜mQSN &J qwtnZsؤ̿u"#V[0L1|l=clE£R5*^b(I?w p1_I<>C%4Mg5zIl@byi ?=VDZ^;Jl52YNNH"To85kUWU*ӖW_=OM=v=u<1$cnSVgu,J&uß8Yi1VuyN#zOe59>c5ұdT,$"^׃j܍q/Taޯ(fAW3-I'VsPb:ᚤ)(o,m;x8$l-Hd-݉AiA؎,xRpDLI'㵟 =}k)AC$Pe)rgUnw<~{\csC&".i3$sUQM.ҷY~cwb9; \/{V&JqKc+XMfxl7Q!nݟ_|Qɵ=2ײM*[Ǔ<3OW1Q "qPWD[s`^n/^\󗫛Y_$nk3)v,YI +B7qolǓ\&*xQYc'ͱx^;_#~5Cr"n)ow5>G7C2|B5t{8̖v ]1Y0^ln?-WG7?nrwn׸\͒I*sO ǚ293 Q% ;b{iI?c%>B3^wd6ۥV#G2I,I+F^qɛ% RfYZ%5jZdZQYܲrڲt?e;2典ט@r)>GO勸 8r$d"j ƕ/x|'WYهPVwi'+;/3#գqYpplnY FW5vE3'k%vŚSnu_<cm_ύG j&RAiKق [%iJ؂nAے6PQP}˧5kyv܆K`OIk͆ܖqZ""1w>wpK8Co62pcsɃqv,ܙS8yK")NT]U SpGjmP8#/?Y`%F% BTI?Q9$4j\{RXK۝կʑ_0DVyfWܿr|7re29ϔ ,)՞JV!s75 tO۪XH9>rFۺ뎭dDܵxUHEH?G"zGcmak,q8&IǮGymlH.A)xؖrxvc^Q9>Z:n xKOFpFIխv!!{ Σ}K;ա6,hGȏfRՕ>[=BhfVldaZS ,WNJ-l"-K, aA$fTY4n;Emy& O oqWѧk9q2J[2DG(MO1x{/O\Yw=ӎxx1}89$ PYW,;))rdq"^q'Ppcy6LFw#,R!ێ2h#=ѩ]9rf q{|F>8y"!QbB>D#'d0 \V x6)x񪉔)qKs̲؉"=OUm\H*R7,4ʢZfK QV}$hbHchi_|aVH< -C+V\g#ڹXs4,"<džƣԱ~<Ў$G>$Yq*x$;2/ѯ?q2}xH?9)j|9T ^΢xֳtsO#V ;=d2A:~XdDuDzUb=Rrv\fNxɉ1,V 9f1:O#2J qUZ8"ԳTw~җ+0yJyڇEpIܬ´\W 4SVxaULXQYkyܜ'IS (a8٘.~7kv)ujO5{lJFҖXāYE#㌅hz\? Y F=lj b3e[x8;wcI˺9Ẁi8Dj+|# !vCm /{ mZHala*q,:`FLTUzl~Ilr%)#V=B zh9g\*N7P.qJqYy+!F!pf&6䮃-A.9ܑYc'-2Aa!*6VËR7^'892Cq9%*~"ݤc7wf[pfjJ*dakV! bFYb^ ;ic}?ovrW--z_<)IF gQ1V[Kq8r=OOi"MpY0sjk) _QBnβ9dܣ+ms'X(x;1Oגvid2fOwu6L9pÚ&N8(?OnŖoHЫvHD]L쬖h14ZMC,3urX1{q 8dcs#ys1o\;CjhL|≮1R q>:ܵ+\5!f9 $bXk{^^ڟv[]{ :][@1}qg9,#35'xb, `xײ9p_Am{9W$yg͉ؒPBVy 0lH".x}S7JX2D1X9HUQW~˷ɇe(MȶFE'>7!CX4/?۾Rt Xe Kbn8 #PM#3(6$ؓG]zlQ9jQ.4gw5 ly%_ʁh+]W^h| HVb5BHbLs_k۾C%J5~\E/EZ8g%e&1EʭB,DDG#DnC2R~I6S<+7y<&\q!PB WMtPOizt㙉2NaR,r#)9NϱO.( qeJ O/_?gm9~m&˽ŐMNo&rVI%L+I3^ qFmԃ?'w%EyG0%2*̅;UC4GP&E{Q_Ƚ e~;yJ6r9I3OVݛ_"Y7rk 9dIdѩIden@S5XTDwj2Pd['idVU^ȻoÎ1pȑc,?}4dR(KDjv~y}#U}Ga~'^A?5j*fa5xNhF .{2:9>MȳR$f2,QԩUF*iSYz(Ux묷]Y:m"xqFo~Kn '}@GH]AAvuzK;NseӞL9)L܌D WW}_G9,QyFc wz J;eJ*7C\O7r#o\A4WN:-aKJkD-o W{Ȭٟ!f2Rb6ݻ7&nV ,TSP7{ƹ'k|vK?,BL'֌gxce r9.AT.GflN*Ь6F박g_)c#\2Y^Yk'&cyzu]xI&2!\8PPCͥ9`FQ}%6XdaT%og.\2lj CȖĴizOت|-°/= .#Vu^ܱ :&@{Sϴs]o-*Kb(lϷYIrf@{t7-c,/Ơ)2^ߧf۞8d(k{R'.~dr*A^8\0I:H,y~iqy1wglM-9kSO7Ec坞{"DРm\<?BpSJy,8 G$@ ]Ok)v0F^ʭ{C2lG,>|ZrR5 ,uбbUc,|rt{ Neqpr<#'m~lYe`h떜?s8?&~WLT\匹LLup_s .  P.rb0ɇ+PV9+ۆhyURWeyDjF{ұfb{s>.sve0}|1!$Ô)뮹>aSќ^ c7+inc,TluG{])5U'\ý2զ$KG[ F6VF5spq`݂|?')~Zz#I+i1rG8~sܵ5OuK&F_W*³|8vWEf>=ܳUi4A2>Vc#)b)B'+Y (מPr0C)R~tԼZuh#VSb~HY%GtU=v$19 M/1Ut{]Ve:Hxdt Mqށ~[]WϖY&CIG@d@Yhp]p)rGRZӠXlRFiz,G~c"RWZ-ݤ] > }Gwy$JŌ#y)6)Mt}rI|#bTW/n ~{6H{MQ4"K*k؍e՝T$d]FK2qyV& /.U9lnreI1,+^xā )n5эs'7{f!]¥qQ>ޱL]ܻy68%tTeqX/>ʸ?9[٨hԬ 6ZjuI9?dī$.q㼊9|,eI~9'ȀV!Yq)c+px-,j+0BAO/%.\Pb-,f\xyEVDx-zMvX&{sȨ{!-|n!-i'5檥J:ǐDHm[C%C yvȜUjdx͘Ui2&О`cqI\'/r9dS22hBYfNOV0aq_J )w5Ww38śK@B[Rš#Ʒ?u>"vpgJ%๜V1Կcu_v)EbXDO!_9qy/!QTcE$ *=h'g"/hm/GI[^*?wfk^+7f'PNt3^}>]:q dGTdϏXnӻ}קCSǜeύ,R4ٿ3&gC)Gg1jڬ`3Yuچv6+*Ege1^5Kz7HpY,K/ CyV8u9Gu0 x|d YٗwF21kTlU*ޙj p1+{^r>Sy ˋ6%FDyxЫ -dvS%OO@aKa!HAC񽶑j>k1xUU/6 )k sM}FTIրߏVwY!X@U'W $lGR?N;;`vI:߫S Rv4hf ދcqt lӱ }v,db% XCTm߶zR>Wbc;#J frWhBc.+U*5JO1Vr,p_ݹ3̎G|]Y/M,^7m]_*kMjm !)oIn(Վ[cDf 9yr^~e/ XOplܹdxd\lx+̶kMvUrRNC/GٝsGk?y)?mc)&Lɛ .cUw#;S$.*p͛w'\Zɜ:.9WsnGoOm0y>Ac=_?-돃/!vd"SjRu ~{/pw1 &>,N3Ϙy+c)o _cO{ݟkqxx˜o%.3Ǜ G;'sS 1bc2eϰ0({w*֞Zcƭ1k/s}#)ySy.bZu>?\QS}X< )]Fufx]_X;`GbvQ#P$ JeVK dɡD T@:K3 e)Dݕ)RY#$=H*|,QBeRN9eN7hOo;j Q«tGoF$b4*lVkCȑVҾ(tIj6ćQTd-.㳐$#[N$ Y@1L|kƭ'R|=`Hߑ_RGJqd%L n߆,D(ɏ[5;_ww'oE7˙q\^uP{ 0._V,FB#1W:2S}͉]? Y[45?o'1*'3T%9~0Royv+_-ʸ0v{ *WJ9$uSt6+-VIkq,a G$,K*"12Oh7Xe;|r4dϝY+:Ԍl]W<5,:#r7CZ|ehrYܤkjF6F9ߵ+S1/wW|7طrhL]UmAbXE*<A ZQn{ÏXܿV"bdbfRA$C,/PsRߚ5;fˤV  & KM_ 'TfZ8GGÞ=k Гva1{wdNP( YqrKr}%/^{WG6;ʼn`HW`A ,+Nd?2԰fo[mŸc_L4cYrTWX M+ʱGH??D?m`Yny\2l))ZjYBmfhd1UO$OE wIJ7|8ψq\Ac=Jl%%J@@,|jJb6|:w E^.4Ry.e 0toI;?wP0brǖ=&ˈZ2]sٻoSLޣ'C,S2q6VC=}~',N=Z.|f{b5d@6"L8c:'i33p,rckEj_n24sc,ݖQ<qGk"T`xϸraЖJRNn%WK soVM(Y eQc>c`Rl6{.%j:pV I+MviF]5{n~=Ke0K\g3xI]|^/;&)9]5!dGIW:Ye\}Ds9G L~} ٫#̋Y{#cvyͰĹ.Tdi|QP%ye6 7=KTf\ 0_,/ȩ:+Ո'Ժ^AN*|O~Vw=ȑ1[ucHUMvm^<̞H8 ^(9!'rj_]oz 93wf1!'23ֺ2H` 3!Gn 괡Pa#^IsЬ)3|+% 7愉fc!$րZǙ"6 &%k5Е%% a0+;ܱ,dy=~LyBY$BPm_vL{hMkP9M齻Ch>M[5b qWvSX)ѡN)];xh%OPQ׷^CeV385f"hi%rnHV*E㾯3-m'r2ǖx+9x?ѭOUU{&L=4cp+!δ^.eF6yh~/GfbF쥫b\uU_o,rwrqXJňU%%p;h |N㹄cm1S&Gc)cZ&S-Ks^g¨pQ9sY5{'-5Ld!9VUV=;ȩ~p- 7p6^LNN9baybMݜ0hK[)Vg6WŮ//oq59PR9H]` R j_,C'1$9e)ec1jyehDno[(R;yd=/ IS)#Ĺ*m`9?,YTR,>yW^&fd # m?'9?Y %&e~<9%6I XhTtk i_%_ _xܣ_5jkZ,PWy)lnZJݫ !sd{n:, G+7N^I$CZzqӛO5:=Ka<}k%Yd +͗Y&$\#dvdh,yUx%JyC vW\Um,h{+q{<{7朲2'{>1RLI,@O,D ⭗Q˓<njɟ,e͎8N2<0 }\|&Vィ20"njg*"G`6q 9JrwS_ㅢUXcq1VF k{6T4? Px'Vkr89h"}gt-Zدa[1xf)ع#Y +?QQs6k{sz8M4LJ[ 4bBNi}Nu퇵V-,5MjZJxLINjԤz, b5RFY8^o;?/uݙ g'0qCtB5)rdx$_6XCI?qR/(7ZOk˸]>Er<-j`¶eSij[sjdU6m&t젱[9ӊs$1fgeR8Vz.}&sWrPz[%rW[[!o%8 首kr΁!OTe27YW'4r]8&t(L Eb(#FGagd\g/u$a.V0G"~RIN{̙;X1^k%R:-z.rŔyM |;KfKsř\ǰdU_>ɾ&#!گ0A_!75 st;=xU+)M}籲g`fjU'ȋrhju-,²rBQmZT]?osͱrw>nZ ٛ W zlUnJM$uVa@Yh} Wˇ\y?ww8Ց OLXgr]j3"y]ȸP׆HT<ԜOQZlE/#iZدa6t+7L9sW/o\RO@Gj"+J |hׯ)# P[SR)Rɦ/+MNw*6(љƊE'XRkiNj5 kׅijʥk'W%wm7{g<]eXuO[vHB|`z]@6#2,]|KIQFʎmAa Y\J0y\ xwcfQ:Lך]:$G3 BI6]@{mtCtFE}>VZRs%y;6)ֹ<8idV&_߄,"HZ" ` 9#C@$k[y$A۰:G[U>Cuߓ8C%\jX@^9+g=rN \uBD9P?FYom,gfiHvVp]OYutT$ L̿>N lמ7']iN$z)@uQNGʛ "$TE,6{17gab,BF^@PM(eTP }oKB=ֺIOmkΛ@ )!NfGeA$Tit%;Ρ)Vҹ 0mo|I.oq3aTU)plt*I,SEz92r|lq$9GTrV "d09F wJf5nzGdYc,4tz|_qf1TWp[[1؝ٖ\9I"HzBcQ+Y؏~?O!7 L_vۚiೝa@4LݕU1%Ύnӗ8=*X9 Ƿx(,!,'t#,Y;^K7(BEsrhN8͌F\xɌnUrNVRNS4ʘ+.KMcn(^ZԳ,rC,FKϱyZ6#[ܧ߻U0cq*I'vD+[Q{eT0&6lMot Xly %PI< /1GZ>śH?Cnc9$oI!}T;aü\}pZrɲf]JQ;B1`B'!|`?Sgܮ o̓Ԗ ػ-R/k tYIVUpun_nV?)6$3bɔbΑ"_6u]_ {_ɲtۚ^sʖ*FxsVj̛ #ѐ?%Q=OYh[{Uq-"ZQaEDa%(r:$K8p=,ͨ/W=sn?c)enOE+jy.7?7evc;ֹG4SF h4: *ҫHddz0@R 7&D^wÇh"|qxL0tgn|1jZ#1kԵ<| ;f*l?9bqG!91L ,ȓ(&L8rxHFP$x+iJ=vo(b"r4qɊ%lZXL55[<%r5S%n O!idc"bMlO)&K7ݎfI~Ii}iriO*ۮz6O!ᓊP\B_Ȓ<[NCӻ9K.h`!.'0&Y g'ĥ\eq)Y;>YN8~8fS.t'f;M\޾Q\1{3V7VeUDJ>WE\45bJ|%XWk]i#[b2a?G',R/ySQ<(ťBB + - #]6&4ħQZ)JI"du_c]I<{n fxd1!EZe} ,$0:f?ajS1|Le@.uz]Qqw8aPhhm>|]rt} FTGk n;_GL¢n*֨#Y6C/Tnq|nOhq׵Za)6 _FU߭oo}/Ar}G~08.d)$ݫU|C>۶2^Z!lD1nHvwYŀ^O=d Vlx>3eDBWG8y+B+aB+E{CWߧma9\oj\nlLB;5c'Y"YQrE*5''ʤh>IPӫx['n De9&w:QJC[ I=KҊ6IuTJXi@g1`@u_ % ݈Ǔ=涒>Cc3rpGJr!{*Gf{ԾOcq3ƹhB$r>]Wgfqdɖ38{اU(h9 WM"yzW9rwpr(@ n yLn2yYZgŗJѧaa{/p}q&9n)O;{3eLžլJHo_":9eX>{S0W62Um[EOTtGU4E-9PG ۰e ]ƿMQ9<*w7%b9F@i(ۭ,qEE4+iz)Ǻ<9&Q1L%ե>${~q猓G ?)GpSIkC1z*Az $նtܟX &7Oگy|"X͎"jFGq~?dk:Fb q(^#~ d^=EjjR+;#dYv6):'ۮ)jxuȶ=3`cYC~= ߧLk)aP!qki1[c#տse293GD# <[W!2హXMkVy$5l^.ƶM;vk!sy#Bi!G`7l=!;/W%hko-Ҽql-юGQ ,˾uQHD5]*R7:'=s|c'Fē1yDUUh{2H!=KFUѝ[L}̻N>8rKK% r~<$S;R̓&XUX6̧lc"[I:;Qr>{]{m`-%{nlU/%|}aI- 2+|QR*,*IAUe #7pwUY"kXv1QD-]n4o`$t.%A/ܵZfEKK' T0S$%^0z~+!Gm1߬:FIK~)#u#v_J A>6I~!zF_D\ 1fҍރ*-Wes 1 ˽u)DZ,TiѣxTU&VB8|LnW>Gk_EӮq|vkZRg$UŊ2Nbi;1;*@< Ϳ5-: *F K6jS^,W E*UW9B]T)_Q1D6ګ~|kGEmtPQA_ok*po6 WgKJيEZ4Ʋ\"UZ̚*q'x0Ut`(8}a6&E8Z̒ V^ݑ%k ś 4b*,~favT.q^:,GZ\s׏MƩnx;#A-Yc4fYĒ'fwyv$F6Oj\dBl9cɊAW>,r1m⨆6S*Xe paf7)M[ՕVdaS nNcNzaMZr.#]^[qJuK6wu 4I:.)+]n*Z,]_*<n@@U[d:c`k5T)dRW @ҤS i,2;8!E(`>~3U8di1XHx~< '̋_ >T3\b)`!VyYDc۹nH*IAŅ|&\m__fxU_eb1^{4yW0OJؔ3_`IOUA5,TqҢ"GJEydacVv=fAg֢~QN6r0Wc/ŸݫWVhĹ &MfUf`ߪ>w8vݺ#( 9e#4nQ'̂"=g;^pKˋ(r"J1Og_Oa8Zs}nSntV85%JhUnJ,ͻ5Iz֫_?P|VnE/~jTj[bbv*vkة[":qXD”[c/rqx8+Y|a2^b+19泆"n8q0d2dcIl :?o0C{cDZ -*冏Jo:C*sD cUapw}#Qĸܳ("G0Lmv,Q1?-]_(DG~t5؋ǥx\|='G2E|3{WEߤ9fsWZxEq\#l<3`묵=ki|hrZ^O$~}o1gl.nocXpV+sR6ͱbjİksrm0C*&򜀎\E<#0ԕRUC2L]$} X1#] !>F/ t"X$lɹ]}UHے[zSңp/ƛ 1˗ eEƹ "1J٥Ws 2d*#S ~?J!,FKFJA'f*j@?!@JOg]l0*rwخ]7pFm  /6xy5,$HDK Upu$J=c$HŴB+{DbP]R<`Ŕc))I~n˹r~ZVZiPk3A ?(?UHaX,n6I>1 ;ULf |X%#ټb^$ zC)gS+)c rutΆM1ylh*2'Ȑʈ]}G' ^pF$:nO)5%I\䅉"[̌$ 3(T>]V;bzήX,?i4$h+U (fAn߉;ݎdp-MT*$Es,:1S)P^4g,ZY$AP(fd~`oeQPy_"SFH~护EpG}Ic$Q^@kn?Wj kcD/%@-ٗ=uDrFbb„PvY"b#"K͸u?B4u?[h+$xS+˴#bdA ZɰwEnO NgJ-J*% %=w 65庤$I%'SN!xvZ %SRAٚX"3TKdzKjYm +4%;*S:z;l9t XĄ kcez`v A$!@,9X}]".N1wW"[#Ƞ6P̨pXNph^ARLKpցܑHDr$?fwڮmCbpVl]n!70'Y+qe1q`xk@! OPD.qFSqn4uw>׼ɓ&lo!!1T<^TR NggRYxs$PV8[2slQ]-ɫ\a={'e~~ϱ_A{S,Fү?̽y%rlql^6FFgܬ\̗9HobXycגeIUBb"+ܧ%5ǰҦF9XZ]TڙÏ6#R>9Z$y"I#dC'w9rǗ FznHo6x`2w;9>,瓌ay8sF9$Iw3pyu;سq89tW[7Uv݈ojMv m5YcRQKEvW3qD{N>IvY35In33 u-iA^h3ktH[h8hfr&LC5Xb$?y<{2G.1qxu V釁gd-Z"iV"?1LsIdo]9dϋIN׸,y{"xص R<LN2c^辻;|8Ü!E2^2V87%:)Y(C1^@24,SWAm(YeT2WY5>QTi% kt@ T#@+;f _e[ma䕉2<52ʱPaIH(뮎xr^GHIȿV p!]D6K%[*dWTnrtAxʺ].?؟wAyݟm%Cy>LJY+QǼy1?FGVaI#UW`T!= z $ Z(!V 4pIX -^ck@'6?Q^ssIf.cb|?ݣpփ'B8k$66X4YzqY_&OkI\>hіNZQn;PA.F YlPy85RA,s1LYs3ac s`FE/\#J>.&0QJSY95DKxWs3i|GJGȂ(6xhN}Ȩd,=j )q9 zjsz8qdĶXQdtHG}*&y1,7(X[9(mU<3ORJ`+E/_Nq O%✪ gV^3UoEKN[*hdD¿ɏ8Ƀ,# IoCG& `S!NY9JBV7#Ą?ݎ昜-_iy)lH+f_ 뱼Ћ Uf1%p2y|wbf{c%>CG*iH^f} o7ؿVU Q"34# IRW`;*\;`\ރ2/߳Q#hl$5xCѬRڈڍg~iU`ŗ;)eXC&gy[pC$%P.Pn6@vs.#iYF܅z\1K8V;SbrQG0 $6!K5H߲̎y/H|Fs]W*L]N/B:ҬV,{T5I)Si7ﲾ|wO!'L'-{YwCv$ށ"_̒K>_n5?#ghnv`ꢼ5aUAj?^x@}A};n߲d$s$šd_Z~ý afF82>8{daV1>|'W?6C|DoKSaB|/va~o)qY=c7lr*IE^U4`b'CO *8LK`#`6Y@A[LKG:cd`kg}FY%,XH @umaɄI)E;חj}+Ljԙ )`A> iN%Rho*S3HԞv@vtWRhbW2~UtG@BiDduTmH)b#q '^(S)J{bxUq<]#e>NCm?eptd ;ּw,t DZt{ 򠁠Fu>6Կ]SlzG,EgP$uCM[igVoKp9Dn ԬIAe,aN|OOo`i4%Q*Ĩ\xU3yc[ڕ2S+@Td,v| RTWU/ǟ-۰ߣ1CT"xŪ#Qt5a6\KNJ;JBfஏlM0n<+D]8d~wWFv3%`4żm` 'gӔY\*r6 m- v0mga;=XuMzz(}Fȡ'u+Pt>?Ǘc 2hkxkjl51WOVS5*¥hQm3KILi# v%#!4W;5n_'fpG nUzG m֑lMs "֝x94]M)Iߞx]yVJTk@:H X3|h+lc5d8bea+/]֋q%>9<XQ57~}s)w'6U͔~ܖaDԡ27c֮JDYQ`nҵ9n·fO +04ʷ2ڴ })_"i"飺ƢVUVp G[dL,q|c/F9pF"~xĉ999FTUŗ >Z'IaANA{IJ1(Yו8kչCbkRV[ e#XdYAٸql*nZVr1֞I`掳:C4ǵHHf7y%C/lg s3HR1mgzs/g1h7c&Dc<mȸ;Sñ?~3? ٚ6^e֫BUY^1f:U&w""-#T13팜?p<3rI |}ɢ |#^R/M%^a咒ybzE4sJ`C2HU tiA6.JG>>k4`aqr8AH E^cc<O?^-~Mu9Ź氰\2fNA[PE^gd7@krmi38ff!T =No1x9 C OqjƖrǭՆLeyd,jvŸj^A uLh1<:|+; O feP\)eVdYAFljD$Y&gJ"5bE* `K<$=h|zG;J<<#IXΌ#E,ŀNaةuxbj_WpP"4t{nsHwfBt?ǏS~7zXmWluhյ<' 9av`dT)g,212vy~&HJ\9̑VB)T^s6 p2!Rŋ @ _{ӇeOSXx^q䡠\hW{޴j /W6#=߯hnaM(x+8{7v&|ykҩ5Zg)]+I XIBfԒ eԻUt>Dt-}f˝*>[+k^VY䖆#G5{b6m"rhc]q,1_n @Z,Sjt{n(BS{ǕF*Д~?|꿃WrE{I2V ~cs,Nmq칚!|8h3 K)e{U\axJ G'~\1DgJU!"kGx8SUy`K氆Xn݊ [f@7\-8hĴxud_f}O ﵼ#nmhJY TK^&II6;LQq?}9Dr3/$IJ$ZD/`w%/@r/P,%hV19,TM%McJJc!''{{ݚ}Gc؊xNɍC)['J6qm +=i+Z|{-YLRKu;5ӪBWi&-{oN?`#>m_/%/jyO+WȽ༃[4U3|oON_1X38a2P3#N_B}QfubɎr9q9̆2i/_,7o/|=P\ ~ܽVLT9Y ט˄/?X_oksZ^pm2yom12!ȼukL?%AYm5b% [dX㏒?ҎK;=י{.p2U佺^vo8~orE.0<;&RF` {Kw sW;a Nx%g$X#Y'&gB8)jm(J`+hҥ  W5w5nZHc2Ѱ)㼖KYN9uXUK5&3ql9&:{X[9[1>:噩["RӲm[Sܷ9Sŷ|ߓbx*^t`%*[ 5ے`թZ{r;EV'}ʶCrhdnc?nÏf.AN\pHd(זq V@JE}3/se4 Qe(.ldqF$Y",$N_XIc{Lc6r)$e9Ipt_to0o\72#w%d9.i*b(I1OmqTX/߱QVp>+X;9Kxʲa;)\-¦2zW4/\)knY>z\6l_/=81woykQP%12!q*Ut7N9'1  psmUJ|mIЃ5=: eO/u{bApr?8Z4!G+(hcaߵ 47x[]#q"g=M0QK*嬬C:»KEk@[i+IRi1:w!2Z1+D1XRU>I9kHb?<$r@d%pfH2wTszddAiL3[mrTlS.^e!&ifjPkL̡ViZF3V+#*r?gYYiGi؇OQ{4!tym~%z"a̰g))<'aOyIG0@$Arɠ(­#) n%u4_i`I>RDLa~!t:e(,U^hYQt;@f Ԇm"NǪ} W&*pw%|I:R*ض14UQȱؒ'Eh GzXA?$9K!"4b;>uGػJd++v}V$EyDt˦5Um > +4qi`%}(Wd*;[`57"iC22įn)'߁ ? ,՝;gL6$6SWݶ]J' 2g/Zĉ%!\Y3OBoH8mj#!;)/J64U\!JUT0R\ O`72HW(I\k}&7f$Ut~Т A|'}OG,eƐy ɣTn0QUP 5BV[z Tm^9e$j):; SƯ5_2^ZiD~5%~jeZ I1yA9m=&BҬFQԢ:~ x~:M PcVdT91FbL]rdTR#DlQUOjd"n4N˪5Eo$x4$$$DX,#Z="r bܻJ(bƺg"kDme@]uQ fXd%#SX:BF`@ :>ju?o%H^no*z$ 9YQxR4N؅V跨0"SLKj0ط]J1 S80.@H[@E`oi1VV@DUGLΧnkS~G(cD vJ' b2;4g"VR!@X$DkrbLCwGCՒPVƃKb@pYK^WRmF1jRHPNV( A&L],$?1l*}F+⚍eT#}>GrzyP_Ro==h$E5 }אg)%Jl+kuLŋjc2#|VO*xWbuN9JSI; U Jǩj|ѕz%/a;x]J"jjXȃa}5J1 T2oGsVYf=AeHmAC(*xJRqF͏Gc1W%AU(9X^ J FVy4\].n.` G$QbgYz΋d7&zm0>VF)3$I `VD =i2gಡ^=, $=h 2=s٣2)iT)uoYS,PeZN"QmcwxdlghٌhKKOxF g>.G\qko ݺ|2Fp*ΞD7([o8'&?66Jr>?n,>j;oha)Qb̐[B+nUwc\V| r~c8m<ng8ѪP1ҰlJ8Eɜ15tNg xڈ.;:D~S.~O\K 8 0r VU62#W4CiWAhM5ygzw'o϶͚92p͛sqɦQ,vI:p9\X7|L&TH9]lK^دC[rLz{{oGθ/?_-*3g1Q^ ;ˆkۯo^{G>xU;+'"Rk 3:xnJ'g֘Hf-<ʋߨoGiO'ȸLnV5#Ỷvp xU LkIoذ.ף ,FT ^" Fiعh+lJI s jC䁿\r[g0yS%1?=mfn 1V:6aJ4ҚqC%G7\C .OS#-vN5,I!zKMر5(, %2;ʸ稒2IjD|Ϸq`inW$BZqdu;~pՉ$ KC y%#P?Ώo7%ZX.^%xheo8G- F;Ys;q,}8q9ssbx K,+Ig% ڵ |Y*A5ɋVϣ9kV^w/"5MIbe+b<];S~Ȗ A`=+=E^Y%,bNۼqLjN[F=ԢK7k q&3&9M&c9ťGD;z~6Hb@$+?rxǃ?ғkGl3߃$x;K|)sr9Q2ё H\4WJ4d42I g5QS# 5|׆'$ҙ޿2#(cuգ98Eݛ5C؛KUcBVI٘iDC}|Z .&%evIߖT$oΉX~|~y]]OWz:a~<HmH%U6{O׏XOfU:_ S(ebI3{19c%5TgoyJVV 0I"W$e:.9α9>1 qzɆNBFKjiYqTv=P7>><È1+Z?[kˊp 2FcWjpF$ӹS-DZgv_TWryLwQ;YZO^-Uѓ+jxJ= V^ٻR76Nӈ;;g}ly>^ * ]hGd_"##\J#C Ź{^{G ->uyŮ0TXL-ju.]߼#g(v^leAcD8?vuo'74pٕhcY Unb\XYf‰uYK٫&}/Ey7@h:?~SŶOl1QQ̰6LԡG9K qǵ-|sh`11WL䙓ܜ!3T\h*;|QxDHmy>_v>˲eǭa״ `ciVG^ZJT?{'U÷ޣ[}޷S ,I}(fG*@&S83! O*X;'{|.c_<(b"B.ĄOdɓ'8mc0H&2134O={hB0< 7ĪRLDl#d2ᦚR$x76(GnI&hXÛbb3#Db1bdª-Eyq>#ɲ5I5Y+,%:1=j92Z:B/'LM~9_ڳ͍w955h8J\^wAU0D>qn\f\kUWJ+8F 3mYcT+2bUvr.يwH;Ej}j-68XK 0m/dRXGA唹˄+!!EV C2LIAU*Hm? I]*t 'I zF +uxFH⍘.d(cUAhoCP?S S?+kgqifՙMUΰb(Y24LepvVAs)-,R2E^9dylbY[;Fo2u6ljLt Q䦉hl(hkgPK6qe))Ny2Tz{Ss {rQ)@}:G!+Nw,ܺ읜^Zmr$Lp9'm2p3'"63--ʗImNy#_hEqEI#gOmIG;ĉ}ʟvkV*ڳw4!,v5Yj67)z뿱W538%rn@*rl6TZGIh9^a]$}SOmcשd'ؔ|S$Mԧ!hvK,Ypv@|sdQB%VU׭AR+#I;رA)ь̫6L]d2_(DQh䲘| zuUOHgg3ψZK9Z t֐Wtf7^C4Ĭ\)WgvG~w, #q1 }K927LRڔm/RPEA8_'Z=#H'_^}bSdv[>* o_[|wWzn?=,C?YhKw,`Twq'6@e5ё7- 54EO;bPb$!@"ORHe).{1%A C z/lhvdS)PT$6$}{R!,6n% 4ڭT=xj`[|׆?i:t,૑.u;`#[_÷`H0,ê+4_NʾI m~N:jz2t#Aޙf=OSߑŊ y(⑺[7ƯŽC`rI?(ݮ٧H;]S!ATvhYk[A|`: :#MeFG@!{cg_ B뺞H t@ -J(j[%I.?*J+*cfѤ5NGM3%< +(CZ$'ұ,"݉c I-t4  L أO@TLR{G˃(?NRLgԄ4 [җgA"󱉭 ho-FhYBlKC 覕)O ~`066X:`AUr7IReR] =HP"e]jI%T7>Ñ*A[d|;J`?檐AЛĪgҲTFuk2),?>FmΔҍ4: ѩGG^.Ji)ا;ea PR/`Y|k>]ϝhμ萄sD}!$NfbI %6oğL$dB f;:oWƈ$y`I2KH i\"ˋZLV?5W|[ _ORt˾lπ?|hVr؝FRWR >{쳨]?AցoHA>9GE~!;$ tG'eW4%"x#i~kKGuƴ_-x]JNN {^hT;AQK9C.@+Ā eD (|^3y `;x  bNߝ/~e*-#f* 8[ߎUHc,J1G6c z;;jFé,TČbXy?~U*+2)!Hb zD m66k{ǞC lh * ۂ4Q<נ9H/m2(_M{\ߌ\d MR]Fs0tb㢇),kZqKZZ(bTH4+`KOj#O:T%|x%IU2,IG,YN3hh부+ *[; #EbU'jT o&M<"ccZ._ju)\5nE,Xޣ0'@1bi2c1fp.Ӱn, n /3 $d򾭹[Y>)̒2WuNʲ~,5wq~}ɯ%z{k5FΑ}'EBfDC|3!e4u;m'>sqP")O!ݏ%{X!ĊG0;<tyg*Ӥ7 ?e9vC'Qƽ,+|7-Hfj;)S\8KlE;2}?\W5mDTbch~kz,{?fI)"GŒ,nw,$#Y,Qcɿt7$h+1#.l]i#ȿ!c+ivN3Ǹ<ƂnȬB#VVQ4̔&tdYb$PZ0,KuCPPE0bA#oGޯyxGs|g8b0iأ>CЂ%uF 'k)d^iou}rRq R/=@N@xP)Ǽ3eo$Hd!("_%?W '1qŬ`JW?iejT2KRz_pXVjIMJT+oG44|$}sKAW1O'bZk|0abVZ ҭR:WDaWҡM1orϢ,LH#Jc\&fcMc$Ît ȡ%: "k%[r?jݠ z1b8sK0騢FWm6Ky0Y{ӄqX۽ZOb lՠkٙaKO40K+N'yGu°هrQ܈Wf%`FH8~8?-k W4ugUJ9v>*vڬKJ v["bҏ4ά% Nɒxw2bƦRcۘ, r Å+'"gXeF3%9%(DW/KtIʩi*G$gnJЅ3Jf.ԨP;;gf[w$a^^A4^;"tYK ][(f=\ "D{iۋ ,PP9Q"F5o)lEz'ōu[pލ$S N^W $i+8pwIu`}漮9K)^SɒHacX yMpͮ]kO!XU]~S8wz %l}盉Tk֍Z:5*c!,+mT<;3EBL|8LolT¼>\nGc3=1n ;)zwuvґ#bsqFqFPտ{{L]!5I"Tu^ky7eCq.ߥ g6%LVFJ29EGiU_?|W**˹:fngCjxꔎ\\r@L5 vYfu]9/n}'CTBwiE\&iWe2J[="*o4KEt,RUX~Y;OZU,ъ銙&p%u9;lqs0QyeVALdք{eɎ@=\elB<~r{(0=-%FK+ùs ,\..z4'đ?zJ!͸"8gwNu28׸q[fq93/c+rlu<.O=H0n~گ_![Krn%ջ \r ߣ:Qⵀ#[Qd򭑬Z3$,5ez\+SĮyXnF/3VVie}Cҧ{>; eCq͹O9c(H_ֹQg9c#q DK"-2F7)V `Zy+q8L-kQ|j$7 %w,d$%a³4W ձ̱F+J#AD&o6Y}*1Dwsq$r췺<{+[Yjhap~Re2rk%ɌUJHՃr, H^6$U*.ʇ:]F2QH#)Cc}^$"2oW>L'FR-Bl$yG}q1OxGOHX uo[Fy\'7{p_/rA &ZWqy+a,ٕd`o䰙&AOZ)xa7#vw9qy杠=c[&f=?=/x7M2RPX@l0ܲ:+e=|Oo܊8 rK#38\WQVbR,H?4Ca ȑ:lv]SGɇLRQbAL#5">,IbˌmXP dZUqԏc=O62l NyCiٳNCc1`Vb+TO, -Xb)ک>3s9_3a&/rjk":M}e*ʛ-i(1+߫oWqں7pp0\+կB(EhORʤevS=~`nXfr8W-&4֎oG?N߸DQz8C9UC7[1s,~[fo_WqhhenUr@͈p6 R ?&Gܛʑ|LrL䔢anV AC*ڱKW~={'8F%S . sx-܆G֕gí Q:}/{g[hYT9>C䭄nS0xdk2f"&EmXOrf,3l>X;Ȗk#zGG5s=_ ُUVO)F>{8G:47$ ֺNP=TB#HC)sLpJX.YDJgb]"6{Q12a`Y1drYeKR^%m?NEシ?pHM9vK5O!˖gJu2Plњ{%,3 KIZsI9v*cI^zM6;ԆlL\^qQdsLN֝og)&ʳ2_INbۆV7 $rI TnҴ3 $2UQGx^oE5t6s@%Z@g`Hf>.eŎ8.3,&e88AR>'sdĐiw4qvSc_y~ImYZ~ idvX޵1_h 4\Lrb!bU)ܰh$Vo?zON.ћ'Szw,ҥ^i?jRxmԆ9QU#K»Ms\źI>V\F9OdggE\vPʊ>&L>#!㏔V$rJtZ>&<g;jܞ;)$m u{wc8ߋpC_enTV @֩C-I),X5ybV?M"' ky+Mdy=:-dG\|=4C#/~Td[dz 0ب%=YԈYVLe1au%NCP+UY;&qI<.KV(=8difgz^>n2{N,̡/uO$D"3+ŦG9n]s˗DNRBVW!_CQ?c+fÅŮBkZ n8)WO j$Q;+XVM`K]ȐDvnd.B+m7%yE ^jeNI&UQ:**#!oHWHY"U' j?^+Hc1Zh+IqBȁ+3"ɠfC_;Lhdo׆ X$2g#&RwyrGfx"BQԠQ?uc-jbRtWPȀ1U ~^ך[9 @ʐi[b0`ʥΔeNQ1˛EU6ؑKj:8DjQ%*ӯ<|̖q-vác T0%vV0;JK?j8ݑ^*IGJ+UUV| jEzpe'.GS VHd;Cخ!T쀆'Cn>2_upX2N4h"2Fey$<7dԘ/WWXmTZaբHL%k /w=;%r8FD[g0T̏[udU++WLKaXH>1#jFR4%=;T#b; '*$IpoC`ʞֵJ7M)]bH2ߔ  7rw,r,rn))U_#9cq!\rEYH ]NL-&=ĢId%D!Q!EEȽ5\J%[ /,vjFҕedvt2!<VFheKH(2#~N^#oU,Y9`"EYIES*w׷M8Cb@,r%/0n'+ĉpG6O,2#őePh:n$K p|r+A@AJ `nKeZ QI,'^P~D_#PIsF,9kEDVn֕+XX'֯jO^kʧ~A%w;"!%He\Uħ{j)!0prmnEmko [#,}K,  hjkM54W<>y;9s+b'jBH(ð,;zY0"]ʌ-0­,$4oS6I`1XP={>?oD5 HE IBR;*tԕǖ,=/IOr28}*A*$BPS+bEMRZ䒔yq9UɰŪi:J`+STė%bvӐJ4i㦱-b-*N >A"$0 @[ߵf9B+o`O^@_K1%`]TL!+{rjq~~:J-ݛu&<1ڇ)RQDVBζDh-"D0PʃJh!H#3%zoЉaYU P,|.ABpQ[5-&gB4`Wm)]_+%z*3b,$lF!X0uXT~1 c8eIc"2h],Ԕ"șnHI!4WLTŕWLKIGN~@-!}ۍ%ųCkq5@TSLBJuQY!uIHfɭ_ 1Ҳ[%?J@3vT-DRFd%i8 #t e+M!B,b2'R D=FAhlVaNG 4bFɗ3*pU~C'ܛs2SL{Zب]Obox=;tÞ;Rf1X$3̭ں~6,,ܶ$C!&9)!GbEŞ|cd0+bd Yqϑ!yY0#(2= V%N_Cw%TE(agȳw$sukSeHDU~\ܛ^طcnX81#2)Y؊{s㑫e9QgU<>'K!X셊OrcfE̔,D'm$U1,7䪀 ;)3{ijXK%xȨaXVffyԳ\x՘/;~^7gd'ȜdN4 ,`+Fp{H{)Ʉ-FX[nOۮMdr;\V,29׋؎,yR|P&kRJ6&!,L *^axU#,ʄتT.ԵեVK7hCb=o8s#rd %l*8!UYxu+eKq+Gb `9>vн5kԪ%%dvbnicZq xTBG${^q>q.=p0ar˝Y'H/e}Lg)%N\%9F8J>}EZtgt+ÊCjPN+XkڵZyWVbV%y!i5x,{Z \E$CdbqP&4nDlgc뢉+-okG {=9b˙>En53+:<FGn)1bW-ּ^ۏc(?y~\V[ |tZZbO11 뇏'kC/rcb<]y/2;ǜdŌH, ֞{=#.#⣃&,dn bδoY#uH1~C;Sd)նH2*B,t$뙗qySrRWh/ƺݞ%e ߣ!$+ ); fcJ6]zڒъlBTc'fs1f h0:scUul(7г2dQj/Y@ac|U5ᆽ}߭jX:R1eI%]hĉj͑LhjeOgNKvtV t2zO{$qf,sZ#/ q5!$4#Hm(2F|C\eU}K"fv@F'(@d>!FXٿd愴Y|`P?}r 3zՒ?, 箛R:\OýL+>I(bs8L'f)սcYjeF08\S!4 lN׸^x]+Uy䒝uVl6&ͼLUgcy>?1'<FxgsQ&WX)q5qTND > gE\*#'Nk !ln9|Dʄ'l\?b! `v#wK9'0ϘHlj F8!nŏrtf8Jr!oqNM%~Z3U~8mI x*J$~nѹ=L.=2nZz|ޙ}6{11,U6S R?C!nHU&1L+zx%],.l?!Voҕgrh,*:27*$lYݹp AHIRBa&4LCF5U.(=)/Se%.IP%1㸖|)re(qJO(| ]68vPc$Ⱥ>T OZ<}bicytXĭmӞzgZɞ42ƑZ3P%ec[XrddYhA/lRY 2_*Ʈч,YF$B"AU@$@|z]wq] عp"r \2Eqn6]Lp͎XG&Teߘ_b;y8qn'.1g)="N=k2bč\EZRHqxg=iy A%=<=Lt! +;:mr5=Įa<$Gn(m ZҪp Ue~Fю>ֲ~Cx+W Ij\Md%jO}$8,2JD ȡ>]3>GsMO)]Pc)#GT叾|_YFc]-j&h8V&xĶ%(˨g!{ ӫ|_uɍwD^@QYx%3O6^pךNA^JSrt׿7%r`EVfZXeF ώ4_D>H^ZVInf㵕=KU~9"r{<Ar8E@6;cqgYTZ~'үHusE4 :^>= w,:(vuL~zOTmFe`:6>k>@'fʪu υA-Gߡ/) VVe*5 RAwv5]L2he < ^Th| -/tPSG&]|}:J'Kuןm~@:]Ī]K!y$P~T.젆bπ<`:: xc<|E8Xč(,j\B< i nnLBB뱿ڑPd@1!4 `diYK %I Sh=zY┍4Ѳu @ ? /5ː/"m,\YM)%UGȠ|or|$:H!e unv?ݠBgVQӄ Wk ,GHc+|`` 4GӸK&8;=~,u )=H; A@QAj1_hNZEՁY~e!V~L}I!hQ$0$o~j۽IBowTe!=ze,I׃I%$R1vҀ4O|xFëay$\W2ݽXU^$[O:m\1=[Co~@O'pymM(}@IK˥~^݉:'[K+:uNC#XH[ζ9*D[Tp7甥-c%'#aتdBΈ;kϧ\^ؖel ߓQcc"*B +ϝ~T"xI#bU%J7$mH~''u5cƂE ڡʗ J$6kztrZӢ*$#+2`#TFJtAs/5uN[J=; ɔ8R5@7Hו D/;=@W)e\H $F+O|_@QéRCmWAT '`HDVE,vH;emA=64<rG | ᔰ/QHt U'~ $y}I1c.S,F)Mzn~Ԑ, Gi.jƖ bIBy6FNxZj-4Ya ?OOQt%z?,p~9QXƭ2u`J+ĕ( K+Aby]]>@`vNɳ 5[8 b5P+oLuzv,y+g&W7ػXuq1+ ,R'~Cf饗-ݩ+$GVWf,^xeNRGpaQ{$ee(2>ٽELYz)?vpb T7UG,*>J&XjȅHY 2|}t鐷||'9N,qG>!;*$#$:p(g5e[?qM2=edƬ07l5Xԙoץw!F JBtR Wl<d6Pc.$ 0"ڠE" JȀ|3Xy)RYfX6Rvńc?)b2X hm8օ;4ٌr\OmoۮI Y\g19HXxԋ)V8Dd5!f [pcQCǚQ,yHx(GIke1xxҞdJC"&1f Tơe1 טV=׬>'fc*$6Y̌FvG^l0Þ.m)XH#d[)I X_ڵnT!,̩q$q"SVrO|:$bɗKgNhݿ͗_ x``*FW䌺:vmJ'JT#zy%[0&Pނ,|t /]z1(B%liK6 ]E4xSBnF\]q!^mP=,$&ɲ p"0|{f /tvԚ5V4F&۹@$sʹGU+HXvV ]lu$P=K$cG DG&1.O'_O%"6TKO!m_,谮k±4,F@@$S؞Tu>>j4n,ԊTfVbt0: :aV3>TT*B<22l>!/rh B,6Gt\rhNer#)#AFI4rMgH{U Ȉ%Gvn`@!53Tc*+0M yperB$EDՍxZ<lUU ~ɯ,Zgb+?Fْ4PIYʨD/f]M k"GXmo䷨n'"fw%˵wVwY:liʍֿ-y=@sk?fԁF \(P> )ڪ7R1 y)`DTXPjTd/V?Ejzq|-_j),رi@U PȪ+]&&<-?]ֹ8?Ǝ)SmuMn1"%JۂZWEFh ԣ!1^#0S'm W 05jiB 6ɍI$c}*w2D 2L#7+S*}n{ M$u U=رi,Lm<~VB]olSIhWǽl!d6Ic#dtda`AqԂ\F5jZ,}kSos\h%$$[X,1Ɋ\1(YE6rͨIkWHTct ,vPCFC?p$}(]JvuEգdCT߈tVBUDݜ8PG݋# lşrYIRGnޘoGZu<2˸1Nrc#!ra0QGZ] \4Aw8aVvNB,[q2#u#lLzm(aa$G+KV'f+ʔZkZj(:ĚyiDzRH&ᧇ"GqFE䛥[P)N>x%+L$J1FBH G[.FȩI`%$&iM/Bcv:ڮB9){W,6Q+I;2iaT/ DQm%h\2HG 1VZYUC'<GfT/@/$^@Tb#o5}/һ̬3LCu"!Cl*Gۃ%(B$|l&igV]3n0UDȀUT],Keک?v!OMĢ̩]WrҤdzF> #>6+heIܶF/e, % Noױ*{W0'[ҎrF1cmR\ƭ+ȗ+%dž쪵,[~h%rCB&}]ˣm]civrbp*[RDEBE$5?v@, z譹wv:+NR@˝I-W#Ő}hq"|͟pG[z8erlAnN VMEHjXU6TG`uLdeֲ,c4R d/'nu:,*J)hH|> u'A_C#r\Iq-ޯmNECK*́"^rno6ً50YؖX1*+I"@dpvc]%.r.U -R J7 =c1a\Xpư$ӛ&|DV%h\p{qF#Z'A*oܰTJ e,,#FA :^>G>dCvR+Iuq@E3b\8r ՉsR!~-ض6 Lv|¦*Jji$IaGܚWHg-h5mXz[\JVM^FH1 UPK1vYR7/K_&y^$D:ԠB:H2ԒuZK`g82ScS@$bGo6aF.xrOo)0Y{X0!J깖LG)dkţu6()05ې",ߵ2C4fI0n4ʈYO^@nt1a{< >;ݎG{tc9;hpO.BU9<8pPI<@?-l*aֳ:J>O$\QţoJXuR{1"̈ɢv# vo5wo$5I WIgn]KI_K )m3NL⃨!JzHYB&XGM[1 Rѱ:F*@˘x-DC MgA`д>v'E:!h%@ڿѪ?b5XV4R#e4hmvdPINUb(/x-I ˮe9BQY^쯿7ƏP'NLW `~jkDH#< Uv~勻h$Zy bwBMݤ:32ƻ 'ܐw< MQW Yv3P#zIubU*f!Aߋ7"Yi %IIXÀ ~@PWIbɉxJ-r9\kM*Լi^:"ɏXQNҍ>!ꔌIfCDj#iOx A%D\_4SG%k(MXҹR犯Rx ܎A2Ar~S#|mngzG!/b yc`صsr%Ɏyy$n Wo "~FߋS -*IjW l-2m?Rŭ%*I! .!VQ)e V2(*z6Ѽ}H4U$^4eFR{B"I#J%]oH҉~ Rx91>`F7PNF=AE#s5tUTج]CIv6xZ>'~LQ)*CdI/qb@bVZ"^쿔CRN;[X},fU yc1 _ʫ|):;b_` y#ܬ/  tKvNRCǩe1!(biXQuղ|2I/*< [,ྗzL}<6HHT$/"H݊"u={*̦!tV7QWQʧCzW$3/RV؜t-nba~̤M lz)M0`u$:VaM vX2Hh0)YF+:# 9M^R.:j)lZG K2>NcFKXXmnM8S7mҽ0vybJB:_;lPvbv˒cAnadRb$!6* yWA^v[a$h,r׎ܰ<_~1+YŜ\0A.2e+?]Sςsßۧڋ(-c$EhnT)Sy׽^k[0w A32iYv Fs9>Q\E]`#3r̀$/,+Ӳl* h;rY߲EEeI:xv ,J@;]8XAF%woyɄwr_.h|_o䰶^k1zVE[HaGlmQ WKyp/NȱX<޶=# $4q+3#gT9Q1ui?r'D!҆#eA7{O,qKk cfXT沴+aT_v%e9e=N' (_K)!ƈ@; 䟿:3$ hѢ^Kаo_o>޵Cl?w1>LgGz5GRZ'rO̢Bd+eO?r?/zK>9,2͋IrKg k5MLU16#ΚIOG޷rP9'@ϟ:#̞g$a0 1 NM%U_z<>lR[.B^ո`WYcZŊOZHUmup;*|{bӈxNiŻc%U圥|y3IBٽjj"v>0.>%guTmTltN SǸ>|1̍w`4@:"D/A^}6cC\g(ŖH;Lo0WLn[?\3Sۼ_f\2 D}ہ^ylk2Y-l^-JHb&AB9.VpG(R)Q=nf8Z܎5s\ON?[/<2r'RO S% ;}16GZ~9J _>AqQ޶6?mZMlV +G)B Cn*=xe*O*|#ԻLQÖ=X=ˌg S ebL]!8;#,sˉ8x\$,*bnP}M}5.qAdIgtgL8bTWhYc$e8'$^Up9g,3XףjQZs?!f8Ï"X K&nvegE$"dfNm4GƉ/ǹ ƀ1br5&|e,sU嘎3#7dhÓSG,TH`yYGclw`{h ,+Q\F7yvSwRg<>ۓ(s8ҎۧUwYIr=01FciF.92oCe  kzUr>g\)1LCvzFi$#c$ BOe=\XaWG{O&"DKոdW?dmѩd?({,!NE1yJ:֙ЬZ]"nJۏ_TiO}3 ϔDUj'Խxqf&4|GߕHkMmW<#1Cark3x.; R?FoxK簼z)D&j,Y=L]z#R ^ExK}m'oVE=)q?ȋ.A2K5ҫH\퇪Jn559ňq*#0(dZ'Hyb]Be׈^ӳvջwfIrvݾleR%9J286L#.ZԟwXqB8B7,E2? l>^Eteы܍<KcI&HU-iL+e[nI3ىFf$r0 ȲI89\]q-GMV[(yQkex_bx?ψEblM5drv IbջfĚP;uXT$,7AUidH]O >;#zb)L'8ay!)+y$A$$@%+ ˭1pǗxoZ2y_q {=r"kajnyofodV5T#Ats?gk0p 3,g5\k\NE!WbL؆H 4O{IGI6F&锟Z'of!{H8@:jK xG,{lÖq(8K2Ƣ"YGJX,ʉƮQc88d[Bk#@?fopĮiN47ſVYo,_~oB\-\̉WGRߝ>8"eRP~ \|0ܻ&3 jAb4erL,ܒ61"z]=cqgq9c960)V8JɍnD\Z;ya컌)EcYB,$ _qB=~8e3%DQ-nIJg!%$u%^{T=ƭldG5TKb~=8fF+'~hjĢQn]C-h}pf6tj:SL/|R~5V3I"*Q_ӏꏃFc]Ut_ /"O e+rI12WNs'x}׷81sg#9͍VcO3sܤ)_Qe ewB].N'-7A -oi1V۱!%NQ4Gn:>w.NH$->5zc  vxnW㳲FK_ʸP 6H`4tCm$K+e.U D"ZW{jW^['麉kjK,실;-6 !eId)] hyRZ:׆ڂGc{* ^O x!RW( =uRÔy%!]S}De nQVytbe ,GWHAމ_;ahKUOb ?; 鲰ꁘ<7`~vƆFcԇ!zB | _H7G[k]#pcR^3伣nC!ApGPu$I?p&![HItqCt:o\A@P+Pv$E[C+)aTo][ȗ}1[c^RP:6G.v3 ~h}vWٴ|4KoƣlD-l~c:;^ é$x#萱c C}-o'mw67%w"XAGe=*0aٶUu D %:u[v^Ń$dKNIeVáj6Wq s#^x%^tuBI%@GD?Mh_^Vxb[fe_WzH$,RXƇ(<|O2~ Wk l#C+rԉ#&+oAGkg@ri91mRA@+UD?l(cټ0? 0$u$dW  >?HlH,IFג ā:0-|z΃Nǐa㶷> n2Le_D5ŰZlT9L(FAX)tX] PuԄ< Z 1:A*,vY^V=Q,5,/H;8`<נiV:pT_% 5`;S68tT,r+ݎ`).Ruk8)cN1 GUq 1R[RUܭhIb~l#!P5U$蝥5r??j D lA#PJ >XI ke|zuK kc<Dzlym+)M,~c o;ZF"oqhѫ׎%LU @裰`@Ab[kF+ǵ-"}}k`b T'<ޘ$VJ1WlKv_$"cAG⼚IחiGU'ntZos[ --UEC&`~EW1 }b^Dx2S"0%l| >= ❋܅}K1%@ Ae |An K<{#g~1N%JR#ίJ6 q_7F_ȡ:y]*Fx} )IDn4Thd/ڪy)Zb"FO,/ޗYٙNGRl*V@X{sF0#z uCE71V޴#G[•ϏĒm h݃f%%)A +C/מQRr$Kd0< 5蔪 ΀4> T'c`zJH\,,J)-SA*Ix:&`&N(E@*:e?[ &VUFǖf-ٕzז;ֈ`xb@;O '+I"\-)2jѠKF43l[  * OKI߯CdbLl0]7`U,s?l@i;#{oo&vYHB J?"G92KB$K\VL~:ںP k⛢ ыvI4{"@ =Pcgg3 .>vU]U ll['at<` ߑ}Vk.պ?v .5(xHile+$6l]eƖNEh+<퇐N|.xPW<17D*<Vj*ORg`]҃)$2Ym:1K}(F?]'Չ/*Ţ2rUMu7d&HP-4r$$QC˥R'd@,:MT޴_+vQPO/B{ kZ8:@|] ̤ @_o!A –fQAvd"SvTA҂IBa(iX#TbUH]5$M7~~# ,4-B^1VM`Bש#r {؊36!R6+!ozy(DH[v“iEYfeG_,Dwdf:ii[Ti:EvWAm;\h}*!ǰgsNEukEJZѫPčS`} :x? Z yYXGz6HP}Dd^$?* t)_oDU4n\~ΉC<^ @ItN@$ڱ{@UVe(A'}|>GQZ%1"!V3P-$H::>Y No'Eʝu I \';*QX#T*HlwJwd5WZQM ya"+z:߁PFuda£,)F =UVB, (v(H3 vϟgOrqJZfbdKb5ۯtޘ cDJ2e(e_T5*RUJ>z[%U$IbMPAc v!UMc# ]#pHu;xX{0j$'+% k@h2L!;PmٔZ37tSq9@ZOVVZ v.h+ѩ/={cyZ{0/h,avZIJlDM_9:$nQaB0e%g=5B9lI%Y ʫgF # b4)v_0Y̵Py#@$b7ih0RDņ4[k^d%XJF3Pu NG+pdH |bp +&%Δ%vG^P)2+nЊG,IDd!f@dDֆ#pfsZ ޽L91d ;TN5fI&mWH67ñ| ԫ Kn#eV@ڊK@cWu*"4r{ $K$09;~^i].#&0<㔽! n$nMJ &*c"Y*䕔+05$'OIQDSG+3Xєl'&|'5-RY%ŸA:8Q'UI k^4( +ˇ$&#$fJ$Jc, o`}1l6L%Pcm Udh'2 O-^ġLIfȓl I-%@4CDŒ$,f zx2_TbO[j 5”5KMi '{=P23c1HFI ǎ)HSG;3 9Xa႖FK5.^cZWd ̕vͶ/3fc+/W]UHǪ8r$Zϴy╢ v.C!'r; 5i,Hѳ@YDjt Fޔ ;sBHĈ5bhR_ɞ;UukJvj[wW?ז_ ؅A[]OFvxYY <]2'g$K+я)?ep43ߪI#`z(O&hŴk }vi*'g?mn;^ 5e;+k g ,_bѴuHvBivB>d9%bF.CQk/q[c,d|CR*\wR6r]w%~P>wО%xL(Pak1Ž9?ZlITh*}~?(r(OM%Uņ]c2vVh9׬TFW>r9VWBDz2ؚ4IW9MHکU{Ŕ%8KUӖLtˀPخ޿c* ÞsmV$3_Jprc2 BG6r2dio+n6;_X{زeN1K_84~KIf똡zd|ͨ6ڪb |E;dFBVD5P-dlt1|jYkQ X}iG_n}c~zhkW/$̯OZ3ԒURJe)m_kCNYdZ1J"!eYP1u_F`\lq&<$%$߂Muś玏Q%櫋ϐZF i*ʍ_hQDI&uNx|%DƲoJCY=f=_ KMD&"+`UBB6ʛ1+⟽!%$JMAM"//(GbO˥H,W.3ZԉL-;LiGO57`%Xe>lVrcylPd1?jb/rbrx8 ;m Z0Qt.?s"D{?Iq6A~,~[eV2[\dvOg}^GXo|O oV7.O~\vbi%9#׿PXvر9Iw.10J0g OIc%Le+nzoeOSc.MY8\XVDt͆ʫZm}6u c`kr/1W-a&f> h2f;5c=JdVA! ;|p58NYH!'{$榣-.C$ /!JUy^c>L|HɯjNºW?ON0Z6OKI6Xj5TO6V*s&g}{8v6K1tyN)p?k5\V_=^V ew7?^_^fk%*{O>p7&dbq\U5\DOӳS3d)ZZ+CIFYZCbdiE:q%f,3K/U$ c]#o_YYEfjy۰ZEQ,6Hj~#o%䕵4vm%'aeQxq*X{$5Cm:_č<>Wvk?Cz`U^G;Vك/c Y %Jd2F{u*B` 3[Oy&+DaX :-[LSbJ0:墤|5>=Yܒ =tunÎ,e\q8HQcmnIDJ7%IN19KwYHP#>BPB@?ߟ}Go]ċ4H_c[EGz2F4AYv}?=[-M%v@[+FV4y$ ًkZ'xLԏOϟǏNĕc܏z@ N UT oNI:#ʺ!T'D+ >_ϑJuc2J 2J芤thl?hryY̌K=7 S-bGfh"d#4yöJ %ܒZqFdb܅o[vq΀KhF?#P]:;:7=P>=g(W=i::\ n~adiEj"~,y֛EH* ϓv'y1d7XKn Gc :(dnuy<_KpF6쑩fU<$yjnoo2gx2l džIB!bU7H0r9*ܚbwUa6 O3N Gb^4T(Ub2M&3Gc=?qd^grIoNE!Pl7to3XFfHNxj;V\px#D,]h/?C]X*Ka@%tc2i@c zyd׀Az= = `mOkte]'c@gR?A65ǕJUM$7"Mכ^YJ|(WҒECIJ:|6:wzG 7mwu䀬KԍoȒcΘP҈˒* o#{%ˋ(mIjȰ8Ac|4t*DOUuKnY$u#!o*ԀH$C0z;a"D0#^FIR6< -.chm$@|-G~vGŞzzGI~nxU>'}JcRPP47Ԩ;)?;ފ`C( ԀTHu a.] ?I;QRbrjG!* O[N+Y5 8;1 .E*d!KN*@6?1tB$zNwC~/oj4P~Cׄ1?NX]tH>@Oj>vK]ؓz(ecert! kcc[Wb򧂫]cNg хpELD0#lI=vtvr%gޝ\26F'}`OmoaivcZ z@耍Mxmyc4 m$%x|E)FW-wly<oo'M5WwfA oe@a>Ir/rFRAntNx'_ 6„* 6OF= HlHَω@(א|C< fl-<ui>Hq*RDF#ˊ1t+Պݥ$c,_H tAv%8;ґ|Zc[u]@,CT%J In@:tδOR`elƼ14r͌8>b@Wtnv1r5 Yb˿@BCi10`Ko] +uzH\N }~DLL|gHR9J+!l2MEq.(j"cg*9P30> CA=O]?bȭ_@+:_Z*v^ecA *uqm. $!.#;ac s.#i'(EnR%(Hcvz ({, u]I?TԍUgQu ԩ>F( TՃo[Ge݈$ zΤr=>= קLqŔ?l 1ޢUg-v n#8v1*/]KvC0mz"I]ݔu`7Dd{z =Na|$70;0֛{ 4Đ}D㙖#1E /k-P%IS$~qWBҦrIvJ!/S A۪kq"鴊Dl9gkZڨs?%WnXkzvF{@:ҕl;}JJ4sVy_xzY3HКo}Eљ|h+wK*KogD(dVUKiX-|1Mj<|@']$BAm?t!Qz=9u!ڨmM9#P[iʇ$:Lb'GSLK&sVn,Z>o|u])8H:oaI 7}Ct@@0Q '`ԃ' ]LuDb{:Ka<h蓶/xށ*~(#.`Gl;>XXwc`oCʣ!M n7.dV+S0 { u%6@bt>P6;)`=l}$ #c2ު xf$z1 n 0mOڒ8b o H`ٿD#̮Pt2ttnA|HI/8A#(%kQ_lMy^"_jB1BGJ[b<7}:#_M= \'UG>@Xv ukj0u28`!XEՂ^1N-X"*?*jRŗ ckȓ_&O%H/$NJ>U*ފHx ^z@tN׬Gn9#1Gٕj/Ҝ07cKʤ/ISAF,eʥ#ɢR6ѪW @X-[ Q;4#mz l}ye ˱p4@ i޻y%`תJFxS* v@%2I#Gc44dQOt +**tƍh@Y&#em7nO՘, V!DlIw䐧K-ˉfL{lơ|X_O]zƐi pv[k#H*5/f N-#FuYvQ$?u] Y^CAe,KHK5Z D3&MF ]4[42Y+MjZZŃv2Sϰb:Xl8UA "\+lBBZrnT(=W˖$̵WEu(ԟ F#DEe*G^He H,c+>. H-g\JE66ݶYVDZ jFlSr_ub@`i(V@-B0"FIVr hmà  dR'̿FW{$Nlu'8B%,o1 *#HA= /< \!D BIb Wm^],R9z`$d;;e: JAPHǹiNʪ6X.ƴHm$e~HK(w#z+NH>G_EcRxyJv=Iaag׀:N9Y%z9fAGaIؑsքk6|W06 !ck8!BT<(ET׬(UdyYLErt:ш:-wԒ'/Njl:$w=߷0ǔW$n^$gCDR}б3sRR?oKHQVvX3rp]-9, 0Yd6(H%eQnY!T]즘G[oD࠹3/VH ,WUԂ;@)[ZV!B`U֜i=v1L1tAʩu&L5/ŌnBFʶ[ ^I9y+%VM+ѻurtHL4s!Ur?.H̉ע$h%cւyV1m©>p]le;Z^iUܨd)Жhjf] y}]bF9 #[!~WOenjPh]evZdX) q+ N1 /݊$l{<|g_ZdH%(7zGY#u(Ks{\oG!`ı|m1c!Ԛ "pz8vAN PqP#]uPYzw>{ Pv+ݒ+at eR0*ј7aiֽ>9  yy cRRY2h?~K?)5_+;~~32ӃǤ2pN\GR6o61'"HimFVv??$G'ȱԪzdmucCchYjDdd C1`dYY]:JHBW221Wcފr1 |nkY V:B[jn.YY;0B }DRqˤ|CdC10(N{D~[4ka{R<H(I:e`?KfANZ 'бsЩ*c$0ڸSb(]B+HV [Uo +3[k# _He1w+aS+kh8,s9$rPiZʼnk\I-d$-C Mrt ϥ;PXʶfJ+=,qP8 :(=T##ʄu}I\>L_IURr 3]Pidg Y ߬PXHJ([X{IԨ)0IՁ`U鍗+^m,~qDe(H$ -"zR!M$sd3 <o{ (ZKeCUp[UE,г1ׂOb7V<,-5&:~őTI oi:*Y:cLkq.ۮ Y:Hs}7WnUTXC *ݙTh& ¬fUwdw6v#5wA $,zn0e';acp>S4 $.EV7]P?{((NQe|s ƀ+toFa@AW$=ƶ|R,!76ڭr?k+;%8c ^7Dc-$em Cn)y棖?h2q'@ׄd{~+j6++ðrK&B<`$CQ]q"Ժj=\~fmZ3VQȶy+|u18~kh( #!>$ ~,MlDJDey!\b\yDoBtahy#`yO1ϑ}8+3NcxbӉpV*`??׮{ b<-R34s!8V[]Rr{g;Z:lҷY8O>2CVC$ĵjҖ>Cz{>~ {} 忢[G]_i{/ӏs1=H`̂YlkgOrlMxȧ\O$)')Wfػ3-g_Zo,9lb˾|?|@o'¸tSd"v,H\V>o&q5^گ~{u,R~ڠ`C?Aגk:WOn!Zdr>&fg$!2, P@5G!AKأ#dx%.#֩6Y2Z1S#mA+)By#8e0d/O斗", f]rǃ/<xFN~7b묥4L1vmH߁V}On8=|Kfd6#ÆUIjy3՚/ di4x3s;W{r3tlUY!<ɬ~YJ`WYUn;zs{kn8LCgIW^8GGLicR-l Y +Oq5JXܔNI̾5@ U'GdekqRBҷ*GZ/-3; 4FT~cxLeN{G'InZxQ!dpx\9 E&ƍ?pYb*;QW)/N|UeaKkm$H,X|oAcWuԱ1#:$hvrּ][LUc6e-/Us|x]oⱄG k_C6͑z{x oqwOc3H"sI%d'4UaK{I1FXYu[xw0qڔ3Hσq|xA)]#CV1Rb=tz~lR{9 8^(58]Tόa!)c^cdmUXD|<;iJ90uA_oX&bP>g~i+/Kp$qb2Tu"wc4*ßoM>]JX\R5~Ijs>;Lv ;Y+UXoF6/,c%!34w9 :,HW-N`wPGaHI(N^8Yrd[cRWl<ڼN<=k! $qz9^=yIL$;GX L\lXAXlw#yrbrYtg,?;Oc 7iױrķǂaɊl猰|.} :.L cvT~2E'_($6d+rpaTgac[c@v$ W؟#ڿvCڷ4 BAg>5LUWܚ5\?zƺ\f@ humTg7{[TӍrqsU*g,(Po9KpuAvS(Wǎ2YBYH+տg U<:Zg\Z)5 O1 8XqkvIm9)BC+=, `ƅUC0^{EӮ .OS![q̕6;9K";іUw8>9kգsGh mXFF&U6kA'R)LI/h>|8;iBqHwdņVR8Ɏ,8O |g*oUޯ29nQ#束|rS^vTL58/Ug,zOz{s9؆Yơb11J~㟝Gr,+&{yW\G)Of%D/1O)Ww+Gd\rJE#XlmlZD9=,{ 様AW#U*e㹫9^E3H U/CI_$/[rmMzQ5xormqGG\zMYr$̻[b/Ev ŋ Em)K ^8̔ꚸHyYG#6?bg2Zs7pj t8Wg53qtv AJo$VD`59$c9kdko'BNgIٙ$+7C֛չb)-E"eGtʯ0+u* oj6=GH/3[ 5+K ^52C?[8YdRH{$:'4?QC'F#f1BF(dd宎r<-yNH51"~R~jĀTl|WNIkjX0UizRbA Gm߷^ ?) *z*uUϥuH숥WEς{k|'jH;|O`5⯕Sd]*mW襅,\2z$vx@x选KB!f SYXA@ڒX?>Ł  fc A$k{QiJr%Wl$V#U{Mߕbx%X ?GdNiAV:Of@Ŏϒ6vb\h;u=I@;R#")>6 z,P; .oTl21#z? ec)%'䰻ӭBB12dm VKxo=LegMؓDop+7b};uX>v +Y:"فY|$ }?}hW%[bKJmAߴ%Y"Z1У #JkɓE`$ťܢSɅ-I,h%dXx*RWb%Aזޏgc$۰epbGTv 5>77ַOc7f[{ u''%sCG$n7ҿh2'7U"D;+^>"פR6zh>vvy'yP .##@@߯[AAmFIP5|hvUI_ H@*B_z$|cnRHšn|@YRύGu=-)G% |?BB0 G@$U6|hTzDdiTQ׉:nU5F1JY*j(xm"Q7 [-$9F,J m6(R6O<4gJ 'KG3(dn;mve$J4ԝ/ٴČvC#)=;FuG:'gD.|/"upMu#dVA1 ʼn]R d}S(cIr{6 v "lY^dCY5Jŝ4q:iDUlٺvaXK! (RμljC좆%@~Ϲ$öDHu~òH|F쓟?휇5X5E,Izv@ġRA!lf39 &EeFl yhi1τ#*\d%ԾjGWim*m? *H׶+m)AٗGr *:;rXh[Cb:I:ߥcԳ>ݺ 6qRYijD DLYA7oozԠ~_ vT.?pd_>Tm>mR?ذā 4 ,7>C*6`]@#{ҍv|ܒGĮ+pUQ+8Q8J6QČ#3(o `GPH$)RDz`TcffTo^6"ټ(WmUf`> 3|lCe4l͢~6Oʰģf^ZE;} @'L31c\w1F>:4H#B(R/vyEb#oOaK Ɗh>R,lm1.vo,:?MoN|6$4 ]3 4T;FKy`Ɏ(MGig%]L2@AJ)KUnDT!i$R*G]} y}$Hed]u v@X $EiP@v$R#?HGfݔ *Tj@(b5U #O* jQ  RZJӲZhʻK;UcǑE~,`4douz kH{( _T{dotz4Ih ; D)QT|SEj(4oͷr2@Q@ ?/ nvUʀbhz6 ZE) (F![gb UA Kԏ~iS>Oˊ,-I/g$v~IN*J܃q*:K!ڗ#Ճ#@/P\XV ZF!>& :3€vXhwI*W~^Nmh{+($bՌ<"gHuHI,~ėߗSM ѵl; K1!>BtB;l N}}kgn K>Y*L{I; J趁^yҫ?Ǝw Ʉ O[*}y%PMnڌ1M$RFhJvk$T}A*k΋l @ر9۳jוڱ̨ZN4ȁ BOǮkzDV O|:mdX˔Gv_MM= 3,de NX\-"rB.M[MM£ H]g+u ;#3O A@~!6M&q{I v~U,>@iI]pyIJUaYiTnZbPKuX!?,@ 1MQ!z3*{QOY{>tYZJ~AڵewLV##Vu9-F?Rʂc$- gbz@>GFR~4" ʡ$!ZD;~0wOU `P!Ad[D;#Lv S:*ŋ1G#M#lCc*hWvRA$N ,_4I$6RD*#b&Y^F_Fz_*ChQ<zld(ѷcΧ߿:3kt炳~JT19fC jRhoER$%`? f}"Ja##Vdguu?%+U`s,F|'ڋ8}(c0"$@~D4]xe[GEsJ"ƞՏ_-],`EgHVB/wA#n9, ?1f$YN$ mv |vAɥ$44(ͩ%Kq8 .ڤ"o&QTKEVt2Ya"I+}l>Ňct`>Y H?#|O˨a@;UaN  z=[KoHK+@ y$rXI}Dr)VQt;Y7Vz8bJؔ.FKE)(U}HDظ`cUvڎ33N@:go+FD)X'b0ms@+qIlu'"ٕW`y;4 7wcY(2R`h>5+Ջyh& i8v2 7R[[@n zRrFfYF`SFU)2^aRȱh'6]Q>垤9Ha6B-I4]?vT,K@+^>qܕםq3Ѱ((9tȽ)`dFYqf,H!H8=PUAH-dcO!Ud*O Ei4-4^:s0c$${Doqڌ r"D~Q,qfN mqn+>9gREy kK\/:8Xh1MFRt )*UؙUG//܎Ay9դ4TX"DW'Jhd$/I?$Rrة0lCXk`[Y0]~G[{b,>^Zu VwIgn*SY hiO!+Ǿŗˍ2G.N? =ʹ6_дlzVU՘)`4JtTʪd;! { o31|)JU/IF%ѱ)FoD¬ܬߗWA΃7gY)LvbcPRpЧ#~~йf$-Y y/E0gHԦCԩ'0j^9lha# VG` ~ϭKo LqEua#-+J[e(Y@t@]z܊ymJ6- QgR؄%XVTm.^hޤ8@XXi@utyOf' K5WfΏ3FêGj ue QQl0H񴢸Z4hY":*@oUKi"bG0.{CjQnXb"dxIKU%EӧˉgQDrVx5ecVB'Ewtt+tAY_ʟ4!#`GW H$bx)8Is]˺OViA[+GhBiv\ȊqC—I%ƽ)DZFB?1Qq||ź6Rӡ d"nڳt@,wLtAswKG63jLUDCZ`ŢQԳo}Vv3G,dpd3 vI*Aڵ\_or"[CHN`bYH9HUJEN4E^|A"hqI/[$my:a-vH V5V2Uc"Ih-m98-EXJSՃ Ѩ%Db?=)v8y$ɕ@+UC|ڑXJO|ԄzXת|pNI,D[26i%}Hď*in#Em7]),5DYdI'g2.6dD,B$a$Jm"Yğź q2:h'2Z6'OaCܢhāPl{d&:82Zݱ|u@uո+3v#fXGپY25W7b묘If+֯ %<_!HEpDrI4t2D՛WP$F9q )JD7ry 6 Zwq*UkXqUCv[yPRvn;$)_k?+J1|w>#Oҡd2o(kݐ+GuݴeIQsԥ%. Y$fOb}8s2!RRCE9\޿-˽#P)#G@|P >DXx62)C)ko teUzod{ɩ*鈬"[Ik0@`A(_C猐OI}"%+s8Jb~el" /ÏFecL Il6BMIrfayY5=;I[?rɍѮ$ BTסN42.ײC1L!>XIGRdEs?; 1E/ 嫋JgKPNc`{.#^ep69J0ry\N\~b;*Yl,XtjvbVR;FIJѪm>BKK+cb1.XI7=;o,ܻjy&Q{*yu}onPJp=fj0>˔~znנR;bz9eNYH|?飈A>7c?t+q1TR׵&JdhrN?3RHcvbn[Ywn'ZHJ_}69v61qS~NE`FZI/"eH.$2+K4rttkrYOӏ1ю7NqB038%^]G>xbbL>B+ 3%bgʗ"Q"VXǔQ,G@ԤWֆ%}W`cK%gb} ֞Zx>s$rD}5Ҙc1WLlE{cɫp|Ky{}IՍHA\+rX YSV? s&̾O3ȿU&A,#{$HR ֥&wn$v95qo07{´Tr_9Ydt?<Rw=N뽲 }l(ԯ+)# [l2!\Ëzg TjAPy87p1fꛜnef- s.Gn6@M8*x c+Jut-m{EqGG%`-K?i7&G!cuc,0HYa&z}[q7<W.K_]وӠZ6DjTӓkq|WrmKSKc9 mOBmIDV՞>͗\ĥ,q?p)9//a ʂ$|,4D_|~c=;\ʖXrb1w"npK#Wm+ZzcYs\׃Kxqk.XgroV[J>DYC?7E?Mכb|YoEfUs&HmCZI~K|SuV%Fԧ$G^P\=z|l5`Z\d=wb9X=O^d09 $j,/8r\2bL)h}_V#<޿hҎ!',\$)Ƅ_f?k{e1nI^gG X貕%p⿪+p/VIbZ#5{%YXR{w?-g~MR:~90hsYPɼO^xU@P8NaKm<{poOqE,~?.܄De0UF8GSxغc: r $tߤAI+_|k/4>_9!E;-|q|x\hw_o1d7 圂G䮤={8}.xXEm$lxmg*J6`hlvdPd g=3xoiuZ>ɸv&xŦnӫRNUׅd$qEqO4=ߥw8`W'Zl=Vl=VmԱC9f |v$g?F_ q=}1ܪ MH%\lkG_Cw%$v'm5uߧV3[l(X2>*88xiԥ b6V:ce j +#c\>X{g`|pg~HB|lIC3 !g K qIP۾4W[۟*b9P%\OWs\c!f~֣5)&~K}ϵ~W'My,bbɗkجBTC(a',\?~{n3VXR2oAa\ !jc-V aqS6"gX1SÉmLb.JYيM;;dsGY@$θnPS!><5FY?!^r,|.;sKNN "O Bדc'S1 ՚Y$H8?5{[Oy*`XqZ.YeaP|s^('~1H $uU.3a+' .o5/|ziZ#MosE2Iv贬W5x#w/MnsyOBf$-$oeր|"6B8NݏiwLbe;,dL L"ɕMO G{>܃dj:!֒G!-ا-܉A0gTNR\{w|+b,+C4qhjkiؤг{npo߾8|զKrqk;lWzYiUuqNّڎt2jꆣqgN),ӎjxvk򺆯)D+|l~{O8K28c}vY% c8lTKUYesǟ>(X8ղa"%cBΕkߞe^vCBYV&Ҵ• Gܢt pȫ)ֵFU^X֔رġlC 3F)y?,Z)>/(Vlb*TXR8ȖUc 9֮'wJEb0|A[,1֒ƎifVw\V͞xaO4A ⷎQ|Č%B{Ӱ2[!k!.k+k2$BOU}~7RĖ]PIS ]'*cz:;u؏/?d#\ʿaH`ˆﶆlN;%xW$}v yPX )_o܁އO*LAח$q!M0Q+u#Z'kFμuH_`FiXRw6FյyQw|6|kjgNy^2tOR6 6=>z/p&WJ4/Б?˾ߗ ݂[_owU[?t4Nf" T.R/A 2kCPK ۿ$^|}MW!I5[c? ;k۸T_!? cs%JšDJ34~;#+} /LY4PPJ7 o w<ĂHobc=7?R<召i++D,@1$0!AN]{,I*.6uب;$x̤%\u$ɳwNHe:rV+F]:PK],Nr$V*B` 볽(WNY횐N ]ʟzou+ךbE#f&FmQ;`D%O ;(WbOM($ld_|Vy}i# hSHmloG*Nʑ&&Cݔ/ Rh@fc^XnqYޖ%SHC[92-<ou]f*<:’B ؝b:ϥWLl]@mHSԑ?=z&YCTܬu75 1xa8܌MsQV;x u#UUR@h, F$M,?274x%E7H5fjHPI'~ kK +ʲRtd׻BΊz* ypqaUWYEPFJ"+׌bfY0f@f 2['Z8G9,2 >-ɕqF)t?%Ĕ%\}Ԇq *Neo:o=Ƈbǀ>Ǒ{0e%R]t|l>I;+RC6WuOKpyfЕcmKm$6zrɑ٨V6h)F[(C)x>@D1; Q&S ز#Pqˌdpb/āsba8Mψ2Ac*)_If'`%W[$)%={[>ID}"x;`wvߡ> 6@[0'Άy v>™@8-XW^2(F+ň cG!kH)u'W LI 66w}Bp#w!}l$u蒄n!`A': tOE!VE#?U7+d&/Y_$ lA&Z2zh(U jYGg h:2nENщ$TᝉO FF D2|T! (A Hٙ`e;6+JѼNeQU>?gxkȏ7 68&L|cMRjXC~\q~>XKGg x )9PtrYhNo1eu*y;#=JQ+ǪNZ^ڻ \ q7ipc9Q)A<28 e_nšcJ,C$-݂#>kҖ# C&=`eC=ns@刹 '}oPQI%E4X14"G*" [B@zɽ#~NT HG@'ƽQgEL0ܤeɒ%Ծ r\ KTL++T^uPuk!~E؉{ @QI 1\YnFnݶ@oBy#"L 4 #^#&^,>IڋJm-F .usqT ,#VuDRTpeH;eѹWơP:NzNhu9=ªś֏mHpxdQqs<),K?m\dNTjS!$+sl|؜ņäFRG;A((I J`@>G霓o~j2U&Q-LmDh*(tz\#^1xC%a fEb5J: {TH`c%raiL[2.* H&*$bJFMhu@ ЧUI <𠟰v6H'LJUIe_{޻xz,G}W#ӕі~g$4EfXdZ&1ng-Fq;TX'` DC 0 A.n/oqNбǓNQǒ2!䴐U)kIEIYxF ;@dQ&e&ī2|OA fy#ǸqK%&:ԘJBx:e\lhΉ*8KcԂ+M]:P;4Dށ ~@쪀w~[%"˳I "`X|ҟۦE說F+;wH'__B4)sG VwA$^Qn"Z#'Ų su'/UVxX!=I>tN%ɻR֊ *DrFXZEU.抠.j.!Nep/ ǎA(7 G ;GPvn@rIFQ)[݇wRG*.(udKZ/r#nRWP^j3j$I) ݁ .(ƞ2 (;EdQMx>; 氹lL\CRnjrO}A+b /EoٮSnZxL&gܫryh a[y\ub4Ypcq"H۩9,Gq(Dg3$!D1ab +WnYh1?l [ цnˡy 7%9vfYY5z$}//lsm΁Y+ U r3)P+FϾvޑkr,ET n?&(H9hĮ*]`JI1HK? SS_[`PU=T)V6.7&rWv'jŨZed?iW]xf)Ԭ[8y+4,ة m%xXhA?_?Sp O1@6>n bO9ysC^Jǰ٦a޴L 4HP߫vލBdɲ1T$bUcd͑q#vP.#$WqRܲ rJ̊I\&;$iT_By>4E@#(#"'͊#ƾ[%LuZt*DbWn^IW{ e#=r|דإ3JmKb ʡ>*TFZݻH!ى}c=H}X󫖡)UEIՌyjJӧe%uJS, .,YDx 'n'C:1*~ؓv\vd$$ltediI+((7q*ih#k ׂdRe6XF`Հ݁`=7.J Z6P*.@>]H֌ҝ-/c;uWl Bk[OBJ C$A/P+'vʅcGJ_(N@4KN(̵eәX$6}Xc Ru HDsZ[$e ʃ]N>Ku)|RHxhd^ӮiZ4<ږI)6֍ Y);(h *;Ry&Z>!>ʡR$zuа$% 8[V{JL 39F=H@DM,mOͧ |LcRti: ;x%3-oAr, 7څ$b3 tW"/ulTkTCcЖ$j)X:B͸JD(A Ӎ|zZLB$jr1$:dV PC^7f*V^Q!A )+aTAv Y^ɣduKn=b$ұY4Kxn+& E<$iiGXhER2:AYr1+ѱ^7Z4S"Z(ј5Е4ѳfIn&Lx&|E+n*lՓ`8{P$f͌JR{:y<5lEKf,umr,BB 85dm9YO#9T/ w,Z'%Eefcq3-~*r`DzY9[6q1?CЮԑJɵdQ Bgdb#ܓ&..2Qʃ0K.!P veF__2$sB~ed%[.26|a]2>6P E a@u#+x-rJS.6?cH:l-I)rʨ3>r)K]#UclCu=K7 V?ędN(j丸ynS%NPb9X_%T1|&[j{}|/ۨӋr5>fr h"PV%5a/,[Y~찒Ӿ8fńR*zud1FSH,K7DJZ̯)SI_7` QhNOw+K֯@$YlQ~.HB~}3Nmw;x?z2Mf328a`X24I=K5_ $ FDjѬ&:DcM+iՃ@CBn ]%]OQ@~ϫq &J Co||Wz?`~rsw2*@տ/{!E!K)U0dm)'ET׆^]_EDC=30T}<%ΉURP4?xrQ8kYKw*MK_ ڮ>,AGiJGьRH&PzPW}XC6Ga\8b|KRh0_IujM2s<خ#wpKr(:*~ygTvJc1z`IgSc\MKyX 6.T- a֍յjFh,zE$2|s$B*f)Viqg'ExC[K3%yŏJПfbr)f~~o%3翘@SoƪrAs3e>NL@{ĸ!vbk3/70{sec ]5^{U8q\g) Ze\=\;,`.~d'KArq(Kf1+^_sb2-! 8l|ŌG:d-hL:4|r'O'4\pisqS؋̒S+Do-.&lyHrN5hT5G(Lk|c߫9x<NAvG%Tۼٌ?\Gc1Ge}nԚEke[P5yj%Iwc؟op^+q(nGۧ\R}a$Vh'5jDD=~dZѮimIGD"il13tDuFv{ xh~JB BUbNfm0d(se2GqږYmi%cÎ8uSX٬crԏv;{ܖ?or#"W>w-;lV\5zԪdyYlnEF[~qnUae!Kw.6IpcY]2~ +55#3Qt.ۘޣV,FyvVG,,"o< ̀.〫ɥ/_oZm';ˊxiI);Qˏc5=\K>g%qeT'8lY;2X>srQa62#hЎL¤CZŀ\GĐ~49ḆZ;ڧ-ֱR\qLkiYY!|i"LC=ח?\υ0Yp] J%ZƳJ$U,kߦoqp9.Sq4a1U+dݚCA+iVt^UzB8q r[HNGNwL٥^DZJ2O{ͽO%9>ce+K0cVAPخQ uCװo\q\{m/AHLb1ǚݷeO&Zb7erz!P%T |R˿C ceg!m 4l{R$f,{8Y&Y?#QQ(c% F^ʌc%M@bw!{8k{؞mZйƲu^)FjS_#fhKYwD{r\ˏ 1Hc%l[97hU޻RehUVil%<Ϸ;"Q61B9@2zycwᗼcQr^FKA~GrLg"~E(M6q5C j5ܕ+/Q5!cy7!b;^?q3qFq\y 6HX.\bzp,L29R (X]!x=f_\3ȣy8w% U|ؒU%ڍVvn{ECىtG> 9+:"pZՇb)f5k*13Z b/)ԙ,%LLiV6G#4MU⌬,e0jq Ifܶ%i $[(gnƐا:G$&'Ogw{c2n²bcHBB1Z(h(&^R_5*cΣ{IO6^ϜPșu;nXƎ:ώRZ;KW1uǒۛ IWʶJ42$p4rjm:{7ܳ{ZX>M2T13v݆*8xԷk ,,5;52<.S]2[ౖ)2sc돚\R,wY2&ᓸp#gP&3=!(b$3N&UXr`p9[kuvh[{Cgج<~s wd>g#qYJ֭O P4Ybqc% 'Us~-=gw&|{$71`$Q我Ԭ,Bq;ܵ%<oѧvЎ3 lI+Hfߦog<3\an4c-Tc525%`OU֨# VɛŃ?inZSXfʐ&I%KF;}xI Mok1^ 'Z]_)+xy\RT/א|WDx2 )RY$^|zcӄB2r#D=t$0PoS.%?zd"4Kƿ ݃.ºQLOg[bhyTef,IFܨ,žSՇ jo0,ϤUbuRB|i  wPe6P!! B%9FHk{:(aMwuwZ5CקiaZ!Dm4`l+loo ,"!LD2*N%vNދlu^,Q$ bzw6 Gqߜ:/0,Nv{?r2#FH,xi?O:FS_>e nFH AmHezZ4 ]*.NSJi%$"w] C$+ _$s@!nT!ڱFl#]N/<SR)h"SBe(B)K {<`v23#l+6mTʒ@P,.$b[I#Tƃ`4 Ad1ݘk\ۼrbb/h#PJ1C Cf K,\x`0ִwy?WrTJ/4ƅ+2 J <܆2o{/V={;3VKp2&8d/ Q8jE||2]Dtw*(ZèF~07Sɤ]h5uK7rNQ$CK6)!#y X$WXW1<ُCĬvm?cb(QFF9d#E-U]2+:֍yqc!<. ~UU1Z6 NY'6* ,W q=JSՊ%S: i,N`D'`KA߭$nUjhn&?ȯfaNQyߩAYs̿~鲟Am~*ѣO.o5.hR(%?$0b֕7Iu!RdkJ2r2+4QvĬ($=s7/凉\ʮ[ÌjH⎡(mAJq]?-m7AxϿ|%=YH`:јVko%Z2D.5ub&h0z=Klq ,R~e.1<՚76.K-F|_ <Ԏٯvz1Ղ;mTPMq(K,kk GJJV'C= KbL ;<=%u~{n >1PH kLJJ$՜)Ʃmr!jz5AAv& K/v0[l:IeK4N  !62^YqJBA`M. Y{e{,,u+&"@JDz%$]40i ۃң"`{l+!Xl"F RMvo+w~$Q4FR5xnӚ@}ƭ::@*픆i',`6Zl2ơY'rR@,J չ=5U  0I>uN҉M`IZ\'؝k݋zQs) kLu'>V!PN(7|j]cB'.’a?[ԂZ=12|CMݝ+EZ*tK1 ]֬)ip|[2! 2HvP=TaIn5` ;v;GP?Pd,8GY'V['RF/r4<:kYkQ0P Mt8#Ǎ0E[_>]ӱiv+`luf,=ˋTQv`K/ƺ^v@#[QCIƪb;tPƷhpnj uqh7t%(Ķ*"G;S⻥VD|kf;:PXHֽ3 v;4"PLպ&- cC%IQ&1*%a.}vY!/9Sg؅ * l ClKq+F~,&%0Xݚ`v{0QkZ=@꓿O*N4d T1E[@RĀ4X灨:#UWKJ MW]*ffe?At*!d#l˶#@xkǭx⇵Xĕ אkFRc"FR?ZB{bTQ#O'$ ;kZ^QBc4 AGrY' IXBҴ,%Pāщ~o7)$z+k=YӐ!FhoGȠG'`(N8)Fz6** dU)KM!) #,WC{ÚT'B/Lٖ4ƯGT)ȨJ$NDc%pWEC ,T#H;طv/ {PԒj/bcM* G#Gn˹rFS^woPe6$$U-)IɒbyԼޏq3kQɍ@nn埓'q[1*: 1NQW:c~N0{;$@><5 r*c,  @Y9n:Ad iP_fn#J? T%W[+?( #A!oUc ~U#S 5dgVE9$&PIe,sy)U[ lG4#BUAd_U2lVw1j³ɯ):Gy&JFEeE]YB8X4QTC68Dd'.)Cӕ[/,fHIV((~݇.-x+hyD2EYpz؈ԀUTtHKS%^8`dmelD4B'H"^v w#GgϏYvUg %ٴ{!+eǒYL\JdJk^GY0Z[v ~%U. 8'l9 50[$[Ud+h ܎RD@]?B;B,Br+ ؚjдK4fO(hʗ;9:Yl{nZlo[P>Va`#Lx`V-e34Ģ /a41 LQ{y1\xɫuSTU%UfPEi"JYx:{ߛLnW#&2Y#)PXQZuܨxkD"YZIG4ݙ%ݑF &UN~acN9c/%q%ܨۣriۮ.URXG4"&,+$9t~}C1(A`fa)|=$yJA&*G Qbq)(? hI,ꨀuA>,oUc!J@~v#dD u Ja}#t4_Arxu{4TZm#|YJM7k&9 _D HJ XfN{S5KX+hS䊤 O#0DAr8MFD֪4ݡUwf niR##uEX QNuN FCeQ"sJ@XAmfo[~D S( q?.JNS1\+6W Hݻ)}\$3%kzIfsh,Z-/IN/y+{ϝ{SEkظSÓcch#*e] j+II1%:޽L|lcp'd$sfmo2Wb"#mlBp/=ɬl]9e(ZTc۾&ge,?Ӄ#iɎxq9wX"fByvɀ.)̿Xh[9V'{XVʯrA~b)9b*dt_4jObp+'Y[~Cw9,2c}ۄF^fHֽc$ ᚵVA6vEs(C g 9~Y nBt; J>L<(#_(bP6I62omhȩcvvgD߷,ei e9)6g=~G!yfʼnwTF]~0G[1 <x̨eDSR_Įʭ"|qvGҖHdNk4BFEMF?d hdocB1Dqi'jR#k?ѱO|},cVMa,m`[R;1ƐȑFʏTPRW۩U XkBXICV 7˯Gޙ<͢m,(uN:4H XƢ;lKIv18|`4ȈToln+tb X\R~@{o=K@;uFb>Ȭ6V@]|ҝl1>OJB|_;v>%˙hk(`E,?%hoC^w4gBkocG/ʼn>qK=mFJ%\u~z;(*] '%Kl>>79d+VIRRm˭{U; >il=tgm@6 QaFE@\b}/,b2$đ\]RjпV! bI!uZ܋Iڛ]C\2!l zJ( #)w".ږ'~oRb MTqI5!TTnuk0oOb$YX0}dJGcَ-p׫N\ڗ=2a<]hFVf "n!'j6##@P:썲ʠ)5H<ѥ#E Feout+[ |ڼM6?}FAQ$>*o;uC!#ZX궡$w Ā6AeU/_ySvLrV5hGYc4^\,RÌN6UarYcJȨ;:temj]ZHRZcjH.Uxr2F#+:#!\[WEÓ.,@%#Ϊ, )!jx3LD,O݇tpZ8,Dh^\rfWHȠJ:mEH4Q\#$#֞JԈ0P*9VC* e#iLdc}hOm)&@v%>U+$%VŮǒ%  ,nAbF ɔ"嫱PK{ Ƥ/:$IlG V*@ɸTe6B;qVEL錂3վyqp? ~IJO3}yj(h@I1 m 1e9665͍j9l[Y1SޮG#tu?}S;I<|)krc7:lzOwcUK&lD伹qO*Y+ͱk[/ kNbezX|=5V9"(I P* mzr/rfc^C0.Xxp;kij=>={ K4ql\V5h8^B+$L#qrk#_;:MH7k}׽sg V8F'[WRhS9cZx̦C [" rXoUb j~\I+U%bujSnXu݉K4`؁"،[?l'<{zOkU? Ohyo|U[<{ɲ.J\Ve|VIii K4R{{7dkι?k#3a͋s~jl^=$ NҭU$HgpvE cFi+1ŌYSJj1{y&2uSQ] >X RA=7y=K7$'cYu$g ֣_jQKOnщT8l.:Uԥ q֥ ׫^Dԫ X?Dc@Հ֯w__GN9S4_!f󗩙ck)5Y,QEz{ Fs'vB"X#f3MkV/pNMk XAZ>-3cLYk-y>k#eSg2rOO0|ekԱ)tGJzc$*1;7v /?Җsܯ9l..8\-?:͒e2\~gh5}K*\{zub^-{MJ(SJ?nyUe)\~6[8Zԕoi^2VY`XU{ǁ??x_sVn_=.OnI~96.6k`hN1$vS^{ugڋǜ\k?D`[J4 >E9ᧇBVb20ՕK=Icս;ol2Ȍrd9q䜜RQ,ARČ~j dJޣ^~W}~9[PMm0'Zbd:=ON5MVcBVV="XTWg]5zX^EQi ̖NYQ]'{DI_Ǹ~$3R8.12$ګT@eE,iR[%w{vy.RwK$NO49{qmO K-e9N.N-#]+5&~/.KMOk^aX{ݯ3ܵ=JUg.˅Lc>@ʜ^K\UdrS!˳\ne0T,Zy8չh- .sYw^ 2B8q<!@mz,"Mb~DLry'xfr><eVZ[32-~n? un±ڑ6NgV5d2<^KH"0bq4[YZGv+od9ȳy㱐$VL2XHjЉY-OUن-0m3 m$qbWJ9C<'6:Obq@x%pt+cini(RbH$xs5';$ܦɔdxF%bN( ׊OJx9m렖7[ryʬcu31*cR!ZWK[-% a$o'$xeS̑V_W!-#X#G_沕ijImYIzKP\:s|]?q= @-ٖ c/٤ "&Kd#,ź05!3\] S x%H34l[ggdG>2Hh``FXVvS.o=fĺ%Pi$Ѻ]rd#ez>3)>> |T7iRՊZc#_2V] $F vWwzWI8<;sH+XdB,={Jm@5^yKƭ!f# F>YOrno1)JJb4WIr8$kt9#ZxZYaEkYc$.eJ,!}(x,JJhVsW [74-7-ej0&Y4X0!fEG2oF6r{B)$k#$Up!f% /=$U{qũ]fy$4gXbxF,ѢBx^2mjGT_Q圈 f/~D~chGWC%n+t~Y@V$$*6d15h㠒.* |3G^82qb;jz 0A+/-A6ye ܻJ|E mbQ&1jv, M]T7ba/7+]˟dٷ.I n u"'DYWXq{p<8^FMI҅82=¤c)'uqZenZ(u1xbg)&R^JqY+Wh5P`IPI.\-qp5/Ob"ba)cd%Jx}h6lٲXh4L7 (m?nT1"I$ *Q=p}G 82w;Z"tV&)zBN_V.8E5ƽL|M`eT1 ms1QA!,!89PZi\c7VաF얤IwX[>'K,&'vMyb^ c95#Q[m9jǤMRSfq {8īP#rs֣i|VC4x車xGa ~!suY&sǕJlRU{;-jгfN_nY q۔R(qAʃv1y%hv؈I0Z %Ӻ)vKmyw+z.|zc-N!َ3B2񎿍 @߿^᜿ߞkᕪ峼||))GZ+v{Ory$`G}lyOps;{d[S%o6?,*ܙ$$byKFiuLS_Oy/w#Slh$>W~WuqԺN, \"*Ŏky+pz狱nxcrGQ)a/o)sZY0Axˏ)eh|cE0Y 3LL}#%S-;V]UZقxĕM cN#Z^~93hWk9,ss*6sX'x[fe6Jd+jiGκȽnMj[cu&9 sP>X7/sNIuً$oh8[U= `A>O{>(-bDc6) NPH?!o#?!bV%#.ssuyx͟SP\돞Yf7#am^Եvh :ŸGEqVUk?*Y@vUŁf'=\o n;D磍)RmZya:g[_2I(Ud:UjEIdPƜUvQԔ 2FY]H$/7EB4Y5@bY7A-HY~ ypx cPݴjKtӆ1+?3v?bWtI1Ww,ERhR}bydع^Ͱ 0~Xm "(o?׎{Yj:fa2ّoURbfڽPY!frB=Gw,35&(+ϔ5I))Nb(IIM4m q5<3؅+2 YtU'cjNP;kCet@e軝A66|v?R\TM,v%!j˳@:g}@cG@]}h ]՜W^] hBO@,T[͑Cg&QbKCdFH)* W@Oz4 lr*JLC7M)$Bq]Jٮ!"Lp)epĆ@j(1K4ko8'F-$- |$`Au?Q!,If x<;]B" nojxUH-MP$걟1UR44y>Ip%4:};P N"c! nCid<n.]K/+2衮ZR5?)Af UNS#!1/et:(iFW(VW|JݨXi$r+׳"Ue*{,Nm K%b*vzul=XI ےޱ+;.tH%`WROI!x2a'+*0.՘<>H9J*Ɔaȏ+9VRfW2Գ8f I?!v!֞fB$ä0%޴$K<JAlRI~FMU'v׍:P;5vjҲ*'#tAF U?doOCǷȑJbJ*T `Gόc)KղkS.ǩUfO7,RJlt⊺gkݫnZ2"GVʂIQ#h꿩O[+qB4ݘ9 b H_ H>[x)Ӆl1SYaY$ldRC4pc: vG!(#RwMk PϥЙ,;:u1 ~*l#+(`q|p#H oRĮO;lEV$X-M(:HMms*VF9feGUqhJxCz ;s2_Rˮc=Dҷ-h etxLȊeym4B%`-o9! Ku.+ !yJ6{3K`۵ԚC]\"ƮY4$. (dV;eXAoF1|,7vVA)u*H)˲~A^YFgB3/F"AQI!!(LҤ jT I[a9^c5ͫ%q3EӧYXR,FFxW{er"ceT8*d096ad#ROQ]2RVReV%UΣ)ӨO|u [6gL?Hc,6I#`lo^}N& g͙QbJr8,r*hc4YD1FRJG{~cF5:w>Ǭ{|smd_p,gmlֱŁLjנI<*lHe}b'k'"P44L$Sa &VRU~Az(-̝fe%wh3n6!(t#`LtNQk{ }7mǞY%9d2fNRXƯhy]+FX-MJd/pJ(JL3e`fD i6X#_v%FUVB04z$0!4aFP($QpFgxPTFrP|lK"Ya OvŤE_ȯ@#z c֬2Lј BDȆ8U zYZelQUG~lBfbb*Ϊ=lh||}z 1H,z.Q'P``(lx!/+3*?|}0YoF ?]+ ;G+!dqF22~&4E]i7K K,?^`*,6 }Hd*LlTvHa}e ,EXk;]7[`6X*'gT#KT() )i9FRbJBIUyxc=uW,i>]zN$x-V*$CA6m˭r<2UQ!*B4zF"'gZ>k]eXʝ# K$Mv:ڕTO_TwP7E>R4F,|4Q(4cՕ 1q!DrS4#,Ct(VYMvAv'l[Dm_mΈ'z~`J'1H4c'W/(/ݧE:?%VWFI9\+ic '`no̚)kg[ ""( @H:oZ Z# u4ߑxz[Q Mm4Ke/I'@/ ܨ<3eL21vT zQ#*'XPMg20bߊE,tOnXI 3AT*c  0RH6VuODOEE@^͢4vJl93J2'l^U\]Q& \;"4ou{#U~JTVPUyk=@[@~KJր ~bTy +LZTh*0#1zE1C,E;h%B$ldzI; i2LۘCx O Ȑ0FrȍJRH u ˖ơ.&ˋc1u'JD,ÍUbz=5RH ܻ,vdEN0-hiX"14\4U"RCz,NIjO|a[F%ff"Ƕb:`t6,LoIM~CwQԥU"%!,n˯h/f)"[E]2o&ݸP^&4NŶC #7hǨE-'GVD1P.GR|؎"Ea]ضc,W$_#[xAn./ZѺ駊3THo@EoLbY{q3%cpu lDۻ2*نzGLeg&|)bG}Hwx#,pIȮWT|r /m)+2c ӰQbU9*"4:K5:cCh:"_N+VY1tK . Ti@@ieq <I,0\3Ck"A\(YEP6rx|)ۺ^RM'iO5dv;\8ouIl)1qV["Yc#:nI0#`(حXE AyR6~x`XϷZ|P6ݦxc3UaJmT%۫c`x'wWbd,d~%f>pxDnA*"Dj2Λ]dbܾŸV}sdXs^1W ZdSYgz*]lZ-,NҸ]^9YeƑ,&YcE BK)"H^ r Ŏ[\~;bt#FX,(P"yܐTUPXV"ʼ P4  l)c ;ﻙgs8˯leL=Y>|+I_FDQ|de/1iXF?d9`;`7 z<ϥdrD`6=*_Eb$9:(EI`7S䝕#e8|xC#$TS!ҩ} r+*RW6i8J{rAMv$(0>^݋A?'IA"6;$ ύ!-Re`!V8 jҾ†bƒ(%+kW5cp2RUJ<&k} x wS"2o$Yf`CyV6Tga*@ M'ROc>'yOmnb6 I]Έc $nu.CوcjYN DF2K YӾ߈+ƹyV,KORҢP@}NR>BN<b{I`H0'*BI%BBAPNu L(GXNkJz|GPg%diN4PFݏVa:Gx _r䁫KIC%ueK}$FuGrGC1fڐT?)YYXFP;JG䎝GmdM@2( _ޙlPb'riX?:8E*&Yq4YTW&\?Qz}e 4yY;!ߏeڏiNi"$SƲZ3H÷RԱHjVQ`ZTiNȟ,ߏm s x ( R3wlpS% O"x(tD%$xM$Rד~NT2FxDl2] PGU'$+I@ ]FemE$*v'RUtĔAmA]IJ nZj(wRRC"!=F'' Ʈ@[1K-_5&8N15LbZ6X/L=FI~qw@ oIe,Hbec]Cu|GW}W"< (zJnI'_aĠv,6X0 r : uP ȯVhE,,Yvg e?E&+Cd ءGxVѐ#`#k@z-%GL5bH^̤/b XN-eQ qC_C斞,x9U$;?۽VY&PC OB%[D !lY 4R :~)Jݘv$dcRuĒ*`C:+0[5$l㝋G{G?Tv f3n5zLfpm~h|O><"$}ej6d,#Ŗr".KϦen\9>DSx)"{A*EFsd|~JIb*D߶Z9Qn˳mhu>UQ9͇,ڭ_nKWcDW^C'wbTk4 N=O9'{~2^DNI"rnR7R^z2dc+zԆjI iHfN֍;:"C!1JER~?yk8ۓUcxhX54箬Lc*L5c^:\l`6؞(I"Xd#6QLQX-%1Bcv$+RPe`jMb@\+;FE^# $PNJ18ERJʇۆ|y 9Ԝ\~!6~췷4.r/78<,5՚#!PZޭRx%Qׯ<CǸZ=?#~ظ1׉O-FL[4loχ{̯7%-7̨1|^ɅLM;䷍fZԚrOffyV2d'C#UrN1cfpZT)˛D9+ĕvTb%LbkdqWq%}|ؽ닟{&O+Hg4:IaڴV[!5M땒8Nw^0{J^ehfV2!5d`gQ V[29/wXd^8xshR< -/Z4hw޳J:Wqdq>p˙~csfqgV~/Ǹv^|+g-Mey.F4E{R?C%euQ}mrXǂVc3g{2H(W1yre^S')8%3g p#ay$Ģ+\ )[:5-^;y je{N<;)dU^~AF+TTWi Y`~KQXG#m^N؊T+xdcՊM"[ھ+9' !SnEzln6oi8z>7{30i=EzZ)RA^8aV)ܷrn=CRS,qqX*.2 e8!ήXH"d)\%oQo ({e`\.&/SB\?VUexʰ1p>@YvvC4ɖbǗ 䬥vFS{ܡ3(cW&Ƶ@XʝY_iB!c5 ^EQݜHAdl+ꅽ-FHJϚ+։"&`fA?f%~Zk_⼊}/LN6?.ANT!VI#Iw&zl>;>-;fLJ?xbE1+X3IUPL8e`o4¸+qԶun,3F2P+|h WUǵv[,[Kdެb'luwj[vfeU$u \nejUIY#)bjBNz b$7lv|kW9D[j@ljޞ;(eDwR`x}5؊ɰn#@bUE  jBŌoQ}H d1D, e"30nӶi$,NrG#9;\ [>5W)S%cHVKPWF/k:w1qLt RZ[1M4Xz*ļҴJZgYwVp)ha9+[?ppI&C1v)^:bȱMf2O#GbQ1T8:Yuڶ;;θd EJql=JO(5ϝ #5l4׹ED?kO3Z\5e| ZX,Vi0iI}v?f8*8_9020f g$!fkP]SR+mkyn+׹9g'9- r0׎<5c$18qֱIZ7EU=FDsױ Q9  bQg^Ӱ'idI !DUc8__kE^Av%ZwoZ/U3վRlN3hk~Mʛ27fpۧ#1- ,w:#մb5 FxO=گȍi\'6ȬV/gY&|+*M؏_#ڋ^".&wUd`Vkچ,1R5)8Ȉwrmr NJms|#.P%-^LgDehrGO-MW1|0>e0q r'%%kfp>G )nKq*0df:9ɥr uH?]q wYaV'd$o"Zqvx  "t 6mC /G0`c}NԮzX[_rƩ7즌Y!dC1 'mvmT[9e,6J[\KlNYd?2k] ݗDz2{ěw%$Ql 7WeQ#.QArwƬ.nuy-gǓ[=-,:1xPi۹ ;TSة,䍚e K洕*'IOd1rɻg%,ܵ^Rcq>50e w,K0fGCo-V L=/;FI`߉˚!i r,$~>#t~($"NFm$h xboȖߓװ"ow/ockCrUDD'[=Af& e>dv|umoFܒ YB^]7֏zˆ2"Ǐ4P\l(z^LYVIHI ed,#sg yb)X-+ߞ~?5 2 ]֘OP?FؕF;%JIm!%ԅ: kkDȸ0$|M6n6-o\kWcG4,Tb򲻱p),4 $3BZ:|䢙:*\6 o@[ s5WEW7p**ګoZ;z~ZK~8 %hG_7}M3fsH$j%L1xɲ^_R =Z2(gAz?y:RInH)$k"IҐ"0pF~]Bq㈠}O#mĠɜx^Fށvu: vNsC,*2ׂǔU<;(͵zo͊7UG"[q"|*$?e2m0nCQ(,'dV,FcnDf(˰ l*+mXчn7 V3I$"םe.,oc΁ދH7E|xs(NcLbPqGuu4Q<|8͉BsAKtcZ#:)R;JWK\}%0b&Zk6a$}Ͼ[]*5Hڸ\d,Y9R#e^ uK)6Xjm6S1"J۱DVjHи$QIٞIPYf"BA ö ArX2#EU(U`5bO#v1U! $hm1_Ȃ B"1N@-+4~- _0JΥPHgrd]y(jr-2յ~:gTtm׍B#fh( {t܇h{a,LtHe2"*T `D;<B.KBi$r:K9F졞Fޅ͝q xM/IG&1: R})0;%c1 iܝ?1br ^6P厣zK}^GqÖF AOv>4蓳M7YfrґhzRݏ J \ PLt+/X|mBHT /)ੜ~3a1.PLрŻEp>BaL˳r P)F˔gMB a*!Z/ehwFxCBՉ)LqI%ΆD@'g Zsc%{8@! >N'դ]+h6tY|]I`lMb(C ?X| mޗz)@ֿ;رE?ӄCvۧ_&}Ġt;WFwH~_[kӺ'jH>4Z;=z7_Go*ub;_lk:)! mX`Fdxֺ4x*]SSޣ xj4})6FT蓭i 5Wq&vTO|l2 N v#@#e_,C]EHc:;=XIG=\cWi Q(ΏwFyAEv>}VP}\ M?]tNv.$iw}lAbBx^T TG]y R>]bʼnRܰ'e@~!hZK_"uy/G-^L̂" /`T45!I_OȺ=UW$ʶݼhF#<Į}-i$lGN1B?H;e^ݼ.&#g F ·Z6TZka& IxjqNO޺p$! +*">t m;u}>xlC*!%TJ?`v%k Aw}}A$ONi+l^蝑Dr5EkQ6Q4@iBW}WZ%"n#Q`4)XK%kDV[4"u?D+!;H9xq!U81.Tw`O ;LD?l֜=3''ˑN19F?|2R#ZN`%FA`e_H1+X|.ƫ$f :7!V݇R5>ޯGӤ߸*KU(װdH' x@\wߓ k[լ}idqҬ"^P*X῀Af:*6w1a(6kWGPِW#C!M bʼnLeyrVu\&ƕT>T~6v)v *@(ma%F,[ ꣱P<#>EixRT%%_xg_F66˻x!a>%Y(t:l iב"uZ=g]`7g 5C'x@_:$l 4Ҩ~r$+~ |:y)cK!nRR4;sňDbZx7}v0]#3J*@ڳu}/31rj~.U?Omh)C:B'Qf M5BH^R~hy܅YEN Ge^W I0]/ 7.Ib ;0t12REc(ZQ.G,JU0qxUDc{I "L }>'b$RKtFOoL@,I0#RR̮#VvBV[.$UYK~)VdB?-zeaBi}w '˅mU#Duf96J2tq1 )fC8 JU[qh=4d In~&s`HR2e[hK,ĿPXuj Sf1 "1i2|h="ө!H!c mؖ"Zc 8ߛ4TPoJFj䑐wdAF)qDYܨ[jlNUGMPm«@{1%`NL-$ԐW|5ԡKؠR6_$ Ymd!C30RZ+F% OR<( "c*Ǩk-91'L9@b. dgA9NU<1j"NAnLxqԵ$]kQ™bo*^>;8m.vLܶ+'BW֠{\r3| Scp|}-Q_q5"859X4Ֆ`VYY\lYN Af#ecvh_  ̖l55XNќ-yD*@W%FtFB _s=vyyOWne^V9 Rd%z# ߅?{rlt]aئ^ԕ>Xx*Y ss!X,p(bD[H\yCH&E%\,h|F!xkf1olnJ|tAW˴3$CJzO#WR=Pv%d2`lS_1]bnG)^ dKY"Iv$s(T )IDUO=ۉc8#am?">v#.ζ\uL Tx) 9fi9gcɒ9 aJHR?_|_K}Y(cB,4)/o Q/n_1H8øx#M12F{dƵJE͑L2 :7_txe3rz9 x$zH#ɧ^"ͺ5Vd+$U#*"{g{+%\-^*٧B8*ؕ 1%f->eRc)e婹e.:#v//0 H\C?k\**Os KqӒ7^/zy,Vv&1RKl0aͬp#1 )5f^}e5Hc'$,1"T&+mw sYUfR!+T|JeqGMJiՁӮ363~j؋diEX^qijH[uJ4|zS8voOq7Xke)v)){5[ %sZ &K< T+M|RcV֍iYڧamaӐ3|s52POSR|6"قKg-K k2I1N/qDF\XS*lCk->O6^x{{sgqS.: ;ryؚ}_,? zlHѩN:.ZO2ԊenX|}0,CbXc2~5I#zo.ws-kKl՛![.26kXq$g&{@KZK@S]"&>:䊓KĉK1\HF9 !H'Hv!)3!$fB:|η>2>ASWWk]WJy*Kn)2\LBQ IV88 GF%% ʾr[~[5DK7!uBZci-KV%̱Hey7$H!7y{EZ8ͪ4ũ12%TJ1.JTC#+<3*!J|Վhկ\dYL$@]$B/Ws'H^2R DFnWpeqb>Rὒ#)b c(EiI+K)Id )茍!JVjX1שZFRʣߪg]"ūd%j%t`G=*uTk+WY8'e#O621jұ>0XGUm }I8>.D(ښ: XBS~1 i6Vӹ'EdzK$ia`Tv(,%r$V=*. 05I{B?au2kb)$qR^82*ci&N)%r"E.LPlTY{P#u+RcW6K;d%u pȖ9"ɔ*d|R:$w Kƿr4 GamX>YɧVlm$y*v,)eKV2pѩkmox@\,$vG̨$;) )^{ ZxEܢKPҫF8lȦSafqQ\c_=G50eQ˴Rby̳X)\A%Hax!\.gSO5J;\ܷ& LV(U~z5j֚-U^ R"N^)ENZcW% HHI=Y~RTjP T*Ƥp;Nj1c'ظǑe(<^RY<{ Öy=K)3hs#ͩ|GPJ^T0|"ӿL\Ԧ%cr"c!ԙERlвg}bfV)f6'[Mɐ,<F*uIQ )VŬmjIZN_^_Mtl4W#^Q'|YimrR`S EYg'1y!hclC~?),@*CE2M98 !`\eP @LdƐˊMo(qj|&II ?l y8J @{Og/s}-JKɡ˴yE#H0%FiӶ@!vf/83؆OF%R:52|$'m8A՗2P6W_y\7zUp䲘J&V6nWW"r=r~L*Yu-|bs!$hL"Q+Io?!#wYDj -YUJ2cAC.[d,cTV;jZ^|7TazucS!kuԳw9<n>Qm篂}@ᜢQ N[?_"YȌ;sw%R^ 8]_n"iWUல^*]u*mg'G!6Pv!Jem4l(㣙H* 2T|HB hkDub6FRGaJ%Vgcđ~'~۳6Ho=Ɏ/"hM7veRTÍ_wm7V*vCodGϕoNS!if٣22kJO`LvR h@#2K f [{?E[b4GVь2mlz+WZeX`|'ḕW'|Z|R<RI.C^fIBݕ•|h*tRO]Cr5gd2*  I;p]o[vF@ăt|e,ie-۬dt+u*ǰ!XFmᄃEP#ȿ܏'Ew]5*(rqU]IcY r!PĒi;:(뢻 F9+l<. 6k@2$a&F&i?/R~2Ki`@$dI1Tֈ vj4wǂ5Y NC򺃤0fvf%=5w'(#1"K)P.}*(-YGB,|W;jHGXR:/r(aX~ϟYYWZTRSR@*Q;vUD :Oև' kcJ䮵&+?#FPkJ>Z##U)M@%F1؟w|I|hضߚO4ߌjĒ4ގ $(:>G3^Mw* w6?q0()?NI CM{~? A,u'!"dEV%rIJq$RU+-ӷg  JH߬G*kjj+~0rNY&bDP::Hn93bwz7S؀l,RKTwU@bh~VsՊ샠=!zѷrFX;F\$Ev`PG+f4ˏ$Sv;㠎e|~<ʦqQ#J|Vd$VT=~>0I NoC[$U~EdDnC{- ٜU i$OU;l{AlX1/V"A?]C}=I(39ʤ2$SmZy*qnCV?!mD1><@hҊŬ+kaC.Gև:#?3:F'lG'dRIdNK eր?kғɚ1tޢ'Ѵ6Cߒη2v"Ⱥ)'2*5~6 /bJ-f#:?ц,zb?#Ԃ<pHcčP@$?mN'SBmvc{,@Q!T2t&Ѻi EUge8^kÐuZ 4, Vs%{׳6 Q`40j֪TSPG+=9%9$K+M4m#({B pIJu?-_.\f TK*GPGb˅y ޕ<{cDX(w)Cg!>'wjkQխ0^Jc#aG2G,Xu' #Y?(Z*ϏCQ촚g NYCNՎ$zzN?@ŋ,"NAw[PN%LHM&_ @+V_O$SGHJmLiU?) i#I X 6YOvgF$Ѵ-ȧ`X@Q=5Y`%#QP$h 跃1eG/T"w"IZWFƪQFAlC?R:/`4kY)9hvM9|'ø;#eS!~䙤r_8pt$(M|0KƮkƓt:R꠷D=}aYN*_+X<O0xr]Q ?+~)\D!TvB ᭵1, ;zo`01ѥM H$3 $;$pueR@h < ۖLUC 96> }I8eYP-5mF%Wvi_? :7ǥSzgCv"*~ 66%6BU䁳YozYOb`:W2ŋ3RF>ҕ~"GfukLv~;YN9bM'zrXZڵK%{tʅ%4u"vfxê:1`ߞA4fg\VMk%b*D ! -!R"I^VcF jp|]NVr,wҖcvH] %ʋiu,W(9')$cM梻m车I!f8Vd֮2AU+=v <"©= @_'oE++xDE)p4ʭ(Vm > <9q xjW5YB"6S On⼟!Шs;QH. *chQx>4;~&lPϚ/nd d^H21qe2d#)c͋ALme(nd'Mg=&a;K ay.ʪ +±%3c/R"H| 7UfYfdu%lA,ߐdS#~}67@S"6 hH%xBU*:C%~%1ڱm)ȕSD2d)??쮺N& 6ycJF6!1 u7G J[בAğYtGAFړV6Ļr#z6J1nxn9Ųw$'~I1_cԢ@i_.Btt#.5*&~Y̶7gAb,qDc$,qE!B^F n (#]=u^[Zd>fC{;}Xum ĒiCU(Y`7VfRwl k[n"$BR)HiSdk_ D2Yq)rܢ䨪iE=/k<2CH6,5 ~[Bhx:jZB|edtN[fx]%e"=RN Gc'xg$".i`<^o`=IFoݱߊ>:-${ T?u?!`}CB %I[-K=}ɏEWmtlv.*"³#~k7Q|m[1 H#xWlTvFxⓌ:w*4cLӉJ/&diڈD)F鰍n7*"W`AOfن߬$t+(Vv$(C`vv#ƾjC "D݀m.l['[!Vh`AX/>E_m#z %IFJyMh9Pj1ʤߞ>bYD&֝|FyX+1 WB@UBxMњ)d ѲmVR6vG^M)Ucw]}1e&#$ %bmJ!NEB24=9W+G+cw* J`UR': u='ZI?,[ ê!z;:6b!rF ;Ux;5:~6Xe:2\_@ClBH7*U#08ߓKFHUEZtB'0c -$ SM#ڶ`KvdL/"M@3C}X:@=I< =sja$_ UO`A0H?]z:OkX[`v"Òk{nDž&pu%$IX+DP5BepMJU>2.I W^z|dGGT~U {I1S":q$:ա/"Zey{r~>Nw=- ݐuIc+5k*~+ EK# "ojXxP̒E?]n߉);6|o;u e\K,wxoDxV H!wؗG:26qkdoYPNr\d1@^[4ku, A#">66*xX;Q0NȰLb9:3HJHlmV=lyZ{o$Qu>R6l4n q$eue׀` mCqĢGV,!\7GiB|V>&I|W}6b;*g olH3IWo"V` 7$P{ż-'K@&I(HP6b'O7UKM 7 Y @v?+]A2VP9Ujȗ8U6lՇq35g NHAP`2ڀWucsq1Z{V-؍ՀA!*R GIR -NHpPQ V-Fv,GBNQQYé1C&S)jO ,JkdmOc?fdjW?{H?Қ*6oǺȓDNaT lDqtܜn4r,vjc>nzX L_ D5b\sZ|?sm )eJvrcJ2N9yLacs%DcRQ`jU4O/<lj4P$Hd2XٝKz9+;yJ1j@$1)i $jŨHGc,rqq QNK&"`YJHȬn3!YG䰋d#9WqY,dz,ڱc0H c){ nAY<43ۥ$FǮCZbXX*ךljU^&<(NWR}t4M䪫v3`\]̰ӯYb1vkwxk8O"Y4H( *b[kr[aI7X_$Fԏ>~Q|{+f~#. ƌ.+Q@VccOŮվ"b\Y.ߞg;{I5v\c7!%*\m%.3L@mY"Q}\߫װӛ̽4 A%[(ፕhVHe3lة#лbY ILVoϊݫb1^=H#!`;'B,VՎz(P,.Bdg!s~W('7ؒ%4㽕ER9fPկ߭p6)"U% 9fF&B-k%FXW:++$#~NOMra#XcmUGk}z2Q,eY`\DtyFMvp{+}wCoJ$@[9g9z(@YicrNԃhIeeIV%}q.ob3+Z 8r@3>8X\)  _o'%fqE5q7[|K5|W /3y- !vZ"A~;{gsA%4\.5z$"bIԸIRl.[9!Z*9\Rb-b([ŜuPܘGKxUADٳ\8dk \S `iG#.Z{ؼTTG^K̹ ,ʫu֞:}dyW{cc$~Gj3ZF-*-Ve^:,O2rا (nTk7'~ԤOf!A)ܷ1ȲYۏJg RLz#hMj3yc6>4h~&!_UF0tNlFXbr!,1R(JЛG?m+)61s7[x7#g5g|1XعbJ~ʳVSe2>\jcp@kVkHjс.I V c%2Q=ʵ耖Åaa Jn\n6;M7,N's?,؉͙%OҌ1չԫIRdL9eĩl /|!#VW=)-&TPE5 ˑ2WJUקjY"IxeQ2BH~>W%SFLl3JWؚ݁]%%d%cCѻv}m=l[9q8sB^IګuCd11>lV<ѿe8 q:^nI!K4t')VybIIn}s 8%s(rpȌH"(UOPYɒP(F6ґ.:jȤZz "[,g$n{mZ t8 a( c&M6zkO3@mUYFZYwW :ZdU)+R)A`;('$ILHEʍ!Wx 4jc GVqr\q!(Z77K* ]ո?6!\B[)ѺMZXM%zpUY%eNDα4X{L+9SMKZA JДcs+Xo5m-@$e^6pFa-Jju12IXxt:Z9)U#8Zj7$%P; "iX$:Vd7CQH.MX +pAw=Ar8|}{uV ^Blٳ!C,2W]^iU$ak!&J1f,ء)4IKΰ V{jBjZHjȶ&Z a3(Mw#l2*/Է^g|q S_R^0<LOƒwv( D~; PTA`JB1xak&[!"jPbb<8!Se2x'yVx WSL "_>rH{) J;RUq8ڻBkR1UЇXfH:ֻ5 l4P|Ofieb/FM J ț^ǯrʼc(1VYN*%Y$s՝_HzfVeeJry|$B2(bl'# SJDf䫡UԆc`) $ h?_#$%FҒ4tZ*βX!tYO7BŰߗ3>-|k(cj<`OQߟKcqV ٔ_gKېKFN[;#ze%}3 0O>]-%|od"ElCU$qZjUk %l3w@c2K@m:meo?`3莫:])[߯VATw@ ϒ44[f *CxRtxclymhI~.?̸\ r/.+3/'I!9ፒE wP)$F>To݋k~TD@u8!4sۆ .vwdF4?*GyU<6 u宄VB/j~dD a*b?h I%R΋ᘱ^+c֣tPԗp?ݡ OdؕH;f2Bwy,<ƶ\Ez@ըk= EoQRUR<LH ]$%y6v#_7բ Tv ] hhN|_X߄$6 žT,"MĖv#X>8̋IDunM#kGBBn7O6U+$g$;$ˡuUA!Cu۩e P@yS骐F7}67A47@td0bV &(Ƒn )7eqi% ]bcWER#p 6 GI' o8hx-އaLBKM^TV!펷샭x^u&0l? I#@kא Za96Kr+űWFڋSf߫ ѢgsG3BwB h(Ke m+vNqb4Af ,I* B[I*$nѷ_|,$3 +yn{) KkU((%ؓ* A )X!eR)la u,g^*jl'C>DaARCH,K=aq Wq&־UMEiW\B4򕧏.4G`H: Ո @ ŷzI'cLw l7cȞִ҅?!V1#O 7`@:]o|*wTK&{.n Cq-c*7Li~TdtnP4@?9F6U `kPČҎ:Qڽ~Ҧ*ӷy~ۣΉ<}K00dF]JhvzUDZL䃢|i)OB=I^z;l/}N>?l:S鵠QITF= Ԋ-uzϺm\(4Ju6I:@NCk^RwoP|Ք!1;PNRHאu<!GR }'F"=lgLJ^䁌-r#̾T&\GZlG_YevN -tg @YHUoR̗d7x[R n~ݜ\J +$lӚ۪ł߹ybW8x;ǀ],izu"KV[$+Y¹Jd1S2渴<ڝ!)_S_w%A!ș%$;ݟc\%XPkQqZP)ֿ)cKo ٲ_@E"bJUrQzՑ%U)Tì+Hf,>05'eJ ;^KT^"uD??8pGg3y]VX{ nfUPXiMwygdc#˖Ârj5J>JTD1ƮS:Hܭ_G}C9J.ٖi<" ORPwGi$u㖚lwG~Ss[B/.? U)E`ƀ/' 5x T$+9-r<ӀKnJZ iY%A<˜?.弇e gx%0%(⊶:241>zG#2f&\>c7.@ʈa5lbcN6HaLs.R+ 4\wDگM2Z4<^hnU.RJ7JNN4CoЃ@#{%)EIč`v ;GhYA- O売=\e@.*~0vCL~eiJjrՈf::o6Tw$BD@J88FH/t4e=nX~OUIWQ+4ЙaU"#?d2RbOcէxn(zsDE?9ˤD ul$Ui9T3Vૣ۹lIb/W ZA#e+(d׏Oz$fG'sƗc _I$0J u21fXK*e t> felBO=F-Eq4܋$.eIhWb[ MDlcMsB8YSΑdIz{$W9$RBU.l&C4Ly tV]]ID2eXӗTReRġ-h[Gf dڂ]#?C]B`VVU\ 0c~<؏Nfaǵ,2Ԃ?Omo%NzCzcJVZF*KdHHuhZܢ 2Dz(񦺱 XbI$hzBxHΎ]J%_ JeMȒ4vNԔ1*Y`t *utFeHRN_ ?0Nr|$lIv?C_䜑UU,UU/ڏ]{:r!]. $H7FyצQY *c~p$x!@;s~!nVX:%u ײ(Ǧe*$YSaiv"I\PDGhl>ޕ ~]m *geG= @ ؒN-7BLJ6]&P1\Iyb|*a +1ǶH?PI-3'RUكӰ$kƿ%/(b"Vn) uhXKoⲤSpTZ@[bgU<N(C$#{*9 uFQԳ0r^ߒɶW{bfY(j"vvrPAfd-QAĊ-[_d(oQL~v 佷׳4,218 H?G|>[{~%Pɲ۟i$#$qU-jrt!<#>#(0- Q%y1ryqnhKO).1,82㡙XQuI2F"P&{ohZژ[ݚ8P:4N]J}ckgZYfTaۼk$hJ;o ;F$l]Ƞ^GKiEfzkUIx&IVxI;N&~(GN5صuʩwٱa,xd"!5imS{'%l%rs=~*# [qfuJI vL~9"o)%ʬabrn7եlf%fi+S JJ KYYEqFaY.KE^)?˲\w5o3bnIA #`[^%%!yo=gg :ȳ5^ #n#||wzwYgS;Î9ؗ +I>Ak{$@^ڂ%YEG$7dICVS5Yg/r\e |A=;ƨ`i/Eb›gr5`*3#?챑$%G$K_:3"lh7Z{c`*j2|ڷ 4 ]&X`Enl=}ڷ zն7!fbiR$ 'WzL)pCJ2FG D6VqGiQRIJ;hc^1Y nAQ 0G' Oդgej0#(̔& %(q&$F=e5R@l RSR<aF<:bqX&5rvI|)1xl$ ,5\cN&*IFwB)fꝤCa?sw zي^*~ⴡidvy8㡙Nӕ)OR+vb;0%VqOS1h)%L|xSE%4c) G|fQeF$KJLX_d5"X?rx2!̼Fz`듌4O>I^ZUzr|rV! 쿶6_-sm#yl7!;2d}弾B`srm909lVS8gf[sfE[8KyՒvzkbhbOG##Y0"%t*e9;Ohqj<}[9 pj*vV,C+=C^Xˋ"s8 b=q)N3')rj1DMK 2RTjirN;ܾ\InإX\yZūnK8fqSp?w: i^?#SdC[W{12i,Y66WxA%Fӻx#Βܜg{mz15'<% rC6!8jUM_'yIf'pdO |H CHn85|omAn11X$lgLSVE,5A9}gMd)}{Q_d8ȱ6ryH,THYNJ a+ׅB)uf_Ԛ+I㠒R,nax]LZțyw&/ܵ8<+sl*IɲoIGܾkX2!(j|5a 4㋌%$kdH%կjFC!6]bD@ ߍ=9U,-y!\.6K;^ĮIY9iTF3Wj?*VvJ^ʢB#K[_ٟ{}{nٳ ϗM)+ײcycb+V ^=hUS{}'3aZ%}T9);6W3%0P{/CvIJ˺ŒD7e R_7%*[c˒${g"{3ḦǔH?KcWUi=?L7Z-| +/b:ܶ;(YthJHtgdnV箵Qw{^szYɃeX+&RM9Lty~fՏZ[Z)d52{] |o(7n f:2HwE{,Uw^q^6 1VegY'5WxrOuJPa1pVlg/Lφdr~WI}9 [ѳ'}/Se7 P.< K)21tz&^Cs ]Zo_Ǎ h/^%RO['`O0`e.Nd2v#oFW5cx܅,f+)^qh{"ʣNU?O:^("1C/$id1}u[ -8-ffҫcdUFz ֑fv[/1h8 C<RB #!1rE#͈i4fS/r ɄWd3Z:ĸ$WuI^ԩ+#Xx̙H$B#'98kʭ=KPq΀z0f^Bqd)S qhI@Pٶ] sd7Ш~*Z9d)\T6 on1FU3#0^ᢗmgyUi=|UKZ`KVg}lRqɞb+\GܴK-zuFb-V5Iӽo)>,џ&zE%&N|,H+aiOLAel+:"CQ(#z<3IYxUQ/ 8k/i5)-)j*qF'jܒ6URPy+5%+W[PIN+?zK.A.hX6:H Ϣ+}4 OO?kWqՋ%,DR&9&dD"+өjrf2rѵqճ,X"ЛBPٝܯYa!̕eJ@2@7^HZ,u80)m_IM؝8YX[NGeRA~2e_:V@,7!yK5jyT@?*\0ܽfZ ڂf-CjHl%(d`K3sm^)hiWCV&SZ*ɒmՕ`HvX2I,2GJ>p[t\ ƢAI?|fмD*hC 0JrTh]lؿK?ZH 1m:'.Oǧ#$Ԫʌ هRvݿٳmJ"U%;[K P Kl%" u#@} wJ7z,ng|kC D(G PJJNc;ד`$k A05~G _/*@d2X| (QB'-1'}PvSpW;hH?Ɔgz!U޵đX0׍c l 'Uht<]H>7\JWU:_eYf)] rx>|o[(P*gdl7A@h:;4$-]@7v$G+"i9^WUow~~'^L*Ʊ`QXK?0v?`Nzm은LzwFVJƈA=k!) 0,ď 0$|WCCCuiзqr F~.:#=$_D|)1j/vYu۶$kG`@I$i?*T5Qo P{j@Ky Ԓc@.<š"b Q|]]GDba5؂wi@x[VO Bf`*{+7|튂 PHI{>7.y[xƆɕ;cF7:Cܑ 8R@'F}g#쁰5km؍@HȰΛF!H }>W]GQ;# |oDoǝhڲclnGA(Y#w`w㦭_\jR D.t+3*okKT#`NYA4)Qldqzn(.QP!)Nj@:هŷ})42G7?c:)>E ś_Z z]菳k{+"Z%ΤHU?WQر=v7k2@j+Z :zyMUya_xFDDzTR4J~:$'޵2*GBë`K>Y.OeHd%De͢z#z6:LmoG+vAU@NՆ=G1_'dJH Kv#>Q<@۴oԚXxw$|b@|˲l+'KUN[wJ׷ k B BuiѣQFmc dv?_$tHzy-іHNQA#ƻ6 |8G%99,cX*K%&Mq#M-b4WT X%+^\հַT'V^Z/SتH.I Oj9/r jnV#2]ANg#7jAZ,:á+5vz% ?HU÷1TTY1ıaqr;2P)dYfI)BYtc(TU 7A9PT;{R$Ǹ?~0"#Ewo @II)EE_R^IOw*eӻji_bB4[܋8`ݹ&>g&TwxAVBJ{?fsVbc,kP#ZjX{j^B |I&ԁ*Z G1ٮ&X)ө`ѐ7kߦ8.Yeq WqڼS]06c0 G '6?):)lC;Nc#`2G<Ƣ4̥]wBNӾʅhH>JmCycbQ%K'a"|ZH .8A+8'[} zL ݬJꔦB,\lvR]՛1410m!dB6 B 6N%8bCLDWg`|wk̅dtȪz?3#۵ 'dU hayfbIc|g HҼ"ƛDD|uNoǒ_cƴ] ̊mתCMO;wReD(%M|葭75ĥ֙uF;,ru$Ǡ<ދMe3D; {;HMy %(#15R?D7~n6|o~C4_DHXUi# /S\L쪩Pw,z ;ܛ5Y(IPn|:m=@m؝1U?2[N]$hkz K-1i]먘@?zR%$DP,wz9XFd?P{cGڰ6`XzA e;_؀-ԂARpI4><`+4@P6G%GnEbb"Viw!7ACy_]ZT]3)*ڪBe##E[b|;өO2B]Qܕ=|k~@3I{W!=`$ o{|lk_NPX ]֎c>-Ǔqu[:&,j(c|j-IOkgB~.Cw23GO]* uv!VV 6B>H;_=T`@I& VAж%Y;?oi #"mǠxΏP q9CVA nhز t`{v+ 0+N+O@lh_FNYyVP#D}o~AC-n'!dhPE?ڻ2Hm7pO[GΣLd5̭i#W` } /:mG]8hчA7^ A;*M #G~:|flY̬qW#DyGr!_\nD){pB3bJmmDw 8(]#nV]1fR#PΊyb|"i!)+c]XUeQ ]GFh&:$2MB{ oGb Nbhyt-=#S>Հ$2kݼFI,g2 c^<y?W\pQV+jIESK:=bs  ~9:V#ʻڏ7Ih%p˵=K{ hմX@@F)ޛh Ae1yS Rɢ)mh@ "TQ*-PmIZ:uY,Ab?*K~渔:=`C*To@=Bn3*M F 0(4mvAϥsqV,Ttkz$`lYnDvX6ϴ '{lt7k}#Q/!FH%c?ė8YdCr - e#)UGbN8m#0҂'ejG^F6$9=Cy VV||4SW" IlG$%tm} 3DPw*H!T˨lqF4J"Jq) %5r~4% Hֿv夯&u"?$Hqe=A1gN%KDE1_m1UqB<0=39e'gJ!B=}zg">[%]X8RU)lWQ9jW#0#B(x<|Z逑]=Lzz@ NvW_~Av7b(;I3f_H^_0n=bB:fGC=Z6C/zֆԩCqv*[0d&*7x.E<ʶk~ޥyr/Kk+;K h fNwɲX~nlL4iO RW5,KZƉj3Ww$EvMjwձJhr[1kx`*LI. M~=:Y N{_=c'E~3n'L.-MS[\BW n-ii.Rɪj{y_؞IO9\GCH3Xq/SdbOf UL=Վ=G')NZ^{9mY ӴecSa5oDόIdu,n}Ǚ|[OrI6 b x5 QJC kƏ/yd X{ùb{U^0rl.yQ[RTeWRW!]zY˕Rj,~:Y;QX4hׯb=,rؔQGsǓE,wy/saL19S*LQ* &Iq*\HMU?MHV=s${rD+:8%"!?=~Q0.>6j5gZ݌E$I3ɲ jϰZ5dR8Ik 겤f[V^8!vPɵkRa$X7dn VԆXJVAtj9vy'jDAGZ]sgH2~WkuMD/_*|VC4jRZDkK-qS!YujQrKK1=%Ok5;e0+5ٷaTcʼn#Q˗{+1x۱0{&)]E>+[cV >2!Ϲl2P{yҚIk*uh阩ح^kqDg~&s &0֏krCXI/>OI(YZXXBIc4I`x=2iܗ$j:2I^ U ZCBD˟Xq.c~Aoӛ߷o_ cKv2В8ne/꣗zNaFkDb{^:2Ⴀ^v{y <-gEluMFmԙNB 2 㟺#$b.8Q~\IG$`W69s ٪\~{l{|0cS>RB]ߛ?9'![trVZd!K E$HBxЧ\gϙYQ?u#ZkYc0OL/baQ~#A]0`v4H*#mGfkd+–kI؄ZFF^fH#*B'g qF&LcnjiA)AR[Y,7a%"VJp28Rl{ѿ[u ȉ1N~JUNgkPNK尵2hS~:6cڗnC-`i`M2~ܜ݈9H$ѮcLڥ! {MU VKs=Y2>$0A\}Ǝ-krKU$V\,捃L%-UYkNXW 9w9pC-X|GbDo_.0Ï.:)@!)nL[#tWSo𼞞 z/۫2bl[<<CMs') 6Fb0UpEB2\hⰙa{*)V9XI` bKD%s YO:~3Kn8gK~Y+EjĂV%xY ø(ϘNWlZXIp=6ѷ#ĕx M^݉HbvYDŽ圥>P$lIMGE@pڹ1*]*2 _5.G38nQ nf< $z%s$US$N!PIg縝r.B..h%Ĕ {yTdjZ\<_& kVR2OCYsw3kkIf=aU[VnNA5 xKVVxxD~Q8~4qxA6+*%&bB#nbz1[x_nу%j)t`v:h|7JV&I Ev}gc V Vح VJUkE1X$ {ZsԾ,rø9/ò'+2;bĜcLl^^a,2V8+wKO'ˋ !=(?عųJݬ%rXI4޿;WL׽leg+S5j&M.EKM⤚ fdyꏱ|ˎÙJ+5.+9Y+X$ W',̲}/,>eܖ3v_O"F2+~6x{ݷqہ,\}$% 8Bv7/;2ɓOpޭyf2^rK~o2.gd^ek#$ojp.9G5nphS+Ne5zԞ!ej;,XԪ8Cd{WKW+VnTgƫC՗XJزS-I>G '[nSTjqE0$-aid$8kR+3~i*Yi#yWraYˑY{p!­Թ2DD1bD)ɖB5O?/?vUC ! 7Y'j %gW-r(27n _~G=?aXێKEے(4H`e/x̪zFco=:k0cE{-JyZ_DAj7oGbHxZBˊ73g,TjwiMȳ-=k1 mcnKЎ>ϳQ|QfQ-3( =;O iPB)ā0B|y:'`3,çO_@ [/~z[:ĨE~jTPkkO(q6zuv|~Ǐ?[T*E$?`u4KI\xRU$[P#{P<x @Cu'~ҧH߆<)#@hvc; H*'V硭[O|;[F_U笤~O% / ;_N)=KoG[j };@鳍/G (cuh`xdkc_X=]Pӝ| UKl]><ߞvX]\|zzvQCA4ד 3u'q J?Ca塭 hYfRQʟ,Aյ kϜ"p3x`]tNk$TA*-K/U hT-7WvGv@.ϱ?"ו  'L]bg~Nep$hhڱ'G`iA'c@zH t[_^ݶk~$ &)kUȤWw~.OAT j!_FC·}WP[l&t_*޶*Nk<"6?|:L;Q.$%EkED)}mO#cЕ6K$*;y߂v@'Cgz# D6BwnݵoloLײ/Vڰ=.: #[% $۪ l|±= Ky#d) Gu}%KhC^t"YM%%6m^=XT@,t{y (mQ=hJ!mG=A=葶ִGPp~po:'G*3N)J)XĪHEN4 ?O =yπ?-a` 6h;WK^uN_`IDMW,Ncwۨ w- Tq5@X,jVYފ,2 k)C !©9$݈ 1T/}:HX2f@ҝkSGNIC$rGޟP.UI[C $ERT,Wbd$M$ O;8Y_b|\:M_UVU>,oZBGw: <AK+'U}bmf>FY=m%hzַ̺'xD粠'K؟҅^vD7RE^5\e'sc] 9#_mU?tμpi]eP :dUw !UI@ 7@i']^Xj?ܽCkr. &Ԫ$nXiEF u]5^;])|ѵ"Ԩ$oV"5zntO<)#'b;TX:^f+'6rJKX+ $]Ptȫ$ޢR@ewQ):`Fw#b̒G$}Hc$24: de %z*h+z֬L󽇭]+T31T@ , ?%6k;rHxX99S-]v>O(BB!!CK<5YAqPS|CHuG/=,q% >$lzzԎ:i2fR%[;|Nn>: 1)=Q=n)v44E]/@`H!oۜ(DqLeH-䐾C'rWbEc97llu$1#֗Jr: %TXP6:5B򧐍USݾ7t>WHebDm D &7$ze_5ۈI ͠{|+l~@ImR78MT룳*6>|[GRP%?!{vc`q H J!>R!lnIm 5 2: *cF꺕ܯܺ8*7@{B nѼRF јo$zJ<+ 2 MkǖצvO `0ԑ$$v`4H!G#QHD8W-z6*ܩ"dR[ihM%y-q[Bʌ̊ uoh^+ ue#%3vy'^bC,ҫ~($Hߑ; ;_wm 7v.4?"@N$؜ UAG)XQjEʾӿӻrm!-RR} 0K ->Xwl{?O#jKL =5R !؀ eRiQNJHk$בS$1Jdb 5 ^;=PzkAiƾ,`%x T:V,*@)"9J73"$VhXIc ?') B)7$ v%A:> ϜsDr?ehӿ L~MAΌ Cm(~UUFAS-UcI >X'R6i2 3$?b}+4)N[ҕe0iFFs%89Qqm RxoϊLjT|+Gec㱠tXY|>5-D$)@B8/Qj@R}|kVO\:۪l`w k![Vںs!"!}+ma bɊ\DD4WR7O0j&Y!m|2t!!A()y7E$ &O@!ғ#f@>vn;W}~CXV`f,4G$b)#C2^UE4- %pYA%{ 46J߫A[}ʱ%od>I>~21%qUKlUulN@&Nq+Ս,BUr֬*uWL@fyOȪHt;($Fƶ=(PHAC?}EVRvx~eX۠.ŴTѠahk.}-G2|̇'NPvHOϫ;2R3nFQ&aT͐Kא;BD͊N}%] eh!EHv |bǏ~HYT/~|)+9$cwȀ}l7; 1F"?q\j-nH~.B r>QR4%6e:-_ëF=@em< x#'Z̬TM;ڀvV-$w'P{qټu+B He: .g{F<7K-HC'u[z7rK󽄾/Nz$EO5`W!N)/w*]L!I )@˪=BA"iY g%(Y\EdT(*˴P&̉fU$m @v`8FA.Qee J,,I%@)2Mݚ"X*n{6v։ouOSUN28_AՋyV=IH_Agۯz(4y iEʃғt, 0Xbĩ Oz,rB&5AT(&\A8 EH덢X\̋Xv,=7r@ \ԍJ,QH_Kxtq>b.5rHfzGIB$#K1 {Ey-QGYdUmJ@ďW"R$,a]/HPAP>T|~u]" g! c@ZIơUܳG+)Qm~%~|81642WQYKV)O+j{ו'8 XecZv*S_L2VT$ 2A2JdRgw0b#ؖ-ZI$% LLe?t u`y1!( 1  1*b3rtМNSC1% q6ݒ.v?ݓW%e!%΃q_"k۵9\ VUs FIT5[MZHpK]qlcP`׿ hF̔w8$R g*rZQ|8M$r=s-9߸b2\EۍZݹ؋VkVK3.O&DMnZl|h[mYZBxg~6w)Q)0 BsRD[ww#p,lqg05Gg1yE\a#+^4V "+֣XXTWԯd1yW_,1jس$%ř/]yYa&y&7NߺhbQmӝ?wGԹS˥#K+B ~I>l4V&XiW/܌D\hm֭j2HvU7$q,I^5l BWwǧGpX5|U+[o>,1SqoUgZQD9C6N[\%FM9cdxfbJS>Rՠ-gpej2/a^QY7d?D_>] 9g9_ )\]1 qI:w)vV,HM%I$ɔ| D%Ϗ+)3# ,qX.?S]8ô~i߭;]fkb !zzOBP\Ӆroxn cx"JwqPW^Ze~݁k[ Ucv}l}nCc9;Ki*ŕ6%%Gy*$2ǶN@mKSZ%܋ %X?%DsqW(Kdc.>>le2Re{$$߃;ӳϼ8#0[>q$R.7z<##n eٞ2Ԓ9^s~"Y{clcԲX\m # i5,J>&B<=+l?L5djTcaydi>v#ݟu1~[,csӑ?e"+[9ݻ"l) k-7 gd%I$%3"VIF2.óstw3v8q[Ŋ^S<)<#q cVF\NCEZʸ͙_*UkB8Iy5"HQRUf#-%N,], bxXVV(Ѳm$.50Z,2v""7H:-bG*Vx{.g! *6 Ue1ȑ) K"./q_IR*Y%<8aRɓNL{+u\PjR PwI,xnDTU Ռjc&=Bˬ X*/수A$2IHy5*ETS#ԦJU[Od2̖Uc &Xg31!}Ű*tYH3Zt /$VxKG=3u[=LslgVQ)@HrK/`](9&J؇b*f\lF"쵢h):V/X5)- ԙցFÂ,s1k 1`B`mؼJ4? OZ$0մd1[? zʹ?=hlkߎG1 OA >P5?|: ,q'w9Xcކf5-+:;$upe[ө=*^ 6||4N 4G]h|5̌]z ]L@NZTK!]ikb:_+t^5Gꪧ`ؑH}{*@u߂Z~.~2zl>vHǝ{u:C >Ag{ߑi7t}hƶ "IϮVXVA_ɏ؍?]?֎2ubQKK>e%|oϑ9A O= t@Pֿ fhÅNh5ZV0@'~+Tؑv~# eoaVK+`?IHm:bS'+Ͳ:FCϗHz#1vďm*7!^kwe$Zn Uן@[f,^(1 FoZe l k':k0%$_~A;>2$@T5T}~#`,hl]tV.$횮Giߝ,̞vOkc8ub$͛b#[́Gap 9#?^u7>)H[i($JR%r+_:A'ҕ'fbښߎL5 uSG_;$ $k"*?$aY>0>,R)ƒW}uٵʕs>u(JHk" *xwCmuE %fg}o |O a@ҹ-t|1#Cnx'CzȒϦ _DB*3c#F_RA`X :&K ZQnڸdxňA?|GIz BItǫmN?@O]lc8όCbzכގc+%/U)lt_[}0M3 ԍzSOXm%OD LW@36 ׷,"oȻġQ!Ӕމג)v2zKs" m5l; 2{RYJ@"UٲR2*_#wZAJ-JM HSc&Fi)QE2$`+DfR<ȏD_2+uVc$KԱwԫo}O bAg4;w`|QdXQxSo} $k|UuԊַ4^JfX~窨,uQğ3X?hm?{:$א49gE"ꥋbAVmn $@  ytYڶ:yuiHVG8H hdnR!̎Et$a ݜyIݠֵ~( [j/S&꽼'`|鱎Ua bUT 6]|m~91UpU Vh WT Ip*v}.*FiXu@ռ2buj hƩkda.62݃YBl|`)DI`R f?m1A<``X鄠 e^b*L4`v󲽄BnDxI夌E8 oΣ|:Cqxg#GL-'h~:n$-:Ac:>}vEn0 b@6,IP ߝ@\:hzF&8ToI ؐ{0P?h )`҅#py/!- unljIq$iH+{.0"@#lw*~Q8%`Or4ގm k^>*`o*)J?4|aAn1@_ }B$X/6H_% HMbԯ{hxjӦH¯Ciu۩ٛd`Bf)+4d̎w"R)#f/Řk[*OSES#,@ցT u $t y~kK+H t #] >| wRDxr*\$tOztq9?$R+LSM;SdD*o5' tw|?=~IdbUˡ UC!v @:?$;+:лˠanlU#zcI6 1d\B^Ot*@ֶTd9$tdJ \.i}ui*n2`oR~9:H1;f]у)HfubB?74Afde;v*NSBCeRY+vfXeWȓUuf}֭pEn2l^ћJtA$q$YYσM vV1Ȧ5/ pThi7Yexoe ޴ [ &GH~8f_)AźaiT&(ͧs&ʉ%VUq(~II\ J 9b;6:ڲ;(,|3:JH讂CذRc(!|Ww7hfuEm+誾Oe >yd;qUCAK:;bē.$X䔢&DxfQ+Xv |:_ee2B&Ơvׅ=p =>#X It۲kc^WӘd!c1HV S>YHUbPe!acCxNo@[F wZPU,lALn6b*#"jA `36EdD@> 5j0W_Tb5)mA=;GA.UZ0 *Hb@R~IxM$h;k`-[ز#bZX(>*G]聢C Ctu`}mUcG>uP<~! d3̥9y'#^HUc'gRsINK 5]*PJ-v~hm~GhxgY3&9 Z%L09䈓ɹ\pF&Eto يJ0!vwDUYY' ) o]ƶ_ROmdv8R*צ{J-3$acdu8DҴ#ʟ WvNA<^#"/fX|xˉY" {F?1^(G;9calUh呂',PG06?ϩU9!И:YA:xCPzWL\[$DOImVDڸ!N nzsLeq LԯP78P-h YĹE)QS yr~#TDwN~zFj`,!YNȫ|)PBu#cc{얊;@S`*1 [Z+I;@/ ,^dvdKYU%,4]dpWUh,_qvV.oC}I J,)WJFlZu&&|'#r; ܃֖d dc28b }oY*ׂynNv%p|U TYJغ" #~^z |"k%.g j."FUVY1vč!SԂ1̊2$Xg(ꒊWXko?Vh?!'t#N2OE˯qp*nhHܗ,/_ 1sىkK tLj9 [mY pJo%h3*(]@:rċ"ԱSqЬ _;xsڎ9Bl'Ye,[d8iy]x 1?,ˌl)}'5nIz Cj[Բ|N+;Sziֲ.M 6o4րcG%W\rN9t`hђkC*YpʵY Ki=-\VL =LM8mںlPˌmUYr90\8w 1e1 Q9<_]YNs6c.Oj2|@mb,gs i-'zKD[_/XI-{dتISsDC q6_dE)ckEak x+p!IoZ5hEY8E3#AXגd_ k-14)|L^JG%'ű=qY_bLF"RYgʆ({&[P׍C`f81a8J.L|#Parl΢@ [v!9K1)c6rAE?8S&CWK>7U~hp%ԘIdK6VRq(=-F~Qq{eʱ|+Yr?j?j؎J)ɄJc+)eݿoblIa'qNq(TH %"V|:{}MxCܥ5o4(R^D.bscNXRɯ陰7ywv Hg:&-V2\E_~fÇ,Gp9AD9"cwT_ SWc#P&NevIjrQ[3k5i ?9ikn;)3dW1rF&&d$^ܨ&$+ʑ>~uM7fq5,LF>GU9&1cViۜUږZkfF,Gid2me!"|:K.N׸;Pˎ(An,IL91Zt Y{|0|Q nؗH!|za(S(4r5F%Un1X-=rTYg2$ wT :UC[\wd|oŢ|v'1ƸޝiL(|w"jе̕D!X:qIfl|\kNk7?ߥ\xa^x:<㖼r4\w%,"9 -I:eU-iݵNW܃,d*VDzޫ~_߫iXJO>Vk)^XX#2%ga "1h~ɋ(ZWb͖4۲d(OJWbiJoجP Y-Fr qds)7hȦsݱ.фMՏ?ǚ떙|uYpG)Sѷ+X~FKXWY;F F[ (W,Vj,nu%_JXbWkUI\[tYZE oCEN*RݜtDZFU.­t1:CNjc+3t ]:}LRfIRWPbT?"+[۹=pYdx Hcfr=/J 1#&D#JJm7FyG"_^/T]Ṱzc1Ṅ9]X% Jmbqx[kW"i2-IehZYќW V%lѰp vlz%P`G`!kwl3I!Ix bg%\%eYL0c6ֲkabA!5$`OVXǔa8Ŋ3r9)3/1,PVF* Tm!{m0;F"EqbXW2EJ՜4jT-%9xWm(<ڱoHuC㸵y5ceIbY.Cl_'#C 1X<]lb5,vbn{f࿝ܪbgEdt%alڵ Fd GFJ'm7&T,eoIbŋVDrCy,P6fSiBlLPDuO_ةhw9$o+<cZ+ȰkeJ1(Gb n2_I:,̚1l*Sđf:ZM3X:Tbxzھ/Ej9vY3K<&N*X)~c޲akK i@Y7j0 ,qrKfe`JFQ;bere,>"S&b^\d2fȲ'#E1SdƱ%F`tUc⊯JiG!-kL23ba+,h]xebH91 vܚbXFRR!qaqQ%Atì9.y{+OYdL}C{YKLUk U c|Wrf\[7o/ vI55W'مY4pODO^E?ln5lua+=dXh2%t4CkI.Jb|>GJjxUYJTHD;`cÏEÇBeh&IzaO'O0-D4GJ"E~Ih,F/9oc sZEZ636g^XA\eFEG2YשJK%rԕjXLn; %{ih 3*q SYj^p %n +Ky&|bXcV-ꮽs C'<%B(٩S|-Jѹ񄭌+, "{cŚTVrvٿanS)@JG)DO)F1/1|]dYxeڟ&.,C-8Y⢵=Įbp+,1r.I8'I{+YK$Ls^\|C sWÊ \<9'q1z<}lْmNXxMa1K>>KsC Y~Gi)_Ao +Xfbl4R| WiQ91iH= Ln@;D4rK,4#T?կRfמ{d2rƐWܕcԡFB+օSAPHZ4Jb-%.ԉ#q*óHcWwZV)r/i2ԒvXG̽RE@ȓL%$iERg3U"UR3+\0Ҟޠ38$,B<(q,>[e<6\dnG'Xl/Gɯ[tQP SXbTV@#RieVk-fQgLҤ"Oc#$5kb$GFkcƊwjjHy2:9vD7T, I$/2c?&_Q`K 'idA+f$d&.h!%+j|]Bs#?د#  luiv4LagX":Dk(Q1 `.#K_1FK%x)V݄K\T4BC8B^LIf#!II mYIlAI$O"J#ei&~ٌSk4q;9G2؄\ImSjo^ (`ʽ޴ u6FwF`qmI>'c^*uX۰,;7@N/d./o Fb]k{Xv(SVQ.vϧZ ՛_z}:royw߯V z= `Ot=` Ǩ]|u?;#ײQ߀~#D0: K찴վ_.a)%,R:<:l/׍iڮb#}d#d#h C!v ~> Gn˿=ImBGGrN 1hVC>{]AuZ5W&2В uc<S֚2OKhu^ :ց;fŔ0 x|lH$б?kh$ǯ k`XRQn5Q~eydX**~dtuX1?Dhqvu/qȚ %`uWӪ2XYF? Ӂ'mQnW]_v >׏^:PjFgE"@l'qjTϒBm_孖۩7BI4,MՕ7Ȱ~طfv4O6e32vnfGaKo,§KT%wolj'kcxKޡbhEv&μxգu}tV?ErL,0v= 4;=WC3)l,F퇖SMʀ}v ʼnG=,?haHhĐ*#jt?/;!!~Kb"6/Ōe+X]qyUѷBBMK ֑G-X )Bh3y  HXDDGGQ$pA,U,a3M+%[@ `zId,4\v#r#ΊT>v6~ G(p,rr|]!lHKdci^cDcV`OUPą#toz=KzIUb0zGOBJ}j/j2 v$vXo@)f&H/fԈ:GC>O_ N8dH"R\F+>޾R #DjI~-%e.SOWd?d%t_`u, fHg,Xɩ7%@o~ _M$UUIAΏ$89( @K0ăΕc  aVes3_DŽy7eGvi8Cm(B(Q5j-:X\?ƝyCS.ѳV| ֮g&dXbHu;`T/cZu?+0.ZWHh0,o8- (JlVy%).ƣMοϣ-d{!e]Q֕|JV`PQ@% + >t~9HF*Ijv|y ȟIO"BѐGRzkv'nSƇP9ˌW&6')|#BlgU Qm^I^b< BX0A䳕B[_gz./ P4_]J,<0v5hV:>B411(ŗ^o+Ubꉌ]ŧVvʇG9„Wa#1O$2W&.}(:Rz|RT|F}"Zr]!t.$6P+jI4L,˰~ +Fƀ'.>✦]'Ʈ<Q=A($]ČWWRٲ7m#YfQ?e (%>7rVIc*XmK+}`Ht?vo]vY?ÑZ?<) rq#ud`uS/Y$xD~+kĸlwR,$E$W~z%GIPȥ$t} A1] vWcJ8m"=kKJ 6*()2vv |>$y.!DjtmC+%=kQLrrvAp*zC(8ndXx-Hu @aјˀNʓDU|e? S1ь#:*Lˏ$%U*/(\yd>t\^#Uvצ)NuǷܻ?;Ŵ@aXRdJJ0ϫpeW}ѿhZ(_N6]+l-\@Fo*Yo;V6.YЂ^'Y_OvPRYQCl7Wt PIM#f3#X $VR @.n1[ȐPGc\.!ҲDȍ%{ d")ddio~I]zbhau1`AegE]~Jojٙ<:0pb)$۰҆$x[^?/)|x9E<1z"b8˧(y@CrS86 7R[l>:^r*>{54)}g]Vaf;;+M#_U72U)䍙!'BN*ؓGg3+`q"ۣl0l7 <Rɕrnlj@SѪELȭ!*QDa?Y֋~,j,q"I*tPONn?>z\g+  BNӮفc^A'k4@%G#,^6]l|qnApĩqe(ko}n7/#JId+wZʷb$2IZJH^Ow\&A4Tqu#$S0;ͭHK"$/lǐa,հRF7Y7tŗt2?9L1gFTi{JlvPV%'rFε\JɀBQ5jq}K(.1&NQ?)%Dd_q+&+X[RKuJ)ݗ%&SZ$V(%H^ mFSރ¸n!p֓%-Jөo1q-߽%zyAKUDzkkO>h8CzU )Ug3udC+&@/=Ŀ ~N T1P-#+ij^HIӏ.=yx,Q u4v Ck78%{'(Kħ9 YYvH_5caLrC/u2fbC9J nD+\f ؟2;)EN/5c{VJ?{AX`'6V[Z6:-c'PVqfr+W ώbf؏[-Y慲ſRc!G6.,GF^[j(b㆝8Kr fNls'e#_V[K^?DJIò\XW-/cR۞GfYLm ђ0bc3%Î9wY_q0co$ 9ܧ#orhX})9&ILxQ"{~Mn?yw`o#Ud2HN(X<4Km^K6k$GLFGVkLR۸^y$v>x 3iB(QCYURIZ9r*p\uu1B#L*dٵlKUd[3 «C)mGYZ $HG唱vhB߶bT67)]4Y cfN$ǐ8#bu>.2"o$S)paҩKm i͟Z1W٨  +zbR.c`I\L{An\N"YE򂌕&l#?qXa1cWr29ڴhJjEcf%{ J+-Ź R1JTM%! sXṭJj3ex 9F9F$Ũ&?ާ9%ܲ1Dj,D].M]4,/?v9 Jzv8!Pia1Xa$laH%98%+VQOI朋ݮFqFscHQƱx&LK2bI<;H%/Q7͏%YK*C C󪴸A_Qq0*-+:hOjόIXE2,tL읿eNj9END<ڔc#x: r 0K,͑Lj EStdhvS^[Y3 Zy)-iv=x[PlVa~`}6rvoeTi⚭cR6Na*)C$c``N/%sjE":uնMcK+EV;r1;US^\$*ŚQI-;܍e8#BA"#h4oQϞ^FS)Bc$U>U -MY$KI'hX܅ .%E1 P=>ZNMe*Ќ"N5 V_1wZIre-R8+=UYdXѯѠ+0ij9Cvl xA0Ǐ+VI:=6-@>I4I(r(L2n.&|2KkH2E|]v+)§n+./9\S9w&1p>B na\"$QY)*K1_q9.gߎI)'80Z(-g $hۖ,, #AbW^JԤw_q/ U @8 so EZ\HM#WT<Wy9!ՆFyɹ\DG#8=''<RH\x>#c\?/'W"|sB+%PVܖ=4kg9 6jmZX.\ifEoU\6?_ UvifhDUl]~֍9Xj)1Y#HᦎG#A4S' Y[׭>N;b yMZ#.E5 ήGߨbkvS42=CC|p+$EUU)s{fIBlR#ܵn uW0JxLc]+F@OU2ޗ2&j,? , Xl~[+ h`Ȼ^zOy!>m1WjJtq^*#ƪ$I39i;̌_Q g錔 IH*CV/O6tj+#Yòj/62+XoKfZ62$-G"8K=nyfcs qQ{3F(ǜڸFmղ#eGFy~7^d`[ bJ<إ@vLB$(z 'P0c1Y8ڐMTfUFuUzԫ4n9?ڣmߥ6KҞZ#zTf[OU{H#-ֈi*SGI9?zpiaבDBEaa:"iSMѥCO:~q13 dj$FFԍVcW'N+'eZ+AZ2#  pNlv#-eU5Daͧ(R28Ho,AZKoi+u%FC=eHe|mnF'3ǚZpQ,:E&WH BL|7X .+6j|vB|Q82-%t*`\|JO4rR9ջ,"Ecv}u.ʙ'śNL"$pr#r(qv)pR̬ňq9RJF7]]Y\庭Nw2>Eb\ r.FBeCL,2XoZS kZEleq-+vkZ$ qط/ XMr\ v)4JqXa3 1Ȓt/>+qfr ع{IJԨс2VLfPbI缐 a~OF8{&-9ey8˗G,qZ8edJ'ߓDc6QJlnR-Զ<^;Mzt/ZL 3/_3^Hv~M9Y`I*k&KÈ_d,Me66ifId":hXWg!~n{59m 5Xb#r(eH`{AV[v{+ʊZxyM^B#C4,R_S ǖRSJj%_̍W=:=e9 Hqfn-mDE,ш%Ù^6;J`" V9bZJ v*AkraerW#:Xi15y;f5a c--K/ۓM\0܅,G73؆6%9f"5W2ݽ$VP4!Hl K9;W誈b|! uL-O neQc%#8Q6ʸ|hjlxqHKoA#GiQz3tЋ*1bv!$d0 0ٍ&Tdt`9ӧ^6[i U#8&e˾s%<)Z';nUk!.DBJJ'#7`0DFG(%#J-oIuxT'ft4r2Ϲ)V KP V'ݲK%. Ue6LVՈg9YUtpY#%MG)T%b,X'6+nZDy(eJG FKs;#*{lUYNG P#x^*Ւ4d`)7E=9gn$iTU4`պ@ O==F* pY*5q40bcwy#M.NO-$$$xLI{壳7kW B?+MڔQ00Q[]w"5(|M)$.Y]CEђ%m/qxZ3UD" ,TtoY@M$E,*/rZ,#bgfU1d.4nݕ{9Mz8EU[|e(sJB@1#.)q)ݐfF1(cQviYv"q}c-cr\8$)u‰CIlefH"Y. GbH*a,Xk7g\HMp*}vH(T {YjsKor$kcH-yDoqqˉLuj 4qWf;C41ѱ&E"{tMb!kde6r6j՚oQ&껚#A,% Kʅ\HnpY4 )8J GrOu2WR3fXbE6yDXX# MNfZԥ)ńIb#R*82-AjK5{2LM߶ue+'̌ʈ@OZ$͑"+0;Jk*aFy:h;1SrT;xƖ @DeZ@u T qVP~ʮĂ]^KȑB vՔ9Rr02(Yko[K9ȒHD>*:e@ JW/-Ux$ym"ڗRIhɌӃ^,=u6^(d)  Dm#S>n1$,8RFl*F$2@RE@&3$r5Y$mWnhQHHw ԭ d V-ۭH*5_vA(~˻7N%T0v$ =`kgg#c$xoJU mk@_[\?gּ!tuOԤNTv@{}=6\n?VEa5c͉ǐ+zpѡO*@o`+?(YU1>@_= ވ~FG~B$ï,|;Km۱QQRaG/Y^oג&u'v ֈ #["^C!I, ޝdtb`z66 PIvzfJj +zmvO5\jHtUڻTQiVWۘh$f> c6; bζ{/|;?DG:޵Vu( Ͳ͡o`{UG|i_";}n͚o^t"HM~~ƶGuJG%XF{ ~{%HI|v}L~'P~GF0C(;ehlM @߿2qJF-/ҔwWkmK+Z}7u]$:URy:c x4eg}ۡ}{Xdd3(^Y]TEgfſ;^0Ԟ# Xt24*`߀tBlm54jb$%:z v6%Xa8AYTi~::g]ICAe?DxB (m΂2Q:kA:  M<NVJ)gMvFc2eRM(mWnMnx`]Һ F)$4|^m@RV/IU*k&_NU < <y"iJ1ƺ/5}}Sd6<}PH"j졾0>?ضJڷi4 aI*T!!FF;oщZK1'т(fU%'y`7௠K{0cYn]?S,e/Xf~GՎ0'JG,PZڗC@Q|eֿtK7GmW)A JX([#.S e ȍ3%wlY"؎੧\F# Y| aȞb7Y /iz̸:.KƣX{%I+1hbX l49=@]0w%Id}uׯ:׋ޝ&\2)IyE U%y=ʼn()BƥngGa"1B H(Tkh kc@jRB4 f<:$ lVue1~NvFIDž1^$ $c#qvE]ןx12<)vjRˡUT$˧cRE^}6)"H6!/@T1_Xtv@41 $B:4m7zweI!Sv; 8d27B@!#=}ˍƚc9܍cvUrwU܀ȱ.E `LX$ѻq4%UtKaIfr oUr~d} `?Ba;ֻ/VB?_ˆ롊@DdABt0ͲFʱ>Oۚ0-’7~^S ԏ]kӒcNQtHH ~5%"=),]HnXR#'{YLdyJ1R`H c.~+,=0%Be. )6o N/G`T$G D%FP y' X2.Oe><|Zt2FQ2# (yU!,q2Ue\K*kcܪel4HfUQڲTJs)e  K/b{$0R[)BPTf_64Qb'o({3D5/Tؑ1Fe,22-ăʐqESo$q ҍКۭJ*[122OTDHbczז#+RIS`G݂@@ބE%zӯ:A7G*ߛ( v*٫ ?Y3Q[j5NbJ).DN `G=4@'$U˶$݂o`y""2@'}"[b!so}s !/H+u!UJ!eHf~V@#Dl s]$1*gX z뢟,䎥|ybI)BFx +'yLfdۯ5'~!Kvm~~FDL<^1.QiH<)B- CZ5D4/ O %u$҃|vfV_jAdھhh$;*wXiF1ãwT*ߩ]< AD$w$UCT$ e'U Xqb2ު%7qG-}%aV[UzUCґȒ<.=!J)U'#vH$4GMKoI)SIH#^F՚?&!o!Fmς{5Nr"|@Y2J(tv?d*# e"4[_q#9ElmF 7ΜYc24뭱CH;*>Vl¿2^)7uFhHLwr[wmHkJމv|3uv:]akbI,d$dF^[RRx_V%bҪ^ R. 1 M.2eUU #(} ʕKq>BG.P#yRqʈGcEuMefOԠ#Z=z!"uH!{B@OwveG #C#N@tx9THII02hI6 *Thׯ%X} [JWHo= yd+:8eerm%ګ8aٛ={0r jL}$AbTԒʧ2oU:F漑I1,d2!fJC5 DAZx!F~7U v ܫrYB,_@|8T֝"Kcj|xn>lMkB |K"0D-ټ> S_F@u$C?PYHhx޼ ُ24_-kxiLzw+ %~!/5 kb]+OO#7D(钜LVsKDd,Ć'Npox}ԙ61PZwOd=~i#7:^'g)|;2`Ka[1,GebOL'X8㰶 W'1p/J$N;7S#g|{G^9*GcPi4 ve[.]WW鯎,.,.N,,88BDbPۿB(F4\'wd.j-k:p()s[r͜%ky#j/EBy,54m؋Y5~2Ry(PeK(+>7KNJU dvyNٓY_ITGueVjuB TC F YjzYoI-\kq<Ǫ21Yh(^GZicA!)@ DZ=78-̐tǃ[V ԡ.<~E>)'^Q.^aSP̽,ض94ҍ&9 7b$,G&6Vo}dZ9$VВj.4rF<**(f=U g [69~]vk Y n:V j6^ GkjkF$]GAn C4潇fBH*GfӥJU0W~"{a/&qɓٞ)c͋1=ı#h2glqdHLRyUKB^S \ӏ[j&\ % O(FNDȱӨ"ȁ_p}Uܸ4J\q?aL$J'̴O:z=I0lOrNGV!:61qJLYBd)ΎW Qc(ңDUXPV GYS1%q 1%%%)Ǘ;pղe9KHL!$ܢHr[qNU[ŏGDY x}xayKͬ~ ,ʹfVĂ6;jȏ+O$W6Sc${r)܀>2*LɈ:Cj2?: |rş~"p$pK7jJLűr=4K4e{"a۲蒣HL"aƩ\.ӮZk%:Whd{fdjI.Xd I{O,Ыq8qoܙ\IvIw JY#)^kO$KowN k,J[cYƮR4qjSGؤc&9H_ܸy8-۩ʬTՃW \F*\wZVU71o9.u)q=KF4YzܵP7l[ 'i'lRS|.@b 'b TN Hy,|SD{"y% %_jeۏpz\fJ.EJNY[y y L+j]>˾8pJ<O>HFs\ w2e+D*eEu֭~򔽰̶_?r%quT(~lugTDy-͑J)tMʵqʬi'%pbi"iUY㈀Kb*i`1~Q[rz뜛AR1Qz|=MoJb_K VrI$3n?嚥*PcXR⒲- Mb:IZb--4y!2q ޵ v%$R>*گi8׷/bn[܌kUo?v%wqFFwP<>5+"Ոol$]feVqקuBB(;>sn]\Czhk̑#\M|EsE[z9) 4ti6|g{mlogQ1X%e9E=ن{Fة_m&iv(b! Mf Ɏ8O("7rl*xb C!?Ԓ,Der0TWrIKG. |8,D&NBKf.I|bL\LwQ)ɹF"WwB ҥ*׳}c%uiXҴ5G]DKE&l+cu`mY Pa(H)Jc+̋IdduGfd*3=ZiҊ%KS0oӭ $ -;3;кp܃0f.-fĭ{p#oh|5:)E9d-O.f~qqFH%G\b~[K)K!>.Oe''!rs2u\e{MQI% $ h|Ft9Rk%|c9kNc{SDydS.$h9}ճ~:f36rNL4+b1p2ܖ(11sWOw*o5D9lv(IWe.&wuerGdHBZ;q̹1L:e>%QZ{͸,f,d ŌjĮY O4FT/Y:Ŵ.k7;/c"<,XL]e]luX3*mζKWTytCC]9.) \YK1HN)P~]Vhƈ/Q3b{ah<̙eʤF\`2zg/xHLPso\M[arh"I1/hXtqeX?騗9 7  Qi1F; OKG$Uf I I$:41E ֹ^Z:, 9.6)j|qԻ,ab'#HtW ,m$pzS=Ab疴_XCdEcfP̲ y{|lef5x%񝫔%nX BXaa$[(^4Nj7wS8H#P|2.xTe0B 2"rOZZK9O L~zPiHvWahkL+8e#kI;><'cǤCk hvQD4INςuB"mu{IwZ7@:"cB;m >KA9bCM|.u:?z/wAf;F*Bvu(IMLK$_Qُv;9RuՀ:ҙN!J6ܑ6WA2 KUl_&pAٴ7!@;{1#|.2(m]?GtN1Pb`ú[}FPFaUm3ǰ5y~{M"Q?p@U+ҶuIǏw[Ѹآyë"^w7R- =~>4b")p -GN޶ߣ+R%G.9aB*=@ GU\+ ۖP]mS-!mNy1R#jZ@%g21uTt vx?:AX!S4#iYA=GP>r݋KjV&Y%҂ d ;x8,+1$k#Fz!1bDMh1+QK .rǷc혦9S2Rcrt}D#2Jmq>EFQ("?_M:OiApvD$?gG} bXZ6G5弃6~ВF+c)nt١GAu6|m!mVG;VV> ~@U#^"+wIgMkXubִZЌj+t߃hxߦW&RnצcB5(b~,q ~DAo ؍? ߏD) aٝ}#b:|k‰2cevw(^|:OļZ(X0WK~ 'feo!Choŗ,c,NJj"-+Č{GKwbi:)FWBe u=H #{:+i ] ďYvߒĽQܺ߆ԠMmHE;Fִ˨:K0$ 9.: EbF{Yc <AZs cQ禇`$u蕼5q.rbĶRD4y:(IʠUokmk#9,uiB`dyڮH{ò?g~E~հG¸X!7CGcz*+LNrHIiq::ע\^B )4gleZݒ_/J ~~tCzHUlu/hN|YB蓾4:`O](ֽ?1(*ĴZ}H[:^yE 'ežC>L`XWJu/EhUoHRwD+ZxVL?d  u~dGYݣ^")F %C(|AfG4*u$cii(R6\J||i(N)1oΚAb〆Po+.IXFxgXH?ӕcT ˀOemֿ:|!2 kv~UtB4!Tޛ{?]1F"W/uKphA`4t,$D_O5m=hEۮ0闰nc|jrE$Dl_:%@>H%P9+)Ch)Vވ F7gWbUe"`?D mC`;8")ME DvQ-t/ݞ$.ZW,C<HK֙F=ش}RHF{0 ^ Jףj ~՛Bvމ`ďr㤂Ebll#l`~"LSIr6#)Cd]7R@?G5'R}( A@\v`[ґh}t4>DsGq&H rkLI2Auh " EJRtWPFX )*=7%2BaZFbpML-ՆFK$B#VOVx$;%ua:]X"29aE4Icё^DXd7 iJʾ.Rb?R PT/_@<VVr?v+ǂ$Q;QT`ݿt6} ν!F@;*CBP1%G:c'bҺe֘0$eK/+xZ כoKPTܯCvy+NT>E2`1i]`{H B..Ϡ=$ĀNQA 4цxbWe  ;o*OJq+V{T.J/Oȱs ľ(J19i>دDB*))G+㭁ٕ z]PK 1 ;R0 ='KA4+bIP$kZ| H2.P4O޹-~d$д &]1H#^w dWci*P:t[,M춆ϡ IHX~pGb{vN͠HGUS$3l0ˉ 8z_\B[EnDR?YщnG%xXth&v`!W^2/^ҝXt(&9љ_3PJ]om X"FX(6(lk"egG`#moc:T$ e#B,Vv+')ẅ!4 m_'DΙwWBvU~@F 6 { ,йmWF~LtB"@o +]62aedmm"`@~ru6Q MҸH$CyN7m+xY?QdOYY%tTmVI]5&|ƋQPX,_^[02ԍQaXk1:Y@ڽSz%4u1 PHe$, NtI${ZR{`r),xM\9ZFi7LI`idY?=1b ) tU׋gNQXt3y 2៶#Z $QF24*H 0ST>%y%ua,ң v؝~4x\LGg~h 5V*d6*XHHo](=0V2a! d##R rOg+ /]5HԳgkGeAF)Y,omg#"HünP,YqX),x7~{i&S#ak4bnRUOqޏ8ZZ%sNGF8, m19J$vY^ svHRXTdrC5dXALqHl؈)?kαaG$ e J03)ILbzەbL,$:Kv˾_+9"GZؙ?Y:GDUDRUG"KQ<ۯ E_")h/e(rK8g-,[F>b5aLYmH %x׀:燊D'C~7oRrV,$)BWxMu\n9nc,1ܞf(dJlHd+׻Y~$ Hik,xM=~;ƈ>1bX)6i$Z;9Ʀ^Y]"BN0S jYà&'FtiYj:ve+jNMFiXiʷEL|yKd]FEmbW]VHXY\(cj6mJqܝ(`@qՠ$YqbFDfyHлƉ{R۾q91LE ȸGmھO ɐv-qԪ͍ZcR2Nvaq) ;W2[k%Rl(1" yqɡ_`iVךuZJ72Vp=1 OQ%hmwrYs^a+.<.&Ĕ%jQڭ*`j"?nTZ=|` ȋrjZ8Ζ*UzԒQ#S/>O,frr؞wdJWF1 )A!YV>6 srNk<}DdeS2Jc.)ĵǍ3䀑RiIZ4d2xJd9=Yiؒ7vկT24$jA-&09J.:(VhCe#Bfw1',fNnJ osʪr^[]|$^񊜷wADzCd(ff"A.IۊI"3TgDc8j",!mj%*:C29gqJ J^SK.w7rwDfU(ZJL͉1X!c-QjFIY զ4v+*19 LdfÓu!ZRPjAf{FYd" ҵVigZ97KcP݀G/*KC(PoJ,Vthe}j#pJc*4os`4.ъbnI:jȾv(R,˓k NY + mirSK&Ia8L1ǒHד̼!;Gm╳7_nɰ1 ڽaYLd?c .Fԯ%̾sVes-<_+BRuIIJ~ĐUJ̽Ck;f/88YYYa{ّH cF!B=${rkȹ~LULO-m.UjQ'<5wC6/R6H* |d9䔂O#!)2 ;9 qylXulcTFVK7M%wT-K?HX#AkC,m8d`(԰~:2J5+) PVi]Z)_]kB]Q X: 6x!jVV+GWRį9~8-KDZ2UxN=ǮY-<"&scW7Hx&hL $㉆QsOL,i dAw6܎ym҆aB*]jYf+nsV5ÂGc uۭ^2 YIb'&Д3\ |VK"WK*-@nB$q)qW_4UiŚ84FGNQY"?L!eaeTC9Utac1){ KueLu!!p!$B qKz._!æ^ZYuW k@V ^vZC4qD0$+I:\2[5qxeld]hXʎ!"E !UvuRЋqRݩ5&SQѹ}]&{Ur6"l~q&Zz*ԂT)յYWqLR ,/eÕ_ Ь$!\'SݬvqowQO4V6DdJJ%::y}Ӹb0VՊX1.)W)tS^ݚ3WsL+nKԤHĖg4+ntfuHεibQ#HxٙܯRȳnsR bI4qTI,;*2C$d`?V8\y+Y-|K['r[!J@mMC)7Ӭd*\9rrf8jԆ_dv3-c^\}qx@Neaemo\|~q]~ |ܟ+yz kB*S@?dHsR7* (*)xo?v1ؚaʙz `rATbqj$m+մ2k x1RHiC= nK"xX_S`Xn"Iet1̨ ?FF0Nʉ)QǏ*%FɎ1O ##2Q(֯ZʈuO SXydv+-vCQO9Vc+ȹ;dݿU laR[27fUFU[ZEpāSp~]1t>kJ[inچՙ[i[0LV crwX\^{_b=eS%+3MGh Z+/yDn yZRV9~i,꿻*bǏ)Ă;7 Ef;{<]{<P+䰌yW^]|8rc7 |̏JJAɇ$DR|ҝ y><vHHY4v666?.m١e}6@ԖaI "qWnfU`Fؐlm#9!rR(GL~/XΒwaXɯ@#xJLx*YIge|xh$O5|GP vIvz0#lt{kgGL44Hvb!ŕGj -D]h[o;  z TU _kg:ccO""HP 4>z|״2|?`6iVZ)deI ta{'$5l]#Xo䯝_Psc% _*[tS{_fHTY;Q! u6;?z-"~+%bE^]v|֨Af:%I C{yvH-u^@m (Z$^<Æ10o|x*Y{ڊ PggeT #=_)Oּd Ǔbt1^("Yp=Tz#@/`w YdR|@W>|Jye/sܑN^mjTEM6HIZݎzn&` (hNQ]/&L ݱ<߀P5k]A luONߏI ٴ=@#z$o}{?y1ꆿwwzQP N],LIzP|!6467gC <I{#Fc$Ϊvo߁*YlAo &^tNI92FNvrlZBTU<$nZMݕ߈ 1;+gJ:ը>K1*Bs0_ NT|=f*KuChK7!Ut[ηw$n!dЍΆbQ@=˰vc>@K3"2)-1MoAR,T@|JJNEΫ~RŎ/aeAZA4޶ =,KeOD1~*Ѩ A)'yX$1nH)ط@bX11p3bI)p;t?AvpF>1Go jnVWcZiɜ(%Z4PoʝYXǹf@;kdl5;?'^;UfuֵHA:߂;#CR3^4 *z]SzSױ-<6bWϝl2%%FVc[?#Kq(|[VMH *4CIOBڑ6+B7f^ ""I7+GP4U lX~kCiB.^1sĀ6}I\_"By*ó<Z-v%Qo72ʤG+ ; ;=it>ƫ<-EVEȺR;#D~Sh Yu*I`ߢM tPJA@{LX;R hէG(\ޞ)Vj7V>|xbEyf?Ơ9ڞr`bAİK#vV%ԡ;7>9ׂeKl4>Oa* bF]UU>|$liFzb12Geqhc%z-稤N7z"Ojnw%ֵi wPH=B?@eZZᄫb5C!|yH%H m؍hz:B j+&e],tkF&2SU$XTbObl$U&{mH*V{BIuf A=HҖ R.W[ieDW pv =b6B[CF00`1K]):|I-y0GXT$P?@;;$kЯ,zF7!՗{`TONC,CFcl+Cp?mFBAx+F.,eu[ѥ[F+C:`eҪn|q IJ*{-HJyBTkZ> Ո ;|  5oēK-Iz"r.!e+*jũ<+ ķz?Xy'), *2I=J$(#Ҋ[U:bƒ>HQO5p=IA$tt 7)ۺx$hb}8J|Ѡr/hH U(2K+0;=~~?W܄8 [μކ$zgn;R[}vA$h(}$$vf,Bn˴YJht$N2㯗+omHߛ5ԉ6֬!Zxz&a_JWaVFHTtJ &4T){:tS tpO.4C`{ uKȳ#(@<Ѳ~LuK٨25FWokJ FDZ.hV먕:$!@ mIH`dgH]*479v ڕ^y"ރ[maoH%ZܮHC4jȲ| $?rQR"5V"kW&u`FO9H,Lw=ONAy;$gazOra0t (f56;t^GR$RkMU%d JN+1:?c׏*@GNߋH {m݂@Z_ۺtecUcz_OݷZUZhzT3BX$,bN l]v9.G@bV~[>I4"jWq6;[$k{{!@A*1%@$ozR&-yQtX]& K+G*L~ǟGL"M2FCHVVvӊĔ7K޻b@N;*Z+r,0iT!Ukdy>Iiuv<2 *Q %Ah'%2Ir[58U(Kj?)xJ!ΘcP~v(zf*7^K路!j%CWq 'jL};d@سq CuCʪA%XJ.(CV/7C^_[X4hd<_?]7ٔHLA1W](RX8]f fYFVcUNQ E]nTנgI/6ADe#@Sj@-lGl#/`&E:` I 2a6Pߖ2$5+*O+WwhΩʅ尚1/@}vP=6O$;I*E %XKkLKLrB1>$jF>!lrg'dFRIqk7GEL,E~c+3{F:*!bIhC;!!cV;t($HFIOn‚Pz?8$W ~0Hi?cFo@mZh-Z|FLŭGeyzn([JçRiFec%J@ͭ܄cWJ.H>nX߷f:_ i@#/R0:rd,.;HzW=$lS2BT_,݀֐YM iv_E//+!RwaO48B"l4P!H$76Ak," .Cmy=:l8F&7,1U iJM~;x7 vtUt-iH?#lIQjkJ$l ,#^a ;f$>, add JzS̬PY!1V[>Z F~9XVIW"D-E cpmcE1Y Mr2,Wj1 5۱O#[ Px4Ul|b*U2$QS%t5-^ZYe,uh,{RTm,Xp۵-6٫vyR+Rjz*UQc>Y)x"۴Ț2ؾc"GQO-Z\#zܑe a`xfF7{R͍gxE-rm5'XiE- Z6Ӛ7Bȟ n%g6U'FR]z=ՒQlg?y- pG`jX־2*QCz)VPċ,^>,4WsM&6&k:Upd~v,Gp|=aݾYy2*#_>:ߟwF" CrT줯~z%g+ـWĖ'߁lG5ȜkR:T~a[_HwGFb `Iczho l7=(XǏ#&[)[]!\U[Cܙ*VhHeo@΋=*Xnq}IkU_ "4 &H䲶$KJjEtB`[2GV40R"H#ʍ&Ģ߆ \wB )j،HREr!)4{!Jee͑YlYaRH*DY$2 |?՟)MܥE:ҟ~p9ٚ+,Y2^-˕[ÑUkYj\,b&ùMܖ{jk51k;ԮZUI- Wd :J#K) k! ?=~x9(%"g6%VS vHYZbr0y۷կ y.dL3M -0YDi#գffK9Xˌ\8b%ɝqMF5\joPF)7+W-"+w{_Z]W)WzsKoڼ` ~e )m;em$Ҟ_tigq{#j[/~N/N "H4Z7Q.דۮ3rkr,x')VW!V؜W=nNOnJ́ՙ M3|h_$5Fg`>H|ul"Q܂:E]{]a dqs@*uo94l`!܎WT8ݤ͛ %o^8` fVY0[5gpq a,dkeZB4/|K![QgIi֮d% u{eӦ=7eqA$Պ:. Qd4WVOYr`FkI$UX]o=Wj6u1A&ELF,Wn{v H9ŏ'$HH%2S>$F6JJ_}OJ^)w3E;.ZH(x{X5e/El%yC!R{͕vBxb c(YwR*د$ۚ[6'<υ? ^W^J 9]*q ROfƆ|*x%៽͸VCr_%/^QŬ.;#X^է&" JJ \Br\F{ n8}?}g}rܛ+WN Vi;*dK&wۂ4]po2',fI&9M?ƥ&\% Q'*?szp:k6ɒ̇(KF+5y$o! Xz*klMfz&XIRXR+L{Q#^h0)W5v^E[ q۞hiJٕVTqbVc]q蔚 R9IJ4jFyK;Kd7H_0g2y\;-j+:CtDt;V>,`DOnK{m$r5TѩƫcbϘyPZQ*VU6Z'(k9*z|4͓ {2 *j"|$ =^(PZG"_VJmGZS!j_%o]Y-1\YzKA9je_d C \TŬu#Kw_ VSԱ+b4,3,baǍ%qDŽYS RmI5<RXg|U1~\~2rHI?8n EiG Kq]jFrJ QܬpdlW%g5xy#x@\m񍂕+6*R+bjĴjG]+:4V<#nIVbs4=b[6Qvj;f;lv2YrLjd.QjhKǏokVT)[x\WC37\`Yc4%b-x;NFW`K6q~FRj|41ɩg(*9<h?k ͑K>gVdj:;ȼı;X{$ 34;H nM\yodlֱk :#$5" I@-/cb ,3UJ,\h>ycfɗB1|seWq WfH ,M+G+OkmBؕ$iH Y Y h'V^Q.Y_37RHd4MY0962<7άcr9_tXՄ%!,Kڒ ǬDHP߾i};5:^2auZp*'xK8h緑&'@I d3? Ʒu J#&3)vȷ܍f W3K~DϝV$.bNH&guGeOnE.7(1P#gƝTZ=?{}\RG(#Di : Զ`P[>{u$y`77Н`c*1: l>!mRG0 +䍱ҕbUJFǬVvRe2( [_nv[g2%FP߿`-XʿwȠc"mZ5➕uz g JuS8EņuQ<,: UFt`5Iʒ|ة:׏ v)GhЅ<) 'bI t}.?>Ӫ<, Y+FDbd*꫻1HGx^8994c5eF42㦔&F89r",]JW!a2ȗEXr<]{Pu~#F Y+Ǖ5p*épfI%^݁5ؿh7MđS;$dz9(ՊI<}VcυҒFc~cϖ8_oT)S)# YcR3~BUUH+ϓWzBRP$xbI}{y$ː=zV*$$1Vv{ #o(-O]I%q~́%m)Bb7V}(rc6q ;GsN Eڱ<vYJV'eT9wrv<'Ɓz.tJ{ê[qkjH=Iq$H{Ա`G6>|1+E^h Z8K*: P6׹:]>ͲSrll>~w{_E,cW+۲x:tj'sg@ǩ4vwH^ %WƉa%AO'gbU;uwשQI5%I3B|莪~z:PkNtQD)wNRy!q#laZ`4oK"*R Kb _DT&!:ªXHfcݛCJA:<뫇BDމهt};H@/z q(Eh~U 2 @dBo'_קىi: PϰCep6!Q-G}1'Hl;`_VHw|rdVmut?Rs16dh_־$Z6n ~^E%xOU'~ـ#% \VfSI{r{ )S_)4 mYAf;m2qCZ#ϒPY#-xI FU!w*YNTF5hj![#uB?FoСkrHmd$l0ߐN*]l!U]>~ś{'L?SG/o]OU+??7K]PO~˶ mC@:cIbRRih-Yy񺽭kkX"ڬsI s,˰IPAߢk9%e(z=kHOV|n?'JT U#c>~e VogzI vzwt}EHI5QOqr6yA::}5u.: >0p?Stoב!*Y;7 v?CJUe GG wv';'Uѐ4fX(cmN~DuP55J?(%KY݅zb(*V-7g[,Pȅv< 㭍:J㲪EfR Ģ YORD}*K~'#NB`NB\u*m̀Q?ʢbv|BK> .ѫ|I"S|b&nCJYa{~A,b"3D3b0d rKI}߳5]GP5HJ+'bB'}R\Ï;29҆ y?I}WV,z t]H蟊4mj:T#%Ļl@Y6X@R|3(Y,%ßHP7m4Um)!eku3F,<2)ڻJ!$hXPyd2t`QwueӅ^$MԮ/,pbSԎRn~|1jj­8VHvG*[_]>@,}v$;1'Ė6F3c95e[GĘJںr,؟)fEFꓨ]FtĿ VB3[_FtI*IsIaˁ\@U8!:M+ݔ<ߊd1F%SjqѬeu`) ($Y9fHx)ŝ-kE qĎ-Wk Piz aIᐐVgBg}LM(5vGβ!JuQרvO!|-X$J*{|+ 5Ѫ׋E/]$;F@vU-_fa(9ML[,kWEmXQ:#QozsjH9+f6,ǰlJTz漠FVR'i %tYK,S 9mߋ2V~AގW \&ݚ%"/Ȍhmثvm~he,-ϐH<0c."RvHJ-4C;C -ST JoU⍾yvP QyjJ rI@A$h3wC;cjV ؆Heem-Ԗ}c8x#&*d!i&ƺ+vt F_ŜJkfteVT ʧ hhHeԫx(!Ujg<ź$ͱȿ‘Ф 6c,h $uk:3pRR7<2`r6]% wHx#t.E԰Jr)*$h/DYX3ݶGsvtUhx_U+'tUmiT^; ]y$8"_A x["1 M\KKDеD9]GAvU|:,{O"U$4vutXuRd1Teӷڐ}"`ߙ'ﭢ@vX3B,Y7N?Fٻ jxE)LDd֛cqޤtڛMGⲫ'[TvM6'QCmIzR %v ߝXy%\R>E#c^vYՀ6tҕ Τ;0b*\>FWl6؂}y#zo o;xΎDR g6R%)G <)ͻuӲf%5 y5$B%g{,W-=WB`Dni"iXQؖ@6H:V,rȋ!SP(NO%B)bYA&NNDeMn }u`aAl]yҏ;~\)ZtE{*Tb q;ʵ,niT;DR~Ôz)c>q0]FJ:u bL]vVbm2cs1E-20u`Ī䐽WDvLgTF Ox6,ICKgʁtfX[黮V h%ܹ1ۿ/ 6E!$H ti$)Ĩ'Ө>:_Q4*fZzi 1e8 `v?pҩILV!]Sˎ0U:y[f?ȗm#*Ez4U☯ Fd/g,4r@ c+Q&2ք:.t!_QIkinA)cy,C8!Q\{vf;b/Md5ddH"f}ju;MiU VH*cf_Gfvמ8q̮$ *T+(Gdg֔3!`&ыHI4HGw(rn(!DzG~,.ټ[/O$KZhZEwg`p\DX$&G4l*Pd*Hmo~\[3VXL>P9BfV`6ވE,\"JAKmu!2רl:$23<2reᏫR?mHd!dLXu)9Ů74 5z1J!bDBS0Su[1\'ar2y_(qջQZFS$rdHҰ*{[yeI)Գ=ik!↪Ag XeY 0A$`׮^H`r5ZC y2ʵAeA-! '1ӻMcxe??6vVǧBosd>rw/xO1CZ~'7!`өzu 6BذPI~q:dAg9 Lѥ91IVSKHtaJ uZv*dBd>A0OeUӿ'%T%[pVkk%ޥ^N:8{۳w9 ۜȋi/o㽇o<#+cy夑<0_orʷL96Ͻ{?ѩg>nޚMZ=rp?D4qh3i/igI:Vխ$r̢X㘺UG^sWדs)Ky:bSXCZnS`Ε8ݦϜ`E'*W$SS!Z Bի2E!*ނ:^x+wp$#G9c&W\Ib#8]l]w ,!ɕ "w!7Ӿ/˽*[Z8PYjI[v֛2X0ʵ~a8o07r%SL)W4"lGbz?-V]xaMi8.smշ|=~)W% I8XF1yuN/Jl<1FQ r-L$efhZ'u$jgDß_#ǔ$M7%6Q9pT6r!ʅNal̎]eZUB$dp#>[R:i%pQPfH]!iEvhߪֆ9@؛E&Uv`OqFfPJVֳ7VǼZzPdw(}L\%|E$I_#0Iyxuo5\Zwhxs-C xژmFBYlR MWic R3WuTX<'/#yCC-lXf9C[Kq_ r=ZxTU :AV#;GiCˆ d<0(!HGS{<)g+"\INԺeƵKǚ'mq.;l7+jbDj5f'տ 1S hU{GɹUlzҚ6}-~7~lTjq<#t?, p  xl8W>Ji{̯Vٷjqek_ QEb(Y >Y~=+ෂؙB>xE Cux#Z,2GNQ2ɔ8K(D\'7H%b8͓\\x̏od3c;FrU2/iUПpWxk4H2aLF[b;ya,1D^Ŀ4C՗~a&ky)#e&ѧFǚݞccXSաŹ&'*05w6r+)H1\j$hdYe#^PEO/E?N>ǷryHsp7?jl 8bL\ͱ^E$Jַ̤v\l9qcsLd\dȁ&1Q 2J%9T#ky3q0cyzdqyAe!wOjƬ4ʮS)F:UrTK^//Ƞe.Bte[։f'.TY7z<~N:e~1!HTYcLn4-ab pdIJ(zպlna'Ô'V|Y'#,(-'yWISFϽ+r1m<~ULc-lc8Ħ)#i) />+odRԉYc J=v0"T."uFb9<5;r6 \^>uDL^WCF*UJ׵Fflg&3Y!ieX! `,d}j7Er^YYiֆo['^E()E~6 awWd)eĸDϓY*䲞X@X%*~:}y +xHnhS_jۡ~\^1JLlbHJ\ZOSE 7+e{wH,YOVYLׄU/ [KQQBI5$Cgv)Vu![cY[#XLe@i[F{uZvKF kZ5ؙ!T  l@bÆ sJR_F ?IujSUKw&y %ySRBZNJ!O\<"pIm[v$& ~o[bigdvq\ilglOĨx͗,I+X)D4Z1Hs9O!r!2_2*>9g[(CKe\̵x!a=fa%Q$dWZ1%~hc=VGFׁ]"1{T|vY22TANX؄v&<i %f.>|4U8$KBi$$!؋L3oxCg09ur7gNnyو[F io5f)Ƀ1&X̱ƣ.2g(23=YIGus "QJ8LjiE_o^,\kS,6#Jq\\yĜ%jښg|⼫!#nHྒ/&xeVqg(KѨ{L{ 8C?Qq529gNy"b\)瞭iOkDZv#RUgge_kԤ)٫?(XZ?m!u|luyw9{ZÎY0cď+xrJ)m/Vٟ4 eOI$F0yA `wqj,3\gĿni!JaŲ{^G7L{7j{VC%̥]fܰ2]9Z7V_P' czІ )$%uaImGi"FU_@S^5,S5%?ذi XITuc6"*~D[R dJ9D9_ ,cJ,Y&ldYc|ܲZ%]>y6ى8VX֫.6iYuYd.6Wܢ$N~\k ,OV |I<֯nʳehxm ߃{1xOJ9v7#Y:GW; Al[3<:/`Ya~yw"C%[9s#ǬNբ(t9AB:Bc< gPftɹIT!ik ݖ8$n/ұڏܢx&Gkeٸ%ls@jJEk,. fhmHSBީ,ye-vIR]A(~xaD05.A"G,e>V FeV6u9-}ѓ lK%P%ZR=OVD"!o]~)a{syd#8(-2G,e2$c"S,OHK7$\s_ew*AgeO4ſfHܰ-ȱk$o^}`A_>>ύkϧ]j XDHS#oo. UQ(ZM:*O\ܥ:ՋxTU}VtB#H{p]H SBđwv4("V` $s0ib};>`uEa2Y b?[>|h|q䲍+_tjF-xlCZQ]4^;x>|1'm$3hcRtNH%Kl u-C6N\*60R%UI-3Ŀ$~eUb$zGdnZU/݂#R-|:%V?GkAC\x%[lr +ka/^W &œ>FaaV:vXGg4{fDC35V$fZD.QY$/тGa9O_re H_|y8B<PdBBQgK9E:4X ա%-ܶ^.AbP:HUi!wN+\*젘;%^@a-2<0eJh 'c`|̤Dbv Pš#+<mHKeD{W$^ة $?CM:;꼿ydDgr`zh;6X6R4hyU_6j\Z)&w$[bǚȟ'"4n;GY#&x4**lH"ehc$ ]*?MNzQ&>^i<u$ `F2%#ku`cVr[b!|hH>Nf5IYT1}v^A `HQ%y#ō+56L҆@8i4!l@ v]W~HV߆{@#Bg@D~Ky%(˿$AKu$G{I!(1_E#YaIS*ʙ?m(iO ĿAʠD6<]ڂPB2kcDyס$^-(D chi@(dx?B[wiTd'q.WWԷQܮ~F%J4"w:_ztS&)έ,cc{<Hi:^XE<kКr^3HBA;H?ڣ4MQ*u$6J 6_G`xdOK@ʥ#TtXLI-Kבn1B>7iHʸHP4X>ב|2 "pX1*YQ@Kƥ_J` nn;7䃿OkDanT ވ"o%Yv$/]w ܥ$[y*W#Wcfd;}J]@'z` -}; ׷twLH(,̬R$!Az!fJ$_[*5wMo3S۰|ʪ@/u+z@Ți ?`C($*ٕI]F~*R(Dvoc'e#\ƟS!`\TcR!aцX1aI%Nײ'@,{q 9qBۯ.5E5PXٶ'"q|wESѸoQ+ C}vvn\|NiRzԷP #,$uwzud, QAUu 2ķ@ 6ݷv5ffQJ\J Wp$5UOt~Nm5OM}[`][z} pXemy?iYWjDRW@G;jK+"aW褸;SI+HQՎӪOކuTU|9C6U 3 ( /,[l:l.@>N:GFʮ4b'(! lH*xi S +v$ֵ1ߧ)$gj#[BU7=+!@#GD * Džú噼/$t)(B1Bdp@%Iֶ5ԓoV'&F"21V;X|ѳ$qN3<Kk^M6 Xj5ULUh֍!եGVB֋+ :v;o:~HUru`  В7ԓ6ܯXo`oDu#GzTp&ewYPuA-Xoi#Rhe!k΋VƘA\y&/c< .߁=꺳d^h-DW ſ$* @ywp "T2l]]/r J:ُub6KTm{oc~>׬?Ռ]~EC& Hg!K]Kfޢ5V#rVtwv,];6rWaE,Ad}u 7ؓ?hiVAڃ 5$lE'#.@fg}IC 6L#d|rՉ?" h6. xSh(P9TPu3lvq胰~5K"4V{|{4JGO]SxT0BҪ/O$; 嬫*v^U?k7.\1c U&םoDa 6[S*^o!В(zE2)U*:b<nŒ*T!(]Z^}D$B"4@yU=GbJ,4eG^H <9'P=- XZj%I.EjT2k}U!GyO(G.)@c$$o"c \$H}W Ak]Ue=ww-oz>BbQD{  ( WƏ``҃$QSm2U[`$J[=i~@w`K =| UU @ҢP@c逈.m_ B@;%M?qFNIj[e=X޼Ea?b |Xq,PHDeqk⋧@v [.7+UgO%HREV,8hٴ<ٔ6wC]FQ? PIXZ]N۠kWeF4;l: FY zƊ勀KkNǤSiՇF]U[koъc.Td*PAO;rpBd*1!AwFIoQZH̬;ávJA{3+A2l;ft ANG<&w+ܴ)UcڏFm.M#zuP[lT>#R)E@lYnPB (\||K䀤XSZvjDZF=ׁY,FVO 9 :7ԅVYit4Xպi=y b+3(Aؐ6 ;z7ė.ly 7ȓv_ݨzn:?wt:URAY#$1C?uߤ=BK7aV#Rd o4SJ,!=FF?!dљR"5"Uܤ/PX.@{ƴK-P6e/(\mc%%oҥDe\tV&&M5β hr;;gg~@B;1e:-Ni*-Zw5IB(i$ !2ڒIJv$h+>#u0JIת`$(Qre&Y( /^mbl2 EHJD?6۪Grr/uTvs^'V;,5_*!r!XLX_[~ ` ?4ĆYPvNpȕ׵%A291 BfmHGlȂI]W,j#mpnٛKeq)7$eIx|7^NRbEHU)Bkm?gUIW7_$[p~t>oY5RRtyc+#:,8PL/Z]#:X?feH!TI6]hAQfU?鲍2SU*UJ7L%j+\H!*Pf1W<9NL WJXF3"vk!YcmU% &ͷe>%=c}帇#)fn)űJ3ѳ߭r9iLS*1d/Z=u[=W2]Y?d6>UQE`9GckEy U .&G ?)k^jplJgwgJNR-5oNڶߩlFӽ3sLL.ORjy%:MB1G9~]Ɲ\ ox!^XɋbBˌ-j4C(mk2lG`qlD8ɡ|^vɊc2_=Q3XЂEŘiW<?T 52\*I>)0؋VHgϳeٞÏNKj6^_3")c/>enK x03,0}7ŇLSc dYJ3Isr2͗!!:Ƙ$$d7o$y|h͕䙻~%&,Z$Y>ugZk7BdHX՛U_3.7ڒ9fTC4tl$1J4F$f]O"~zonG2838)`opMXnV``o.c )aᚅgEW颇}rKq ]Wma}2slN&8K=|=b{i~{x;3$(dž)DǍ C\E clRczw$0E>Lwɛ,nͯ_?_<odzk>fՄңLfF{vr+f2 腪1YhC?hpgkީo&99[!Z,UKkZX( g!ZV1wGK@ɑ+r8hiCEqP֥>Gnmg=In9g?5r/K1'!Ι+y L1Uoda ly]) ÅNR,g12@)0Xl;(F#8c kQI\&sHs1Rl>W- V*"Q"kY ^kȌj<=땱Pmma9fCro 7Սn۸wءao-H18\XbgDM0d׸8Swܲ3WXnL)cid8W̹,~gS xu#[%Jil4Q~ЯkVF[= A#$e1)B Xk& 9.Kddw+cSv7=Y+Yf;1D25XHmY׃㒮ݖ&Bܶ%lDYLpJK6(d GrRq*R/ʾQ@BY<"](nѭ6jQV zֲSYXQe^yb q [L I24!e٪!X& +%H,i$quҒOjCn,Hbz̒EY&k0F q s9cj KO'+e2RG-:( JىzAT"n!W\8ՄbPh21>Eyn-}πaqɱWf\AܞU+B?'3 ɴTh20'}X gܫb ǖ  Qq6:/ wnD,E[6Imt{s1<bG`y/)%׏k?v^E$L-r!N FNa4rGflݗlLV^S#IJqƜYN^Y0 euH67#ܪA_<7ۼgnf9 )pdC V ?i X7 cW% if)ٟp%B98ܢ-Oo&r9J~+ L k5Er]X>y5Vk6^G&|jV̅e8v'*nO8[I 'NWU,ܱ%%wovے>]I9$xα '}Hdq;)RPj$hA{c³xu[r.UrErY|8W8e0߳;7/OCY<0ܚZ\WN\%e2_͉ES,Y,J0䩋Ѧ4Q! '9y f,~TW:$+f8%jcqTwe~a:X0\oOi1߱p!bKT*W% 4xgq<^Rq/bVN1$Tk8DR1dЪnN+YZNG/nLmdrM!7+G\dB!+l%[<3an_qi~3\t{y+ j2H&,m=91Vd$ߎiyLXoq[Dk$5GKcy̙)<5]_%hcqjTխBX`AH3^~#N9HE0$`)Z0-ȱy֌Ħp:#nx̜fXu-4&ũ&&jM!J X*FK!&20Nj&GżjH=*G;T$#URdmKHR889W)I 8H^)B'r۽Yyf֮=c+ٷ*ILv 4#>VoQt3 9+ىdLQ cnjMTTd:Jkn*0KpnPrD_&3/#S%i[wQƆRN̶M^bIVdjKmQ`k]ڏw`1=y-FO",mH||t 7V2^3) Z?cy/.|\le9nrNBݸ1͎WղKRRS{j³K?er=o1, 2FQHv2lѧ;ǎPsI!j2\xnV:\I 8ԩVRyBEE=//$F 3:$,FݏP'XXw%M.ЭHu0ˍDfbj,H#5*R(ac`8Ô~Ei[璉yg2KJĴW(6e[OJg1 bqx2d#@A4 R\wu1 haRʩc \Sp -qu3QahGVhk[^k5x#VG}Ia$H'9ȇˉpdnMנv_>^11qkDI[.T={X ]B<#Ĝ)Jh79|Ziٳ{.Ly1\#ŨČ`qO&RYI:nq2%'SQR,ACRX ni\Ϻrnoiϊ3TRwa-"-R2erv.__u8d2֝J\Z* @l+ϐ87=jxw#{ ׹ju2̩"jFs4>ddDl15Dhq dqNYYE4F,btgZ7fߒ|N3Sax di+-1V!P U` OYA0r,o^,Ra]1Seh#d)#Fǵ8MFA9-ge1EabVg*UI-)HgYX3=c6JQ*"դ̴VpxƑ®ÂgXX_Rƛbշ9",MI(cxKBolH $V.@T :D<%mm=FG4e>HڒmRA%ϓ HUg `mmDO$kvDLPwl d!IyKɠW$cq[:2u U$z\RXHGZ$=7/oM_uG4BPOo6X$bIrm bm?.3^"$,{dZ?<t A5ːeU8V11Ό3vwo G/'gӻ$I,#1v$AOa{wbj0R{fP>!9,M#E#GSv1C$9ɒU)v)w_F񢐅aވV$ DP6>zװ\Ȋv#5 $'AGR! ꄄP? 1E[ 4Y@ xg׶t"V#qƥSRF5nߤ(8WMYJ:|_ۮ32IE]{RH>ivҮh¶ ~!Xlz #^$0v1X* V`OI;'z~orZ2;m ,dzI_/BvtkDĿb7_\ځQَ7w!w?Dv >$P ܄,]Tu QށǥG#$PA֊Z(2AfU!:f|'^ ly,F6Tr׍'Mldׁ}!bC!60 yQն tG:&1S*d'İv? tW}tF2F%2"? OHb'ʏ,6v<e @D]Hd*6 %$;bp) ;y#Mۭh ZBG&B2^)#ILbE ԏB<#ůQ(| bݻ7o^~T\ıPTy?ၐ|#T/~н,[v Z iֵ`Mr,v.hM.tZ%դ /$㑧:j(m6QЁl |F:ěՇc@!R,#/PV@^ގLF(: ϤkƩ%JQ|k/Ƒn((em!p lb:NfV :WJC[} q?wcEUM;U[ׅ~syB9*-FgOA,IcJc KxjdDn(RE:ֵ ²GCcAHDloGpP;E-? 7Vb&Zv6O>k2ח$)zH2Tj֪#Cm&-Gv]H 64v:l7'CP)$"1)$x zaVEAm#L;@%NfAܘ7PIPaNv wl_;>5[O;zP<#zkfRJg䀣{] oVDT1?4` $#$ݵwxa`=yֿgӫr͸BYvv HU?l݋^BКХLF㪡 T)6r;~F dw=c=޵r~DȰ~mDކ)7rJpĐ*X|~cƀ[zU)qԊ 6t; |+C';VJm%}]!cV RQW@ G"h!+i>Y71jkYx?ď okMZ0u(ߖl1 k€=C b;\WW]Ux$xFZ}22x:|=#B0~@ H!uKi$aJ $o{Q@  u?Ze?24aaKf.H>##qS颯c$kcz[>к ?Z1Dlh+okZp4c~DnAn.G*u-}ltGyNΙm#J ݼ 7WN݊`* }9,lYJk?QȵhuKK2|ؾhk|/;:V>>ºv?ܺUh5A!ax,dXH>R ױm\YB> 1ἷM3MZ 7鱪?QYB/㤡vFv"p %@S)]GG+lGS;X1UQToX++2Ge4IafWsXF)mʀ<XebT)en@>[}H_WEE}tHx!fdeRA$@'Y.gZ.λ O܎om3gԕW[*4QmOR@։Ku$NǟC(|yd[kvum/ me+Qߒf)@*O>feI<~_3v,ReXK,@ z.zXU$Embge%eqr~ 1b t7H(~F͗H١ȡb9ґb]FbH=I")YO. R^@ȔuC>7;Y9Jj}hFǒ @ٝ 4?u~R`jķ9APR&:Ը2E5|EUgPc0RY޴y{@ uD 6b{xd5^BzRKEն*7kgNkH?b|1׏>sJ6~QnސhTP?ρz^ L?$zݻ@ y'R*>2y)ԑ`P!{V!K=G}T:;LOw ]7`'Zcg.$cyd#t5Qt/6 ߿T2X2,_|*x3LA2PEODRܤD.1FCz &%i>GZ"`PYh|;:"Ρ 2$ԯwcbB q9ωH|mAl#^MKF(>,#6)"&dE;d1}3ji$=˦g$yQF]$ǎG ٌ[|7aIEdx,hhR^ UK* 4P+"$ꇢ &۫>A$kj@; Wb{1R 8fS㳝wRhh=2*%h$k}=R$Y{V"@A=C5/%1gr쑴@\ ʨ]I`5tCF7!HN]v;hΉ[$ S"dEP"Gq%{Q1$EԶ:BP3EA5 Rz={ѳ leIQQWW~mzϻĒiԗ`1b4m?oe6 y? ϶J*:^cMFꖅx-V԰ξ4]ck ^R өCVU:?m# 2ȲtU$v?dO"$zkR>7U(㍟Cj) YLDUIva`ıRS-x{?c_N2h(CTyh/|reAodڱMoZJ ={ QA"#?Be^ ~ **Ir5`Uzv tK'g̛rH Ɏ9"eX<)u밬u2Ga%H8@#_VDkfqgGEvty* fskMv: #j'C.m $ZLD12H)X^RA ׯdmB-Gi%U~r~A33F:Ax0yK*!ٞ"f^A5_ z=fiFrudxA$J3e2H$1x^ ի>? ǏO.<LnxB,cU֏g6$JrcHbkO Cab|3)rr2>3S1%8Ks@xmd?҂e`fd3dZ_o/kyV{sY3G_r+rY+dk6^|eg?IfsLo{yO?am|#ư8rj; 񸩥Qv4W+R4ˬn/E5z.ŸE6y'bj>?1٣$.e5M s.:j&Jqx1y-=b#V=$^&[wV*%M9>F*60[oXviJQG4Y/vf-ZVs dz #'"Q !Vi)pA9ji-chשGS^[~\B;Ƒ0Y P#TNL ?qm,)UGʖKf-_\?w}w۫5sTxnQ̳vc),[yJFRݳ^Hi]96acF1ǸV5F5k,]%XaҚXm_݁rd|8nLuxP>:ߺ9y좥Y1W=Ó~:2-)7:m՚i_I,DC^)HeIayܽD( Nys8 cv,)L֊#`.=n>VqdFw3EDXEvYnRݩڟ>R|q~DqvVKdLT). nTl60@cc4Ȏ?BG+]ZyYA%Z1,K1"D&Ƶ$Q Y$&/A)4@ GF4 @\*n- ʺ19#ǕdqRye[cB #gX6^qP;0t1~+zD rRt4CLIDVb9`_=ŸpZ㋥b0*9V[K2E L;K4S؍+w=k6"ع#cZ5t12,G{N׿W;z~<;r+#jIc+Zi:2óÑEsTEh36T@I-yd a_RwXʀW2[h%IƜ}{u{8)9Zzy Ս@RLNQa"O%_ SŨ]YxGU<׋XUyOƫ)X]riT\+\BCf;bZ _=JY\LWZF^̭k7yyU',b!R%8J\y%(ܲ)%R<5d2*_=p^^̷̒^.Wag .2؅ݧzQ?}6Uxg52<.\U<1ABHݗ1$\2qv\$/[yc(J\s@ͪ|Ou`,P<2j4[td/"ˍn).O%jȚHE7)q#JKb85 8ZK-er9<$K|BQ̒-C5*ظVfI̡|,ʳ*[T_.*],O:R{i$gR0FdIJ<_nÎya2ǖQ&eX{H]M4*H `]c,:YL1F>Qp*[7k>Ԭ`  $!|3~GI]QO7#\sFpHD+4JW$ڝka(%.Dh>.47^kS;7nOߝNL6.OMϕHzv}#URz C+Ihmg vuY*CKuut4 d]wES~WP۶σ$;;Ȭ%b!֗Cdi^O,HE<(څo@.=(@g oπA@zRc,r'[[.Yc4S"Un3ޭ ;~ րH%|y@W$6XC'}~,D<;PNƀYU%m*E 8*O;&Eq(꯵WQQJnWMgB'l{/ޏ6~ReAPhn]EHJs23'Eh!֔t;))|:@誱,Dov7($r|֔^ȡG\H- w__w7U}*6]o[׆y-u#˰,oT_`3b6e՘Pݿ/ mIoJ2Q4Hdo L8roq|b||/WW&RV ,WMݲ Fv8;FBT> #^`HL]IB{,Ȏ? A>7ԏa,u,"*:EYN7nN+ dt%^,OP9ı`d9RPZ 0'#@&^;=4_$NܝaO:B! nG1W]Я]v'{|l!XՂrR4ߐK67e2 ,=H]#oAT RI'{77ˋYH?"(U7؍)/>AQW$<7)3]P  u /]'X $( L[]VvfT[P9?^u{%A),C# o`PGeD*$-@*Ɖ?qF2,*}I+q $$Y@ޙH|:]% 7zخxhbF룷 >A;Qyַ26^THA:7(*ĩV^ ELqm FB7}IT@)*H!O4Ar_AV?j$lX[?i4N԰u`<66 ]%_/َ vn@Sz2Xn=B٢+5ӧԳ+)Cmk@b1Ď+ vcCj;: 6=YVu]dK.vJxoz: N dw &H(Ux:^*F$MDŪX&Gvk,5u>Wޫ! Ph/o,T 2''`+YK} m+iDc!BI ]ve`Rђ'x] !RUATPWG^#:,#ΓJXoκ3 *R_gP@#m$A `.tw.74 :0&HNP@ zDHdy +*; I;ߐ4YȌIҎrBG<є@ ֭:]6.̧𽙴~BH*Tk,,lLnpUPvumTl?z>X f]/bA#ZdO>a!@$X*['E%(E~? ǩ#+(R7+T}=ibv#?DH l,GZxOdOm*w>[Z}HzP%@ ڷ#ǯeGN'j ݌)p2WbA* > w8I1 $R'7$rB|2oUA(OT[*\k{-|m솂ʹS~Tdb[zIe_@rB>!6I8i^K.ǕQ\# LE5,!5WEAof&?Vm(<Ք P#`:~+oҴ& *)R1](U+I%TCh]+.Xd k#@Iˑ2u{EHH_^jF'bohA$o"SǮX߭qYGb$_ 7S:QmzTX/{AvǑ!׻qR<E3H(XfVCh+4܄HĶϲ£WkkǞ%Bɘ~j⍺k7F;;H27a4A =6Y4hLnŤH?dp(GǡV*SRe>LNYzbcH9!rXZb+1Sgǒ $]A_.Vz/W>MMނYo_ÿE{% #$qԒF@*t7#z$mY1Yx'0ȍ0II>]YP" nʰS>'kk 6$y'{  Be!,d@RFgJOQiD{U4Te6t [X=!(%6 1=X7].`(/o۩@c^ف}u>:zk :=cV=FbqK%]""uF:.Y  FunOe 2 c}ſ5EquU1?>HTn>8OW 'ƨEb_V]WB" -ءV4DSNcL7G*JA;ghقPҐNߢǘ-l-V>]Jml hXZr<Γu1aa`6*~Ur+]<ՙz|f>;(?6J.X7`G]1BH H`U'FBHe;i~Oh{v +vտ"Ă;ukdc7ɋ>/؉-aZKAwoߋ,f5c"AVFS$bhyc(j4$@6B` m (CzIHZdb']To;> Ji/y0 ԿTL:.)dQv7MOY*W:M#E-#)c6mPQ'@A$I`Ge_ۘ#CaruC1w,9(Րk)r:YӫVI:nC:s IEmR .H; v_! tb(=w RmoDk]Zy^ĬqٿT YB" - EХ7Q(4ƾ \߇'!>LQt|wc+1$_pHp?myBk^bbuO9 3Ga/C3%QP]읍_\P65q ZumٽU۳txL??,J@6BmW|2Ib!Ѐ .RGH"d`៧ 5%5[g04Nb?PXB| vEQe"`C'`\tY hN>ߓ5%VT.WL\RBC.ySԛN cʦF`# _wƍ8SJv{RAS1 6ʭ.2ʅA!bt>(S28Dc)~ڷ^V\{/5拦RZH$7]UV$3UR!C%Q-Uե*A FlcF]sջ́%ƲJSa*%ܐGmW.971yEHnj2w/E,Uĕj1+,-Zs:O}!Ҭ0!&NIӦFr&_6]Q Wcq- vNK-: iSB[)<5Ep^!$k !F6XU|my'?wP/z\B3z2 Y:n^[qxlޜ" {-=le;nU4<|^~?eI5؏!K6,L3RmڤYXAL_<~lŌ NqbfhyՒ+5|4KDdlHakc2óyㇻGY\rdugZg#GwR>8B0U[,|xiK҇ W/nG=qN"1^Y\wde)GpC{+R90d2"/[.1gKre8|Q=8 ֩VzlVnC?<1v-c#kjݡ6.qbs`َ]fxv?% |~5gyɎkWL`{/bd UcPr <:h9K8r 5ro!Th<\/Pˉ<^TkԔIq7x\)˟q2f2 #Z&]fJ$r_"1FwT |n.w짶rC)X7w,EO<)56 [;so clZ%gӴ~\.|1F]/~ NKT򴢭c&n!fBGoh-j$R%J/sFo{u7ٌ*9al+r k9 aXUe?%W _ڨXo5:ʼ'ػw9*eeIW&7)J\|l>oX8ӆ`Knxّ{7O'ma'M%߁7-䮮:U5Q5Ds8N7[#c^CaYokl*ѯL`y!VݝP൫`3\R"Í#jbE{RĕcNju6Ww1#:,W+$c&) cHb9 {-|8mۣw.U;q[,G4ڽkEyW~b7SHl*1v0i$FhaikWgJ9]VU:ǾC/bG#1s_z +Skˑsn N-PC4FՁ3㔋ktDKˏ8!?Tc^c.ׯXjTwⰳZ= kϐɈ5K+X%s-S93s.7q>,\~u[V妷YZ(N+eV~*y4xk ??ncq$=бfKK )214ounW#*aWlm^ĆX:̑XiHVTI˛#cO,dJ)VK)۔y1f6QhMZJKV礒F~ʻ8{ܢ}O ͖ T~\ 42k %ճ-xlXVH<3TNXrO<?SFD[#iF%走.W5bLU̥X/f^LN?)_12͚2!| L'C<[rk3krlP+NVwώJBeH5q$&Sh-s\N qQ=xvC#UBKW^+2BWʹ r \mN4R*V6?&7>[2 -O(kx2_)C"ϒ,Rwd̜Pʣm:}GRäiUqU6AECKg]S-g&4hqȱ޴KdkJQ4[[eh9lؓ2{9[FUd;N/編pa)q5+4%zeǭz؇VX:-xqP ah.WJTj>E%{d~U"I`òD%4RT<ņ(B%$er[]qג*Z,^z/l_JZR3f&~BҬfՕDQ]$) +Lka\r%[Pƶ+J ru1eb$3N LHcseVՁ5x|Y/iXBm d&QF8|gu_h2G)|^DH!X'RjչRYY!%xAAf*Xk]}^OoI\^_ NMUkgS, =B䲄SNExj ZBgxWر;99b$~$uƮ&*W6;`]Ȍv )88qxKՎ[zE $-E|9DBҷV~$2r0nKc`֪C$#]ދu&qt12fBv9QvF HSVY;N!.P{ Ksv`4hBrצZMz+!/;~@ 8EVܤ3:.?= Xkr=>ЌGx\2xpOQ7,}ԝaHeZ$ rU: ݋(_Єv3oīAt'ìNe1ۑe([(l-E݄jĵy.r vF{-ady#.0Pʅ{)N>>śQ-dܖ8,;|QC*EFWhG PA2 dH_$2<ІoKbN%[OeB KGJKVJoMw2re'e@⿈B8G(+$'R6K(ũ)wK'Nib5>?1];8T~ayzpg#W1^IqUGiiCōZج,jGr G$2`,XpS"q:I\r"F=^Q Q&{ K\RXb BA4偕fZ0Vy+CG q,d=+e^h,Z r ,Te4ш qF#AnLOfqfek0W\D Ѣ@9v-%YCA~{Z1,c-G<^@2WޥX$܉bxk$ $k %?$Eƣo3_㯋ɼ170"%!buϳ͖9,[ 䯐K.קf#"J\ YNj!)$1.[P_v Omk;ABH6*䝝+v6lˣNi\E9yU5O2Cd;'U{6U Gc4LjI,R[ߎTɓg% j4:Dr>7Va65mϝV{BF$ĚOVP@"c[#w,R+i?sbƏH3H pBC-x,'rWc ẆB!ُa]$kfXee&y0L2KQޕQ.2 8Ar;?-fD-&3G@M 5g68,DEי&i$%7~fHK9 8BT$T -Ѣ%5y³)'cKNF#F:qҲ.F~$@C˛r˔cF2kQ}u& Pō%&V&ߔC!u]E9ݥf,+9PAIT%{4) X[{>tzuglВ45E ;AF#>νY Gl$TH ր+Aޥ6oisx 7h-X?&?_ I$w$$g \yR6˯?I vCD ]2xloZ:+߮b6HֵUVg@ccn[|G.+]m/y'ny?U$"~Gmv̥|ǰuijlzIy6(f. CDN:Ӥ{F!*l{Og$썅׍#$~- TyEc7tc 5Ԃ."с 6IhD hk[~ҪJ6v?aF#@6<HYU=.N <*51WXQ؞$6ǂo?Txx>FzNIIDPbԢ#VhYx=ES XT]߄&@#p@1꤂v㽏 az]eĀ2JRcPC[]T۞(+)fyQ ĒA^C#'`sB. YV6suݜm.1n= 픓tQ%Pyޞ֢3D|3!Xy>XϣR|_P7kn7Rs=~*GoI);Oˢ[#zߕ 4ed $&bS~NdH?mI^qSF;UV`)'~vWς)+qGn]CurlX@  (ւmu`1_, 3Y7#X H  7J$xx+jJ$< մ6HR%EGɵB즏UM^.߶!Bމ+)*a].H7;ڶ,z)=į4?z,BKΤFh=  WJP9i1[}$d,M ?>:μfpY 5=t;6aKyF?zf4^\v6@ژlI`[$|@S䬣Uu}`L !ԃhW_ܺP{'VKoG~3&/CQm2~-(UjQT qTRV/_Rn3Yކ_HAʣIJUk^x:[SxFߍWb2`TFǻ^v m=hd'7~Qh5KTWᶪ&bj%AeT#'%C zrl$#C{^$= $VRBZ_;OvIދG(CHLl1r oeJVDM%ZX/Ǟ|Uvh{qb(_f]]clCiv읟XV,;*tH @ Sk㕜_} \bivA~9E> ^2Q;Vx1D;y%@o:mY؝i'h:7 +1o-:>"@Z"2ڪʱL$zI7b0.6{QV2Bh*Px~%'>|xc׵]nYv);G~%)^HW-uw|G:QI+ZȆhC+#=BI>`CQ;qX!T; tV{Y\#>g6D$1S!?iOAՈ슔jAU&Jp$# PL / 9I Uy6WY#RUڏ>F C0.T/oH)+Tt?xar?j$q q!%3/Bh,GMla<A#v%]K(*SƏZmJ.GyڍvcbV :L1(b u#j: n&y(MyZ7r,;t}QxHXv!#4Ch>6_t*)+v%(%d c+$t-1hH:%f19d_jc@TƮh-l41cYg&ϫt6\|2.9Xδ"H%:>}Zjzv h@Q ,k!r%c+;OwDYiW, -!iuQV;#4WG!<8QUKQQ֛)k]Ky#9b#bF<ؕGL+gdٚI Wㄡ?ZN)v2퉕מVDіwvC @' E֒ZbI;ɱ!V2ZF ! ,.T%6&ec)@$q`|8d2Pd"qnɳǩe"5tlW_uE8i*̵䑥IFi#$oʝ} o%_Yfj+X1Hc(Iuh tI'A\ݙ[Y\('RmԱQ`R<-*rY_eUhnPDZf՚LlS)发ImJŵ%h8Tyj]PY ["(fV?#^^QI5w5Ջ x vԃ,  'H!%He1Hᐓ)#,4f}'''v䉏 Ԛjܑ&ꩴVomWbc$XldaKH/`?Άy:Cf/`X_HVSig/WzMR6$Daƣ}l uVB6+H IvkJPO+4;v 'Ku[^\< +u]IFq;vuʆ+q,LY:"v?;1g#JIҊ\ \UDPjN-NeNѾH+?u~fUWWf*誢lH\@; Lz[23DCT3.;ۯ$]=K-~WT掙Tu%uh̻ {(?`zw`oc:tv u(v%5E\ؚYy%iB#1p/؂ )G~6qF5I#!LA-!vsُRG\>xlWy"q™_QƤ[[\ָ<+3L5NOo@H)*6c{R5>] hVEH@4v ]Kj#ԮX*,ed2;o{%}^܄SAQ. +ʍr_A.4u`3TY * P 䮴QS#ij82H~[7_Nx@(2eP!5qP*$.zibU')QLEгu~[aj?"Q0"'Ԙ>͝EZ {u74i$rp_]S X6%9wB# @(:{ ShDdNTf"YVJXe>!ꧠ1R P)ȍ,KxEb:qyQ!nZīA:"bZDA,ʑ9{.<V7_*B;z :0=duZS@4B 9:`* }:T+0/BY-[C^Dص"?cXkMmƫɡ|'޼u_WO$Gbqiv@$|zP 2 ɵtA^H0W[XQ 4;(Pʀ}vibH&Y%nBBUT؂ m_ܟv'D5SB\ET~|F=Aiz['A*ݹyer"G-*XtH/ Ye7mSv7=r +tU$vM9ZQ(=y}ew>/scƄyypr-l V3POb9FXc1dlqiXi8_u˼W;g79q-Un'xGDbdqV1.K~QQ"~U4 N;ĽkǹN=;S T.Ee2fJʺsG {r]<<1y*C~AqPүY\v1i3yfGױK$xs8_pyXx񆯊\]br͜z_K٭G6xwdKg|`ůLh+"|rYD:(KǒYd!Mg JO-c!Q{d;M\rl7@_P6Q^a&zF] TyUKfS7o5,7[ǰxcʈՍlx k%#UOz~A?LUl%XW;9M`Rc fOBu徘QS=55h8<8gdv9F0(nL'1\S))Zx_rjу-QkF̟8*{=;_#FL8-:_ɔ<#:A0,JRwcx7k{rl l2xNNs 1˕[8\!2qYT<\34\ W=FzHwA3Y _a+ak˭Nxkk>cW!6:wG^{C(9+3 icje -lw Jm?^e#vJ²ׁ/SP%r{bsr֜M%\G^/IWK' 1! xjDB{!l{n'jM&Re6SF-RQ!Tjy|qsq5Զ['ZŖjgE+Y9dbG3Rr,lkeZj: qJXkUכ-j Kz%k-87Fw%VIbZUFdXjC#f@W3y=xYYad^#tIF+ukYj-W!֊ve^/+6k2bDŽ'rctr<ۢ6R-I;QQ&G*coOx6nټ .Õ{8ZbZKQCU9FkF-i%®2sw/^J3 dEx*W+sBXzf?w4uf#<ȑ ]fNj|\yeTlrl-bT"\{7mR[3KB:X&RI[\eb8є WB(ˠ'FOyvUrɳG)nџכ#K)k if|jSLvp"WH[xTс7Z:.Ij͉ɭ;B1AV8_G*Gy'0 `pXZeD )$A1ԥ=>=1hL0cXY ^]8E(LK1?v /ҵ%.߭))uttfZ䶚fԦ|}u l[ Ȋք3t,-;یd!!~[lj?uE IབྷY;bhW\FVFI.G+ffrd:n"УchէNФVDjեc V25bĂP#S5iUgU0ƨ؇PAYEJ8(%mĠ\}D\_0)eK/QI9iML#hZ‹kQTa+Mv'NrmȤ)erL>' ti*6,H*/#6'vb=iCڬjוgm=x1t0Ս4Jk'`k]r,6Tį$= $34+44y/ 05qn>\C8\Ç279n98QZ*ۧܿhÓ&`ٹ.'?;3)G/u҆^a1GTq̯$ʍ&n׉1 |>:KG$$x:-z5{a74 [0 )f I/)Avf-$jpٞʤZm|FC VjLn O6CbaՖj_Kjr?5ȭy,AFSC݌$aNR(Hd(c2TU)E~2gMj pjXS>Bd$zacHJ%W5ruf&r.؂| CZ9:v,߇.F rldJj(}$Q$I$ilO?4/qylX7&fE|A$F[F{zbFyg \dB Ԩu|A9|W֬%UWtxXdؚ%v^gyXmhѰ~EJF"p(JqGcjr;6LdBD&)J]y7:[5j[&4'u'Ҫv$B>X#6^XdW7f\Wgm]WӢ~HC#L|aHI^en9AV tKVFc#$)^X%_RTF^"r"lء9ekۼ3<#9(c*vb y9\ɜu\H&qQ -䓹jnɢ,ŒKyJ9D2 $_#ѷrAņv1R7>>#$V['ruqsEn&i.$<4RЖ[.fTѤfWz2e^IC~:4aE,lEF-^#G] Y5\sQr81|g R6*qXV* ^jrR:ٌE; fH"v`yL9"ԯ _o)BIWƋsb }|GrJCLL5Vۘz댆l,whJX i2q,e.3_b83Ŕ)3ǘѿdLuq>#OG#Ͱt]1wO%$ gKqԪ)?ilL9"6W9&>$ Kk)|LB(k=$l c6(w2oX14(' ka<BAjiR[2/Z8 L)QsXkX8UMbkQܣ2Hep3p0]IeK21)Ng;!feVX断a-zi,'U8oW~ ظ+Pa7%GkczbEb3lm^ltf`9$IgwdE nüŋ痷2Z@Dg7 )0I*,UeM8!hVZ6rck& I`w~mpɑ.^V9QȖg/f-q4>Yie 6*/tHU^< ( Jg-˸64YcfZ%G ?jtH#C'χ&L#Ii$" &i$S1;J.(ޒ4۬PL5 N ,Dz',d]? q}&X\3a4QDUcW]`ʐ"Dhb [)U{g$簸oM C,6|콏z $2 rA,>W/u#g(,7P{t6@{լD12, :U%# iB7Oֺ9jW펊(ʲ30 b^,T.@C~ 8NI#y%,: BA]"2Afgڠ~*b`Ooq_5#V>M/5/fr+-@I2*;!HtSe:$v? zyV1+ŴAm=HeA,",Lу@A`<>A>B'(q B:UK?<_/z$PQ=tXl0$ֽ,]T|?z$uVEU)LwGj4 <_.2+~*] UJ8;ܳ% ?'|S<[-G$O6Be]b^7=`I:;:CT,lP+ꫡ%I'y֏=5[ ;"?E[N6J`hhICs v/7KY HCQZd,[.NvWM$]![/ip9i@RX~|vafn}O:$= bgƫ?%܁,v۳ yQ DFc $; ȳX I),9J#C|֯W·G?{c_>BÀmo޴F,tJ(C?Oj:*OI݂:[oγZ(SB(`*%twD&H˾`ȋ*pl3LSA7K16R)_+&vWV$Df.Z;6}u*bB $._դ BHAG?冄S%6؀ Uc#1#Gr2SJhF; gE#嗯hid`=%F/| [g1DLUEʵҖ.FU5,#vU~Z#c@,'jԒh-K**3< 'hԁ[6I^+G2$!Hb{+d"s\<FzR.̽oz VpLr& Bڒ;dHrٷaA:$jKwzJvqjƺyqe\F$A Rėm|ԮKbi(fU0FbǨҝ5%jyYYu].od(:NTSҐ؅wLY+/8u*8XZbD-ťu&XQY/ViUe[VʿN֣6d4w a"'xkݣF_"~iemy 57 Cd__!齯$h;4GVUm+ ;*a#3$c Ȓ.1AjKJ;qKD['kF YXFV rwJ v !]X~kZ5t,o}W(XHbŁmՎ-+miŹB,U%Q,Lz.}lP;!l(PrxH/%^dJ|m)Wij Vx(2fD7tү]cY5&$KcXabXz0Pj╤#V% .% 9Kbu)T:P~~lfR $QX*4ҿQ'Fkin[{J,Qnr{$ʶ Y+z#?Dǀz<{W@*T S؍옂w9́;/Y{@0 ~o@ 4!(-nˍUhu4Uܮ}祀x\dhuB]h5A>01"}'{<0JN=@i' ' Vf !R d~E~R e\G FFUMg!I'>? rKvU_Wc]9 3,3E4R"+DuJf,n3J;PǞᔳىnd*?gDUUC;E*Ͱo܆&D v`]`R@CS...t__M\O߃_w2"j)elJoǕ?:@>9 Ck+#m, Va;=4f RQt_'D ^㘖: b_E*RVx[F$LM8z![L:! ș_$1cֆZmrnYCvXQզbH*c/x @ }3Rt|yAWB5ջ!eP㯀a[6ƪLZ(,E$;ϓ w^#d'N@!32J/Q)4_KqA.W5`}ZӑqT2?ͼH.`46T5ȕԏL[R= ,t`WHǶ4 Cq$jUaJFbmJB Y1\OcUAm,-9QЪw~* PBTY ܒWM'DkIYŘK81`MQ,`?GOt?9b+$+쒻,/]{ܬ(;(e(WEɌVO-|?i ӫ$MA^ $tE tKC`|4=LHfrTD hD"֤גoO̝Ga݆@ 7G_4HK)\c%wJ05WG!W*O˴J>Bo c&%觩f_ pu[:ȍi/ؠd7 IV㿵]$ݻ9dm(/7Cn0 ~D5rǏeۺw@–Cɪe/G@K\(?sb 823$=VX+YnQ,U ,-<*FxW'%ũRaK^9, .&O J6c=G] gX䱎2 pc<'+cɔ]>]q,a8aBVS[Eu+8w7!/eY; _lu.5*aJ Xe*[ yK[ >1\OVFܥosq\/8|^يܹV#v@2AV@&[-Ajϩ_c_ 2pCunrIQo?(C.F mGy-ȸ~cP{oͰѻmfې2ҧQ˗c,I15CγE3J5"dŏB4q}2R*$Z. 1y14!/.cCc1[\]O-Z. \okc5W׊3,b*jJpbsVpRe 9A*dRd-گ!kN.2Ʈ؂6d::طZGe?u;֒fzWt2tf$vTvR哒rgLbR.1apJ 6DG.Dqp}fu6+F[ a^kQ,~VDQ)?9c2%ЬPhR Yc810VA<5 z.a)%ܤrEb`G<,h'43c㻻8` (ޔGFʜȄK|/uO[TύTl6#;?XhLDa/bVVZ15! +d,uPYT̐ՃQVߎ{FfCdoCrJ،TYLf,jk W'K{_N"U^6_D]*$dF[\E+Yxarb*gRV$R/c r~]CO1lQR[tZ81(^D,UGeuD?Z82S'#Jܹ:)6xa)p#\e%9-#"EmE.)2 *"e1˷\bt7 ZP5ܾjKU8lP/&lBlT,ƲՎ3-}vۮWJ;V&:,{AoS-\9X{2~:갑Qx}N#0XZGٖ I,uG}ƥճxFS)d9o1#ZM5dMexܣQMD"ܥϚm*s)ryM?WxW}Ym3Rcc&\XqĨͶoi#,=l񼼠\'.5 u(A[+e!/s͹xC#EQ,Hm43:ܰY,8r*+c'I`g%<5jK"mj,-فPJfdK,T{bL88%ܔ0vcTgYJ[OcAsj6K* fkJTCi#a*$JXۓwoNJ/H(YG]i1Hgcvt V|uJEcWtG~{^On{xEp\OjLyW+f qji wgV|JŖl,d!41I7Hv IcgyW`2ތgr A#!<ȂHi\wa+W"dh\^&(Su/Wd{[C>;y-淉ZmpR֝jI)k%KpZ V E^-c_N؆oy2%LY`u;$ԣh! e3ty!X1KHH䲉fI-'Eh㐫$w'he;Qĸ1B!-ܚFgFx*Ȍ,H,/Gbvz)GB8<>29Q~"<8a9s%q^R@2> ]f]6ZyrcfgޭbO3!%4{Y`u WlFҜv* z%*RPXMSh\:.]皼p#f3%YcVeb H^".Vr5Ƥ- )#aݓvymcW[]G#vpqRFV Y2唝hׯYg iO#\Js[ʒ:"&w?9r ͉bU 2UڥɗʲCYV9痳P)XԐtOvbnAUjN~EUzQObI^ ᴩ'#(%[}I) =Lq?s2:H>G@e!ݥ\D!kxQv" :m~Fo-q `F$^$ h:e޿ do,I=Ǝ4CGGIho@y=K,9_:%zP,ǍH~+O<_LJo FvHaԀHg!W/`:%IցHo]6IJdj N|*[iנ_ ]W)_Zo*#oHSV/(3bJޝRq Z@uk~&c#4l:3:? k`20WY ?轛}jF+Ġβ/qlt6Dw ~TD<\j+v?Ӯ)*t?|_M2#T"Ƿ㱢>RfB썍Dh ~d~vu](_(VnMI>2׈S%u@eZM4h$;?~)JK*f |:#[k)e Rʼnm^X ;]<A Ip x_"lv"4(RKO,RPŌcE-djO\uZvhCu)ӡi?!P/b@ߒX1I }dѡXڻ v;f%t "܍1ؑd PH X`_ k9IּQ-ƥHN dE,("+_^]j2,km/xUnC2x4#ц w(Yҍs.\u@T9FF{1Jۘ9!Yc%4_L4,hݤ9][O$*AA:RYc\)c$xڭLbJRb'4+_ak 'Fy !Tz ;0co fW=Od ;u!`O* +%uK:)Z)F#`1 ?!xQǒ29n-H?m[ ?﷜ kt7_eY__~:V2~Q't2'_e@6qEV";0=btFƗ}҉BsPS(tޣ/9bF,Bvo `E? $Җ(IuQ*~Q#'h V*淴ך *5 [w%]iB?{'Ml1gF=#Ib !N$lhݲM #,U@"$Of!^ ivXbeu%V`J4O~e`!6.JִNO2^T#,z<*,;#l7aeC**ʀH#٪N#%Y42:xYUGVpΉ)PuAȃ6ҒCo`az㟻*Թ0Slt['sT$ū-U+WT3L~6JM(>J>TGNV# R :+3?'u;Nxc=yd~$@m ҳqbw7aܕ3BGxa#ԒtfBႠ]2M!w<dr.qNAƋ*_82pee_֤ytNqb~%T'3F5`>ԒK1?sq]gC(u!SInH*Kz#)L"ܪOq,B>-m{k[%%sRQuسHzt?Zq KIdĨ;I!ml4dkWI'򥗵¥B=:J:fUd Dc#ͮ>HqZ=+9.YITEaHVٹ]p$HULhW|*I  ;^ E hbAtX ۨR9$es@dxآKBe)}贡mq$QDlG.UOe9_Ē<rXoF5X^)S);;vèPg$^}J7rEZYVRb.OEkVX,>C.|R]I^]z xJ-!յuȜd".T m~{QA$qJ&WBͶ)۰412ߒv/Pl?"=zfƎ1T@#,A20$w?U KQ2( H*\,UF~$hTːjuwu-v3d~۩ x(*;jQ.:3[dR,kv%*T=؂4=26b\5mtY& G-1(A#iUB]?pD2/c \R4rȠE,kv^^=vuA)cG;*`Xӧ7Im`2J?#ur.R8]RbV vR\H.ߥݞӧ㙑FBѫ?R`}{wdVbS EgIHjƌB* XDg_ȍ;fPBf%Tǚ^ m @ּZS'<.ch/UeXbfePgJF c*U\BRx!A5V9x4oRʅ\S3ƎY{3gPz&d44B#H㋹ /+nC&grٕwmDтI1*ɮ}`)VeD3,hd]J+4Kd-Z=bǎBJ1UjוNɔ2RU++ ?aA!_' Xb$L:0_4A A:  qvfrK.سȒ@"9R@ x}B= 5[dy+O*P$m} (?z,%rsPRN!oedI1P<$z٫W1]As#`]h*^k$ =4GK+Oر` zb'b5PK:M+YaDw|Bm b.iXpvU*Xz~@2qƷru-"25;,@jzPͰltaܕU:~|]7>ȠvJA Ao+#|r27RYAI_=A=bBWV*C+`E2 ([|mhJ Ǐu}DcxBO*EM ~ĀTlw*zpQ^6̺w3#:(@2w1-tƲIDcf#JIA`BqMOFYXKHakKH3'BIP RV@>l2\l[UiFE]ӥ2$YR4n4W?;ךeQŝ `ѧ .[;$k%&9if1c~IHYZBP@ $H&1c< S]B?ۑ|qN/r0%`e-HH~[)qx$Z[kݚ()%R/xJmX%c!pꮌܻ΂S)6 U=@S!!t~d':C*u]/Ǟ)Q?j,Z"/Fq7QE֊VjϗƔ?`3)H\oj]tI'BNOmDydI й0!jm Ufv_˪i#E@E_h2du߱FAgrh]0$Ȕ$H>256tOR:+(bNكIE$YW` *;>5,(H` TBkXY_Zp*;2le֘蓨lE9ʰ0A:4ɤQUTY]JC`}Z"3V3wV2%jP&Y*jk]Hw鯺-i޶>5*7a\|q#jCuM+>}3>m3I2:֊ :kc#(S2=&XTQY@~ oömi׊SDR;6ZV@4“jlx`eGrB$24VyrJ,A Ħ^Qς{̹wfbz1\ջ1ޣ3A]ڷ]"5ZGR#K9m/8>ũk%o&S-fTْ27 O+S mq)d>Jzi}~Z+~;ȧ3߷ cC7+eQO-U/r;C#b797:|1ƜVYG9Sr,q4Zܕ9rI!,ej8bA5&Ɯ/qyvR&(dAxQn-MN}rƗKb6乊ю .ܞ:((rqV[Q3khp/uO+L99>w)aRWqz9=q#rÖfh,e|M\xwPR3Sd3{K9J}ܮ<◨|r|@#Sy,g^t_yE{C0g؊lNG!4+#j>9)N ZVlUf%fi3K2O,X̜eirN# ",H{qFd6> .-ݐuq{%p܎\&_)eq9Th8,UsVJqcܥɦ2"E1l8nEG#gc2ty.CCslA *Yx٧2fAi*ag\\/d.[.W-f=--VOJ=ԾOq:Mbkٱէ|\^ʭ6җ#R]ɼiض3K^yKXȎL^(B1*BZxi j̒dҘx4BWsPYmFy120=1ХdVtk Qƺ3ώksw R$IxΡwEjkmOT]܎w`xy<\<"Xs=%9krDĥ;Xine8e'9+9,;|6!Y--e+Uk1WaXፌ`J86 =nY302RDD&Be2_ Ke28飊<[/ٲ]әqY#3SU^HK"1v9]$ǔ_3@pFXȃaR@Itb?cj^3?#GbA᤭V<(5SK.Jqه3-\^3 ldiΥI%dE3H:@^($:;qO^F,Q$['ܺ'O:8"qy'r Wk2 ܸUkEL#j|~5Y._D9|YckѡFSO}r-)1 Z#%iYfy$JH}U0Cd˒ܹ̈E^1qӏ%4%)v|7qNfoI5.CdWf*TF0IB\d=GQxF@/`ub\ɗ&J[Per(G&8E~I4j1dLTRʑ$CHӴFI PKTd*iڧH-)Z̲"*Hqu/^;%/β_qfqM6cn[yEM +Z%΍,"9$:EGws=н'c _a2y?{ Nώc/uf^{)f6=pK)e эeG>R%Ĝڠr)F7o9 Q1jR٥O٣l㋣T,I,,V|;Vo&ZXE7I9,AT~]|٪Xhܔ3wKk95OsaKl $b9CkQ$7h+-j֦el7ft-4i,jnEQ ky`$"dc"6ɕ"')2̒1 [jJEҀsCF95Y.4ӂ)yXč Tf +f 6ثT V ݔЙR4 @Y&IIPO3Ǹ7<{Ks#j7Dy֮>Mi,GFvvf*tqC XgR#bKOג5싎BJĢ2iitU4<1xn7QViMZ(lkIdxj²M#)C4jgOVt=WX:>Odc Eyw3ףYec+Vܲ fGW]H홧6eݾ)^5UrIFŊ#f {m>{ds N ^{Ǘ ZܖE6*)A#|dzxl;Fٳo9 8jrv:%*T55}ѭg3CbG%>b9`LPd=L g$ZC,c3Cg$+R)nS{ugrm'daK1K [rsqZL'2fR'g1L/ 3nfZ BוO2[U՜1Ehd^NW "xݛ\^;33R$8wXW#nyXwx|I@"dx\ݕ[&.eSq~U~K]<{YqڌA&dN1קvu,[e9酖çUf{!jUpېf8:|15)y._i[N=M"A-ˊظbY#IA{vcӌ*x_~s28yM/Vd-g *RI3,:.쩒G㸅[_|!z4 Ȅ̢F GA]l8aH{dX|a~1mD.ء,1r$dI8 R_Ud\aI-vˉ1X u9^ ")U,z;eT*GG7߾2 Sך5Zd~MBl[ڟx=ą޷Zԑлe/=ɫ P%y$I+Ods# =wʲoo_jWc#<# e_~8ܭ*FY/,32$dˍvjL1q,yoފG#(!lnN9NG)^+Fzhf:$U*3bK%hab5gF>}լL y}3=^Ɂ熷{iUX&%Xc'YS2TGx R2Be 4KD:֏#U֗埛{Q%PVU1,/1eOsxog y4&U2WI%%j]PG(Aޟ,qB8F;UT%dxqb{͏%@I dw*ιf=Aҧj 2SIv;VqS]xVdkT&Y*Kyɉe9TV`柱zW&3&ث{1Wyqi%:ol/"qoR_ǫµ&gZ#X*иf Hk8eKX~ɡS;F:-[*{VP"Ijݏܫ@E`E$;;쵅k.<Ư8-&*WƬ0_ŎA)a)Ŕ$2Y2B܈'ql_8%fӏ}0" *dWe1dmIc_%3xW\o,SX,W *nCw. CCPք{~_nrB|YVGZ+V l/ZԙvfU+x&x0^EeƮ&uoMrj OZ#Ҽ^y1ϗ.5os&(22Hl`J2Ûbdq$g&2+˜E'l?Prn'4S8(7#r&\U3"Wl6@NF谼&ߚxcFs υls3NkRXr5ٚ#$-o>?(̘.Y8<As8j]#l).ynb٩Y䦎{ q̍" f,J{ݤՖ8϶9¢JOVOc2yb??tLT푫b ݨ) ]ous'TgjMj/YJXٞX%%/ ~jj1ugeBtiCɞL՜ɭ {t(Ri9S/ku2&Aeghq3r{8Xb3fȌN"ݻnD$ ؗxe>zoq\B/FnL"_60yQpA:cQ<ڎ!^:\'ߩ.J:u7,DdlYN^Y)X@BE>9ȱt^ݮWj2S5!B.]2:0F(&ԣd$h&Q7;([ʱH*,)  $5J)Pno@ē|gI!PR8dpcYdBbw~ex'$ԣM66Bl, t FWS,QA]s} 7K\c% ek)h]ڟp#go ƂU#'Ο͎LJ^89dp@GPK:PKѓBmeta.xmlѯ0+H-5M|k4q&ZڥLLx~@xitUE`|g%K+ *Ө@3Vjhܞ,yVGNޟ9!}}[WH.W9()hZbFvlFv]Z{ tK(ȴ^I``S24|_Q4u *ky(X8u{{}I*'wVx2bƓlxf-KCif2Re8RhL=@LeBNiC|ߺO-Y>\"p$i<\Ó2u9lh~IFiCvJK9"|뇚W" J$ zѲ, "eNn7oPKLױPKѓB settings.xmlZMs8H8 P S` $ 0l+A!~e>f3 N[*%$|u9dQr俨$.)q-}~F.,y }H%B!B^Zw)!#% 8%|K-XJٺe)S!R.Eї e\X,Vۡ.%hrת(?kcV4Uέ\)|QDo.6ͱiwTY#Og q`34PbNDRVos|>l}К9dM?%"\@oWJF[b1ގ\0J9Y#Ho : !u(GB&(@y"r2B`$w?L 7+J3E_۟ 4+tI{L[[X3SNM*S)%ՈA-]5WL`̭oMiTghJ1D) {^-(ȧWg>3 }fZ:$}3EԽZIBYf>y\F1vK]_vj * Ymp;D ]?·෩ |9FRL4q•R \ĤQlʬh2@oow(=⦢G@Ч&NtnMY?3 &ry#h~D^xhx)7Y {KN%͕o !.uϔE ^f:L5`s":r;:@* .ğ"?$ߥ9 NWSoV87xH,0֟:Y/ FoPsWGP#ޛ Z aUX"ܭ8u O >ݼÛ3ysPןn=sȬ긧/5c\=l@>knfBYȌ=?WqQO)c$cX\p#3vw{_iOE=ŧ֓Ŧ#cqa{߯WM㢞RSIbёdMa9uwZ^Z׮W] j!Rk~ۯnoݙm.:.y P3ʇY|gj=\ֿqv.Q1]ȢSSNx@ {62;v4o V (Uaan-(-X†]+n^]i<_ ہp$aa3YvF?:4%1ttzm99-B0E9mӢi9vt99mC<99M;7 ӒiN"rZ9M;yN 991s:ӹ/'zvrT0>Wz('9n!7$>d+~XB& 9о>"ghFZWA%y*q*_ x/&.PKM JLPKѓB content.xml[m۸_aТN%{H ЯDL$Q 鵝_C(ee6v<3~&q3Nhzw~> H7k/w4  NTH|,]P _(|!pZH-LSŭ)-V5YloY1C’jVHIi$z_ -l{ 6ހvFK~ɗY1Ƹ M@mI^RNv h/X`21)2ejή舛bL1S ڧ #aPWKڒ5Wds#;opoNoIv~qr96pXQ|#·KfU>+%{TqmnhvI[!`?wyA.ɽ}ĀZY0$$UtSTXNavp^Ȉ="`6@cQ}B)?o( x]hjN7?֧}bG+Lt-L,ZOҘxB$ZŒaZbX2P.4j d+fswLR5)p9Nsxt -s9:^7'ti<ou+w*u`s4&k1k~C[WѴ0s}4U7T0wyPhc.`Eb8YȲ~Y:ʫ,x/򼹎Fѳvf6&fFWuxgbs^F{; i9h9Om~-{7;-z|w?W}T5?F7~@mgh7M/Y޲(8o3dpdp:V?ԓ3,_!z'`Ғ^`2Nm5n8=@.gΤqrO\A>T&%@WiX:;`fF^z<<cLuǕ.60g~cn~;s{;f]zO3* ӿ= mϏK->>ɯy׽RK%U)LU1U;?PKεm=PKѓBObject 1/meta.xmlAo [ӴDmNMvْM ~)-M#GTepF(3GJy{}7d?xT4PBǃU7l,eިi^aÜ`F=9|иs)ɹt]uv :R\,qHh bR;W2\|qKJ]X)[{:ĉ[w7$!$ͭS:9"N4q]$ӯwes$;Y?>jbSu)T1'd7 w[1fMU&A|ͺ}~DbbLjq|.>0#oȖY$Goqs0]R.aӕqɸLږɜ֬)OAV0gCC':~ ).)^뀩bU.*K%hQRݶ aW įee,֭„*<6b!e\eȋV:3C}6:lʚr biccNp=D0#ghmےsN% ˖CƉZ(th݄ρB2mZTm*euCf%Ly ѥMud#NP3QUysvXIDJH:A? 3n))#xwYj֯ot)HLË~JTQӡXÂo2?6%a!qkhXnmZ6t#[WCߝA|ZPK>PKѓBObject 1/styles.xmlR }NNiLw>d291h[LOCW(ͤ8$z@PY0Q)9,\H L'bh<$X4 Ų1pHcj{8TLر -yP](NJkkK+4OKRY7İ_Q Cr6}Tv9`:sM sQĊ~1OgtWEwGDEE|b>Uv=ҡ^J9 En6h&+f@8S\Y_e)t\W_~D H:ylϦY'REqȎc/vwC16C'p6Tj>lMЀbD :7J-u 69NW}=󽽽ttt\]]MMMKKK ¢_obŊgϮ\R~ \dY^}Ջ/rXkuuus)**aKcbbRi\\ ei;s ;O/7mK, fOhVξr劣cee%{~[YYX[[s2FFF7o411ACCcڴi,j'˭~ 7n/7]w \\\\;fnn}@ȹիNaݚ"8aE6؁rssVV:PWsP7\*p :HAڀNg*iii^^^|Wosߵ :HA;hhhQVjjjVVVvvv>ӓO...d娨([[1c6QǗ3Q^h>}C޹sed]]ݽ{?ԙ6Do{ć/g˖-Ǎx~GTʚpبjES~̙4G7 &VXj766`U/^ݝ[N^ icmiiiCw$`DʔQcXK?Cnߟ9"|vN5JHAڀt6 ۔ &Pݦd6!R6U^,MM{@PݦZZZEڄH۔ t6Y|}}srr<==󽼼]]]MMMKKK ¢w]e夤$V! Kە+W֯_/TX:gΜ"(&&0Ž'dSRRwXU,m222Ν{}֤_cKK{>gddtM\z}xR2H +Nb<)xRPqHAڀt6R" RGM: mBԑ5X˖-mѹsDH0;{ynH)udAڀt6 m@i*===X,?RW^ a );; '#v BAAAaaD"5kD?8wOb?PqHAڀt6 b)MM mBmcUD蹂N\8\O5bo@ڄHmHH)uAڀt6 mBQ^^nff}4#`9rСC}#`HUTTl޼5oR #`577c@T@fϞzҥy=?B<==Y&?ZJ*i:HAڀt6R6% R)MMɎ ۴~ ml~Rw=ZK?i{{{v5M6!R6% }DH(z/&HzvAAJ6 qqq"/$$Θ1~pppPj6KcccSSX,f-w555lcccH%33V"kmmm#mЗ"J ;vV'Odm۔)S#m.jLLLL?7 mt6 m@i:HAڀt6 m@i:HAڀt6 m@i:HAڀt6 m@i:HAڀt6 m@i:HAڀt6J۾/ ~4{>T~}Yb|ZOO1>>~ʔ)h ʲ3Y,>v^cEg~8v歙MA l'46N1_:kC=\e1{Xn Eѣ[n.,,0ڽ.<▥5BbY摯}_゘c*~kQc,뛤YEQ[Ǐx=!KP΂|7\I- , sfGi=+D"YnK[qqH{]222jjj>c6_MM-'''005%%eɒ%pklĚ.Vfm/l?>ގ_2^=Oű=7p 65B_HmgKmBVv\W'Y\mq޼y3/[lÆ ,._|ǎ%%%p{U7'qQEuٴqsSf|[ƕ-Zszm52qOηpT9=JO>Q\)===]¢[eʕlTqǏٳݏVSCǚIVjk'G?yZŕGꬳHÖThs毞6j#\nkll466;vJDic]]]EPnԩ6mu떯oHHm^^ٳ \5R{t4 khu(q+v7`ꕔ5TVJMM-//W,wܹ>Qv.Yڸ뿤$vgccoMӆ?ШT< sHAڀt6 m@i:HAڀt;O2 IENDB`PKѓBConfigurations2/popupmenu/PKѓBConfigurations2/images/Bitmaps/PKѓBConfigurations2/toolpanel/PKѓBConfigurations2/statusbar/PKѓBConfigurations2/progressbar/PKѓBConfigurations2/toolbar/PKѓBConfigurations2/menubar/PKѓBConfigurations2/floater/PKѓB'Configurations2/accelerator/current.xmlPKPKѓB styles.xmlYo6})H%ih$P)MG[s_lǹ.I 1V*P{~ W7"m^8)c2>.OW,MiLUAJD@ݼ*QF K*DF*'eWܖVd klG?L?ـ҉۩ S6Ux's2cExo|D7q *}}y;lAjƶM*⁈`O긜-ӉM696qfP9OyҖ-Z 毷oq%gilXP>ݖg5jE\ގ·*"ZxQ'Fa%O}&7ܼa;"e]ǢD玸 % >`&o,dKʨ[C>-&rUka֒"vĚ7cw1PiV"*;yJwN9!ɄT(kP~Pz o3QK{Q:g֌_DsJ_k+m285?GǨ;x*չ[^^Ԩ4 >Y2;r ||ڹ"z(j|w)?j`yyagOتڜa)̐fvMO|1\_,9XWY`~ ~epQ2q,wFN?FDWI{7>SIc {N˚6Z&C0ZIau|+"W)_tr>Lf;#1Z s^IQD߁??TPRUM_Qu]^+No/O: >ZI7ߓ?堛'WyGNj*NR#m K2OZ8rvoW; zYrQGC[8R)0MJ1^tbrEOCwȘX~.PK)#PKѓBl9..mimetypePKѓB:-TPictures/1000000000000400000003002386D867.jpgPKѓBLױJmeta.xmlPKѓBGO+ 1settings.xmlPKѓBM JLObjectReplacements/Object 1PKѓBεm= content.xmlPKѓBGo"LObject 1/meta.xmlPKѓB>Object 1/content.xmlPKѓB!&f Object 1/styles.xmlPKѓB Y Thumbnails/thumbnail.pngPKѓB Configurations2/popupmenu/PKѓB Configurations2/images/Bitmaps/PKѓB# Configurations2/toolpanel/PKѓB[ Configurations2/statusbar/PKѓB Configurations2/progressbar/PKѓB Configurations2/toolbar/PKѓB Configurations2/menubar/PKѓB9 Configurations2/floater/PKѓB'o Configurations2/accelerator/current.xmlPKѓB+4$Z  styles.xmlPKѓB)# META-INF/manifest.xmlPK liborcus-0.9.2/test/ods/formatted-text/0000755000175000017500000000000012540654317016532 5ustar renereneliborcus-0.9.2/test/ods/formatted-text/bold-and-italic.ods0000644000175000017500000003141212535701144022160 0ustar renerenePKMBl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPKMB~Thumbnails/thumbnail.pngPNG  IHDRU&IDATxyTǟ\s+$=Fᎂ[ d"|R;bK&eQ65%4@=YHn *(>0>ޯ?8wsygL-*@BKN:Vx2Tlٲ[%hŏfRveʕbrrɓx|||Pxxx\\\qq ,XK,),,0`)+)R_ܚ5kvI!CTKJJzą 7&&fEEEȎ?3_PPpԩ ^znݺ+Qfƍ6rQ+ 3/_E";ϯ"׮]9l0q9;;CtuSrM\U'Qk|htY83HXd&~P3e Jܪ +}%V1͔oZ7o/lAtf)P$==}ȑ𵂃&+!*퍿۶m_۶maaa.74{(ҥK3gΜ>}zxx6T!7WW_5 ֭߿Ν;ֲk#^VP _ccca-[Ը+(+Y\oPvz]4wѯ_?Ά-((@ކ V?e_p! GAiwww P/74";vd x#իo߾5b%X=nnn?e_~6-[DV-0ڵj'9nxABl-" J$Q!_ae~^^@jŰbGYΝ;->C(Ԗ׹~8jԨ/"::믿_mrYz~gٱcbR_/^8ڷoՎnKu_pttl׮.oƍWd@1c_,ݺu+((HMM>|VК5kbbbT1tpK/q߿ Bo\—_~i̡zj1ƌ1.ffLfm숐rx}%D'|R?jug}ڠ ;vD_~7ӆd5lχq[m@x߾}QQQe }am;%5)SDDDtj>_fΜYCYu[  ⣬ѣG9ra`{P?lٲcb1//ر^zsG~1cTf4h}:tܶm[>}m=M6yyyad9U`jjŋU5rssadHHvvvO<9uTTȿxbpuց_XS5=Lpb~N:a ۷oBBޫW6mtڵI&Grwk!s֭V}wШsΐ&33SV CA~´i`E&ȰG}~эjpG ƍ۲eZtRڣG''ݻ/ZHKvz+jR \9r$EM6Eo]j<ڳgOטՎ?}v| bV@@@f?mV w^hj,Ф뼪a 0EH#$#vM` lNNI 纯E87o\i:o<į\SO[8q1T@!J!h]z衖$%%}ǶCvBCC- 4}UՀ3f̀ШB)nnn׬YfQ臠2Z={6z8թSf͚iO'.7jDOX-H@mPYE*e3Vs'Ew6vJj/ DH_x^nufrSm+ Uk*xQm+ UkzQ+ֿBĈ ǫ-VVbG6^i?Ʒb#5|^>>>pΚ5 +[U|vnYSsMcJ[ъ+5ZԹHu> Yق5ɓ'[k*㕶Zs,OkҽFH :WlpqjdUOg556ioeU@yeBV% ةߪs˚[m-x{mY#5IW" J$A_$+}%DHIW" J$A_$+}%D|5N"UkqriڷoߴiӲclll=^GGG駪J{UM8f)~N:8p̟?駟.))ywΝWVӧOjܹsǎ{+Wi'Յu_o̞=>))wއC|zׯ_#hʕ/^oӧ[j`7}MPߕ!U"( LgϞɓ'#॥Թk.͛'1ۙ3g,ΕFVVܱcGݺuQv{I&hqj:t6lƽx{{K@/"##C6l@+4_ ^c=nݺΝ;jպt˗?m06Aevr|0ab "z'$ؾ}HWBbtTXX?ӠAW^yEr BiiU`̘1EivZqwtq%lݲJTFQt\S64MˮzC]Jhr]Qҟ k2+ayUͮߕ̆jJyЏu4JY#Ԛrh96Pghl;2>d3tCwM|  ./ Fh5GZ[CFMo%LR!)1 )B;q:#!fyxJNCnP([FE=)eg8di*t +M@& ɟ{a5\ʙu[ Q$E-:QWDs:E;ܚҨоv(,X#h܍I+~Z9gQ#xp5X@Ef2q*dncy#f]矷cT}!9F5(lw7|ݾzF ^G0v{>>꩑+]ڞ{ԫW ;/z^##@׫jnK;=RkZն+-Ӟ{}jvnnj_UnNJ:XoISM*SNSNӬG#{uR >"O"O,V|.&}H.PKgRPKMB content.xmlZo6_ahYv$^0l@3lKTesDlg$Sе-Ƽ}G:7ov)lgp4Hfߠg7wM^;?q*y%vh$Tu%@Ӑ>㠋}2\Tݸ28Q#b1 ^Wѥt RR\vMC+J@TE6XPSao).&{3>9_pv5R6(IOWXw:oIW)سZ ᨣ2r4?E<>'7+lXq(-ED>_ ߣ%Jb X:qqOext5^c苜ۖeeIzqMjj \Hxhrٕ(1D p#^-0r"rkڻY~M [:;ILeci[)YNp@)A*H-bҷc%B_T5LrbGu NgN3Xk_@sU 0 LI#XQy4Hӌ$0WZl5j8Z` ¨T-gYhZ7 g.DV8t+tַFvkzb4QC}UC;:_E1U'ݻ5KJ_INFщȣF穡p8τTf+KW\gtIܗ&{{t0U%/׃p<~=|N7'>]gJ=LN%zƹ i$}( K?rIR7Z_ f IU7RLg/K+Lh#FNYxNjTe~>]~NEb$NxU0[\s}u^EwH]xT=\73$nKp69Yeݔ'OySTr؝C\󂞿ZPK]D%PKMB styles.xml\]o8}_aXF?ؓ83bbDl%Q8KRO+;ӶAS佇W0P]3{<"<W?>.׫]d1wHD$A(YʫGK,#d)%I5ZK5.Qumւ܉m->26[{6|ͺ6Kfea-yqx#Dnw1[bTm[(+ϵH@`9Vf'mMmxCxghY9I•֑٦[3n yTzݩ2̶!Ao{^XҶi9Lmmgz+w'=gzjTn.qցvJg\$f\䎬3ɗFAR=ܙZlaѠ[Jv Z֎RF~6plKK݋-`ͶńSYlY衰d*uHj6Rm[d5=i]<RI^<ҟsWp@o8`g&! C> "_IRpabNVQF#7~1K~,§uggaťD1>Dt􎺜~%u3]GjiΈX< ͓S_D. qfc} 9B.($W #&G2ϲ4&Hqk po$R.a?>] 9l~2&0}[䮽hC]UzեNFsl Syس[V2-|K5܇7,E 3[/.18@q,KƓېFF|*k}ζەػB2n"bK {^G)mW(Y}|jB̋!Y'!`D w:DV 4! rS Ъ Χ }R7ۇ)yȪ6\d)FF3Ёlo[OiA4ltIɹe4 гzҷip(t ϵӓAB( i{gEiK-2>ցSF&>^ɛQv xis 4tǵorO{5'S)_(0 kĦQ6<,  aŰ@ψl[/1 V4"8U,GboPMcgiJL'+;N, Qm=)r7WNϺoľSaC{[if5+jLkk>Ͼ:U >Mt'4 I[ ̙w8aLvԓꨵHUqLzSNgU[W9F]%-[٩HАV25mfdyd: ͦ }gaWJӏ!4vQVy{BL՜m5{s Ok,dU4OMC31D,)`cON֬^ٶ~l;B9wnz]ˎ/gBT?yu+x4R,P_-.; ye???J~`=*j>-NFOԤRVfRNHMHYUPK hXPKMBmeta.xml]o0٭k'j`BbH\U}\;~{A0i9y׎q=8t@QFXf_z0iEOiQ + ߁gA0[FXfQS9je6r8 I)*#WNה4Ttl_CUl?Ѩ›е]F48) DvHbB8+8FIށg(N0ʨT|F23)^ѯW1 h:ti(Oʡ7px^1eemP N|HF;ed9%p@FRi4kl,@0,KW?tBmaQ%J4!?h&mͮtUH+\zpXZ Y9zS{4DT81\éݵ<㼫EfZ <_s=*bao5z{58[;99;wۤ}˗g͚f͚3g/|O<1{]vZp?o.5|۾n:ݽ{wOOOII-_Ⱥ(..޿}ݑ+V<3<ݻzŋ>}nӦMV7l0<<|ȑWl k8FGGyqؼys?Ӄ>?}ݗtuq!{ᰋ;ݖ/^tp,\n 3s ?cz{vW^^we˖G&]M$99?##|czwņ[d!}W^xH$_O/Y^?s/BMMMZXXhZα1w Ǻu&\&3gu=m9{-n˄8^o)--GD_Ár3MЫq@"H8 $Dq@"H8 $D89>0tIc41E^;v/o6)8qD0<~4m>FSűrUVMc41E^[l)**:x`ҕ[i|&ȋ .\pc41E|+ 8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 yqD"q~ yqa#)q~JaaaGGGqqqjjѣGGFF@ PRRrСP(X]]'9$oW뫯'ɓ999քwƌccc\FGGڂА${\7Uk +??&[]`UߟA' /ڭ}񯲲惢Z1//N46Oٳgڵsql;455nԉNj#Q𵴴D;;;[Úv2Aŝ(CEq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $D8jjj"۔uܹSNۖX1-0k,[̌GaaaGGGqqqjjѣGGFFJJJ:TPPޞfP(X]]kV,yY)WTTɜk;cƌÇ[.mmm`phh^]ZZb (uwwډMn-ڂϷIV,X`gddr}6n%JRRRjkkF{ DcĞ={֮];gˎζKSSSFyqoEe^lWaM|/Fq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $Dq@"H8 $/H$2>>6---=޽{m`,LjV8233c765N+K,垞>$ċk駟vww\r׮]@^@-++Bb̋+/777lD|+ 8 O(IENDB`PKLB settings.xmlMs<@RxB mf0I?n^׿;ĵ8` 첻]w!l@H|dOzV>u}kՊz!pՕ";z9N>=̓O?ȍ}|Bs#F P6g^Ҿ0P[t_2uy }[N[v^S䶛 %*aBSZzOX\湺w p7䣠崽Dd@5V"jrjQ7[+K5%GO cK"jkͿ;:Ryu"L[1?A`|y<7Ae }&|RP - Oj*WDj1룉!Y"љ}&J݆Kd҅rmEI9 ʎncgIImg2?KnU%xNw3n@DY9t)03di5Ys]=E>QAVˆfoКk?\J+2&L~'~sOŤ߆ra$@?+fb)K /*1C73q$gmj=/tIFdyMC)5ڀMm$DG(SG.PK,аPKLB content.xmlYK6WPN܄x {H*Cv6(QֶGg_n!;d匇#g|+/qӒŐHDe7]9O\FnBb\BRZ65!Qgs%dWcْMl[k6XWトPqJ$m8D4rR.~xX`[*\Ƞ|C:$OcmJIowHTSBAT09mj ;W.l޹ ^*S{L}6&rrs6x5֤8M;m{XEUnNFG=.=y,>'B 钯H !Z &8߮ou󫷅`D!IrRCht9JU5me[BCg1(dӋ֘%q?)`Yc )pHdܚTZ?F1EP'*e]<>tsAcC=!A|wE$n8"Wj!P: /e>A]^9TMw#$-,1+灤L|hEgPs(D z[5DJߎpjJ_K.Ӳ0](p Iq6qmg]L2uP?UZFW eq┖"JUM `6[9ԡK|O}}>Mhb\"7xM':fc6^F|q 7Ԋ*ҋ[V㧹ˌ3$B\CAe~7- ԋ7D*-ՃvtK!}Oޑv¾$GIc(%!9' Y$9Y?VT9Vx/U4 Q|)HnRŭƆz&2m> 9W׌;tʿfW3PQ$k<"dcJqpgc_88WX#W:($B Uh~]J׿S C(?,qMbg~yw&Nh/s[Q7qHHP/{[Of A*L{2W'Kg"j$=#UIuf}u͙};z [.SH+eXMo"\{)5PKW=PKLB styles.xmlYmo6_!(C%aMѥ}d$JJI~GRe4H#ȓs}sL\m,p,"Yq߿ͻro?\8&!^G,,RIOL-xfHPZk^ʌhgS5n-QN5V؆-׭#S4lQP/f^Ibq$qwRk?rxWg+a N5* }LZLܷK4)eEzdiD vU^NsTi>]d@p8jl|d̬^FFIs-$4 [`DTk eEnI+TqNSX眉ݥ_`^˿N`* OII2O /&G:aP[#*j{g7C*KGX{s.ݡ`?KR)rfJ=8U%Q%7k68):B6ts%^`^"ܓ`w盵13kL2lz$IO`X4yo3)[0 VWYtS {i6)XLC5wx>Z.W9XE4 Ĝ_ }E8n lȨh?xz) q4+3޼_06͵,GHh:O hSF|PMgjc UCQ ~GLJ+?QvQvOylpHZ'!+5tV XйU O7PZ|#|% X>"ݗ>M~,ԯZժ4cR9iPKlPKLBm|meta.xml Kohei Yoshida2013-04-30T18:05:212013-04-30T18:10:24Kohei YoshidaP0D1LibreOffice/3.6$Linux_X86_64 LibreOffice_project/360m1$Build-304PKLB'Configurations2/accelerator/current.xmlPKPKLBConfigurations2/toolpanel/PKLBConfigurations2/statusbar/PKLBConfigurations2/progressbar/PKLBConfigurations2/toolbar/PKLBConfigurations2/images/Bitmaps/PKLBConfigurations2/popupmenu/PKLBConfigurations2/floater/PKLBConfigurations2/menubar/PKLBMETA-INF/manifest.xmlSn +" 5ҾF ¦j~I6L֛{ٝNElī|þM춫M0: ַi#JF 9hfcl-w*ݳخIs?_&tWc#tuKF:a+ܧt`r8yR| e~ 5R!`ކ0f3K||U^l*PySJvj5_$W Fݿ%k uSL+vlv*9;~v$6YCw??f7R µM|ݟvgMA)I*E1Yt |# =4f>mͿzy/XviM/^2oOKI}wO-:8}tPK13~b@PK< styles.xmlYmo6_a()ɖxaCkPt}c(J&JI~GJb9Z ;N!S|D0ʘ:x 6_$ᔭbIˌisL8׫jr*_I^$czeJ,F6z喪Fܶ6`[lǖjòcU}$cRU{(Vj4 H Z]Q^(:iQERE \@1׆[Hdmih6؉g"WiIRc̍ݼ="3b⦽ ?qgj_~ǡG[!;l淼ﵙL6Uh'ja꧌T`>AK;[* ߄~;)$ۖɨg')S$UzBp_Yw$&MnRmZ [I9tȢ hHʾ=P&c SLS!%RBzB8&ō”`}ؗi8g ]>x [gg<賫}9DA5Dތ汿ůhh}Z)`_@.W{>UOdD7.Arӥ}\tͽ-czpH{G_8(z6o^Kj6_56]uDHt|Nڷ5] ?eb^T8ÍhC!:+u@ׇQk.M5#5 |;bY7 srj@6k)ӎd'PK1DcPK Kohei Yoshida2010-04-03T22:44:072010-04-03T22:45:04Kohei YoshidaPT00H00M59S1OpenOffice.org/3.2$Linux OpenOffice.org_project/320m21$Build-9319PK<Thumbnails/thumbnail.png sb``p ;86 /<]C*漽_k>9%ROFgĄ<;9jh8CR)xB)߽Q_Wوy?ﱿ~ >>G|q1ˋ3?ƲϏ%>YssOLP]Ʋ(㣣ٮ_o\վ ޞRV}{sp;''6;pmݟb[hs߽y~<ڪ_t|~~~ڨүJ畼2vwY>),sf\KO zؽZkk_wU}yqf+z @]״ٙWmoKcDW{br+Q@ZmŇkYֹk{kc{gggW e:2auU{-}_YOnϥ̋\׾NUrsSAWfz]-@#,?>kmR=\V˕q}[&彽եigfJy'{kgq~N޶쫭{ኋi֕g{kKr֫^o&lk~FR)l\ۜssS[[xwU~~~\Eޖ{{Ndѣ#Z )raUllJ~ٙY˻o5|*(rjWW6g7f-\+wUffcvv4k.ȵ[/q}ݓ}|miR3TK[tݴIk*.{ 2[>Y/~\ r ?مU;ɵ8hm:w~=E?:&PKG!PK< settings.xmlZr6+4˔dǍ922:G67\IXJV~C2I咿i32%gx҈>.\6!)iX5.zOY!N&C7􁫺tYùt T: :_svbcɓKFEۚ)8X,v;(v[]]:-j*}"^$dbcFcN[kiY֯9\H~TzQk[ڤ35s*AWa`2Ѝ+8 L䟩fYЭ֣[2E$S%xiKȞx.,}/ER*D;1@S Kohei Yoshida Kohei Yoshida 2013-06-15T21:47:21Z SUSE 10.2625 9525 14355 240 30 False False Numbers Fractions Text 1 1.1 A 2 1.2 B 3 1.3 C 4 1.4 D 5 1.5 E 6 1.6 F One Two Three Four Five
3 9 False False
Empty Sheet
3 1 False False
liborcus-0.9.2/test/xls-xml/basic/check.txt0000644000175000017500000000110412535701145017271 0ustar renereneData/0/0:string:"Numbers" Data/0/2:string:"Fractions" Data/0/4:string:"Text" Data/1/0:numeric:1 Data/1/2:numeric:1.1 Data/1/4:string:"A" Data/2/0:numeric:2 Data/2/2:numeric:1.2 Data/2/4:string:"B" Data/3/0:numeric:3 Data/3/2:numeric:1.3 Data/3/4:string:"C" Data/4/0:numeric:4 Data/4/2:numeric:1.4 Data/4/4:string:"D" Data/5/0:numeric:5 Data/5/2:numeric:1.5 Data/5/4:string:"E" Data/6/0:numeric:6 Data/6/2:numeric:1.6 Data/6/4:string:"F" Data/8/0:string:"One" Data/8/1:string:"Two" Data/8/2:string:"Three" Data/8/3:string:"Four" Data/8/4:string:"Five" 2nd/0/0:string:"Empty Sheet" liborcus-0.9.2/test/xml-mapped/0000755000175000017500000000000012540654316015041 5ustar renereneliborcus-0.9.2/test/xml-mapped/content-basic/0000755000175000017500000000000012540654316017572 5ustar renereneliborcus-0.9.2/test/xml-mapped/content-basic/input.xml0000644000175000017500000000152712535701145021455 0ustar renerene

Simple Data File
1BillClinton456 2DavidCameron323 3BarakObama234 4YoshihikoNoda192 5AngelaMerkel210
2012-08-12
liborcus-0.9.2/test/xml-mapped/content-basic/check.txt0000644000175000017500000000117112535701145021405 0ustar renerenedata/0/0:string:"TOP SECRET" data/1/0:string:"Simple Data File" data/1/2:string:"2012-08-12" data/3/0:string:"id" data/3/1:string:"first" data/3/2:string:"last" data/3/3:string:"score" data/4/0:numeric:1 data/4/1:string:"Bill" data/4/2:string:"Clinton" data/4/3:numeric:456 data/5/0:numeric:2 data/5/1:string:"David" data/5/2:string:"Cameron" data/5/3:numeric:323 data/6/0:numeric:3 data/6/1:string:"Barak" data/6/2:string:"Obama" data/6/3:numeric:234 data/7/0:numeric:4 data/7/1:string:"Yoshihiko" data/7/2:string:"Noda" data/7/3:numeric:192 data/8/0:numeric:5 data/8/1:string:"Angela" data/8/2:string:"Merkel" data/8/3:numeric:210 liborcus-0.9.2/test/xml-mapped/content-basic/map.xml0000644000175000017500000000107712535701145021073 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-basic/0000755000175000017500000000000012540654316020123 5ustar renereneliborcus-0.9.2/test/xml-mapped/attribute-basic/input.xml0000644000175000017500000000122112535701145021775 0ustar renerene
Simple Data File
in out unknown in ask later
Not for distribution
liborcus-0.9.2/test/xml-mapped/attribute-basic/check.txt0000644000175000017500000000144612535701145021743 0ustar renerenedata/0/0:string:"TOP SECRET" data/0/2:numeric:1.1 data/1/0:string:"Simple Data File" data/1/2:string:"2012-08-12" data/3/0:string:"id" data/3/1:string:"first-name" data/3/2:string:"last-name" data/3/3:string:"score" data/3/4:string:"entry" data/4/0:numeric:1 data/4/1:string:"Bill" data/4/2:string:"Clinton" data/4/3:numeric:456 data/4/4:string:"in" data/5/0:numeric:2 data/5/1:string:"David" data/5/2:string:"Cameron" data/5/3:numeric:323 data/5/4:string:"out" data/6/0:numeric:3 data/6/1:string:"Barak" data/6/2:string:"Obama" data/6/3:numeric:234 data/6/4:string:"unknown" data/7/0:numeric:4 data/7/1:string:"Yoshihiko" data/7/2:string:"Noda" data/7/3:numeric:192 data/7/4:string:"in" data/8/0:numeric:5 data/8/1:string:"Angela" data/8/2:string:"Merkel" data/8/3:numeric:210 data/8/4:string:"ask later" liborcus-0.9.2/test/xml-mapped/attribute-basic/map.xml0000644000175000017500000000125712535701145021424 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-range-self-close/0000755000175000017500000000000012540654316022170 5ustar renereneliborcus-0.9.2/test/xml-mapped/attribute-range-self-close/input.xml0000644000175000017500000000060612535701145024050 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-range-self-close/check.txt0000644000175000017500000000104612535701145024004 0ustar renerenedata/3/0:string:"id" data/3/1:string:"first-name" data/3/2:string:"last-name" data/3/3:string:"score" data/4/0:numeric:1 data/4/1:string:"Bill" data/4/2:string:"Clinton" data/4/3:numeric:456 data/5/0:numeric:2 data/5/1:string:"David" data/5/2:string:"Cameron" data/5/3:numeric:323 data/6/0:numeric:3 data/6/1:string:"Barak" data/6/2:string:"Obama" data/6/3:numeric:234 data/7/0:numeric:4 data/7/1:string:"Yoshihiko" data/7/2:string:"Noda" data/7/3:numeric:192 data/8/0:numeric:5 data/8/1:string:"Angela" data/8/2:string:"Merkel" data/8/3:numeric:210 liborcus-0.9.2/test/xml-mapped/attribute-range-self-close/map.xml0000644000175000017500000000052212535701145023463 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-single-element-2/0000755000175000017500000000000012540654316022111 5ustar renereneliborcus-0.9.2/test/xml-mapped/attribute-single-element-2/input.xml0000644000175000017500000000014012535701145023762 0ustar renerene This is not linked liborcus-0.9.2/test/xml-mapped/attribute-single-element-2/check.txt0000644000175000017500000000006212535701145023722 0ustar renerenedata/2/3:numeric:1.1 data/2/4:string:"2012-09-30" liborcus-0.9.2/test/xml-mapped/attribute-single-element-2/map.xml0000644000175000017500000000036212535701145023406 0ustar renerene liborcus-0.9.2/test/xml-mapped/content-namespace/0000755000175000017500000000000012540654316020445 5ustar renereneliborcus-0.9.2/test/xml-mapped/content-namespace/input.xml0000644000175000017500000000143612535701145022327 0ustar renerene Sample data Tokyo 13189000 2011 New York City 8244910 2011 London 8174100 2011 Beijing 20180000 2011 liborcus-0.9.2/test/xml-mapped/content-namespace/check.txt0000644000175000017500000000053512535701145022263 0ustar renerenedata/0/0:string:"Sample data" data/2/0:string:"ns0:city" data/2/1:string:"ns0:population" data/2/2:string:"ns0:year" data/3/0:string:"Tokyo" data/3/1:numeric:1.3189e+07 data/3/2:numeric:2011 data/4/0:string:"New York City" data/4/1:numeric:8.24491e+06 data/4/2:numeric:2011 data/5/0:string:"London" data/5/1:numeric:8.1741e+06 data/5/2:numeric:2011 liborcus-0.9.2/test/xml-mapped/content-namespace/map.xml0000644000175000017500000000067512535701145021751 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-namespace/0000755000175000017500000000000012540654316020776 5ustar renereneliborcus-0.9.2/test/xml-mapped/attribute-namespace/input.xml0000644000175000017500000000063212535701145022655 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-namespace/check.txt0000644000175000017500000000053112535701145022610 0ustar renerenedata/1/1:string:"ns1:date-received" data/1/2:string:"ns1:date-processed" data/1/3:string:"ns1:received-by" data/2/1:string:"2011-01-01" data/2/2:string:"2011-01-03" data/2/3:string:"JKB" data/3/1:string:"2011-01-01" data/3/2:string:"2011-01-04" data/3/3:string:"CJ" data/4/1:string:"2011-12-23" data/4/2:string:"2012-01-01" data/4/3:string:"KY" liborcus-0.9.2/test/xml-mapped/attribute-namespace/map.xml0000644000175000017500000000066412535701145022300 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-single-element/0000755000175000017500000000000012540654316021752 5ustar renereneliborcus-0.9.2/test/xml-mapped/attribute-single-element/input.xml0000644000175000017500000000010312535701145023622 0ustar renerene liborcus-0.9.2/test/xml-mapped/attribute-single-element/check.txt0000644000175000017500000000006212535701145023563 0ustar renerenedata/2/3:numeric:1.1 data/2/4:string:"2012-09-30" liborcus-0.9.2/test/xml-mapped/attribute-single-element/map.xml0000644000175000017500000000036212535701145023247 0ustar renerene liborcus-0.9.2/test/xml-mapped/content-namespace-2/0000755000175000017500000000000012540654316020604 5ustar renereneliborcus-0.9.2/test/xml-mapped/content-namespace-2/input.xml0000644000175000017500000000133712535701145022466 0ustar renerene 2011-01-02 Lunch 6.32 2011-01-03 Lunch 7.45 2011-01-04 Gas 44.35 liborcus-0.9.2/test/xml-mapped/content-namespace-2/check.txt0000644000175000017500000000046712535701145022426 0ustar renerenedata/2/0:string:"ns2:date" data/2/1:string:"ns2:category" data/2/2:string:"ns2:amount" data/3/0:string:"2011-01-02" data/3/1:string:"Lunch" data/3/2:numeric:6.32 data/4/0:string:"2011-01-03" data/4/1:string:"Lunch" data/4/2:numeric:7.45 data/5/0:string:"2011-01-04" data/5/1:string:"Gas" data/5/2:numeric:44.35 liborcus-0.9.2/test/xml-mapped/content-namespace-2/map.xml0000644000175000017500000000077112535701145022105 0ustar renerene liborcus-0.9.2/test/xml-structure/0000755000175000017500000000000012540654316015633 5ustar renereneliborcus-0.9.2/test/xml-structure/basic-2/0000755000175000017500000000000012540654316017053 5ustar renereneliborcus-0.9.2/test/xml-structure/basic-2/input.xml0000644000175000017500000000026112535701145020730 0ustar renerene Thomas Anderson unknown Neo liborcus-0.9.2/test/xml-structure/basic-2/check.txt0000644000175000017500000000005312535701145020664 0ustar renerene/root /root/name /root/age /root/nickname liborcus-0.9.2/test/xml-structure/nested-repeat-1/0000755000175000017500000000000012540654316020531 5ustar renereneliborcus-0.9.2/test/xml-structure/nested-repeat-1/input.xml0000644000175000017500000000063012535701145022406 0ustar renerene liborcus-0.9.2/test/xml-structure/nested-repeat-1/check.txt0000644000175000017500000000037712535701145022353 0ustar renerene/root /root/mode /root/mode/insert[*] /root/mode/insert[*]/command /root/mode/insert[*]/command@name /root/mode/remove[*] /root/mode/remove[*]/command /root/mode/remove[*]/command@name /root/mode/edit /root/mode/edit/command /root/mode/edit/command@name liborcus-0.9.2/test/xml-structure/basic-1/0000755000175000017500000000000012540654316017052 5ustar renereneliborcus-0.9.2/test/xml-structure/basic-1/input.xml0000644000175000017500000000053412535701145020732 0ustar renerene Foo 12 Bah liborcus-0.9.2/test/xml-structure/basic-1/check.txt0000644000175000017500000000007412535701145020666 0ustar renerene/root /root/entry[*] /root/entry[*]/name /root/entry[*]/id liborcus-0.9.2/test/xml-structure/basic-3/0000755000175000017500000000000012540654316017054 5ustar renereneliborcus-0.9.2/test/xml-structure/basic-3/input.xml0000644000175000017500000000067112535701145020736 0ustar renerene 0 Thomas Anderson Neo male 1 Trinity female liborcus-0.9.2/test/xml-structure/basic-3/check.txt0000644000175000017500000000034212535701145020666 0ustar renerene/data /data/entries /data/entries/entry[*] /data/entries/entry[*]/id /data/entries/entry[*]/name /data/entries/entry[*]/name/first /data/entries/entry[*]/name/last /data/entries/entry[*]/nickname /data/entries/entry[*]/gender liborcus-0.9.2/test/xml-structure/namespace-default/0000755000175000017500000000000012540654316021211 5ustar renereneliborcus-0.9.2/test/xml-structure/namespace-default/input.xml0000644000175000017500000000016512535701145023071 0ustar renerene Foo liborcus-0.9.2/test/xml-structure/namespace-default/check.txt0000644000175000017500000000013012535701145023016 0ustar renerenens0="http://test.test.org/" /ns0:root /ns0:root/ns0:entry /ns0:root/ns0:entry/ns0:name liborcus-0.9.2/test/xml-structure/attribute-1/0000755000175000017500000000000012540654316017774 5ustar renereneliborcus-0.9.2/test/xml-structure/attribute-1/input.xml0000644000175000017500000000021112535701145021644 0ustar renerene liborcus-0.9.2/test/xml-structure/attribute-1/check.txt0000644000175000017500000000015512535701145021610 0ustar renerene/root /root@version /root@type /root/entry[*] /root/entry[*]@attr1 /root/entry[*]@attr2 /root/entry[*]@attr3 liborcus-0.9.2/test/xlsx/0000755000175000017500000000000012540654316013773 5ustar renereneliborcus-0.9.2/test/xlsx/borders/0000755000175000017500000000000012540654316015433 5ustar renereneliborcus-0.9.2/test/xlsx/borders/single-cells.xlsx0000644000175000017500000002045112535701145020733 0ustar renerenePK!mYc|[Content_Types].xml (TN07Ho tŸK]|=fmzpKfpq]c-lMXV:`%U8 Yy}/0ic9T.4"gXq/ZN&w\:4̟-JڲRLxoU?HRWUZrrt>PXd>hb #CL _EC |gx$?y%iQ~'ĸ7Nxf4ٝٝӅҹҶ!kC% ̓ȩp@h* !j8f6MlwE޽ƷG?e ]C8tpλPK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!p-xl/_rels/workbook.xml.rels (j0E}=v ٔB!Ėf_@H6s$mw?NNCY_U}ڢфġ+xץx9bi^EMh`Z$U@OͶUcK'{#SgdAa]HrA^GpR:* tcթ ,QOǂRI*x ߊ]~W>@*3' :ҷobN Q2A{a({R`y'J\TVZBYVgR .ǰ4W2؊+E[_p j"V0Q CGL i_1jY NMRWrQP7>$(c]P%VT|/A[^Jhh4an@)Z>\B`oDwtSƌ zZ^?(F(% (d q~j'LL mJcjQ}Pk`0(n{9m`ƳdO4u#yԓ?  `;ndh;j7U~ ׄP۩bC=IMF/>Sjqj$u_̖<8geMe sբ[{gXx=SY_ XaSvc6-s{uXm&ժvYN2z*$_k$Ĺ}"ODad,G'-H@9`K{?eS`8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!;m2KB#xl/worksheets/_rels/sheet1.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!0Rfxl/worksheets/sheet1.xmlMo0 N`@tav+6 -ORߏEH!E>zE߲ *ħD:F5%J*e @ѻ*I`JE4׺zJr(*dBLV=UK`=T^xE]CdO`/s vA$L#yhmBDB] šMUݬf'( ѐ8ǐ:,_("mIp .vo)I ;Q\?|{YJq%(⨚y9%uZPsvœ5(8LL wWwA 8@ x ppζug #pQ-F-ppζMgәF{߿3YY-0uu}ϺGtnlA<& kտ,jPVXXK\gD+h_ CZ7ۇ;t(K |t+!;(nU#`+E p,z&]k#90Ah-vpT-Ba>>DHCBjɸ [cY>vyݗ(PK!ڣh-4'xl/printerSettings/printerSettings1.binN@?Zc4`|/ Y lBw ݚ#z^YlI=7aEƒ@rd 63J1?9~ 8EǴ_ dg-lp71t/_q7uY oIꕹ ~,4ȃR7 +z2TT>J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!jmFkdocProps/core.xml (_O M -tB.Q]bܭݾju>ܐ/vM}uR A(T=E3%Xh-ˋʵ X/E@bx sIp nmGņwPK!KdocProps/app.xml (O0~FN(YKiɡegU"d4&S}{<4x>.BL' X/vȐL( qJD0㈀hk8Xb:cXU"Yp&%[-ohmLJͥa`6wRr6EecQ1)9\Q2A[C-tC[P-X)CcAp њL lá}KLd˱w\Oz7v GZD {wSK3.pl\wT$(yWPK[]Smʫ=ng=MrmPK-!mYc|[Content_Types].xmlPK-!U0#L v_rels/.relsPK-!p-bxl/_rels/workbook.xml.relsPK-!KKxl/workbook.xmlPK-!ո xl/styles.xmlPK-!%S8 xl/theme/theme1.xmlPK-!;m2KB#xl/worksheets/_rels/sheet1.xml.relsPK-!0Rfxl/worksheets/sheet1.xmlPK-!ڣh-4'xl/printerSettings/printerSettings1.binPK-!jmFkdocProps/core.xmlPK-!KxdocProps/app.xmlPK /liborcus-0.9.2/test/xlsx/borders/grid-box.xlsx0000644000175000017500000002253212535701145020067 0ustar renerenePK![Content_Types].xml (Tn0W?DV@8t9H0@, PPH4zIog'mYDhM l洱T^z"BRVYHPGWl#^m19J`…R?*[%a'3g , j]P{%scEJ0"*7V d].:F@i,b 3)1r`4DU $v fD`7H3թ=聹!gk1gО]{&.έ.JՆTt7+4 ΣuU5gHdY7^e}vpZ#~[ :noy`)Iv6c73p>GPK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK! (xl/_rels/workbook.xml.rels (j0 }qne:A[&Q6'o?C@.$}?ЧjU%)Z(8>< ֶҝ`@CqNsD$%襤`)qm.cuy *JwQH"#tOi]|D@7^yc Ql%q'0-J0SF;)|R6')iԣ+.@Dw۽P|P׸v!k_lvfWl/aGK9W9FJgl1%PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!;m2KB#xl/worksheets/_rels/sheet1.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!JK-xl/worksheets/sheet2.xmlPJ0 CMWY",m'm$YW޴eyyo^jĘ E }K} o۫{%5|cusyQ)Ӏ";TVRv@RA}f4E8"nZrV^txV?iqC$UO 3Ȧ0xLf1G⩫v;xC_8W%P">_(ꌕE³Uh hu<P15 'brFlRUz/:h#kTX,9_/PK!8) Ipmm&L^SA̍j7҂X*20HhZm#Ai\*i U+-ilЁpqƹJ# @K$4h'e9ƻ 8g &v-? 1GGik;~X^nJnD~4Δ.`GWt1U{Z=S*JIa YB B 5˿j=Zo^z GU\+04ur6K | $^,Hl@H@7|D_ >B$ٟR,k3u|$kL^8o,ɠav|\vAKr_&4D pz]|+OPK!ڣh-4'xl/printerSettings/printerSettings1.binN@?Zc4`|/ Y lBw ݚ#z^YlI=7aEƒ@rd 63J1?9~ 8EǴ_ dg-lp71t/_q7uY oIꕹ ~,4ȃR7 +z2TT>J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!yJkdocProps/core.xml (_O0MXf/5hUoo c{f]]`*GqDPk!6GOex rYʵ0N PK!'fY ] NrAtaSZdH&L-Rl 8"`!jf.%',V62VpY_I+P 7×վa`n;koMcEϝXTLux`]䱡tC[P-X)Cc t8hMr&cu׾AJwLoX*Ɇٗcv7pqjNWxB<"CR(<b(&G&fLЫs *d1MN@ݫIb졗Fi{S}1ě﬽O`#9F`ή;א!,J݆Rt+BDɅ-F0Ȑ>6n.`-6s5]8':ʿ塕%w9q,U3%.>bwد >RnY9S&oPK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!;Yxl/_rels/workbook.xml.rels (J0nvutW] ӦlLӷ7I-,R}L2}YCl٘ZyiJZ$WWlH7=bH䜔NRb{4RYIBW^i3Mv(CvFUƂYw"胨t5z1E|l@ <0JIL01 ?AoG%0vMa]3K/ܭ 6L^|4Kk08!x|!?PK!o^Wqxl/workbook.xmlRn0W?X"AZT.U8xC,;ߵ#pٝk%Zt8)k.)eNuLq&Ul9>$P6s"l^B@נRhS19E6-\%$QńCMMu$$s-Emi,}d}Hf;xJ_!}uh2C(Ύ~%$zb/M>$׃P\6x.T:L;q-;bzӂ85D;J5,^̆~˷j dޫה?эd=U˙Fe,'e?PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!;m2KB#xl/worksheets/_rels/sheet2.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!ť { xl/worksheets/sheet2.xmlVˎ0W? ̠j&LR'ALmg} 1`Ҫ@}k|*E38X^ԇ|}sK!:OKVӄ]~<3C)<"!G)uEvU*f5VW_~pEikt[UZԤ"*Z e*8 e^`MpOȽg1xwd44Q=3CRhrfxkZ yP秎51x[GtJw8%ϕyJpTT6"Gy3?8TmLdyj}l E@NxBk4 4A6ql(K@K/{j8!8LUAd)qF1s[ΖMKǎz52ێ3^D 6~Ƕb Ɖ1`O>,É ^_H4\H-/.mU5} 'cR3h{?E1l(hOEU~̼¿1S|8v&!\MzR~(jtRW~(I\ڗG|Q] ?~8џ; i<-$"E.gk>VPK!LD xl/worksheets/sheet3.xmlMs0puJ3I g 2m6icQہw% yC&ejՇ6(SO!+zcdUQr:Eh+ y9Ey]6twlGs&a6c]AX f6Js$$zҼ&͢ /7D L {_pف/CylqW)EI3VfGP?>:>7 bDYtc>$/``rboy8WϹ,hEOsǛ?vXcp[ ׸Wj27`eeCnjcƎxz۞Hb*7QAc$W0t >L!J7;,o8 /%SsT"-:>z{kv44~[ SF buc0s+)i2h)\M:dʹД TU!*a>Ztnfq/..)s rCkȡrnAFHPizfK¦5=:ZL]5pʹU~7P5ޑ:_~p}i2H[_vt6cp6R-6]00nԀG}ss޼:N1q\~ *b8z3Ĵ{ }sH|=sm{{UY^~zGvDzb9}q%o g.a]c0(= \/R&PK!l xl/sharedStrings.xmlW[o0~`ySWU!`cCe{7 |l'\MDR\sK|,8ZRmC02UN:WKdFtW4C". *\iA,<<2$3 JѠ׻aT J~t8 KbA&qk|`_|L|$ l!R| tK>0R<%y4um zIqrOE ~7 ВpH>Tqrx艒ƙfNnN8JZIUZl2ڿͱ@h sGd/Д>h1gF.-Dc)mc␦ %ҌՆM ?UUsrむm̛-k9"-u\/FΏ*n=0ݭA{ϪwßyPc3ef"zQ3 lF#5)/0M3̊r|tְN.x` w\S*/rd'zSP< f"Q׈M=Bɿͽ帿ދ5etG-}ǫg븓OPv/'7艳gZr5q:jRXsI8 {-˲K.GZPK!`3 xl/styles.xmlX[o0~x_!M L&mӴf^`%_8]_s%N*J9s3rd`.\ۢr"&=\$ ?+Nj dsώTBT—Xehx'O3J' x;taXI[3X ʑ_g͐3Ufi&F$ΦWŰR)'T:SIQWc_r}{=H< +APj'62P D&hn_, О{쫡O{r.yYpM`%+ ~JËU>OV) r'u ,BT,~.fZ~`2Kʠ7%wPjG޸tݸCO/uOFx4:_&~!*`_6Ùb(95D\ƒ9kb)DIѩfT3;F lEߎapVȤ%ԋoS{358j%JVmͷ,X&sju3NowBc-uwL^f8ԋ sO\ lė%b,WؓxmshX Gnzޫpe\+8jg[$Mj (pxjUGSO0;;DSE [>!ME^ÿΰa:v;끳D Z~ÝAjU^$e `vXsoJ$JML]Rxo Pfs6Ǟcoih|Of3 s-̈AKnDyӳ6ǗU-Gj+הe`\3Y70G2AMpSG4& '^?[Z'{V@[5P.B5E!uA؆PK!ڣh-4'xl/printerSettings/printerSettings1.binN@?Zc4`|/ Y lBw ݚ#z^YlI=7aEƒ@rd 63J1?9~ 8EǴ_ dg-lp71t/_q7uY oIꕹ ~,4ȃR7 +z2TT>J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!Axl/calcChain.xml\n0 E'"!tD -HI@M//oǾڢ/ݒ)jPԏ_. jco_ έ˲(*4u' mbp_8^`i+#u+U+BrDf !?Ad DH=+ yRi$h-󳌵) Z949m ƆUP8tFZw[RN0 XʩDD$g C HkpDkA7ρA9at;gs6{gd.!PTdZ;U^)kj-|#_O <=Esrs[PQ臩e iL˷}9_QJ (2|=/PK!n`docProps/app.xml (k0MAViK H>k9%dd7֧u946k!`e/l2$JeٍIf)aju Y]R*E;hz߀#>"!qGCK;>|C{hE/G_Qvw`"ѭAbe Twh+e"JҢM>fhcBp ֪hنm@WOaؗS67 I8GՔgxJPN!pצ ~::ioT;o雠Q-X%{tz&8Oƽ6l"s>ZE(BG4i1v!ZKÃY 3OOCPK-!ϛ.[Content_Types].xmlPK-!U0#L _rels/.relsPK-!;Yxl/_rels/workbook.xml.relsPK-!o^Wqxl/workbook.xmlPK-!%S xl/theme/theme1.xmlPK-!;m2KB#7xl/worksheets/_rels/sheet2.xml.relsPK-!ť { 9xl/worksheets/sheet2.xmlPK-!LD xl/worksheets/sheet3.xmlPK-!)nxl/worksheets/sheet1.xmlPK-!l xl/sharedStrings.xmlPK-!`3 xl/styles.xmlPK-!ڣh-4'p#xl/printerSettings/printerSettings1.binPK-!A$xl/calcChain.xmlPK-!(Mk&docProps/core.xmlPK-!n`(docProps/app.xmlPKr+liborcus-0.9.2/test/xlsx/background-color/0000755000175000017500000000000012540654316017226 5ustar renereneliborcus-0.9.2/test/xlsx/background-color/standard.xlsx0000644000175000017500000002074412535701145021752 0ustar renerenePK!ȣ4v[Content_Types].xml (Tn0W?DVCUU]-LT b4T4DÌqDl ?t4*f;+@{졗Fio{SmAg`2k? Ly&`Cwvݙ|^zv*uJw}\Y%ACB$qskMmQ6-<+ց_ݥ㸋G|g6 PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!>xl/_rels/workbook.xml.rels (J0nӮ""Ej}Lm2㟾ۅef2k&WP%&w ޚ[= &$W4KH"xR㣔dNҨ9ɨAw(7ey/O ނhm| }Dg"$4FY.2#59鳔Y]bd @%s"ݚ0tB)[ȓPK!1BHPxl/workbook.xmln E}cؑ҇ME(w}캂;3\ k)O&1g`sTږ){[r惴J xno6W!4(ylR@W@ҕoH+PHj#䒢*u*T)U2kϠ*|%qO~aevptZu}Y$۫d@sir/à-l6PK!Y(sxl/sharedStrings.xmllMK1 vփt+zу2vʶ阴~{ "<ɛHQqp.٥\,:3B/?Ɯh",r/R+x!Y^ }dK++λB%P!W,mZbv8xj؉]*FowA,{a19 ~,p%sx4?|PK!;m2KB#xl/worksheets/_rels/sheet1.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!V xl/styles.xmlWmk0>me0 1h*Dz#ЋNvnΧ繓Gn$y s\Ĕp1mN?oR<5FwW﷜{t}.fs4*ahu$%4WbB"klN^"s?#WB"i,fk&Ee5L y):BFCXtFHYQ˶UN P"&)./xcsK~8t_ֲC^?3RԘE[:Ã0ByU@?Iw9ɝZ#B\elԅnӏBuE꺉׋qj!2~bpA*ckBZѻLƃBXnכxo`Lg nxoh`wTH ܀x5MИ⟢ا/%f$87;8.sXuIigd>2̄|5lȫِofC&p 9J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!|EkdocProps/core.xml (N0DHC}_V}PnW PsF)t"xնxt[u+~m>5xr_d|429*z4N04Yed~ֽc:\C MG@Q~PK!5*bdocProps/app.xml (Ao0  90K7btgVc!dWiwN'JwYlNr7~[ȈBĽr14"e)S!jf.%@$T!6ne*k1=Yxd%@1$[2^ק&k4tKbM *~ :%ǢJt+4hs%[2puPKC=!tC[U 6v8h!Z:۰kG;ՈLJ&˱w\ۯzRqm$\#-;_"x:&;6/ {:!hӬ#0xT"igPOi~u!˳=t6_S;PK-!ȣ4v[Content_Types].xmlPK-!U0#L _rels/.relsPK-!>pxl/_rels/workbook.xml.relsPK-!1BHPxl/workbook.xmlPK-!Y(s! xl/sharedStrings.xmlPK-!;m2KB#5 xl/worksheets/_rels/sheet1.xml.relsPK-!%S7 xl/theme/theme1.xmlPK-!V xl/styles.xmlPK-!)Y,:xl/worksheets/sheet1.xmlPK-!ڣh-4'xl/printerSettings/printerSettings1.binPK-!|EkndocProps/core.xmlPK-!5*bdocProps/app.xmlPK &liborcus-0.9.2/test/xlsx/table/0000755000175000017500000000000012540654316015062 5ustar renereneliborcus-0.9.2/test/xlsx/table/table-1.xlsx0000644000175000017500000002203412535701145017225 0ustar renerenePK!_-,[Content_Types].xml (T_O07;,}51G%A?@iеMTކ18b˚u:_.6B`_ip+2$rC!6⾼n"`Ƨ="wRV,BkZʨJ-A^7ROi@ (P5oo̭d_CUZ "j0A cL VT<&ˌiDl ,/l:YT%zV53ȵ`졗Ai{S݂`&5gf. hAwGڛJOF`]wO>CZCX+MZY},i %h&ʀDD5;xoe;{T\58L?V*˳O.,LsHd{_PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!?xl/_rels/workbook.xml.rels (j0 EѾq2}PqfRm~p8Lb}kR:n1\ {$w$ύ $AV%ΒZ g],+0![)YדC=#$7i 3Oq(Cy Fӳp!Br8($2Y3>ĵД>J9C&×G6Da8XE5a4`c'Sii#wkBAO[1/ȳPK!~Ixl/workbook.xmlQMO0 #Y۰ncZ; bΡqhiR%)=Nqd?y{^O"`4$teԇon8ϵh(]W1G[&h4vjc[C: \*ai:KZ.50,8L] LշĂw-WT("^x{%;(Q)B3^9Moy26 < R 3M2h>Ko i`O~Gނ^* .%&v#0>PNqsljPK!xN7xl/sharedStrings.xml\J0н?R]HV@2ވ=a*x*s(0y81\^85ê[+JP6ּQ[βiNfnm`zhOv;98iQi)gzxᩇ0(mxPK!A`#xl/worksheets/_rels/sheet1.xml.relsN0 @HC;IBh.iWn:Ql{v$.,}-"16`C#w`D{ ۛ ͨuHT I5?:'aŦL\;C* jM2wmޕ VL=}s8ov)XpǙ*HsEΡUu?=rT^IZVF=wGҭ>}PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!Įd xl/styles.xmlSj0BF mCa!@Ыl^hdgd;SXOO3ofAlL.`)),68J]DMR$%Jy$*:݇"!zMJ}ڤA6CYm@J XHI3[  g#9WGZ3hC̤%%qX &D67bݘeOU VE__}lKl4W =@<tPCNc7VL)yֹ /YodkYeŹg+7"ϻJzp@o볦9_Z ]Yp'mtXKy/ָX^)$Q ~Γ>LSNQPK!l?xl/worksheets/sheet1.xmlM0H'IU4Z.M&Il]=cun\Zy=ۗ {*ÁO THy %J*e A 4ABBk]/=O%9L D dBLyRTg^xE[RCdO ISB[iܿyhLBDBx/Af5hH(1mx6 QCd{XAQ48D9Onw($I!cM\Ԅ'KJ1d/S%I(cX09)`8x>赆v1, 8tV53:^N0Ĉ+Tqx{19s37!AqWW:ZXN03y`]\ȣ Ԓ;GȧQunfqcpH^&y-3L?ơpSwcq-Pun,Z?~||ï'V4}eƺZ/1"dh0dvEmUXRXockMM4!Z2aӐth&"h*܆vG6瞾PK!pHZxl/tables/table1.xmldn0E 44 D)R&ށ,!) 9b;Қ?OBd6.}qQ\(k -x( xXσgh'C'uZ |@@iZHÙi,gFhRK_+~@Eē3(6B4hS\/zXh241pBE {с`BN_<*!ēaҺvu ts?B50ɰ_oty$%}VvndY!E+{L8FC-:Y"N9.4PK!ڣh-4'xl/printerSettings/printerSettings1.binN@?Zc4`|/ Y lBw ݚ#z^YlI=7aEƒ@rd 63J1?9~ 8EǴ_ dg-lp71t/_q7uY oIꕹ ~,4ȃR7 +z2TT>J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!4xl/calcChain.xml<1 1^azwV QI !;ndۛ''*0"ex>(ig / Lv% .zA(;J˫ZuAY+YQ xګjv@PK!/FkdocProps/core.xml (_O M -sƑKE87w+@ho/Z>997󭪣ON] (͍zS"BL V ځC, ƒ5 X/EM*(A\G l8KK3<0n": ͇{jP$!*@J]:قur0m>FOK*s)坩@FURn5s~ wͧ@ j,%qz*#t{|u)Mf4##P{_PK!o~wdocProps/app.xml (Ak0FFNX%*iaKIgU"d4Swl:=>n{P$KxY?\ 1@!FRH3XK ˁ*!ަU,,}C 9_ C⼥v|Yi1V,x%Ǣbطs%[x% ҸZ4oRLwLd)Dk3 Rca @$f_ť @XD\;$x:&g g+Idqa/:. ivMM} cK MBy/t/&9O=%WPK-!_-,[Content_Types].xmlPK-!U0#L _rels/.relsPK-!?xl/_rels/workbook.xml.relsPK-!~Ixl/workbook.xmlPK-!xN7F xl/sharedStrings.xmlPK-!A`#2 xl/worksheets/_rels/sheet1.xml.relsPK-!%SL xl/theme/theme1.xmlPK-!Įd xl/styles.xmlPK-!l?xl/worksheets/sheet1.xmlPK-!pHZoxl/tables/table1.xmlPK-!ڣh-4'xl/printerSettings/printerSettings1.binPK-!4mxl/calcChain.xmlPK-!/Fk-docProps/core.xmlPK-!o~wdocProps/app.xmlPK` liborcus-0.9.2/test/xlsx/table/autofilter.xlsx0000644000175000017500000002104612535701145020160 0ustar renerenePK!ȣ4v[Content_Types].xml (Tn0W?DVCUU]-LT b4T4DÌqDl ?t4*f;+@{졗Fio{SmAg`2k? Ly&`Cwvݙ|^zv*uJw}\Y%ACB$qskMmQ6-<+ց_ݥ㸋G|g6 PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!>xl/_rels/workbook.xml.rels (J0nӮ""Ej}Lm2㟾ۅef2k&WP%&w ޚ[= &$W4KH"xR㣔dNҨ9ɨAw(7ey/O ނhm| }Dg"$4FY.2#59鳔Y]bd @%s"ݚ0tB)[ȓPK!՘xl/workbook.xml_O MxW׵N&OŘv%{io>sobh4:x<0BMoWZpe4fnӓykØ-#vT7(rE5wcӠؚ{*&rE.\k%eTs',ewը}'|^JMkҽWw^H" *Mv,vRt2(?|L`wʿNy%Irv([{(lZ6 kOS`m_I+\rS $ ݥGwt#ӝIy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!up9 xl/styles.xmlVmk0>:v 0 1h*Dz#Ћ$9vRj''wϽ9IAp0%3_-0r*& Zn12Ȋp%i;j}]jlRB om?El JTŸZiA,,uVSR$x,H&qJZ6j'm^y8ӍJ# H"hx 9ƻNg &vȅ tV=i &|( ABވj!wQ鷾0 >1*F3A;ҍ0wAimj aCa}q$ja}%UY)kYx9ҸD2 eU6㧄c53b 5 "`4V7|RHZ@"7u{U5j6 (ž6/2(|G{-Hc P|ZIr*>R5wa'yqH88d~Bd )@U>2eϣ^zԬE cWF*T.{ p!ԋCL@b\p69B_bSqYOB_eCLS9T69s ,uL΀aq-t–p' ˛Ebo斗Qi,SiYs:[Bq]l s]T60O(; .q'v,N=Dw~]*޹2F5 R)Lr+}ǔNi4ES;ҿPK!ڣh-4'xl/printerSettings/printerSettings1.binN@?Zc4`|/ Y lBw ݚ#z^YlI=7aEƒ@rd 63J1?9~ 8EǴ_ dg-lp71t/_q7uY oIꕹ ~,4ȃR7 +z2TT>J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!K{FkdocProps/core.xml (N0DHC}L8P,N{i蕉S wh|c)A{+Fc۶Q1|Pݮ20iS Dm%8DXS~[|nȀhd(rR idaqIc$[uٌ P{_PK!42docProps/app.xml (Ao0  9P bhbfgMcdחYvO$'JxY ] MsAta_rMdH&8NSl 8"`!jf!%,VM{Yx<% B C⢥ -p=5 SggSXQh+9m%G'+9n+ Lq jiт2tVIb64}5l}9kUz.`aq&?gcap/6>jS%_jkK yMCy Mgi_癒?PK-!ȣ4v[Content_Types].xmlPK-!U0#L _rels/.relsPK-!>pxl/_rels/workbook.xml.relsPK-!՘xl/workbook.xmlPK-! :V xl/sharedStrings.xmlPK-!;m2KB#8 xl/worksheets/_rels/sheet1.xml.relsPK-!%S: xl/theme/theme1.xmlPK-!up9 xl/styles.xmlPK-!Pwxl/worksheets/sheet1.xmlPK-!ڣh-4'Exl/printerSettings/printerSettings1.binPK-!K{FkdocProps/core.xmlPK-!424docProps/app.xmlPK &liborcus-0.9.2/test/xlsx/table/table-2.xlsx0000644000175000017500000002215512535701145017232 0ustar renerenePK!_-,[Content_Types].xml (T_O07;,}51G%A?@iеMTކ18b˚u:_.6B`_ip+2$rC!6⾼n"`Ƨ="wRV,BkZʨJ-A^7ROi@ (P5oo̭d_CUZ "j0A cL VT<&ˌiDl ,/l:YT%zV53ȵ`졗Ai{S݂`&5gf. hAwGڛJOF`]wO>CZCX+MZY},i %h&ʀDD5;xoe;{T\58L?V*˳O.,LsHd{_PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!?xl/_rels/workbook.xml.rels (j0 EѾq2}PqfRm~p8Lb}kR:n1\ {$w$ύ $AV%ΒZ g],+0![)YדC=#$7i 3Oq(Cy Fӳp!Br8($2Y3>ĵД>J9C&×G6Da8XE5a4`c'Sii#wkBAO[1/ȳPK!~oFxl/workbook.xmlN0H5wEդD/.gOiߞqq\+I3HF10ԅR3m_Zpe4fpAn{4]2\Qa4iR[sO=Fȅ}4Qͥa>QbQqOwlR*o7^ӿ ? Qd0ta汕*L' &2%oߒ+Ji: '{Jv>H-LG9Y{UX׏R*4-nWgS/|o =G{uԄ6PnIO^+*HNt2K7ͿPK!xl/sharedStrings.xmldN0 ;M!fOunQ뭑.' ;%O& k\TZvxvnjP_ vwU"z`_niG9)y.t64N{8E'|@<#Zfh,g5ְ2_m%&W&*o >$R)NJJdMPK!A`#xl/worksheets/_rels/sheet1.xml.relsN0 @HC;IBh.iWn:Ql{v$.,}-"16`C#w`D{ ۛ ͨuHT I5?:'aŦL\;C* jM2wmޕ VL=}s8ov)XpǙ*HsEΡUu?=rT^IZVF=wGҭ>}PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!Įd xl/styles.xmlSj0BF mCa!@Ыl^hdgd;SXOO3ofAlL.`)),68J]DMR$%Jy$*:݇"!zMJ}ڤA6CYm@J XHI3[  g#9WGZ3hC̤%%qX &D67bݘeOU VE__}lKl4W =@<tPCNc7VL)yֹ /YodkYeŹg+7"ϻJzp@o볦9_Z ]Yp'mtXKy/ָX^)$Q ~Γ>LSNQPK!xl/worksheets/sheet1.xmlU]O0}&1A[JAS 6(T}pHv[wmA6->Ǿ{ȭ=aFv9Ʒ%$$ K[S"7@D6Ȉ8ٞLIh~r'$M{Uf%$Ż\[m , *,MAG,k@tC69EMks&wdJӏs-GK7 w5Y>]v*Al0cɒ}tq4hg66t|NiE=6@{vwhzjUMJ}8K_=8Fϸϰ~۩{4T~ƫ#3EWFyGAs;FJA4ZjWFA-]נɹ|s fR ''Qvmx|^/ʼn|~y}\z4R &+8`Y ^S!hڪW/W.SJ$0dG"vEYY U 3&Y vr; ޜ<`&] 2\ezf!`PK!$<@xl/tables/table1.xmllQMO@6{JZMLЃ&LEV*(y33Y#>!.Q,—Ro@RT;HPγjiaQU858`qvTY%q|YLe"S׭)Wڨ`dđȓ2 82| A^FYuMcLXЍ]1BKڞ.D=(3Dxs޸`c[at&X%v l: ӦbK❮(Ջ4 }PK!ڣh-4'xl/printerSettings/printerSettings1.binN@?Zc4`|/ Y lBw ݚ#z^YlI=7aEƒ@rd 63J1?9~ 8EǴ_ dg-lp71t/_q7uY oIꕹ ~,4ȃR7 +z2TT>J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!xl/calcChain.xmlDA 0DwoSH]z=@HM )Aƅuff^'&vlIvٴ 8k 0Ug7'@<dc1hTGLA"$yNG9xAR}gDRp݁pȟc\PK!ULkdocProps/core.xml (_K0C{vd m*{с?o![mhoon:9d}]`P2GI$S\]6pRrtE4aQ`O09M0;aM;QN-0 Ha j$Jׁ2rt;fs֋{o`l&j.ϟcW5Tdf:e;U^-)+j/|+_~ ENszsYb'0t$t־c_a|Ifd q2"EϾGPK!o~wdocProps/app.xml (Ak0FFNX%*iaKIgU"d4Swl:=>n{P$KxY?\ 1@!FRH3XK ˁ*!ަU,,}C 9_ C⼥v|Yi1V,x%Ǣbطs%[x% ҸZ4oRLwLd)Dk3 Rca @$f_ť @XD\;$x:&g g+Idqa/:. ivMM} cK MBy/t/&9O=%WPK-!_-,[Content_Types].xmlPK-!U0#L _rels/.relsPK-!?xl/_rels/workbook.xml.relsPK-!~oFxl/workbook.xmlPK-!C xl/sharedStrings.xmlPK-!A`#F xl/worksheets/_rels/sheet1.xml.relsPK-!%S` xl/theme/theme1.xmlPK-!Įd xl/styles.xmlPK-!xl/worksheets/sheet1.xmlPK-!$<@xl/tables/table1.xmlPK-!ڣh-4';xl/printerSettings/printerSettings1.binPK-!xl/calcChain.xmlPK-!ULkxdocProps/core.xmlPK-!o~wdocProps/app.xmlPK liborcus-0.9.2/test/xlsx/raw-values-1/0000755000175000017500000000000012540654316016217 5ustar renereneliborcus-0.9.2/test/xlsx/raw-values-1/check.txt0000644000175000017500000000077712535701145020045 0ustar renereneNum/1/0:numeric:1.1 Num/1/2:numeric:2.1 Num/1/4:numeric:3.1 Num/2/0:numeric:1.2 Num/2/2:numeric:2.2 Num/2/4:numeric:3.2 Num/3/0:numeric:1.3 Num/3/2:numeric:2.3 Num/3/4:numeric:3.3 Num/6/2:numeric:5 Num/6/3:numeric:6 Num/6/4:numeric:7 Text/0/0:string:"A" Text/1/0:string:"B" Text/1/1:string:"D" Text/2/0:string:"C" Text/2/1:string:"E" Text/2/2:string:"G" Text/3/1:string:"F" Text/3/2:string:"H" Text/4/2:string:"I" Text/6/3:string:"Andy" Text/7/3:string:"Bruce" Text/8/3:string:"Charlie" Text/9/3:string:"David" liborcus-0.9.2/test/xlsx/raw-values-1/input.xlsx0000644000175000017500000001767712535701145020315 0ustar renerenePK!}kk[Content_Types].xml (MN0H!%n@5킟%Tؓƪc[g PDQ4f|Wd 9g#Ni9c Fa0Bl>.0j9+c,9.T"gXq/ZOF[.`ck 6R$ ⋨ȇ sK;g{o㚺FV' 1 `+ V&kEΏPӎ<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!JaGxl/_rels/workbook.xml.rels (j0 ѽqP:{)0Mlc?y6У$41f9#u)(ڛε ^OW 3H./6kNOd@"8R`ÃT[4e>KAsc+EY5iQw~ om4]~ ɉ -i^Yy\YD>qW$KS3b2k T>:3[/%s* }+4?rV PK!eW=xl/workbook.xml1O0w$u;M T M|i:vd;\Rd\i+k8L'1049|^2`>#9\zu{l;}Z{b0CB"X ?5U"P鎑 KP(yT eJX0lQmThP@RVBi_1Q[Qg L ^ (9̨-9pM(u8hc1htؑNy%$w.^Jv>(#m~N^!YFc8d#x4+LonTK]~ -mFNcaMFڤjBd[zh2Kb7PK!Įd xl/styles.xmlSj0BF mCa!@Ыl^hdgd;SXOO3ofAlL.`)),68J]DMR$%Jy$*:݇"!zMJ}ڤA6CYm@J XHI3[  g#9WGZ3hC̤%%qX &D67bݘeOU VE__}lKl4W =@<tPCNc7VL)yֹ /YodkYeŹg+7"ϻJzp@o볦9_Z ]Yp'mtXKy/ָX^)$Q ~Γ>LSNQPK!exl/sharedStrings.xmldJ1;l[lJmջ>@LdFc6qTW\4[x?><Ȼ1pC3E]Rg0:^ NN)GWjgSFy@,qԫyէJ5S5)vktFI$%$%Hx&aK&m%vc{w GPK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!Ynxl/worksheets/sheet2.xmlT]o0}`}ҤPAPpƗn^ʤ=D>G\;uƓU+3넮B  _.#78FfuE-[]aM'MހQu_E;?XײM (yZI|A@dW$1tHKNb+yE|*1YXPPzO&{P*-5`J!Fqڟ ʽȦumO!SGF H(A/|;݆QzPyFJVҏ4A^IS2p3ESB:G)s)wYRBCm S:p3`z,^пOS, c YIYyJ%F'a-SP(^Qf\!v(tj]mj!׈to$|)PK!xl/worksheets/sheet1.xmlMo l6]َP{Tm=Q0@v:M4 3%9B&,TkڂtGu\\j ޗ?Gmm:([ιaE4Դ z(ۨB2㡛FTK;<`ijQ'G{?@BP/'~E)FG;&xG^9q5HYk{d`h"\gn,wCjhtD9.men`=R W7Y-Re’x6<: :CZʮmг =Bef'fz zʰ*m2Ϙ72oNtd~y6eu\̭6A|#mx ߸iDBrM;=ꂒvNY1Î4Z?PK!b:BkdocProps/core.xml (KK0dߦ4P؅4@$% kŠs IvI}l4k} 2Ͽr8 bFUG5<,ъ-oG_S >EۂGCG >OV+ d,ke?~he"JѪM>fh-YW!8T4Qdm@glO cq|ˡ!獽sҐSoTwĹ߷s2=\8;Չkw` e3>(iEmT*Ѥ .:d(jy+8j7lT?PK-!}kk[Content_Types].xmlPK-!U0#L v_rels/.relsPK-!JaGbxl/_rels/workbook.xml.relsPK-!eW=xl/workbook.xmlPK-!Įd xl/styles.xmlPK-!e xl/sharedStrings.xmlPK-!%S xl/theme/theme1.xmlPK-!Ynxl/worksheets/sheet2.xmlPK-!xl/worksheets/sheet1.xmlPK-!b:BkdocProps/core.xmlPK-!-83docProps/app.xmlPK liborcus-0.9.2/test/xlsx/date-cell/0000755000175000017500000000000012540654316015625 5ustar renereneliborcus-0.9.2/test/xlsx/date-cell/input.xlsx0000644000175000017500000001743512535701145017713 0ustar renerenePK!XVƏ`[Content_Types].xml (̔MN0H!%nJ?Kؓƪc[gJD5f|MقM KJ]u޲Jg`@_^䫃Lb(+f΃҅ZD k܈5drålLc ZA!>|Hj=+l &7ZHΪo+K-A9+kŮ!ƃm>PXdJ51yz 3ʶ}avL]ؼ9k* s-MoGN TIBpbM ގyu5NC zr\o/xvB8ޝgx_PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!DGxl/_rels/workbook.xml.rels (j0{Ӗ"R !$} n\E3^}PY Y"[ % #1z#g],khE˖Édva0ehЛd:itNID w9}<)qkѐ#8*c i}`̕54ML 7 8s.\ Œ(KMG*Y½)I,(Qeh} >(JwAH")k:62ʊKTS~NW&, C[ FrxZ>@1iJ3Ja.s̳Ƴ'ڇ;l.={ B]Bbc"~ 4gt'zz4QRUQ2H,PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!֩ xl/styles.xmlSj0BF ICaІ@6l^H2xY3{j{F7oތNjv! 8Ӯʸ{"J$x >/7yIkdbO!b}V[iGDV.hbJ ݝ8^wY{bvy|gg ɸ(ڃ '"~J0U0)012q>$H%#RXry'up>w3% r7 b,X߶>tD4N}+-; dό٠vj &\a_z{KfD4ٜKߢM$òK_egՒdJøjjF+%XZ?d+p@ .4V=RU=qYlG4n\͕PK!JK-xl/worksheets/sheet3.xmlPJ0 CMWY",m'm$YW޴eyyo^jĘ E }K} o۫{%5|cusyQ)Ӏ";TVRv@RA}f4E8"nZrV^txV?iqC$UO 3Ȧ0xLf1G⩫v;xC_8W=)!L[xڀ\Hf*xoƎ5 KCq>pXz;`lF"#9ö=3 -HP,׃ρ^8;:Nٜ :17M)!_}XnW P]rF국t"zծxt[l~m>6r_dB429(r<͊8=tf$$[.p!)O"E>!uGPK!nSdocProps/app.xml (Qk0Fm䤣 t $m5ʒ]MO?ƍn/??Izجƻg9i_+!)W*Ȯ'>@$% ’s54 gIvI|l4*E_qʋjeK5-q{ X!X[_FG^|*D d.4,EX(EK4ƶ`oU(G k>)' <5 >NcY^ )8m $"n Yj"rJ3 ΦO^I{ii ުT{CMP | ֞g? >VO!l"rZZE(GXiv&Zc{{>,O5cMoPK-!XVƏ`[Content_Types].xmlPK-!U0#L k_rels/.relsPK-!DGWxl/_rels/workbook.xml.relsPK-!%_qxl/workbook.xmlPK-!%S xl/theme/theme1.xmlPK-!֩ xl/styles.xmlPK-!JK-xl/worksheets/sheet3.xmlPK-!JK-xl/worksheets/sheet2.xmlPK-!TvaAxl/worksheets/sheet1.xmlPK-!f\DkdocProps/core.xmlPK-!nShdocProps/app.xmlPK =liborcus-0.9.2/test/xlsx/formatted-text/0000755000175000017500000000000012540654316016742 5ustar renereneliborcus-0.9.2/test/xlsx/formatted-text/colored-text.xlsx0000644000175000017500000002111412535701145022267 0ustar renerenePK!ȣ4v[Content_Types].xml (Tn0W?DVCUU]-LT b4T4DÌqDl ?t4*f;+@{졗Fio{SmAg`2k? Ly&`Cwvݙ|^zv*uJw}\Y%ACB$qskMmQ6-<+ց_ݥ㸋G|g6 PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!>xl/_rels/workbook.xml.rels (J0nӮ""Ej}Lm2㟾ۅef2k&WP%&w ޚ[= &$W4KH"xR㣔dNҨ9ɨAw(7ey/O ނhm| }Dg"$4FY.2#59鳔Y]bd @%s"ݚ0tB)[ȓPK!0?Mxl/workbook.xmln EhmؑRH55NcGcܙ7ZOt^YA2)Tna`oo֝ukOgPЬOl:u$1C!}j8EPÖ*m&\!|_C.M*jzY‡' $m m[n!ʿM9&;7)/>|OQvP/!eT ' ʀOI:^P5jP"V6n+3-.S ETP*?rX*+W*@(Dѕ(t/9a2ZA)|gO"X4͡Ƹ>}y=~iv>?ڥ +s0u38LR۟;h-^_l ;Bp* :͕+ ]R]' h:Pj밁 r"B)j9nTJ3)bp\2+|g/:͋k'6~ PK!;m2KB#xl/worksheets/_rels/sheet1.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!ӔuHZ xl/styles.xmlVk0~z_-Ke0 Qh{c臑vBAx~pNgݧKR3k`^W\5+>|:**bwu`e3|pEv`2_jm$u04Md[he}QB:+V΢>*HFOڿDb^ m|XIQTaƖ ^Tr ;%$Wxg9<)3\CJ4kIx|#Ȋ/{%,DFѓKm#!],!6| D֋BLz%81 u-G4C+C8Y]q[jSe1)5Sj 7t R;%VT=EBS?>He!*p5y~2!ǿD/anx}US4m+/nb} ZZĂ)ؙ j uX;{;X_P*F/H -+R4CQgS#ZF P[/5Dǎn*[aw5҃&ΒdBv00,pޫbbgeo`*%ݹƊ]ܤ)땗%h.̊6XX,\f[#4Q~ƦᰙPqxڒ@<*\j4+~W/(w% Ր/Z2$K[sf"ϧ<VU7"rM|H 2}ŠJ#P 2Bx(tW:MV.N.K:>JP g/$*\ޥY5}S{ ? pg@uW%wV $N.rFi>#</ru Y9:axJQ@ޛut;2,0\uW7 sЋ~z';H5zz[VjVYi^U)euv3%=e+mK?ޮPK!ڣh-4'xl/printerSettings/printerSettings1.binN@?Zc4`|/ Y lBw ݚ#z^YlI=7aEƒ@rd 63J1?9~ 8EǴ_ dg-lp71t/_q7uY oIꕹ ~,4ȃR7 +z2TT>J5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!'EkdocProps/core.xml (IO0HYf%DͲ_xmHq6ʁ=>PK!_adocProps/app.xml (MO0HwZUŠh+5L ׎Eʅm!_W?EdBe| Pїjb ` K)638vNi+c]; wѾ \=Aj? Mh{>|)-ku۶YCJlkӦb s%Xaƺ6ASA=釶6.V-;S/m!?)Dg3)טް Tcqi~ \ 8G,y$x>%Fg}LP/ûOpxl/_rels/workbook.xml.relsPK-!0?Mxl/workbook.xmlPK-!)GPK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK! (xl/_rels/workbook.xml.rels (j0 }qne:A[&Q6'o?C@.$}?ЧjU%)Z(8>< ֶҝ`@CqNsD$%襤`)qm.cuy :itNQJ w9}<)qkѐ#8*c i}HWp72-hT6hwk-pjߨ,iİ0U%K7e׀' {j:Z,+`{rDx>u%;  k:vNiRMX"7c^l, C[ FrxZ>@10p] _zt8{}=3ݽP3Rv!k_hvfhqTQRUQE4o)PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!;m2KB#xl/worksheets/_rels/sheet1.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!JK-xl/worksheets/sheet2.xmlPJ0 CMWY",m'm$YW޴eyyo^jĘ E }K} o۫{%5|cusyQ)Ӏ";TVRv@RA}f4E8"nZrV^txV?iqC$UO 3Ȧ0xLf1G⩫v;xC_8WdT(h`90Q`qnгuj> ]%Yqˤ.w j-H@CGRVtWT 3|cXxϳ=A8!-td ^>b@o]aH1Xnidmssrx(WEXYʇx([L^Y*ѣAtg*ݣ+|[{,o>ft!"f'e{=9acNšp(K8ng`|Pf (x5N_T.JQ.R%`h2/p&hU!Jx#]}3q&?)'ٖN>eA,}葼I5S+u{ 10Ŕ z2eAYa%,oY o!@Q#x1,~;nwPK!Z}Pw xl/styles.xmlT]0}!l^TaAP m $ew{(/d:s㜦x8;N:&ݎ3I7%uEǣ'ɏ!R}Nk_j$JrVݽpx^mXYe~WEY᱑sGeM ;SGK3>Dr *9.nTܰuz:X(^x`}{ѣf:?DwQY*ALTEBV]eau h#!@ph4Fu+d,SkkI?'|j$t1qŜ_Wev.;~ԚTqS,sXzXqkWJ5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!)FkdocProps/core.xml (_O M -KE87w+@ho/Z>997jON]4!(͍zS"DL  %ځC-ƒ5-X/Emj[5(A\G-l8#dx&gHD#C w8MR`s`P&N% ql:9K|ey8TwU[` Wj)X'Jņ9 _K׻SC ExQFEs~sZ*#iYLUFEN[>BR<'ߣPK!'fY ] NrAtaSZdH&L-Rl 8"`!jf.%',V62VpY_I+P 7×վa`n;koMcEϝXTLux`]䱡tC[P-X)Cc t8hMr&cu׾AJwLoX*Ɇٗcv7pqjNWt6i5lDV,D"5<qFz,m k "RrkBKPN+Zjqg[ 2Y+wBMLDq}̨iKǡ]?wVoέNMUB}%-iփ@\J=IB̺iޛ1"o^AAGc,ER'?_rM?;67PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK! (xl/_rels/workbook.xml.rels (j0 }qne:A[&Q6'o?C@.$}?ЧjU%)Z(8>< ֶҝ`@CqNsD$%襤`)qm.cuy :itNID w9}<)qkѐ#8*c i}`̕54ML 7 8s.\ Œ(KMG*Y½)I,(Qeh} >(JwAH")k:62ʊKTS~NW&, C[ FrxZ>@1iJ3Ja.s̳Ƴ'ڇ;l.={ B]Bbc"~ 4gt'zz4QRUQ2H,PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!JK-xl/worksheets/sheet2.xmlPJ0 CMWY",m'm$YW޴eyyo^jĘ E }K} o۫{%5|cusyQ)Ӏ";TVRv@RA}f4E8"nZrV^txV?iqC$UO 3Ȧ0xLf1G⩫v;xC_8WLSNQPK!yxl/worksheets/sheet1.xmlTM0W|/!$MVRn `-`j;d;6R%{<&yij҃T\1h3)Q9E 1 $E'!U 2*uUVAÔ#:hqatU'6nxKC ٱV$j❢Is3">P7l''5ߡLCPbx6_0! epux)p ڽ$9Xq 4 <5?i J2.؆dGEsp5ql8PN')z9)#~gB}1^['c4&b)~Y?vUc]1@ea׶UJpn/]< H_W$2GߣPK!nSdocProps/app.xml (Qk0Fm䤣 t $m5ʒ]MO?ƍn/??Izجƻg9i_+!)W*Ȯ'>@$% ’s54 gIvI|l4*E_qʋjeK5-q{ X!X[_FG^|*D d.4,EX(EK4ƶ`oU(G k>)' <5 >NcY^ )8m $"n Yj"rJ3 ΦO^I{ii ުT{CMP | ֞g? >VO!l"rZZE(GXiv&Zc{{>,O5cMoPK-!q9+p[Content_Types].xmlPK-!U0#L |_rels/.relsPK-! (hxl/_rels/workbook.xml.relsPK-!%_qxl/workbook.xmlPK-!%S6 xl/theme/theme1.xmlPK-!JK-xl/worksheets/sheet2.xmlPK-!JK-2xl/worksheets/sheet3.xmlPK-!UHP{xl/sharedStrings.xmlPK-!Įd [xl/styles.xmlPK-!y)xl/worksheets/sheet1.xmlPK-!m1DkydocProps/core.xmlPK-!nSdocProps/app.xmlPK liborcus-0.9.2/test/xlsx/formula-simple.xlsx0000644000175000017500000002043412535701145017647 0ustar renerenePK!0wCm[Content_Types].xml (̔AN0EH!%njE%tQ`Icձ-[3Ih$PTD5y3tLٜKJ]m޳Jg!g@6]_MWPŜ1QP ̜K'  kKg#ؘZͦ hR"*{#AgǒE[X{LxoU?\SWZrr[Wֈ*WC8 }Zѣ#bkb'-k fFMXj=|ywnsi*5sZ28f=8ԓ$cvʛ#5jt} N'9ʿEIsan<.w>>PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!3ʭxl/_rels/workbook.xml.rels (j0 }qne:= zGM;XL %^ Iwg'2 (:kZg` H6heLHXrq$@ؿpNJc')=i|dL2([eyՅ'¾^; }J7QԡW"G҈1b0U_)o S7)`K(iիƝ4 8شӢ%c:!<4~qPK!=%_qxl/workbook.xmlRN0#4TM*!@(ěƪcGCڿg*v;ώXjE>:itFЅR2~Q<ׂ+!Gpt__-:c hf$n`8)Ghwk,p*_ ӤRӓGÔ,m ڟD,(Ѿdh(i#›(QG!=~ضo pB%J*zűfb#sH[Pr{2D]mJ0FɅ| [5ŗ u `oi.؟O肍= $ %`IzߒPK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!JK-xl/worksheets/sheet2.xmlPJ0 CMWY",m'm$YW޴eyyo^jĘ E }K} o۫{%5|cusyQ)Ӏ";TVRv@RA}f4E8"nZrV^txV?iqC$UO 3Ȧ0xLf1G⩫v;xC_8WFqp@Z;tdb-;r#^+z!_FNz5=FGbD&}LSNQPK!.xl/calcChain.xmlD 0EfoT-*MZ? -4IIDݙ{L}кh,Iv8/t#zl餐VtvZ NK̀:4caOq-W=4*,$,҅# [F>EG>,򁍻{|X"V}ը~6?-PK! FIkdocProps/core.xml (_O M -ЙEI%jKLBho/Z>997dmSG`2:G4!(-Tzr_y%Eq~ cW@Ҏ6G-؉ A\pv[.pJ7#R@ 5446ρA8wmt;eKG֩u]͆!?/ǡjt+Ȥ`wW)3@$% ’s54 gIvI|l4*E_qʋjeK5-q{ X!X[_FG^|*D d.4,EX(EK4ƶ`oU(G k>)' <5 >NcY^ )8m $"n Yj"rJ3 ΦO^I{ii ުT{CMP | ֞g? >VO!l"rZZE(GXiv&Zc{{>,O5cMoPK-!0wCm[Content_Types].xmlPK-!U0#L z_rels/.relsPK-!3ʭfxl/_rels/workbook.xml.relsPK-!=%_qxl/workbook.xmlPK-!%S3 xl/theme/theme1.xmlPK-!JK-xl/worksheets/sheet2.xmlPK-!JK-/xl/worksheets/sheet3.xmlPK-!%Axxl/worksheets/sheet1.xmlPK-!Įd xl/styles.xmlPK-!.xl/calcChain.xmlPK-! FIkdocProps/core.xmlPK-!nS)docProps/app.xmlPK liborcus-0.9.2/test/xlsx/revision/0000755000175000017500000000000012540654316015631 5ustar renereneliborcus-0.9.2/test/xlsx/revision/cell-change-basic.xlsx0000755000175000017500000003606612535701145022005 0ustar renerenePK!}F [Content_Types].xml (̖N0M|A1 /PQj{` ]lQ"27kt==Ya)f8mtJQƞ7s`V ,dl.&4b(s(΃ F 9#fKg#؈v`(&&&3 `%+c{DʧV4RY\{<" 7:={ EA|f g"(p%(''E E@(baҪM j09\_%#Gp#z%̖ 875v!9c )jxC #{9`˔|Qw4V&Y2Rn^sdwsĹD"ԝi҆0:' op瑊#,rvÓaUlWTnVh@YZ)PyUu_PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK! yLxl/_rels/workbook.xml.rels (n0 U#6GqaRVI6~+-H(DT9*Z*ND<2iD7"":hLIgW,K5EES"r')IX L+kc+pL֠6 iO{Yh&.R_kVY /Fm+Z -fXwaxj’3erDt)Me샹 T9R>QHnK72 `&!a(駳'Ys%&߆wl/ nB<1$7RϞX _kiGYPK!Nemxl/workbook.xmlSM0W|$DXѲRRztXvmq =7(ك\w%*]s+鷧U0:j&fm^~hB@ْ6ε0U;݂69L.VI&QqEO S?z,uIPDb@0ۆg[.$}fC%0xS0]wQ4"ѐ W&IފgOqU־Yɡ5%M8ƞNOw3Yf= k^Woj`lcpN_?ѣ+4tRؓcKZ嗾4˓Nɜ}-| p]@kFԊ R뼰_"c҇ E' YtMr`L}otwJ#ۛYa**~OV?ePK!bmxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ_^'܉M01UJS#]flmʒgD^< dB[_WE)*k;ZxO(c5g4 h܇A:I~KBxԙ \ YWQB@^4@.hKik<ʞ6b+jΎ9#U`δuM֯DAaVB[͈f-WY؜j0[:X ~;Qㅋt >z/fʒ"Z x Zp;+e{/eP;,.&'Qk5q&pT(KLb} Sd›L17 jpaS! 35'+ZzQ TIIvt]K&⫢ #v5-|#4b3q:TA1pa*~9mm34銗bg1KB[Y&[)H V*Q Ua?SE'p>vX`3qBU( 8W0 Aw 9Kä5$ PeD)jeI2b!aC]zoPnIZ diͩdks|l2Rn6 Mf\ļ=XvYEEĢͪgY [A+M[XK52`%p7!?ڊ&aQ}6HH;8`ҤiI[-۬/0,>eE;ck;ٓ) C cc?f}p|61%M0*<ҭPK!OZ?xl/worksheets/sheet2.xmlēOo0,] E͡Rk X=6ݬ~Ez oa)C-uџ?*똮YZd(,?J`$hιawB1 44`s5m`#X=?R}*PLj# hE |TBbD귝왦Gp8xԀ;PJ> 5J?^InB|kϛ` )Ok؉MFy:K}& L3%O멄՜wCjѰwOp*d9lsoi[Ka9$?~Q2ǐG@=O>ɺv(OXQy[^nyj.VHםrxQ 3l@)kT΃ЧfyPK!OZ?xl/worksheets/sheet3.xmlēOo0,] E͡Rk X=6ݬ~Ez oa)C-uџ?*똮YZd(,?J`$hιawB1 44`s5m`#X=?R}*PLj# hE |TBbD귝왦Gp8xԀ;PJ> 5J?^InB|kϛ` )Ok؉MFy:K}& L3%O멄՜wCjѰwOp*d9lsoi[Ka9$?~Q2ǐG@=O>ɺv(OXQy[^nyj.VHםrxQ 3l@)kT΃ЧfyPK!_ioxl/worksheets/sheet1.xmlĕo0? C !Yj6zvf44QFSr!ҳ?/cǽ UIQ" "+&M RFwVRj< ]֘~ڗ=𥖪 t(ܥQ&A@aNaȺf.$YwT(-֑SpV~Ddb83;E^Gf7 881ٳ cDI-k.}sdʼb-h]hv5EAbt_؞;)16AOZ]s Ef|n@|[>&m5@_)\\Z/kwUknn3eMk O/&4j@OY`\ɭFD3^,sb^E¦"494q8(>;8prjpW88 8plO-| vcԶ q BC(l%qrOzEfZW;^fUy8^\̯G$4d>Q4O(K8^,@/s mzF3>{|hT6>k)> ad y-hᯢ PK!C3 xl/styles.xmlK0#'MI45,lK!)ز#V#ɩޑB[؋=>S}#:1cV1NBtUo4XbdU9ZwugvG1>:W ّIj'b ,6:PMIleͭ?$+2楮Lˊ:~sHfRiC\ms Vy<3MGtQrEVHITh,t\g7_RoD'*`%$?N_"1ܞp 1r[H"HcF`E?W ?wi/L69ʐmD2<|9Hl圖ZQ"N1!v7@tOy3}Ŏ)?u7cQS8r=_h5[`>0暂so:2/_,組w}'ZDW5B/Նj΂eYlm?lt‡ߣzd/@,3}ZGJ~ۣ6}˔PK! Xxl/sharedStrings.xml4A 0EwS]H.OILEoo\|yv4 qȣ; <939@+nYLQR&/ĵy䒂V,#R( 2iжGL!2> f\go%z^+[%X PK!yKxl/revisions/userNames.xml (j0 `to1д1}{QSK23ڷS/=vPaR/nBv{;^}Bro0vpAe;k)UslQ7!Y%" l.1FcB넘)0d="C;7r^]'{#Ns\9X>_n(TȒ1w-<]!ׅ3ǟ7fc%'30+PK!@4docProps/app.xml (OO0+"ߩVc#R 3i,\; Q~'JS.f==(P\jb` Q5 )ְ58a9RŴ5mXUMo[$gySŽ P7bH\2ڎj!>l+nwcQ1 [r׹Vp2A@݃閶4.V--ZS/m&5ə@ن}sLX*Ɇaؗcvz85v kGO4>!{wYu|1;i/;E1^YCpPjK:ǁe'߅\&lNaz~tIo`a\RMgf!~tȄV4OӒj& \ǰ]'9n,k48T,LQ9=f{?&1;d8Q /?zc۩_pkɝ KhVh'mlھ%Ki&m&y;j>/S*  1?PK!)g3 xl/revisions/revisionLog4.xmlMk0 {~d! qF):6uAvOi."$^^IFl.YNV`EkB`F$ \q8+Cpy2R'ن ZeέԎ N+yu`dFfUYaqF yGC/L}+V+w1%%'RS#--}M+%{oNעRM.w8լQS>Mˬ,<_M͝@)gl~PK!F4rpp ' 5odIey aO%Qr]8;}޼+[$PK!!Fxl/revisions/revisionLog2.xmlQk0!m1K[ױ^czaMR.ߵe(;-a@|: r'O m)g!'|Ye݅<#9ChS!H?u-XT ŝ-,} L#Q-)pUa 42tWu4nvi ՍʙQfgmC}TgvyW)pb!TdMIC "//<"VB)?h0pM@rU̙T@r _F:pi{c1#Ƥ3R{Lzc|i*PK!'%Ayxl/revisions/revisionLog3.xmlOk1~%qKպ$<lK{٬II;럥E/ Ixf2lUwIS>7nDedzmQH'euFiP2t}x% 5hRh+ Ƒ=!k(VVdlGU଄UQֈXJy ޤRٻ >"vGAOkE`*Y;)Wts?N$ゆ8?\V.;N^P9YZNႚ?Ϟ4凞A_*[7A(B'F#fhnΥIq6qqRlAbB_?-v~/PK!yxl/calcChain.xml
dGH&K&xP4T9È@i~n.&zK\d夔@P !RY# PK-!}F [Content_Types].xmlPK-!U0#L _rels/.relsPK-! yLxl/_rels/workbook.xml.relsPK-!Nem xl/workbook.xmlPK-!bm xl/theme/theme1.xmlPK-!OZ?xl/worksheets/sheet2.xmlPK-!OZ?xl/worksheets/sheet3.xmlPK-!_ioxl/worksheets/sheet1.xmlPK-!C3 `xl/styles.xmlPK-! Xxl/sharedStrings.xmlPK-!yKxl/revisions/userNames.xmlPK-!@4%docProps/app.xmlPK-!ط;Ikl(docProps/core.xmlPK-!9O+*xl/revisions/_rels/revisionHeaders.xml.relsPK-! ,xl/revisions/revisionLog5.xmlPK-!)g3 h-xl/revisions/revisionLog4.xmlPK-!Ft6i5lDV,D"5<qFz,m k "RrkBKPN+Zjqg[ 2Y+wBMLDq}̨iKǡ]?wVoέNMUB}%-iփ@\J=IB̺iޛ1"o^AAGc,ER'?_rM?;67PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK! (xl/_rels/workbook.xml.rels (j0 }qne:A[&Q6'o?C@.$}?ЧjU%)Z(8>< ֶҝ`@CqNsD$%襤`)qm.cuy 8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!JK-xl/worksheets/sheet2.xmlPJ0 CMWY",m'm$YW޴eyyo^jĘ E }K} o۫{%5|cusyQ)Ӏ";TVRv@RA}f4E8"nZrV^txV?iqC$UO 3Ȧ0xLf1G⩫v;xC_8WLSNQPK!=ݘ+xl/worksheets/sheet1.xmlM sW=dj~݉=bƅ٤Cvz^^(~VE![J^@ڵڢJ  0` R`a8Џx{&MUةQ'a]gxeG j` 57_Hx*yX2:4p jA ,4- ||KC<0uC g+zp*;nO1/^K_L?n|t]z΃ ]@$% ’s54 gIvI|l4*E_qʋjeK5-q{ X!X[_FG^|*D d.4,EX(EK4ƶ`oU(G k>)' <5 >NcY^ )8m $"n Yj"rJ3 ΦO^I{ii ުT{CMP | ֞g? >VO!l"rZZE(GXiv&Zc{{>,O5cMoPK-!q9+p[Content_Types].xmlPK-!U0#L |_rels/.relsPK-! (hxl/_rels/workbook.xml.relsPK-!Ex]rxl/workbook.xmlPK-!%S4 xl/theme/theme1.xmlPK-!JK-xl/worksheets/sheet2.xmlPK-!JK-0xl/worksheets/sheet3.xmlPK-!Ќ |yxl/sharedStrings.xmlPK-!Įd 'xl/styles.xmlPK-!=ݘ+xl/worksheets/sheet1.xmlPK-!uEkdocProps/core.xmlPK-!nS?docProps/app.xmlPK liborcus-0.9.2/test/xlsx/data-table/0000755000175000017500000000000012540654316015771 5ustar renereneliborcus-0.9.2/test/xlsx/data-table/multi-table.xlsx0000644000175000017500000002255212535701145021133 0ustar renerenePK!P[Content_Types].xml (T[O0~7?,}51G%@ik¿l"gxٲK[dS qE^coȐ7b4FW{,DID]B0<YT)ǴQZoӀj 1=R;ʞ6U^d5U!TjE,T~xdK^1t12XP,31roYW6{Н]w&!!ϝJ݆Rt+WhBDɅ-F0Ȑ>c\{S[ͭ ʀuhCY?*OKǾ :$8=ԫ4@6g PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!?xl/_rels/workbook.xml.rels (j0 EѾq2}PqfRm~p8Lb}kR:n1\ {$w$ύ $AV%ΒZ g],+0![)YדC=#$7i 3Oq(Cy Fӳp!Br8($2Y3>ĵД>J9C&×G6Da8XE5a4`c'Sii#wkBAO[1/ȳPK!CHxl/workbook.xml]O0M͹ʀ6Fnu=c ]tdw^>=h+krR`hJ+yA)5=ۛeg#9!$e#ۢNe]#n֡F NxNF(aJhc&\ UXVJ} }I2 ?wlJn )"X7/>|'[Sv)#mG9Y{f u!Cվ9̲4“_?zޣc״?B' JKRC?ȳCoPK!մxl/sharedStrings.xml4A 0Ew.D$M;w1m Dƅ).2umZPH>\b& ] %`Z09nT=/Iy^Ѝ Px<ֈ(a;jpF5u_PK!;m2KB#xl/worksheets/_rels/sheet1.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!'2 xl/styles.xmlTKk0%9 6^e[ 0xYw${Mm أ7߼T"ἴ*Dƶ~UoS⁛+k|0)B`$ :Oo}p*&\Z5IcG]eW+IY4VYGHlqǕ fRM:hXI9.:XXOq}hU. =RkePYT3"js} ֽS_9$1 Ժ #ϪP~`jZ{kB19y,}a;bF]i2C{1EC?G`Òc?!Iބ*bBaݏ~żu{];Gb>@ѭ(H6m lۘ^phEGM"Z9Wy!aIZPK!Qexl/worksheets/sheet1.xml[F#?X~sVR͌u7>O?;MMY~p=uXW2~{M[6Ů:jO_y|oͫRG84Sm^~UɶE/Xbc;wA?3FݖkW{uh y-?{ܔyNCNwk/j֭h|Ϭ칪fl̐ź-Tv;=Hdd&} ?gKFm}ʗVOm1{wO i7x:il-]͊fޛs}E[ni>^4Oo;=Hcw& I6bɆFRM-$EIvl)=dYTvҀ1&ˮ$iW<#S_]I#[ަ66K::wz0u蔾4mEl3͔͔͔͔͔͔͔Ll&N0s|L|6iE 3f^IFƒpd$N* 0H.R8@g ZI8HuGLJ1H2Ze,]"Y@Hr$(a3<6VO,ni>[Bц9KE>d,{JY9H,R@Cʃ%@ h%=HG)dϞPb9OE&{ z%], \I8fSR\ILni>BY:L!IC"+u2R1PHk%S}V*l m :_FZM )ɔR ΁ te@ǤΈ.AHI]ZY?դU8," h1P()P|H)P6!:餲2/\t"ʡ}Z4IsQ҅"(.d+F ttQE2(ދЗ+!&,ѿ dTU}~'zdW觊#>u&1$ʥxPޑ2\ K hпIyʱ }27k> ' >K4:B[1! m<)E5ɨ&T {KUɑ"V7`#)#{zd :$,~B,ؼ 1En: {=/*/x;l}ݓVG۪}ڶڟp7U՞'73~?zU]Wn=UEԯ}}<PK!1c-8xl/calcChain.xmlJ5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!gKkdocProps/core.xml (KO0&=Nb"Ǯi В̿ c=~=b'+bZHS /Q`SZAv`Ѣ8=xK6`t I')Kyʹbly w(/iG-l8s܀c9{`NDG >!S1Ѐro?el۵>-(N뺨K>?/ǡj(U+swj[I2\"I8LI4gWo?EO/1)cB&Ɍx>PK!o~wdocProps/app.xml (Ak0FFNX%*iaKIgU"d4Swl:=>n{P$KxY?\ 1@!FRH3XK ˁ*!ަU,,}C 9_ C⼥v|Yi1V,x%Ǣbطs%[x% ҸZ4oRLwLd)Dk3 Rca @$f_ť @XD\;$x:&g g+Idqa/:. ivMM} cK MBy/t/&9O=%WPK-!P[Content_Types].xmlPK-!U0#L _rels/.relsPK-!?~xl/_rels/workbook.xml.relsPK-!CHxl/workbook.xmlPK-!մ7 xl/sharedStrings.xmlPK-!;m2KB# xl/worksheets/_rels/sheet1.xml.relsPK-!%S xl/theme/theme1.xmlPK-!'2 xl/styles.xmlPK-!Qexl/worksheets/sheet1.xmlPK-!1c-8xl/calcChain.xmlPK-!ڣh-4'Fxl/printerSettings/printerSettings1.binPK-!gKkdocProps/core.xmlPK-!o~w:docProps/app.xmlPK d!liborcus-0.9.2/test/xlsx/data-table/one-variable.xlsx0000644000175000017500000002147212535701145021260 0ustar renerenePK!P[Content_Types].xml (T[O0~7?,}51G%@ik¿l"gxٲK[dS qE^coȐ7b4FW{,DID]B0<YT)ǴQZoӀj 1=R;ʞ6U^d5U!TjE,T~xdK^1t12XP,31roYW6{Н]w&!!ϝJ݆Rt+WhBDɅ-F0Ȑ>c\{S[ͭ ʀuhCY?*OKǾ :$8=ԫ4@6g PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!?xl/_rels/workbook.xml.rels (j0 EѾq2}PqfRm~p8Lb}kR:n1\ {$w$ύ $AV%ΒZ g],+0![)YדC=#$7i 3Oq(Cy Fӳp!Br8($2Y3>ĵД>J9C&×G6Da8XE5a4`c'Sii#wkBAO[1/ȳPK!SKxl/workbook.xmlN0H6?4)TB8lMcձ#!۳I7Nz͹V FgC` #>f{skјlۛugӘ#vT7 pE5wsӠNil=I{ \c W!ZqAͥa>QbQqOwlR*܏oW^ӻ ? Qd i:SmJwp A~5nDE>\%;.h/Z$sWQ^P+O(IҘaezpq疾OwK"`v%ic"ӽp0N8dPK!>֧xl/sharedStrings.xmld 0D(h$MnEފf0f}atRB*Sbx؏X gmg b+fN>K~5u=PK!;m2KB#xl/worksheets/_rels/sheet1.xml.rels0ECx{օ CS7"Ubۗ{ep6<f,Ժch{-A8 -Iy0Ьjm_/N,}W:=RY}H9EbAwk}m PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!R xl/styles.xmlUj0}/_]b;C-lZ tq%ymBxtf̑J=N*뭩ns)}yk&97;=rEn㊹+q _cm:YpQH1i5F{G>(2완Hcx($x4S|cRTV`XÔN*Ƣ3”S"0 )R.^c(yϭ.aAf{3vЪ槒C ѭec5Vm[,o*Fj t^t}O F>)\%*2XM5I0ÎwA9 IsC-¡CgO=$PR>`s?404DT <$;G;EO`WY__Բ7bc ִ629c.~)v Db07R'T^edGIf=Eg;P~K` ,szZf{DNW<:NTPK!xl/worksheets/sheet1.xmlUn0?<ev ԇENK-DUۿ.i53]R"''.U&ʐ9%E~{yxCҬLX.J_\ѻ,:r 0*G+qT|S3QTȂi+$gyo>r 28Df1ߊॶ$Lu*E Ӑ޻uF{ϪL4?ǚ'%p9P*)Y<ƃp~xQ>j&/$Ih'jHFt85kbad6c h;YidS\]\`/d,XXN[b Zc9WNIř%.Lnl~!?Ca`I_. $Mʘ{ꂣtQp5 hNŰ^W'IZbxoajMںN-fIoIo'IZ-,i$0o^Mmwiy/ OW8Yb{˸bCV*N|6ZT ZwOǓ6[P ?0[Esfb!Ԓe, %877 PK!oxl/calcChain.xmlJ5G圲0NۈfIʔFj$2tUZVm>-.55|&^y&3}]}\uPK!j4 DkdocProps/core.xml (_O M -e5fKE87w+@ho/mZ>997䋝ON] (͍z[2yEy~rc@Ҏ@ sIp nU̇w{<I-{P4Kvx 1@!b*9#&jRaopr`io۴h_HV PN@1$.ZnhmLJͱa`~6wRq6EecQ1krtԹVp2A@=閶2.V--ZS6?5ə@ن}ߘ^ T ð/qn7pqi.7֧: xl/sharedStrings.xmlPK-!;m2KB# xl/worksheets/_rels/sheet1.xml.relsPK-!%S xl/theme/theme1.xmlPK-!R xl/styles.xmlPK-!Lxl/worksheets/sheet1.xmlPK-!oRxl/calcChain.xmlPK-!ڣh-4'xl/printerSettings/printerSettings1.binPK-!j4 DkdocProps/core.xmlPK-!ہ docProps/app.xmlPK dliborcus-0.9.2/test/xlsx/formula-shared.xlsx0000644000175000017500000002063612535701145017630 0ustar renerenePK!0wCm[Content_Types].xml (̔AN0EH!%njE%tQ`Icձ-[3Ih$PTD5y3tLٜKJ]m޳Jg!g@6]_MWPŜ1QP ̜K'  kKg#ؘZͦ hR"*{#AgǒE[X{LxoU?\SWZrr[Wֈ*WC8 }Zѣ#bkb'-k fFMXj=|ywnsi*5sZ28f=8ԓ$cvʛ#5jt} N'9ʿEIsan<.w>>PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!3ʭxl/_rels/workbook.xml.rels (j0 }qne:= zGM;XL %^ Iwg'2 (:kZg` H6heLHXrq$@ؿpNJc')=i|dL2([eyՅ'¾^; }J7QԡW"G҈1b0U_)o S7)`K(iիƝ4 8شӢ%c:!<4~qPK!‚]qxl/workbook.xmlRAN0#wM TB!Qڳ7Uǎlgv;ώXjE>:itFQL w}_?Q<ׂ+!Gpt__-:c hfEnd8)Ghwk,p*_400e) x0E[' {*8/J`sڈy5>(JwQH")B6Ta:'4ʇ%_-PV5wVǼX40C (@rJ-LQb3#V _-ΞA*Yԣ >@D۽P|PWv.+_lv~`? 6{ܻRUQқ`$ߒPK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!JK-xl/worksheets/sheet2.xmlPJ0 CMWY",m'm$YW޴eyyo^jĘ E }K} o۫{%5|cusyQ)Ӏ";TVRv@RA}f4E8"nZrV^txV?iqC$UO 3Ȧ0xLf1G⩫v;xC_8WB#Mey`XUmPl~B}v9k%#+>B%䈖t $U[V"l69!:~8sX~?78rsSVOQЎe+O|Cr?]G {Q%LSNQPK! xl/calcChain.xmldj {9i1bJ]Ĝ5Aelo?),aw|`{0tƷ /bҮՃw(#lLJ:; . R_9CҏS+c@1فE6 J`}v Iph1?GUN (*ڐrI')NR\nhkdw/PK!JdAGkdocProps/core.xml (N0DHC}<ԪXI**!QcgٷElG!$mK{\9_e|B%QPLsvzڬ Z+(,Z9kn86$e k T9-@RyVI?n({;iϱG9uwlD6aAr'Q);41 mۨ>_}PnW PsF)t"xնxt[uk~}m>7xr_d|429)f4N0 &NH [.p!)ILIbB<} PK!nSdocProps/app.xml (Qk0Fm䤣 t $m5ʒ]MO?ƍn/??Izجƻg9i_+!)W*Ȯ'>@$% ’s54 gIvI|l4*E_qʋjeK5-q{ X!X[_FG^|*D d.4,EX(EK4ƶ`oU(G k>)' <5 >NcY^ )8m $"n Yj"rJ3 ΦO^I{ii ުT{CMP | ֞g? >VO!l"rZZE(GXiv&Zc{{>,O5cMoPK-!0wCm[Content_Types].xmlPK-!U0#L z_rels/.relsPK-!3ʭfxl/_rels/workbook.xml.relsPK-!‚]qxl/workbook.xmlPK-!%S1 xl/theme/theme1.xmlPK-!JK-xl/worksheets/sheet2.xmlPK-!JK--xl/worksheets/sheet3.xmlPK-!vxl/worksheets/sheet1.xmlPK-!Įd Txl/styles.xmlPK-! "xl/calcChain.xmlPK-!JdAGk-docProps/core.xmlPK-!nSdocProps/app.xmlPK liborcus-0.9.2/test/xlsx/pivot-table/0000755000175000017500000000000012540654316016221 5ustar renereneliborcus-0.9.2/test/xlsx/pivot-table/two-tables-one-source.xlsx0000644000175000017500000003227012535701145023300 0ustar renerenePK![Content_Types].xml (UN0}7VQ- u|ٺ,sn{eE Iyei6ӄ;, 5 OOz` (Sց?sOr&/+. `B'{$^+F‡_f<TX4 2-E |a'֎Le<';+PVT<)@ȳ=†x%z^G)5\ܙrna"Yʒ2SeiL͆;kcެZ;k3w\h[p(Z@uA=kx{/"/_mc :.UG2VC!SFI$kYٶ8pb 9xeZtw:zצ5>md7n3/;PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!MA'{xl/_rels/workbook.xml.rels (N0 HC;M@hLHxuhmRfз'Pi.(dl?ۆF$9BJgH$6ڼ@_ZwȼAkQkhF+u"Jt*? Dkjln_8;wmR簳{ XXU|L*sq~I╜5Iz&]flCSI`I`K '?J܇P l ndғSR=)TE؆#|PK!mxl/workbook.xmlN0 HC;k6u` ]#ҤJu=NuC\8%v84yeM34l z05Xo|1u}mb$`|ihRY@m3:kL]ր20uѰUJ\rנ Gj=*8}|4g|x*,Bᯄ۵;cuOx6|wLb;V4I%FBE2SaϏbke .FS4s֥ZPSY}նQ> Aq^ENjNfҬK@_-.r榊.U@DObzZnhqAMNJ%-ɄO8meD")KyIv?PK! A G)xl/pivotTables/_rels/pivotTable2.xml.rels 0Dnz, Dѿ7 xegT8;hk(eظrr>, bBnppLa[gՉL)G)5)R4bKˆ)S;RˢX0e@FC86%gl׶ޙH~X(o.0Skپ d>)'і2UW~PK!vhxl/worksheets/sheet2.xmlUˮ0W?X7/ <* .*U}M2!M46p!q(n7ę3sΙc$h%^@ ԩx}ZHꌕ5 >m޾I}"P5-jV/*&=@H.ڊ)|mOlZ`)J? دeXyS؋\A,I %S_td1i!_~AMbpJgM;~RQgC2JYvPg~oj3- gR}OBٙ.OEK*7XO{b4NٱLM5|o`FgmV\ =)=0SYͿl /iՅw)a#{/H~ї[gclbۻزFpX5]e%11ݹ`, bBnppLa[gՉL)G)5)R4bKˆ)S;RˢX0e@FC86%gl׶ޙH~X(o.0Skپ d>)'і2UW~PK!4#xl/worksheets/_rels/sheet3.xml.rels 0DnR=HS/"xkmmؿ7 Nyz(NV Xiח't ޑNzUhE8ЧJiD>N)S;Rثd@FC6[ro[kk$~D`'j| ;J\yw2*WPK!dTNxl/worksheets/sheet1.xmlM0,XlAP޽0|hcqLJ=a+CRnReiOҌR}>~HNB@t*!T@J Qƭ5H`=wAqг !- k\O&:1մYR*! K,W '孉)Y#|)S cI~F8B#7Oc8G}vv8}n4yəfY"ʼn`00< 4Xq-^ PK!,xl/pivotTables/pivotTable1.xmlT]O0|?#- tBMPTĝ-ܳlKlʿMO^xמ]lO.ӣJ_ij1)W)(ɧZZ;@ lRjϳ, X| gjJ8 ,TdMv.{%(}GN!,V." vf17|eq-M"7Ҁvq*n🻖}be>(p'{:)zLoX̶n?_2 p'WuvHiY~X_$;~P 1E(egŲEMKlյ}=[7O&L6ICr{ªe {7~z ݪ;K/3-PK!%Sxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ K(NhwŘQ6㶷 [SYJ(p»g>X_xwu{\>k]Xy}钣M26PsFnJ'K,}䇦$Ǵ;@` >*8i"LI%\ xӕ=6u= r2f 3c (:jZ3sLs*UܚЅ ]M8kp6x"]$C<&>'eb. vJ|yXɾ8Ȯ]7R /=,.&'Qk5q&p(Kaݐ Sd›L17 jpSaS! 35'+ZzQ H )7 5)kdB|UtvaDξp|Fl&0_*3n'LE/pm&]8fIrS4d 7y` nίI R3U~cnrF:_*P}-p Tpl rۜ4LZéO !PLB]$K *++65vꦚeNƟf(MN1ߜ6&3(adE,Uz<{EUϲV)9Z[4^kd5!J?Q3qBoC~M m<.vpIYӦZY_p=al-Y}Nc͙ŋ4vjavl'S&A8|*~x1%M0g%<ҭPK!)Jdxl/pivotTables/pivotTable2.xmllTn0?7E )p1AgZY$;->߼aӊmyiMƇwfُ_ L)5=x6rcR@% H!4Iw;uZ\u5@* pf,=B ϼ=giOWf]Q2֕_3kM'J/Ne_AېR1M>B6Cyl3-T|[vk U^9lzv]&&,ePī<ҔxlwTKkݪ 3 I͠yl!.TrVI+%" 0*F$yJYaۨka&v_Aa/& 0,Vܟ?l7;%:.F*Xfr-)qB6]/S͗agd>O^V:DUlo/9c(|~S_H,Vls. `Xdb㱘h"A##q#Owo5afb:@'28+;*f;Ms`cN"Meϧ8VÇji>0jl(7q#'ޭ?PK!<y xl/styles.xmlTQk0 ~?;$ 2$Nb`+ǥ~RKҧ1DVOI.Yhf'vk2|:~,ED*L:ʻ4A$lUwїIb"'YHmbq2Ok0ّEg/<-= ੑS7je 9;.9"%7@<H1ؘۧ`ƸD7A çMB2‡ߎ>th0Mo= -Qw LA]¾h{IҚI4lNxӁh#R/o9{|^_&-h`8H5Ey!x#YQKJ>8^yty+%M_L>r2ȅWQиUE¬.^xT]gޘ Gk\ퟺ2Db)FL^PK!|Nxl/sharedStrings.xmllAN0EH:)BqU"ƙ&ుޞb?o1zĞq^ g`3W9SR&74.͉RyiT<'O9m;G)̝m(? nF*q8c*Mf)U}%]T[?uHنuu(QI+)S-O7PK!;B$xl/pivotCache/pivotCacheRecords1.xmlAj0EA̾cZ; hJ{!c52Ť@]Zx̠xq1`@ X:)x}؁਩ѽ'T 6aL yԴ>83$ubt̳N[mk xsvH*  3EUd N4en eBnTTQ[3N-iMSr=A-{/y#PK!:*'xl/pivotCache/pivotCacheDefinition1.xmlSk0~Iڬ Qʒc}hBUY,w`d*vDƣZ锶?_(?-j}tq-d,Ց 0*f2zeFRpވH?d(T(I2#ܿ+ -qdcƮJLBϵwjLg,<Z9|w%j(OAl#"5y3nYD8zH5:Oxp(Wka˅lۻKd\o%Q(z=ğj2ߴi@ldE6ԗjT`C^ВYalc&HB)<]DYunђīkNv6(qaPzkR,&- JnOci Oi*(Cѧ1p=6 ici.Y;K>ZQ5$ȈSo'it@ёvzb?PK!+{32xl/pivotCache/_rels/pivotCacheDefinition1.xml.relsj0D{-;PimZUB1a̴2;% 4U ehAIp@Vuf%$ %)؉# EQGWIoz+7:9PKloPTXrrRF~YMUZv{PK!=aTFkdocProps/core.xml (_O M -m$mً.1q?oVbn^n:|ssn;Y`*GI\mp rYj´k0N _V]PvW PqF)t "xնfx[u+~m>5xrW|49*ϓiLx&WdJo?ۨ14"e)S!jf.%7@$T!n1e*k& z<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!,-"xl/_rels/workbook.xml.rels (̔N0&] lك ,MPI6x!/3S4k8TF @T|"R56ڼ@+=F#X4IMʸNz ]ͭ,%ɚ,hFR0/[r[T*`g?cWxHc"f|gddA<,{7c7e˿PK!X{xl/workbook.xmln0!UT=P8X8vdou"B*q^$PIENzӄ\ ü2ćv ͽ/g4)Ac'3Kg|XEcVpi00Y&SXX=w,]3`LDxY~}%;&?Xt ([C~Y" G78Uq<db+rK$T N0˵`Q՝>GIyYGWVsN!5Sbg7v-~'hCwi$ZzСXBC)W)p4+Os@V G: L F._PK!ȡ4#xl/worksheets/_rels/sheet2.xml.rels 0DnzU IFѿ7 NռI<)NC) 4\f'HÛz.4aG<"SkS ،4#KeqƔ8mQT\2bs!D9?5t1K?"TOZMJ\yKUWkPK!_t@xl/pivotTables/pivotTable2.xmllT]o0|?w*ШSzn!Nt }!xwyIAXUJ1% ]rM|tEuLLh)K?  @wH@Lٔ5(E ݀J.6VI%e$W(&1@PR0/S:570yOR,97ڔV,9F+J7'w-dYէ!m0{[H2`koٰ3` |G^@> wS 섖  #w7X\XV892#fK @Uƺ; 0O#0k-|D-RXRו`)&" 6V?VJl.w"9^yKjP{KMCuAQI͖F|UcWGCL?Ӕ-P*¿}g]=$51ǧ yeŗ>7v =lU Ƽ1۷Oh6)x&óp*}Q^蛭osaSB oc':ux~=X5<m>ģz|2ͧM>[g|,[tlI^mu. -#]U6Lë+G%C]th6)tO( >PK!B;xl/worksheets/sheet1.xmln0#; \ B6JFs;ƀ$1L@*}q!*oϔ^j*3^K yڐ:#F/A.3(zJccMK&ej8ɥRX7$* k) 眲;jӉ(V7&=ryR4 7VyE-TG8%.Jjpu &l=%zpp A_|{l~Q2l7Rn;l*nCyɮ2?Ei@dذbB>AƏfΉ1$MJNJMɹE@MKkJ. TkJKja bi~$+2 TbC`|Az)Ec4I)b'*a/-#V*M(^ Q G|5/ɒid*pmG)~ U'3r)w,š;m72Ce.N!}WE]60h`ԑH 7P>=l O 3P7v+#v0V_#yƨcc,t:-O[ކZJ:!4 uw=PӾ9q jU4J:$=qO'N1\oذǶidc3N<\TցG':.r 8cGCyO5zwG':FBtyeϦކ+Յ xs?UM eL]W%29Ls.J' PK!s GtBxl/worksheets/sheet2.xmlM0,C6AFQ=Tm{v+#1&PJM.I^.B'Pu ĈLe.R}XZgR5O7eSrV`J-BmR\ZĄVrIM^C$WZR K]hN#YI.ƞ{*[ŎC4M)sIvNR}86OL{Q B1,~+j龂/ь+]`Zp'z[I&vy(,0Y'm~ ~6<#RxR:)v(9=V:(-wUǖL0;SIʧ~-iDpj#bĎ*t$Ϙt wUg!Ӗ,MCݸE1]⴯N~iMrNAv')mV|q.+9qt㴯qa^qo%F}?~vZT69LFN)S;Rثd@FC6[ro[kk$~D`'j| ;J\yw2*WPK!(oFxl/pivotTables/pivotTable1.xmllT]o0|?w*ШSzn!Nt }!xwyIAXUJ1% ]rM|tEuLLh)K?  @wH@Lٔ5(E ݀J.6VI%e$W(&1@SR0/SPšF|jK)mo\+wȜ[%x;ṟ́5k2Ѣ?muoTl-v&la:ݗGÕ{Nz@Nh*n0rŅl㍀(s.P;Ri` T)]ŋKJ*n ?C<GDY!%n}] `:y/`cc%+v&r]xg2,0o C1~u|`.<*ɟ=華beFCL?Ӕ-P*¿}(,m FL)ClYh%tl9A{ϭ$"lJ7f W>vm >ܫJ?>wcyfCTF=;Nfnfsօ/i Oer6h^%i1nhst2$h?]<=gF[]BHW/|ͣy?Ѽy @u0A{2DM ]5 쾃OtPK!W xl/styles.xmlTMo0 tOxI]1lˎP}KɎm.IS#=Sm _QY:w #c, W&_?>) IfSA̅j?҂XPuFSRwI @&߀fV(rƙ=FXRisH/Hq;x XAg V q5P@'~r+ z&,sq3H"qC85sn9rO'持c< \bOYE.01c(hw}%4r~5Bqt s`JcN+ jViU\Y ,qH$ $@9 ׏ vW!يLػ207(m>]Yj?6jسHq>4 pVKALcAE{ &5ǷCȇVTg~2<@I/tr rKw:e29|"`q.BWu'fQҊ >_iZM^\+g=VkccG[O!}iHvPD`;}PK!"G)xl/pivotTables/_rels/pivotTable2.xml.rels 0DnR=H, Dѿ7 xeg̔cĝB5,eظrr>,6 bBnppLD{Vhz1JuaĔ)UQU2bc!%gl׶ޙH~X(o.0Skپ d>)'Ѯd*WPK! A G)xl/pivotTables/_rels/pivotTable1.xml.rels 0Dnz, Dѿ7 xegT8;hk(eظrr>, bBnppLa[gՉL)G)5)R4bKˆ)S;RˢX0e@FC86%gl׶ޙH~X(o.0Skپ d>)'і2UW~PK!xfaxl/sharedStrings.xmldMK0swPD,^<nԏoedzDm@)@``ñ}wq q1`Hg(lƜ+) Òb&/c:JF읬s T59w'(kЊVYwY+; CWqiW=|3'>~;mZYc6G w kPK!bmxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ_^'܉M01UJS#]flmʒgD^< dB[_WE)*k;ZxO(c5g4 h܇A:I~KBxԙ \ YWQB@^4@.hKik<ʞ6b+jΎ9#U`δuM֯DAaVB[͈f-WY؜j0[:X ~;Qㅋt >z/fʒ"Z x Zp;+e{/eP;,.&'Qk5q&pT(KLb} Sd›L17 jpaS! 35'+ZzQ TIIvt]K&⫢ #v5-|#4b3q:TA1pa*~9mm34銗bg1KB[Y&[)H V*Q Ua?SE'p>vX`3qBU( 8W0 Aw 9Kä5$ PeD)jeI2b!aC]zoPnIZ diͩdks|l2Rn6 Mf\ļ=XvYEEĢͪgY [A+M[XK52`%p7!?ڊ&aQ}6HH;8`ҤiI[-۬/0,>eE;ck;ٓ) C cc?f}p|61%M0*<ҭPK!ʂa#32xl/pivotCache/_rels/pivotCacheDefinition2.xml.relsA0!MaYx$m6/Ţ~sT8 LϓZ(``[ՠ(Xv> d 'dAnj4a.!}U(A 9ǝbGQ*s1@/н0H'uy?[: ˼3YNN @Te:/W?PK!-9'xl/pivotCache/pivotCacheDefinition1.xmlSێ0}@~O &!V!)塻wUl#ۤ{K"]}qtwcV)Mb uNɏdE< RrKZ\RV 6S6%s-%S]Hp X Ek?=tQ; M TebKQ[♵)1G>C [J>ȷ/VpAD0^`C]hT5vJT#2oә6|d kU{֍a[ىч=d zIRg?4=X:DJ5  0Ŗ?:ʖ.)ٴ@?u4FwRr*_P\(J3n\y\vZCQ98>+9&HzQGSp +%pu_^cDJ~/O}O(M &yGh谝}KpSۧq{h_XePK!+{32xl/pivotCache/_rels/pivotCacheDefinition1.xml.relsj0D{-;PimZUB1a̴2;% 4U ehAIp@Vuf%$ %)؉# EQGWIoz+7:9PKloPTXrrRF~YMUZv{PK![2?[docProps/core.xml (N0HC{$T TBeo[G!$m*ޙvvbqu J%)@1ͅڕh^39OVP#8 f6`r7c KCq><>pS,SN=-06 Hi$(pdJgCR ;ٜ>81II#[5TfzmGQQ^M_Cot)RB?+Uy,γuɔ_m OOt>"U/C PK!8f$xl/pivotCache/pivotCacheRecords2.xmlj0 }uڕ1:c{(!뤬/}_Ҡ&,W (mϏ+()Z?0/ػ3Ɖ1pnEUqTxD|e>i3VzĒi|$v?9!$KC8 g*Lv& hghN9F;z6w["\g|]PK!C 'xl/pivotCache/pivotCacheDefinition2.xmlSn0?Z,ǖ!)FCˍFQHʵQ;ZlH" g=hÕL?cBxUH,;J9R|2g%Mzuo:Hpkt0ĀN J2N;d |ba dgjЁv:ߩ6ԂFԂF;?qPK!2docProps/app.xml (KO0H{EWrJ-6Τp3DwҨ4a73QZHb(x B<-.DdBi| P-ԧ'jb` Q53)ְ68b9RŴ6mZXUMk$'yG† P5O2ڎۆj!>~t6Ee ^ɡn=9\ax`]atKPf-X)C6٫Ap њL l}}KLoX*Ɇ~+atg ,#.y$x:$1=΍!36gi2>ʧ9_`PK-! !: [Content_Types].xmlPK-!U0#L _rels/.relsPK-!,-""xl/_rels/workbook.xml.relsPK-!X{ xl/workbook.xmlPK-!ȡ4#? xl/worksheets/_rels/sheet2.xml.relsPK-!_t@> xl/pivotTables/pivotTable2.xmlPK-!B;Txl/worksheets/sheet1.xmlPK-!6jCxl/worksheets/sheet3.xmlPK-!s GtB>xl/worksheets/sheet2.xmlPK-!4#xl/worksheets/_rels/sheet3.xml.relsPK-!(oFxl/pivotTables/pivotTable1.xmlPK-!W xl/styles.xmlPK-!"G)xl/pivotTables/_rels/pivotTable2.xml.relsPK-! A G)xl/pivotTables/_rels/pivotTable1.xml.relsPK-!xfaxl/sharedStrings.xmlPK-!bm xl/theme/theme1.xmlPK-!ʂa#32u'xl/pivotCache/_rels/pivotCacheDefinition2.xml.relsPK-!-9'(xl/pivotCache/pivotCacheDefinition1.xmlPK-!+{32*xl/pivotCache/_rels/pivotCacheDefinition1.xml.relsPK-![2?[+docProps/core.xmlPK-!8f$Y.xl/pivotCache/pivotCacheRecords2.xmlPK-!C 's/xl/pivotCache/pivotCacheDefinition2.xmlPK-!Pf$1xl/pivotCache/pivotCacheRecords1.xmlPK-!22docProps/app.xmlPK5liborcus-0.9.2/test/xlsx/pivot-table/many-fields.xlsx0000644000175000017500000003041412535701145021350 0ustar renerenePK!Nq5[Content_Types].xml (ĕMN0H!%n@5eؖǔLB *Ne2y_*YGmMΆـ%`Us2K/XA%*k gk@v59=O0h9+Cp,YV kϹr!G90! M6@!^ܮC,llr&HҨo*V!ȸK0oUhV~=PiV< EM|U73k$-(ekMy KPWYZh}@?nFa Gr BwS*mt.}MR='+;@[x%İ{M.RxP#T̨ ~WT=zlwQ"Aç9ا"Y,CCj񐚼PK!U0#L _rels/.rels (N0 HCnHLH!T$$@Jc?[iTb/Nú(A3b{jxVb"giaWl_xb#b4O r0Qahѓeܔ=P-<4Mox/}bN@;vCf ۨBI"c&\O8q"KH<ߊs@.h<⧄MdaT_PK!xl/_rels/workbook.xml.rels (N0&C3w)nfܘUh`f%qr7!x!^Lom=g$Q m c+輪'qHnovh6bIAmVS:!S:jdPqdWX(ĩڮ,MhyBvYƚ);{0B- 151??S۸ErȤK0?,vf& c>OsԙUao8xaM{CaC^Mi PK!jrtxl/workbook.xmlRn0W?XCxEVRqp^ p6$٩+kRt9CY.?ϧ|#A[)?änvH!Tc!|V` c+4ɭ+!t;+ }J-nw$JP_?6UsJ4"PC}*ϧ\i\_1o(LR)5)CvPn19tXVJI2jMk 56H[7Tܢ>:v6J~nԾPgYPG\*.q,IK㓙u5A/L37V2shypGNvC:GT GIw ;nTT2{ *n44PK!7Qxl/worksheets/sheet2.xmlW[0~dݨ'$l\*9@YZӂ%bo曙 ׏(4.8'cL81Z L2($1ӯ_WNcȶwIp ȁbm) m b3cp!x,#IqOOABol ]s(}SFvǘhBNy7nR/%tvh=i:n01gqM{: JC8>̓ipsJ* 8%Xp s/!"|s=5||@ -'b.1` v9GB_# x3#K6 ږiΔoYtSx.,ƜLpJ$ c֕bd 5 Gsǡ5v;A^cD$0ws`TaYo["\ X04A|pF~sAWq>02 [N &Vc Z,m| >][1۽W]WMbSJnП rV((N۪>8X" "QL>ldUȠASQθ:ۚVϢjQj(ZV-ZE!y*eM>"+VBոAWi H튭C5Fƴl5Nƴxo2Vr*¦ .mkS=Xhm 1r+9Y|sn^֮J=*(`jV~S@],iUN_nL5W@YQྦྷ@nes5KG+r[}L삞ݔtPz bjm޲`7Nxf$!' .ַ|pa9,aP|MPK!ލJxl/worksheets/sheet1.xmln0Eq $~힦,Iw$6IwDKj?9P!+$(p}Іj={BTp9->r%F&T, bBnppLa[gՉL)G)5)R4bKˆ)S;RˢX0e@FC86%gl׶ޙH~X(o.0Skپ d>)'і2UW~PK!ȡ4#xl/worksheets/_rels/sheet2.xml.rels 0DnzU IFѿ7 NռI<)NC) 4\f'HÛz.4aG<"SkS ،4#KeqƔ8mQT\2bs!D9?5t1K?"TOZMJ\yKUWkPK!Ќ xl/pivotTables/pivotTable1.xmlWn6} rd6,])!h#QJH*q0w/Pt[$=.v$O\WCJx\۔XVLay#}`y!jaXmRZZ̢d%R PbzFss[h4NU])ȱ/#G3፪;f-I|)Ŷܖؖ˙e+`)d 0ϿPR+/47%jza*O:WX^iQa%QQ V9udjX{^9׷"_k|MXU+h$.󍐠t b.Unj^t̾#J W.cL)zc[R-rLɃ@L?Hn70;`.NN7KTV .w?` _/{G_&PK!jXn xl/styles.xmlo0')tTRWUI{uGd;lsU|9|I tdrb<1낫}#*ЊŸa?$?E5m9ec|pZbԎu)쉭 aIa)HjjkYQ3.kZF2_>64i2N>%ύtc]ޱh1[mFz٤ ֿLVsab_&]-1E;<PK!bmxl/theme/theme1.xmlYOo6w tom'uرMniXS@I}úa0l+t&[HJKՇD"|#uڃC"$q۫]z>8h{wK cxLޜH]ś*$A>J%aACMʈJ&M;4Be tY>c~4$ &^ L1bma]ut(gZ[Wvr2u{`M,EF,2nQ%[NJeD >֗f}{7vtd%|JYw2Oڡ~J=L8-o|(<4 ժX}.@'d}.Fbo\C\ҼMT0 zSώt--g.—~?~xY'y92h!ы/ɋ>%mGEFD[t3q%'#qSgv 9feqwW@(^wdbh a8g.J pC*Xx8rbV`|XƻcǵYU3 Jݐ8b3+(QuK>QELKM2#'vi~ vlwu8+zHHJ:) ~L\E\O*t@G1lm~C*uG.R(:-ys^Di7QR8,b?SQ*q7C;+}ݧ;4pDZ_^'܉M01UJS#]flmʒgD^< dB[_WE)*k;ZxO(c5g4 h܇A:I~KBxԙ \ YWQB@^4@.hKik<ʞ6b+jΎ9#U`δuM֯DAaVB[͈f-WY؜j0[:X ~;Qㅋt >z/fʒ"Z x Zp;+e{/eP;,.&'Qk5q&pT(KLb} Sd›L17 jpaS! 35'+ZzQ TIIvt]K&⫢ #v5-|#4b3q:TA1pa*~9mm34銗bg1KB[Y&[)H V*Q Ua?SE'p>vX`3qBU( 8W0 Aw 9Kä5$ PeD)jeI2b!aC]zoPnIZ diͩdks|l2Rn6 Mf\ļ=XvYEEĢͪgY [A+M[XK52`%p7!?ڊ&aQ}6HH;8`ҤiI[-۬/0,>eE;ck;ٓ) C cc?f}p|61%M0*<ҭPK! %xl/sharedStrings.xmll]O {J/4e[tjlmB?v99|QiW+iQLfbI&8/M.5*ѩ8>yzi}}Ř UI׳2M%}X6;FJJAY%KCIf[c: |oܕ{9՟ #"!#@2Ar eaa!p !p {!v,!3q> etǸ"FYWՃt?go)G":w`0~OIA m &gݥ%$$-L\"}=K/]QgI*KPK!ܫadocProps/app.xml (Ao0  Y1 bhWagNcd׏z#?S47m(zSլTFj7z\_~U1BX=23{B""UeZkq 49Ҥ6otj.-Fqk/@5&.zhhGO}'|]N.yoKY9x+@hi`-gES.UJ=D66:t>B-"br)΍C"9s@,!{wĹ)? =v$qxЬZX3<:sBn[3W׳s);}:hPK!uڿ>[docProps/core.xml (_K0C{)@e/:(n 6Hݾi|{N~K^58/PFHzޠk E}yQrKq$$Vh{|: 2 BXA`;`jG":"5=@p (<7S2q*6t;e >{hl6kg}?o~TnWP] Nd'n{ a n'ӹI}"QKT$JMZuAh{.PP'iA&.wPK!k'xl/pivotCache/pivotCacheDefinition1.xmlێ0+"CH6I$+ee&FCAU߽X\c3<4'NC,ˢ'6TD4|rMF{vfJ fL`a2}3f?m܃X*N > hw'tmN E%cL)a$ );RCD-#+@b49d%wjs3j['docProps/core.xmlPK-!k')xl/pivotCache/pivotCacheDefinition1.xmlPK5,liborcus-0.9.2/test/csv/0000755000175000017500000000000012540654316013570 5ustar renereneliborcus-0.9.2/test/csv/normal-quotes/0000755000175000017500000000000012540654316016376 5ustar renereneliborcus-0.9.2/test/csv/normal-quotes/input.csv0000644000175000017500000000013612535701144020246 0ustar renerene"normal quote", not quoted, "and other quoted cells" not quoted, "quoted", and so on.... liborcus-0.9.2/test/csv/normal-quotes/check.txt0000644000175000017500000000031412535701144020206 0ustar renerenedata/0/0:string:"normal quote" data/0/1:string:" not quoted" data/0/2:string:" \"and other quoted cells\"" data/1/0:string:"not quoted" data/1/1:string:" \"quoted\"" data/1/2:string:" and so on...." liborcus-0.9.2/test/csv/double-quotes/0000755000175000017500000000000012540654316016360 5ustar renereneliborcus-0.9.2/test/csv/double-quotes/input.csv0000644000175000017500000000014412535701144020227 0ustar renerene"""single literal quote""","""""double literal quote""""","""""""triple literal quote""""""" 1,2,3 liborcus-0.9.2/test/csv/double-quotes/check.txt0000644000175000017500000000030612535701144020171 0ustar renerenedata/0/0:string:"\"single literal quote\"" data/0/1:string:"\"\"double literal quote\"\"" data/0/2:string:"\"\"\"triple literal quote\"\"\"" data/1/0:numeric:1 data/1/1:numeric:2 data/1/2:numeric:3 liborcus-0.9.2/test/csv/quoted-with-delim/0000755000175000017500000000000012540654316017132 5ustar renereneliborcus-0.9.2/test/csv/quoted-with-delim/input.csv0000644000175000017500000000011312535701144020775 0ustar renerene"This is a single normal quoted cell, and contains a delimiter.",next cell liborcus-0.9.2/test/csv/quoted-with-delim/check.txt0000644000175000017500000000015512535701144020745 0ustar renerenedata/0/0:string:"This is a single normal quoted cell, and contains a delimiter." data/0/1:string:"next cell" liborcus-0.9.2/test/csv/simple-numbers/0000755000175000017500000000000012540654316016532 5ustar renereneliborcus-0.9.2/test/csv/simple-numbers/input.csv0000644000175000017500000000003212535701144020375 0ustar renerene1,2,3,4,5 6,7,8,9,10 11 liborcus-0.9.2/test/csv/simple-numbers/check.txt0000644000175000017500000000032312535701144020342 0ustar renerenedata/0/0:numeric:1 data/0/1:numeric:2 data/0/2:numeric:3 data/0/3:numeric:4 data/0/4:numeric:5 data/1/0:numeric:6 data/1/1:numeric:7 data/1/2:numeric:8 data/1/3:numeric:9 data/1/4:numeric:10 data/3/0:numeric:11 liborcus-0.9.2/test/gnumeric/0000755000175000017500000000000012540654316014606 5ustar renereneliborcus-0.9.2/test/gnumeric/test.gnumeric0000644000175000017500000000347312535701144017323 0ustar renereneGfPZmo6BrHlݍP%18d{(Zbl6Rt^oHJ,ۛ(n 3 ǿ<'z"#a۶0xLؼo_,q?s0 )Szzz:e;Xv5ݧrN?Wi : ,E2fZ8O>g=xgYٌ忀V¸JJ4˾ h)y$X7A0pW{D:z=0l:|a iR0dA)f[vuy3-;GGG-ZQ.Zq/d-VҭB✗RtQh޷ܶTc/)eđ#8dqGQnOnUT$.Z ?6nQ]cYNT{BǖN0;9Ќ"/> $m+0b*2ڇPNRo;̉^rN1א傥r N^=Кʥ_m[$38LȌP"_*^~ Óhj#߶4@۶ ZyӧXqB |VSUԬd:TAjЃt,׵Fɮ<#*^lɫY ?\lNߌv+Iv |[s$O*joLKk3.%O2^Wʉ} :fQ$AL=[%bh*|_ uk sW#f!9/a&_(v+'PVw\*9 Pq!<*78`x盪a p#u-:=R.@DګuSqV}NS@Jҟx'V^7`(@\Xƻ EIB`)/Z[S> Hٝ^_]`;7F.2K_L'Лg)?[0v(:٣`cs*g٠Ŷvx`ֲcg'}C DѴj1gc<׻&2퍷\S\dRy+?rmt^k*M4Vo5Vo5Vo5j[[⭽>V fComh7݆&74 MnhrC&Wvx$̎qYh8x?b'+liborcus-0.9.2/test/css/0000755000175000017500000000000012540654316013565 5ustar renereneliborcus-0.9.2/test/css/chained2.css0000644000175000017500000000020012535701144015740 0ustar renerene /* selector with 3 chained simple selectors */ #id1 table.data td { background-color: aquamarine; border: solid 2px; } liborcus-0.9.2/test/css/basic14.css0000644000175000017500000000051312535701144015520 0ustar renerene #p1 {background-color: hsla(120, 100%, 50%, 0.3);} /* green with opacity */ #p2 {background-color: hsla(120, 100%, 75%, 0.3);} /* light green with opacity */ #p3 {background-color: hsla(120, 100%, 25%, 0.3);} /* dark green with opacity */ #p4 {background-color: hsla(120, 60%, 70%, 0.3);} /* pastel green with opacity */ liborcus-0.9.2/test/css/basic2.css0000644000175000017500000000023112535701144015432 0ustar renerene/* selectors with class */ div.foo { border: solid 1px; } .warning /* warning for all elements */ { background-color: red; font-weight: 900; } liborcus-0.9.2/test/css/basic6.css0000644000175000017500000000017212535701144015442 0ustar renerene/* ID selector */ h1#chapter1 { text-align: center } h1#z98y { letter-spacing: 0.5em } #id_global { margin: 10px; } liborcus-0.9.2/test/css/basic12.css0000644000175000017500000000062212535701144015517 0ustar renerene div { background-image: url("https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png"); } p { background-image: none; } div.img1 { background-image: url('http://www.rabiakhan.com/Gallery/background.jpg'); } div.img2 { background-image: url( http://www.tgraphic.com/userimages/Gallery/Backgrounds/TGraphic_com-Full-Wallpapers-Backgrounds_Colorful_C_1920_33.jpg ); } liborcus-0.9.2/test/css/test.css0000644000175000017500000000023012535701144015245 0ustar renerene liborcus-0.9.2/test/css/complex/0000755000175000017500000000000012540654316015234 5ustar renereneliborcus-0.9.2/test/css/complex/excel-html.css0000644000175000017500000000423212535701144020005 0ustar renerene liborcus-0.9.2/test/css/complex/callout.css0000644000175000017500000000211512535701144017404 0ustar renerene body { font-family: Helvetica; font-size: 13px; } div.callout { height: 60px; width: 200px; float: left; } div.callout { background-color: #444; background-image: -moz-linear-gradient(top, #444, #444); position: relative; color: #ccc; padding: 10px; border-radius: 3px; box-shadow: 0px 0px 20px #999; margin: 25px; min-height: 50px; border: 1px solid #333; text-shadow: 0 0 1px #000; /*box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset;*/ } .callout::before { content: ""; width: 0px; height: 0px; border: 0.8em solid transparent; position: absolute; } .callout.top::before { left: 60%; bottom: -20px; border-top: 10px solid #444; } .callout.bottom::before { left: 45%; top: -20px; border-bottom: 10px solid #444; } .callout.left::before { right: -20px; top: 40%; border-left: 10px solid #444; } .callout.right::before { left: -20px; top: 40%; border-right: 10px solid #444; } .callout.top-left::before { left: 7px; bottom: -20px; border-top: 10px solid #444; } .callout.top-right::before { right: 7px; bottom: -20px; border-top: 10px solid #444; } liborcus-0.9.2/test/css/basic5.css0000644000175000017500000000016312535701144015441 0ustar renerene/* Handling of comments */ /**/ .info/*--*/{/**/ /*!!!!*/ word-spacing /**/: /**/normal/**/;/**/ }/**/ /* end */ liborcus-0.9.2/test/css/chained1.css0000644000175000017500000000027212535701144015750 0ustar renerene/* descendant selector */ div p { background-color: yellow; } /* direct child */ div > p { background-color: blue; } /* next sibling */ div + p { background-color: red; } liborcus-0.9.2/test/css/basic10.css0000644000175000017500000000020212535701144015507 0ustar renerene /* function as property value */ .foo { background-color: rgb(12, 230, 222); border: solid 5px rgba(30, 12, 0, 0.79); } liborcus-0.9.2/test/css/basic7.css0000644000175000017500000000040412535701144015441 0ustar renerene/* selector with multiple classes */ .one.two.three { color: blue; } .one { color: aqua; } .two { color: azure; } .one.two { color: brown; } span.button.selected { border: solid 4px red; } span.button { border: solid 1px gray; } liborcus-0.9.2/test/css/basic4.css0000644000175000017500000000036012535701144015437 0ustar renereneh1 { margin: 0.5in } /* inches */ h2 { line-height: 3cm } /* centimeters */ h3 { word-spacing: 4mm } /* millimeters */ h4 { font-size: 12pt } /* points */ h4 { font-size: 1pc } /* picas */ p { font-size: 12px } /* px */ liborcus-0.9.2/test/css/basic8.css0000644000175000017500000000036312535701144015446 0ustar renerene .ribbon { background-color: #5BC8F7; } .ribbon::after { content: "Look at this orange box."; background-color: #FFBA10; border-color: black; border-style: dotted; } .ribbon::after::selection { content: "Selected orange box."; } liborcus-0.9.2/test/css/basic11.css0000644000175000017500000000016612535701144015521 0ustar renerene .callout::before { content: ""; width: 0px; height: 0px; border: 0.8em solid transparent; position: absolute; } liborcus-0.9.2/test/css/basic3.css0000644000175000017500000000027112535701144015437 0ustar renerene/* Grouped selectors */ html, body { height: 100%; /* This equals height of browser's inner window size. */ } h1, h2, h3, h4 { font-variant: small-caps; padding: 2.5em; } liborcus-0.9.2/test/css/basic1.css0000644000175000017500000000021012535701144015426 0ustar renerene */ table { width: auto; height: 500px; } td { color: gray; background-color: yellow; } --> liborcus-0.9.2/test/css/basic9.css0000644000175000017500000000033012535701144015441 0ustar renerene/* unvisited link */ a:link { color: #FF0000; } /* visited link */ a:visited { color: #00FF00; } /* mouse over link */ a:hover { color: #FF00FF; } /* selected link */ a:active { color: #0000FF; } liborcus-0.9.2/test/css/basic13.css0000644000175000017500000000040012535701144015512 0ustar renerene #p1 {background-color: hsl(120, 100%, 50%);} /* green */ #p2 {background-color: hsl(120, 100%, 75%);} /* light green */ #p3 {background-color: hsl(120, 100%, 25%);} /* dark green */ #p4 {background-color: hsl(120, 60%, 70%);} /* pastel green */ liborcus-0.9.2/test/xml/0000755000175000017500000000000012540654316013575 5ustar renereneliborcus-0.9.2/test/xml/default-ns/0000755000175000017500000000000012540654316015637 5ustar renereneliborcus-0.9.2/test/xml/default-ns/input.xml0000644000175000017500000000050612535701145017516 0ustar renerene Foo Baa liborcus-0.9.2/test/xml/default-ns/check.txt0000644000175000017500000000107212535701145017452 0ustar renerenens0="http://some.xmlns.org/1.0" ns1="http://some.xmlns.org/2.0" /ns0:data /ns0:data/ns0:entries /ns0:data/ns0:entries@ns0:count="2" /ns0:data/ns0:entries/ns0:entry /ns0:data/ns0:entries/ns0:entry"Foo" /ns0:data/ns0:entries/ns0:entry /ns0:data/ns0:entries/ns0:entry"Baa" /ns0:data/ns1:entries /ns0:data/ns1:entries@ns1:count="3" /ns0:data/ns1:entries/ns1:entry /ns0:data/ns1:entries/ns1:entry@ns1:value="One" /ns0:data/ns1:entries/ns1:entry /ns0:data/ns1:entries/ns1:entry@ns1:value="Two" /ns0:data/ns1:entries/ns1:entry /ns0:data/ns1:entries/ns1:entry@ns1:value="Three" liborcus-0.9.2/test/xml/simple/0000755000175000017500000000000012540654317015067 5ustar renereneliborcus-0.9.2/test/xml/simple/input.xml0000644000175000017500000000051512535701146016746 0ustar renerene some text before comment||after comment liborcus-0.9.2/test/xml/simple/check.txt0000644000175000017500000000034112535701146016700 0ustar renerene/root /root/child /root/child /root/child@attr1="value1" /root/child@attr2="value2" /root/child /root/child/baby /root/child/baby"some text" /root"before comment|" /root"|after comment" /root/child /root/child@attr3="value3" liborcus-0.9.2/test/xml/encoded-attrs/0000755000175000017500000000000012540654316016331 5ustar renereneliborcus-0.9.2/test/xml/encoded-attrs/test1.xml0000644000175000017500000000017112535701145020107 0ustar renerene liborcus-0.9.2/test/xml/cdata-1/0000755000175000017500000000000012540654317015010 5ustar renereneliborcus-0.9.2/test/xml/cdata-1/input.xml0000644000175000017500000000104012535701145016660 0ustar renerene
...]]>
Normal character data and
liborcus-0.9.2/test/xml/cdata-1/check.txt0000644000175000017500000000057612535701145016632 0ustar renerene/root /root/header /root/header"simple text" /root/header /root/header"[[inside double braces]]" /root/header /root/header"multiple" /root/header"CDATA" /root/header"in succession" /root/header /root/header"..." /root/header /root/header"!@#$%^&*()" /root/header /root/header"$amp;" /root/header /root/header"Normal character data and" /root/header"CDATA" liborcus-0.9.2/test/xml/doctype/0000755000175000017500000000000012540654317015245 5ustar renereneliborcus-0.9.2/test/xml/doctype/html.xml0000644000175000017500000000026312535701145016730 0ustar renerene liborcus-0.9.2/test/xml/custom-decl-1/0000755000175000017500000000000012540654317016153 5ustar renereneliborcus-0.9.2/test/xml/custom-decl-1/input.xml0000644000175000017500000000361712535701145020037 0ustar renerene 3#c0c0c04#ff000090001386024075FalseFalse