PROTON-558: Rearrange FIELD table to save space:
- Splitting the table into 2 string tables
  and just put table offsets in the actual FIELD table.
- Make tables constant to give them a chance to get into
  the program text
- Add error checking to make sure we don't access the wrong
  field name or a null.

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1595306 13f79535-47bb-0310-9956-ffa450edef68
PROTON-580: Perl Data can handle complex array and hash types

Added the get_list_helper and put_list_helper methods to correctly
marshal arrays between a Data instance and Perl.

Updated the recv.pl example to properly display the body of a message
received.

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1595338 13f79535-47bb-0310-9956-ffa450edef68
PROTON-583: Move a bunch of constant data structures to read only section
- Everywhere a pn_class_t is defined it is a constant structure that
  can be read only.
- There is a table in the SSL implementation that also is constant
  and can be moved to the read only section.

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1596358 13f79535-47bb-0310-9956-ffa450edef68
PROTON-436: fixed pn_data_dump for complex types

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1596622 13f79535-47bb-0310-9956-ffa450edef68
NO-JIRA: remove unused scratch buffer of 1K bytes per SASL instance

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1596671 13f79535-47bb-0310-9956-ffa450edef68
PROTON-585: Rearrange structures (where possible) to remove padding holes

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1596912 13f79535-47bb-0310-9956-ffa450edef68
PROTON-587: Fails to compile Visual Studio 2008
This fix provides a definition for size_t in that compiler suite.



git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1598084 13f79535-47bb-0310-9956-ffa450edef68
PROTON-429: Separated out read-only byte ranges from writable byte ranges

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1598389 13f79535-47bb-0310-9956-ffa450edef68
NO-JIRA: Removed unused macro definitions

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1599790 13f79535-47bb-0310-9956-ffa450edef68
PROTON-516: Don't allocate a frame buffer the size of the remote max frame size

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1599791 13f79535-47bb-0310-9956-ffa450edef68
NO-JIRA: Rearrange the C include file directories a little for more consistency

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1599792 13f79535-47bb-0310-9956-ffa450edef68
PROTON-591, PROTON-590: Change frame dispatch to use switch statement
- Rather than an explicit function table
- This reduces the per connection memory use significantly
- Fixes a possible crash if Proton receives an unknown performative

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1599793 13f79535-47bb-0310-9956-ffa450edef68
fixed build breakage

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1600321 13f79535-47bb-0310-9956-ffa450edef68
NO-JIRA: Minor API improvements

- Message constructor keyword args.
- Added inferred docstring from C API doc.
- Error checking in subscribe()

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1600528 13f79535-47bb-0310-9956-ffa450edef68
PROTON-592: Use os.linesep in assert test so test passes on Windows.



git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1600676 13f79535-47bb-0310-9956-ffa450edef68
PROTON-596: Add config.bat environment settings for windows.
* Bug-for-bug compatible with config.sh 
** adds new paths after old paths
** uses fixed \build folder for builds
* For use with debug builds only (pending conversion to cmake configure .in file)
To use:
  > cd proton
  > call config.bat
  > cd build
  > ctest


git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1600727 13f79535-47bb-0310-9956-ffa450edef68
PROTON-596: change raw .bat file to .bat.in for use in cmake configure

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1600907 13f79535-47bb-0310-9956-ffa450edef68
PROTON-596: Add cmake configure_file to customize config.bat for windows builds.

1. Cmake on windows produces all four cmake configurations (debug, relwithdebinfo, ...) on one pass. Producing N config.bat files, one for each configuration, seems like overkill. The build produces just one config.bat that that is set up for RelWithDebInfo.

2. The prototype bash file config.sh does several conditional tests for sensing the build and changing the environment accordingly. The windows version flattens these tests out and forces the settings every time. It's easier to understand this way and requires a lot less testing for proof. Only the Python binding has been exercised; Ruby, Perl, and PHP not so much.

3. A typical 32-bit VS2010 run:
  > mkdir build
  > mkdir install
  > cd build
  > call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" x86
  > cmake -G "Visual Studio 10" -DCMAKE_INSTALL_PREFIX=../install ..
  > devenv proton.sln /build "RelWithDebInfo|Win32" /project INSTALL
  > devenv proton.sln /build "Debug|Win32" /project INSTALL
  > call config.bat
  > ctest -VV

There is one python test that fails regularly (out of 282).


git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1600924 13f79535-47bb-0310-9956-ffa450edef68
PROTON-595: Accomodate windows when launching Popen(xxx.py,...)

Detects running on windows and in that case runs Popen with shell=True.

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1600981 13f79535-47bb-0310-9956-ffa450edef68
PROTON-596: Suppress MSVC warnings

This suppression covers:

>..\..\proton-c\src\object\object.c(232): 
   warning C4244: 'argument' : conversion from 'ssize_t' to 'int',
   possible loss of data
2>..\..\proton-c\src\object\object.c(260):
   warning C4267: 'argument' : conversion from 'size_t' to 'int',
   possible loss of data
2>..\..\proton-c\src\windows\driver.c(777):
   warning C4800: 'int' : forcing value to bool 'true' or 'false'
   (performance warning)
6>..\..\..\..\..\tests\tools\apps\c\msgr-recv.c(90): 
   warning C4996: 'sscanf': This function or variable may be unsafe.
   Consider using sscanf_s instead. 
   To disable deprecation, use _CRT_SECURE_NO_WARNINGS

This covers the majority of the warnings. A typical 64-bit compile has 172 
warnings making real problems harder to see. It also follows the
pattern used in Qpid proper.

* C4244 and C4267 could still be real problems.
  Try enabling -Wconversion in GCC if you want to be pedantic in Qpid or
  Proton.

* C4800 is probably not a risk as it's a fairly idiomatic pattern in C.

* C4996 is MSVC complaining of functions that consume buffers using
 {pointer} and not {pointer, size}. They have been the source of seg
 faults and innumerable security vulnerabilities throughout the years.

git-svn-id: https://svn.apache.org/repos/asf/qpid/proton/trunk@1601010 13f79535-47bb-0310-9956-ffa450edef68