New Features as of version 1.5.3 Feb. 2015 Top-Level * Better error messages if mixing single socket and dual socket * Allow NORMAL_SOCKET in all Python, C++ MidasTalker/MidasSocket * Added in a second permutation generator (pure C, no dependencies) * Fix up some NAMESPACE issues (so everything works with OC_FORCE_NAMESPACE) * More compiler warnings for ARM eliminated * Preliminary packaging as a Python module * Fixed X-Midas T4Val to handle all serializations to all Python primitives * Minor fix to UDP MidasListener/Yeller documentation Details: * X-Midas: Allow reading t4000 pipes from XMPY Python primitives * Made it so T4Tab/Val routines can choose their serialization (by default it was SERIALIZE_OC): this allows Python primitives to be able to get T4000 data as dicts from the pipe directly. * Added C++ primitive "tabgenout" to show how you can use the new routines above to serialize T4000 (in Python serialization) to the pipes (also added explain files) * Added Python primitive "tabinpytester.py" to show how to read from a T4000 from a pipe (i.e, tabgenout) (also added explain files) * Added a silly macro "t4pytest.txt" in the mcr area showing how to run the two primitives above (tabgenout and tabinpytester) * Added the "t4val.py" to the python area: it makes it easier to read dicts from a t4000 pipe (and is used by tabinpytester) * Separated the serialization_e into its own file so we don't have #include m2chooser.h inside of t4val.h (just serialization.h) * Added in a new all C permutation generator. It works in both C and C++, generates all permutations in order (similar to the C++ STL next_permutation ... Last check it was about 10% faster than the C++ version. Your mileage may vary). Added a new example program as well. * Fixed up and made sure tests and examples in OpenContainers area all worked. * Better error messages if mixing single socket and dual socket; The better error messages come from the *client* when they try to connect and "can't" for some reason. Plus, added better support for NORMAL_SOCKET (which essentially just doesn't do the 16 byte exchange at the start, and only uses one socket: this is the most compatible with other sockets). * C++: * MidasTalker: updated error reporting, NORMAL_SOCKET support. * midastalker_ex2.cc: Example allows NORMAL_SOCKET now * MidasServer: a little extra code for handling NORMAL_SOCKET * midasserver_ex.cc: Example allows NORMAL_SOCKET now * permutation_client.cc, server.cc: Inheriting updated error messages plus better NORMAL_SOCKET handling * README: updated group documention to mention NORMAL_SOCKET * Python * midassocket.py: Added NORMAL_SOCKET (didn't have in Python before!) * MidasTalker: updated error reporting, NORMAL_SOCKET support. * midastalker_ex2.py: Example allows NORMAL_SOCKET now * MidasServer: a little extra code for handling NORMAL_SOCKET * midasserver_ex.py: Example allows NORMAL_SOCKET now * permutation_client.py, server.py: Inheriting updated error messages plus better NORMAL_SOCKET handling * README: updated group documention to mention NORMAL_SOCKET * X-Midas * Added all Python/C++ code (above) dealing with better error messages and NORMAL_SOCKET * Updated the Host primitives/explain pages valpipe, permclient, permserver, xmclient, xmserver So they deal with NORMAL_SOCKET and through better errors. * Java * Updated README, Makefiles * Updated Midastalker to give better error messages when mixing single and dual socket. * Namespace issues: In an attempt to make sure the OC Namespace still is in good shape, and everything still works with OC_FORCE_NAMESPACE, we discovered a few issues in: C++: arraydisposition.h, httplib.h chooseser.h fdtools.cc httptools.h PythonCExt: pyobjconverter.h The PTOOLS option tree compiles and should work with either #define OC_FORCE_NAMESPACE on or off HOST Primitives changed: tab2xml, httpclient, keywords2tab, xmclient * Few more warnings fixed (unused variables) in shmboot.c, p2_test.cc * Added the new PythonModule/ptools dir, which contains most of the working code (minus examples and tests) for people who want to use the code more like a Python module/make it more Pythonic. We DO NOT want to break backwards compatibility (for people who depend on the previous way thinga are packaged), but this is a first step to trying out a new module. List of files: M Python/permutation_client.py M Python/midasserver_ex.py M Python/midasserver.py M Python/permutation_server.py M Python/midastalker.py M Python/midassocket.py M Python/README M Python/midastalker_ex2.py D Xm/ptools152 A + Xm/ptools153 M + Xm/ptools153/python/permutation_client.py M + Xm/ptools153/python/midasserver_ex.py M + Xm/ptools153/python/midasserver.py M + Xm/ptools153/python/permutation_server.py M + Xm/ptools153/python/midastalker.py M + Xm/ptools153/python/README M + Xm/ptools153/python/midassocket.py M + Xm/ptools153/python/midastalker_ex2.py M + Xm/ptools153/inc/midastalker.h M + Xm/ptools153/inc/midasserver.h M + Xm/ptools153/exp/permserver.exp M + Xm/ptools153/exp/valpipe.exp M + Xm/ptools153/exp/permclient.exp M + Xm/ptools153/exp/xmserver.exp M + Xm/ptools153/exp/xmclient.exp M + Xm/ptools153/host/valpipe.cc M + Xm/ptools153/host/permclient.cc M + Xm/ptools153/host/xmserver.cc M + Xm/ptools153/host/xmclient.cc M + Xm/ptools153/host/permserver.cc M Xm/README M C++/midastalker.h M C++/permutation_client.cc M C++/midasserver_ex.cc M C++/permutation_server.cc M C++/midastalker_ex2.cc M C++/README M C++/midasserver.h M C++/chooseser.h A C++/serialization.h M CHANGES M README M Xm/ptools153/pythoncext/pyobjconverter.h M Xm/ptools153/lib/ptools/fdtools.cc M Xm/ptools153/inc/occomplex.h A Xm/ptools153/inc/ocpermute.h M Xm/ptools153/inc/arraydisposition.h M Xm/ptools153/inc/ocport.h M Xm/ptools153/inc/httplib.h M Xm/ptools153/inc/chooseser.h A Xm/ptools153/inc/serialization.h M Xm/ptools153/inc/httptools.h M Xm/ptools153/host/tab2xml.cc M Xm/ptools153/host/httpclient.cc M Xm/ptools153/host/keywords2tab.cc M Xm/ptools153/host/xmclient.cc M PythonCExt/pyobjconverter.h D C++/opencontainers_1_7_8 A + C++/opencontainers_1_7_9 M + C++/opencontainers_1_7_9/tests/bag_test.output M + C++/opencontainers_1_7_9/include/occomplex.h A C++/opencontainers_1_7_9/include/ocpermute.h M + C++/opencontainers_1_7_9/include/ocport.h M + C++/opencontainers_1_7_9/CHANGES M + C++/opencontainers_1_7_9/examples/runall A C++/opencontainers_1_7_9/examples/permute_ex.cc M C++/arraydisposition.h M C++/httplib.h M C++/chooseser.h M C++/fdtools.cc M C++/httptools.h M Xm/ptools153/inc/shmboot.h M C++/Makefile.Linux M C++/Makefile.Linux.factored M C++/p2_test.cc M C++/shmboot.cc M Java/Makefile M Java/README M Java/com/picklingtools/pickle/Makefile M Java/com/picklingtools/midas/MidasTalker.java A PythonModule A PythonModule/ptools A PythonModule/ptools/xmlloader_defs.py A PythonModule/ptools/simplearray.py A PythonModule/ptools/opalfile.py A PythonModule/ptools/parsereader.py A PythonModule/ptools/circularbuffer.py A PythonModule/ptools/__init__.py A PythonModule/ptools/midastalker.py A PythonModule/ptools/occonvert.py A PythonModule/ptools/XMTime.py A PythonModule/ptools/prettyopal.py A PythonModule/ptools/midaslistener.py A PythonModule/ptools/arraydisposition.py A PythonModule/ptools/seriallib.py A PythonModule/ptools/midassocket.py A PythonModule/ptools/midasyeller.py A PythonModule/ptools/xmldumper.py A PythonModule/ptools/opalfile_numeric.py A PythonModule/ptools/xmldumper_defs.py A PythonModule/ptools/xmltools.py A PythonModule/ptools/opalfile_numpy.py A PythonModule/ptools/midasserver.py A PythonModule/ptools/cxmltools.py A PythonModule/ptools/conforms.py A PythonModule/ptools/pretty.py A PythonModule/ptools/xmlloader.py M Xm/ptools153/cfg/commands.cfg M Xm/ptools153/cfg/primitives.cfg A Xm/ptools153/mcr/t4pytest.txt A Xm/ptools153/python/t4val.py M Xm/ptools153/lib/ptools/t4val.cc A Xm/ptools153/exp/tabgenout.exp A Xm/ptools153/exp/tabinpytester.exp A Xm/ptools153/host/tabinpytester.py A Xm/ptools153/host/tabgenout.cc A Xm/ptools153/host/tabinpytester.exe M Docs/faq.pdf M Docs/shm.pdf M Docs/html/_sources/xmldoc.txt M Docs/html/_sources/faq.txt M Docs/html/_sources/usersguide.txt M Docs/html/usersguide.html M Docs/html/genindex.html M Docs/html/java.html M Docs/html/objects.inv M Docs/html/_static/jquery.js M Docs/html/_static/pygments.css M Docs/html/_static/doctools.js M Docs/html/_static/searchtools.js M Docs/html/_static/basic.css M Docs/html/_static/default.css M Docs/html/search.html M Docs/html/searchindex.js M Docs/html/xmldoc.html M Docs/html/faq.html M Docs/html/index.html M Docs/html/shm.html M Docs/xmldoc.txt M Docs/faq.txt M Docs/usersguide.pdf M Docs/PicklingTools.pdf M Docs/java.pdf M Docs/usersguide.txt M Docs/xmldoc.pdf