Parallel and Synchronized Multi UUT's Test

Hi,
We have more than 150 tests should be applied to verify our product and we have big quantity to be tested in short period.
For this purpose I decided to test 4 UUT's at a time using suitable configuration. I have heart that Test Stand can meet the requirements and I have red TS help (batch & parallel test) but I get confused since I'm not expert in TS.
To make it clear I have:
*4 DMMs
* 4 set of switches and relays to apply 4 tests at a time.
* shared sources (AC PSU, DC PSU, FGen) that can feed 4 UUT at time.
What I'm looking for is:
Is it possible to apply 4 tests at a time using TS? (I think yes)
Since I have shared power sources, can I synchronize all the UUT's to be at the same step? (I mean all 4 UUT's should start step1 and wait till all finishes step 1 to start step 2.)
When any UUT3 fail, UUT3 test stops and other tests should complete the whole sequence.
I have already developed TS sequence that call group of sub-vi's to test single UUT at time.
Knowing the previous points what is the right way to apply my test?
Help me please.
Thanks

Thank you very much Andy for you supports.
Your information is very helpful and it encourages me to deeply go through Test Stand.
I would like to clarify the image here.
·         4 UUT to be tested at the same time.
·          The test contains many main steps which include group of measuring points.
·         Every main step consist of Two stages:
o        1st: setup and powering stage. (Shared for all 4 UUT)
o        2nd: Measurements stage. (each UUT has its own DMM and group of switches)
·         The powering stage should be implemented at the beginning of each main step ones for all UUT.
·         The measuring stage will be implemented for each UUT and for each measuring point till main stage terminate.
·         When all UUT terminate the First main step, new main step starts with new setup and powering stage.
  Could you please advice me what to do?
Thanks & Regards

Similar Messages

  • [svn:osmf:] 13916: Added DynamicDRMTrait, Composite Unit tests for parallel and serial compositions.

    Revision: 13916
    Revision: 13916
    Author:   [email protected]
    Date:     2010-02-01 16:42:09 -0800 (Mon, 01 Feb 2010)
    Log Message:
    Added DynamicDRMTrait, Composite Unit tests for parallel and serial compositions.  Bug fixes in CompositeDRMTrait.
    Modified Paths:
        osmf/trunk/framework/OSMF/org/osmf/composition/CompositeDRMTrait.as
        osmf/trunk/framework/OSMFTest/org/osmf/OSMFTests.as
        osmf/trunk/framework/OSMFTest/org/osmf/utils/DynamicMediaElement.as
    Added Paths:
        osmf/trunk/framework/OSMFTest/org/osmf/composition/TestParallelElementDRMTrait.as
        osmf/trunk/framework/OSMFTest/org/osmf/composition/TestSerialElementDRMTrait.as
        osmf/trunk/framework/OSMFTest/org/osmf/utils/DynamicDRMTrait.as

  • Teststand Multi UUT execution Timing

    Dear All,
       I am working on Multi uut testsystem where I have to tests 5 UUT in parallel, I am using Labview adapter,with Batch process model and testing energy meters where I have hardware suitable for 5 UUT. My question is My execution timing for 1,2 .And 5 uut at a time is different, Ex.. I an getting 1 UUT tested in 5 minutes and when I starts testing when I start testing 2 UUT at the same time My total execution time for same steps and sequence increases to 7 minutes.
    Pl suggest how I can achieve same timing which I am getting for single UUT for more than one UUT execution.

    Doug, I have shared hardware and it is source calibrator for current and voltage which is wired in parallel to all 5 UUT so that it can source to all UUT at the same time.My report generation is disabled and there is no on-fly report ON.I am doing my report generation using the one labview VI where I formatted report at the end of tests so while running the tests report generation not involved.I have around 65 steps in one sequence which made for calibration.
    To get same time of execution for 5 UUT as single UUT do I need to make my labview code module as reentrant? or do I need to make multi thread in labview vi code module like each socket will have separate loop execution inside the VI.? attaching here .seq file for your reference
    Attachments:
    PM5350 Multi UUT Test.seq ‏88 KB

  • Does Captivate 7/8 support *Dynamic* Streaming Video for synchronized Multi-Slide videos?

    I'm experimenting with inserting Streaming Video into Captivate Lessons.  I've set up an Adobe Media Server (AMS) to stream the video.
    When inserting Multi-Slide Synchronized video, it's not clear whether/how I can insert a Dynamic Streaming Video link in a synchronized Multi-Slide Video. 
    (The Dynamic videos can switch between videos of varying quality based on the user's available bandwidth.) 
    I think you're supposed use a URL that points to a manifest file (.F4M), which catalogs the videos of varying bitrates.  However, I can't seem to get it to work in Captivate and Adobe is a little vague on how/if one references the manifest file. (i.e. I can't find any examples.)
    So, does Captivate support dynamic streaming video?
    If not, which is more robust in Captivate? HTTP progressive download or regular (non-Dynamic) RTMP Streaming Video?

    Thanks Erik.
    We did some more tests/checking-around and have convinced ourselves that the URL needs to point to the manifest file in order for Dynamic Media Streaming to work.
    When we examined the Adobe Media Server sample web page (below), we found buttons to select different media sources.
    The 'Multiple Bitrate' button under RTMP Dynamic Streaming Sample is mapped to the URL of an F4M (manifest) file.
    The 'Single Bitrate' button is mapped to an individual mp4 file.
    We also found more clues in the FlowPlayer RTMP F4M page.
    Also, I'm guessing that Captivate can't handle adaptive bitrate streaming from non-RTMP sources based on the menu options. (See screen capture below)
    If the menu above is correct, the first choice is the opposite of streaming media, because it says 'Progressive Download'.  (Progressive download caches the video file on the client machine.)
    The next one is for private Adobe Media Streaming and the third is for 3rd-party Adobe Media Streaming services.
    So, I'm pretty much convinced that it's not supported.

  • How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?

    Hi 
    I have a stored procedure. It can be executed like this
    exec test @p = 1;
    exec test @p = 2
    exec test @p = n;
    n can be hundred.
    I want the sp being executed in parallel, not sequence. It means the 3 examples above can be run at the same time.
    If I know the number in advance, say 3, I can create 3 different Execution SQL Tasks. They can be run in parallel.
    However, the n is not static. It is coming from a table. 
    How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?
    I think about using script task. In the script, I get the value of n, and the list of p, from the table, then running a loop with. In the loop, I create a threat and in the threat, I execute the sp like : exec test @p = p. So the exec test may
    be run parallel. But I am not sure if it works.
    Any idea is really appreciated.

    Hi nam_man,
    According to your description, you want to call stored procedures in parallel, right?
    In SSIS, we can create separate jobs with different stored procedures, then set the same schedule to kick the jobs off at the same time. In this way, we should be careful to monitor blocking and deadlocking depending on what the jobs are doing.
    We can also put all stored procedures in SSIS Sequence container, then they will be run in parallel.
    For more information about SSIS job and Sequence container, please refer to the following documents:
    http://www.mssqltips.com/sqlservertutorial/220/scheduling-ssis-packages-with-sql-server-agent/
    https://msdn.microsoft.com/en-us/library/ms139855(v=sql.110).aspx
    If you have any more questions, please feel free to ask.
    Thanks,
    Wendy Fu
    Wendy Fu
    TechNet Community Support

  • Crane Aerospace and electronics is looking for Test Engineers with LabVIEW experience - please disregard previous post.

    Here is the correct post:
    Are you detail-oriented, creative, and technically skilled at Engineering design and development?  Come to Crane Aerospace & Electronics and use your excellent Engineering skills to design, improve, and deliver the next generation of products in the aerospace and electronics Industry!
    We have a unique and exciting career opportunity for Engineer II, Test.
    You will be responsible for maximizing new product development and manufacturing performance through the creation and deployment of test strategies, tools, and plans.  Design and implement high performance hardware and software for test equipment.  Authoring test procedures and performing Qualification test activities.  Ensure high product quality.
    Responsibilities:
    Collaborate with customers and multi-disciplined engineers to establish/clarify test, qualification, verification and validation requirements.
    Write test plans, procedures, requirements and reports in a highly structured environment.
    Analyze, develop and deploy complex and high performance test hardware and software solutions for automated test equipment. 
    Design, develop, debug, validate & verify the fabrication of manual and automated test equipment at the circuit board and system level, and specify and procure COTS test equipment.
    Develop/maintain hardware documentation including block diagrams, schematics, BOMs, wiring diagrams and wiring lists, software documentation, and configuration control of initial release and updates. 
    Perform detailed calculations to establish test equipment specifications and design margins.
    Maintain existing test systems through bug fixes, improvements and modifications.
    Support the estimation of costs and schedules to develop or upgrade test platforms.
    To perform a number of the above responsibilities with limited supervision.
    Minimum Requirements:
    Experience: 2-5 years.  Previous work experience in aerospace, space or medical electronics industry preferred.
    Knowledge: Microprocessor / Microcontroller hardware and firmware design; Analog Circuit and power supply design; Digital Circuit Design including high-speed serial communication design; Firmware programming in c; Schematic Capture, PADS Logic preferred; Circuit Simulation; Fundamentals of magnetic proximity, temperature, and pressure sensing electronics; ESD; Familiarity with testing standards (MIL-810, MIL-704, and DO-160 preferred).  Basic laboratory test equipment; LabVIEW experience, certification preferred; Developing hardware per DO-254 and software per DO-178 preferred; Experience with Adobe FrameMaker, IBM Rational tools, TestStand, Microsoft Project preferred.
    Skills: Good interpersonal and communication skills (verbal and written)- effectively lead and/or participate in multifunctional teams in a dynamic work environment. Ability to manage multiple tasks, flexibility to switch between tasks and prioritize tasks. 
    Education/Certification: Bachelors Degree in electrical engineering, computer science, physics or related technical discipline.
    Eligibility Requirement: Must be a US Person (under ITAR rules) to be eligible.
    Working Conditions:
    Working conditions are normal for an office/manufacturing environment. Machinery operation requires the use of safety equipment to include but not limited to safety glasses, heel straps, and shop coats.
    Requires lifting 25 lbs
    Apply online today: http://ch.tbe.taleo.net/CH06/ats/careers/requisition.jsp?org=CRANEAE&cws=5&rid=3170
    Crane Aerospace & Electronics offers competitive salaries and outstanding opportunities for career growth and development.  Visit our website at CraneAE.com for more information on our company, benefits and great opportunities.
    In our efforts to maintain a safe and drug-free workplace, Crane Aerospace & Electronics requires that candidates complete a satisfactory background check and pass a drug screen prior to employment.  FAA sensitive positions require employees to participate in a random drug test pool.

    How can you say you are hiring test engineers with LabVIEW, yet the job description doesn't even mention LabVIEW.  All I see in there is CAD design.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • How to Use synchronous RFC calls during test run for remote accesses

    there is a Setting for the usage of RFC accesses from a tested system
    using eCATT.
    'X' - Use asynchronous RFC calls during test run for remote accesses
    ' ' - Use synchronous RFC calls during test run for remote accesses
    I developed an eCATT as following :
      SAPGUI ( SAPGUI_1 , Target_system_1 ).
      SAPGUI ( SAPGUI_2 , Target_system_2 ).
    My question is how to run the eCATT in a synchronous RFC calls
    PS: I do not want to change the Target_system to the same one in the
    above script of ecatt.Because I need to run it in 2 different Target
    systems sometime.
    for example, I give a Target_system_3 when run this eCATT
    I want the SAPGUI_1 and SAPGUI_2 run the Target_system_3 but not the
    Target_system_1 or Target_system_2 .
    Could you please tell me how to make it without the changes in script?
    Edited by: Weitong Liu on Mar 24, 2011 9:44 AM

    Hi Liu,
    Weitong Liu wrote:
    > ' ' - Use synchronous RFC calls during test run for remote accesses
    This is the standard option value. Asynchronous are not the standard way and used only for very special purposes.
    Weitong Liu wrote:
    > I developed an eCATT as following :
    >   SAPGUI ( SAPGUI_1 , Target_system_1 ).
    >   SAPGUI ( SAPGUI_2 , Target_system_2 ).
    > My question is how to run the eCATT in a synchronous RFC calls
    The commands will be executed in sequence. So each call will be synchronously replayed against TS1 and TS2.
    What is you issue with this standard procedure?
    Kind regards,
    Christoph

  • Parallels and Bootcamp Thread

    Id like to start a thread involving the 2. I am would like to get users of both to state their observations and personal opinions. Please take a few moments to add a comment.
    This is to help me and others when trying to decide which to use. I have no choice, I need XP on here, but I HATE the thought of it being inside my clean, pure Mac! lol
    Lets see if I have it correct:
    Bootcamp:
    -Software to bootup Windows. You cannot simply switch over from OS X.
    -You must partition the drive and install Windows on the partition
    -Allows you to use 100% of the Mac's resources
    -easliy "unpartition" drive if Windows is to be removed in the future
    Parallels:
    -Software allowing one to switch back and forth from OSX and Windows and also allows one to use both at the same time
    -Must still partition the drive, but can specify the amount
    -Apps. running in Windows must share resources with OSX, so this may cause Windows apps to run slower.
    -does not offer an "unpartiton" option. You must wipe the entire drive
    Have I got the basics? I will edit this if not. Thank you!

    I'll post to this because while I support the "search first" concept often the information is scattered in multiple threads interlaced with other comments and it takes a ton of time to decipher it all.
    Also in this case I believe both Parallels and Bootcamp have changed the personal computing world enough that I believe we need to examine them together in detail:
    First off: I purchased a MacBookPro and a MacMini based on Intel BECAUSE of these two technologies.
    My work requires programming in Windows XP under Delphi. Yet I prefer Unix and OS X is Unix with a killer GUI. For many years I wanted a notebook that would give me everything in one nice package. The MBP is that notebook and I can only see them getting better and better. Mine has been the best notebook I've ever owned even with the little things like warped lid etc.
    Parallels simply put is the answer to a dream for me. All I need Windows for is to run my programming environment and test. I need internet/network connectivity. In Parallels I get all that and more.
    I installed BootCamp the day the beta came available and it was great. No doubt a killer way to run Windows. But I lost OS X. IE I couldn't switch. For me this was not much better than having a Windows based laptop. I wanted both.
    I think what Parallels has accomplished is simply amazing and I participate in the Parallels forums. But I see alot of people asking for things that are very difficult. Basically they want Parallels to fully support highspeed 3D graphics and full USB 2.0. Both of these things give Windows alone a headache. To ask that it be done in a virtualization environment seems to be asking the impossible.
    Yet Parallels claims there will be answers to these questions. For now I can tell any of you that are concerned... I have not found ONE SINGLE PROGRAM that does not run in Parallels UNLESS it is doing something hardware specific.
    Add to that the speed which which it runs (almost native!) and you simply can't go wrong.
    Furthermore as people here have stated. Parallels uses a disk file to represent the hard disk. To me this is BETTER than having a partition. One simple reason... You can easily make backups of the ENTIRE hard disk. My Windows XP Parallels file is about 16gb. It takes about 5 minutes but on a regular basis and before EVERY new install of anything in Windows or OS X I copy it to my backup disk. I have about 5 archived versions of this file.
    In the event something goes bad in a Windows install... No problem. Quit the VM, copy the "good" file back in place and you've just gone back in time BETTER than any of the restore point stuff in Win XP ever could be.
    That alone makes Parallels an AMAZING choice for people doing testing and development. You can have a "fresh & clean" environment at anytime by copying over a saved off disk file.
    Bootcamp, since it puts WinXP on a disk partition you are resigned to using some of the disk cloning software to achieve the same thing. Most of those like Norton GoBack and others require reboots to "unlock" the volume for cloning. During this reboot you are hosed and unable to use your machine.
    With Parallels while I'm backing up my VM file I'm in Entourage answering messages or surfing the web in Safari/OmniWeb.
    If I were Apple I would be buying up Parallels as we speak and making sure this technology was tightly integrated into Leopard or whatever is destined next.
    Imagine an OS that could boast: Install ANY OS with in this OS and run it at close to native speed in a window! That is what Parallels gives OS X at the current moment. If Apple bought it, put it in Leopard or whatever and didn't kill it too bad with registrations and limitations it might place a serious crimp in M$ plans for XP in the future. They have NOTHING close to this.
    So that's my sales pitch for Parallels. (Parallels... I'll expect my check in the mail!!) It's not for everyone! If you want to run XP based fast graphics games... You will probably have trouble. If you want to control various strange USB devices requiring drivers. You will probably have trouble. If you want to install and run the mariad variety of XP software and be able to use it while you are still running everything you like and love about OS X then it is the way to go.
    The ONLY caveat... MEMORY! Load your machine up to the max! MacPRO users have a special problem in that they can put more memory in than Parallels supports but those issues are being worked on.
    I'm hoping someday a firmware/ROM fix comes out for the MBP that enables us to put 4gb in these little notebooks. That would rock.
    Mark

  • Random error occur if a program including Non-regeration AO and Synchronous AO&AI function?

    Hi,
    Does you know Non-regeneration of data and synchronous AO&AI functions can be written in same VI or not?
    I did a program which needs Non-regeneration of Signal and Synchronous AO&AI functions.
    When I run this program, a error 200292 is random occured. Would you know how to solve it? Thanks very much.
    Attachments:
    unstable question.vi ‏144 KB

    Hello,
    "1. If no. of sample is -1, then I can't control how many points it capture. I cannot do the alignment between AO and AI data. For example, AO is 100kpts and AI is 90~120kpts."
    Even though you are displaying 90 - 120 kpts per iteration of your while loop, the AI and AO is still synchronized. The reason you are seeing a difference in the number of points written and read in each loop is because the DAQmx Read.vi immediately reads whatever data is in the buffer. Then the DAQmx Write.vi writes 1000 points. The DAQmx Write will hold the loop until all 1000 points are written. When the next DAQmx Read is called, it picks up the data that it missed in the previous iteration plus the new that data that was written.
    "2. If the "Sinewave generation" is run before AO write, the level or frequency AO signal cannot be changed during program running. However, I need it to be changed easy and effectively."
    To change the waveform parameters during execution, you just need to put another waveform generator inside the while loop. I have made this modification and attached the new VI. Keep in mind that with AO, the output frequency is dependent on the frequency control, sampling frequency of the generator, and update rate. Use this formula to calculate actual output signal frequency:
    Output Frequency = [Update Rate * Frequency] / Sampling Frequency
    Let me know if you have any further questions.
    Regards,
    Sean C.
    Attachments:
    Multi-Function-Synch AI-AO-Non-Regen_2.vi ‏190 KB

  • Parallel and multiplexed modes for SCXI...

    I am having difficulty understanding how the Parallel and Multiplexed modes for SCXI modules work.  I've been trying to find one comprehensive document but have been unsuccessful.  Can you please help considering the following configurations:
    Single chassis, single module
    Single chassis, multiple modules
    Multi-chassis, single module on each (I don't know when that would ever be used, but nevertheless...)
    Multi-chassis, multiple modules
    Also I would appreciate it if you could mention when the DAQ device's onboard multiplexer is used, when the SCXI chassis/module/bus' multiplexer (I don't know where exactly the SCXI-based multiplexing occurs) is used, and when both are used.
    Thank you.

    These links should help you
    http://digital.ni.com/public.nsf/websearch/cc4aa48bbff92ba586256522004eb7e3?OpenDocument
    http://digital.ni.com/public.nsf/allkb/E3D3723E9D05AB4986256AA9005B5572
    http://digital.ni.com/public.nsf/allkb/86C493E0768EBCFE86256FD4006BCD52
    http://digital.ni.com/manuals.nsf/websearch/c195895e8c9cae3d8625691f004db285
    Regards,
    Dev

  • Parallel and sequental parts in one file ?

    Hi,
    The situation is following: there are several units for test (which can be done in parallel), and one routine for initializing interface, which has to be runed once. If i use sequental model with subsequences for parallel tests in case of "run sequence in a new thread" i have problems with generating reports (one report for every unit had to be made), in case of "run sequence in a new execution" i have problems with passing parameters (FileGlobals is not good place for it) but better situation with reports. In Parallel Model it's not clear how to initialise _once_ interface for all units "keeping it simple".
    Any helpful ideas are wellcome (generating reports is essential part of tests).

    Not fully ,
    I need to pass parameters (channel number for example), which are _different_ for every subsequence. I am using sequental model and want to launch subsequences in "New Execution" (to get separate report for _every_ subsequence). But parameters seems to be ignored (except sequence name, 1st parameter) when "Load Prototype" button is used. When i use "New Thread" paramters are passed without any problems, but report is generated in one big file.
    I am a newbie to TestStand and I want to use TestStand as sequecer for using DLLs routines. But it seems to me that it is no use for "Batch" or "Parallel" models for bigger tests, where have to be sequental and parallel parts. Usage of this models without changes is not very comfortable. Maybe i am di
    gging in wrong direction ? Maybe someone could send me peace of working code where subsequence is called in "New Execution" and few parameters are passed to it ?
    p.s. Thanks for previous answer !

  • Considering FileVault usage on an iMac with OSX 10.6.7. Wanting to know more about strengths and weaknesses of Filevault with Time Machine, Parallels and Carbon Copy Cloner. Any negatives to consider before flipping the switch?

    I'm considering FileVault usage on an iMac with OSX 10.6.7. Wanting to know more about strengths and weaknesses of Filevault with Time Machine, Parallels and Carbon Copy Cloner. Any negatives to consider before flipping the switch? Any information ?
    Would specifically like to know:
    Filevault impact on performance and application usability.
    TIme machine impacts, and whether TIme Machine volume will also be secure?
    Will a Cloned copy made with CCC be  bootable, or usable?
    Any other negatives to consider before turning this thing on?
    Thanks,

    Filevault impact on performance and application usability.
    FileVault encrypts the user's home directory only - it is basically an encrypted disk image that is automatically opened when you log in and closed when you log out. It does cause disk accesses to be a bit slower so it isn't a good idea to use an encrypted account with sound or video or large graphics files. I have no experience with it with Parallels Desktop but suspect that you'd notice a bit of a slowdown. Note: in the User's directory you'll see a Shared Folder. Since FV only encrypts the user's directory you can put data you don't need encrypted in this shared folder which won't be encrypted.
    TIme machine impacts, and whether TIme Machine volume will also be secure?
    There are issues with TM and FV but how extensive they are with Snow Leopard I can't say, once I realized that TM and FV hadn't substantially changed between 10.5 and 10.6 I stopped dealing with it. When FV and TM were first introduced my testing led me to recommend using CCC or SuperDuper! for backing up.
    Will a Cloned copy made with CCC be  bootable, or usable?
    Yes
    Any other negatives to consider before turning this thing on?
    Since FV is nothing more than a disk image - and disk images can fail - there are several problems with FV in my opinion. If an encrypted disk image fails it isn't possible to access any of that data. If you don't have a recent (undamaged) backup of the disk image and/or recent backup of the data within the disk image you are in a world of hurt. This isn't just a warning of possibility - this is a real danger that I've seen all too often at the shop where I have worked part time for a number of years.
    At this time I strongly recommend that people who have sensitive data keep that sensitive data segregated from their general data and encrypt only the sensitive data or use other methods of locking it down such as saving on an external drive that is kept in a safe. Call me paranoid but I don't even keep all my sensitive data in one encrypted disk image. I use multiple disk images and keep multiple sequential backups. That way I might someday find that my up-to-date investments disk image won't mount but (a) I can go back a week to a backup and (b) that won't impact my up-to-date business records because those are in a different disk image

  • Some questions on versioning and synchronizing metadata

    Hy all!
    I am quite new to warehousing and Oracle Warehouse Builder, and so i would have some questions regarding on some common issues. I would appriciate if you guys would who have experience in this domain to share some good practice knowledge :)
    I am using OWB 10.2
    So first of all i would like to know if you have some proposal of the way of versioning control and synchronizing projects between team memebers when working on a bigger project, team memebers that don't work on the same repository (cause i saw that OWB has an integrated multiuser support for handeling object locks and user sessions).
    I saw that a way of migrating data from one place to a nother is using the import/export options integrated in OWB. This creates mdl files wich are some kind of "dumps" of the metadata informations, but the thing with these mdl files wich i don't think is a good way to synchronize is that first of all the .mdx and .xml files contained in the .mdl (wich is kind of a zip) contains many informations in it (like creation date, some timestamps, etc) wich are always updated when exporting, and if synchronizing these files maybee using CVS, we always will get differences between the files alltough they would contain the same thing, only timestamps changed.
    Then a nother issue with this, is that we could have 2 alternatives: dump the whole project, wich is odd to have to synchronize a single file between users, especialy on a big project, then the orher way would be doing for each object from the project (each mapping, each table, etc) an separate .mdl filem then to synchronize each file of each object, wich will be unefficient on reimporting each file in part.
    So please if you can share the way you work on a big project with many implementers with OWB, i would really appriciate.
    A nother thing i would like to know is: is there a way to generate from an existing project (like one created with OWB) the OMB commands dump (maybee in a tcl script)? Cause i saw that the way the exeprienced users implement warehousing is using TCL with OMB language. I downloaded the example from oracle for warehouse project, and i saw that is entirely made from tcl scripts (so no mdl file involved). And this i think would be nice, to have the OMB commands generated from an existing projects.
    I see this OWB projects like a database wich can be built up from only OMB commands and OWB a graphical tool to do this (same as constructing a database only from DDL commands or using SQL developer to do this), this is why i am asking about a way of dumping the OMB commands for creating an OWB project.
    Please give me some advices, and correct me if i sad some dumb things :D but i really am new to warehousing and i would really appriciate if you guys with experience could share some informations.
    Thank you verry much!
    Alex21

    Depends. Having everyone working on the same project certainly simplifies things a lot regarding merging and is generally my preference. But I also recognize that some projects are complex enough that people wind up stepping on each other's toes if this is the case. In those cases, though, I try to minimize the issue of merging changes by having common structural objects (code libraries, tables, views, etc) retained in a single, strictly controlled, central project schema and having the developer's personal work areas reference them by synonym, thus being unable to alter them to the detriment of others.
    If they want to change a common object then need to drop their synonym and make a local copy which they can alter, and then there is a managed process by which these get merged back into the main project schema.
    This way any changes MUST go through a central schema, we can put processes in place to notify all of the team of any impending changes, and can also script updates across the team.
    Every hour a script runs automatically that checks for dropped synonyms and notifies the project leader. It especially checks for two developers who have built local copies of the same object and notifies each that they need to coordinate with each other as they are risking a conflict. When a structural change is submitted back to the central shared schema, it is added to a batch that is installed at end of business and a list of those impending changes is circulated to the team along with impact analysis for dependencies. The install script updates the main schema, then also drops the local copy of the object in the developer's schema who made the change and re-establishes the synonym there to get back to status quo for the change monitoring. Finally, it then updates itself in all of the developer areas via OMBPlus. So, each morning the developers return to an updated and synched environment as far as the underlying structure.
    This takes care of merging structural issues, and the management of the team should minimize other metadata merging by managing the worklist of who is to be working on a given mapping or process flow at a given time. Anyone found to be doing extraneous changes to a mapping or process flow when it is not in their job queue without getting pre-approval will be spoken to VERY firmly as this is counter to policy. And yes, OWB objects such as mappings are then also coordinated to the central project via import/export. OMBplus scripts also propogate these changes daily across the team as well.
    Yep, there is a whole lot of scripting involved to get set up.... but it saves a ton of time merging things and solvinv conflicts down the road.
    Cheers,
    Mike

  • Can login to Xmarks on Mac, 10.6.4, no problem, but running parallels and windows XP and Firefox on that, I can't login to Xmarks since it won't accept my password, and I'm asking who to contact to fix this problem with Xmarks?

    If the question had been asked before, I would have read the answer. Can you make this support any more useless?
    I'm trying to run Firefox on a Mac with Parallels and Windows XP. I can use Firefox, that's fine, what I can't do is sync my bookmarks. They are all synced on both macs, and my old PC, a really slow Dell L110, thus trying to use Parellels. Is there any way to contact someone who can look at why my log in to Xmarks won't work on Parallels? Or if there is a support page somewhere where one can actually get some answers, please let me know. Thanks, Rob Rand

    Same issue - however firefox will open but I can not click on only of my tool bar shortcuts - the writing on the google age is greyed out so I can not click on anything. Still no resolution? I have deleted the folders and re-installed - it will open and then locks and it will not work????

  • 2.3.11 and 2.4.13 fail tests on OpenSuse 10.3 x86_64

    I am trying to get php and perl API of BDBXML 2.3.11 and 2.4.13 running on OpenSuse 10.3 x86_64
    when using --enable-perl the perl tests fail so i tried to run the test suite and compare it against 32bit builds.
    2.3.11
    after changing dbxml/dist/configure.ac like this:
    367c367
    <       LIBTSO_MODSUFFIX=@MODSUFFIX@
    LIBTSO_MODSUFFIX=$MODSUFFIX'make test' in dbxml/build_unix produces a ALL.OUT
    using:
    grep "^FAIL" -A 1 -B 1 dbxml-2.3.11/dbxml/build_unix/ALL.OUTstill produces lots of output. Since the 32bit version is working I compared the output produced on a 32bit ubuntu 07.10 with 64bit OpenSuse 10.3 which showed that following errors only occured on the 64bit system:
                            Xml003.3.1c: Put/get on both DB's
    FAIL:10:16:44 (00:00:00) dbxml_dump/dbxml_load(3.3.1.dbxml:unexpected hexadecimal value ' '
    load 3.3.1.dbxml-dumpload: Error: Invalid argument): expected 0, got 1
    FAIL:10:16:44 (00:00:00) Dump/load of 3.3.1.dbxml failed.
            8.8: Query timeout
    FAIL: should not have gotten here
    FAIL:10:17:04 (00:00:00) 8.8.8 returned error value 1
    FAIL:10:17:04 (00:00:00) 8.8.8: expected "1", got "0"
            8.8: Container not found
                    12.4.1: update with duplicate index entries
    FAIL:10:21:41 (00:00:00) dbxml_dump/dbxml_load(12.4.1.dbxml:unexpected hexadecimal value ' '
    load 12.4.1.dbxml-dumpload: Error: Invalid argument): expected 0, got 1
    FAIL:10:21:41 (00:00:00) Dump/load of 12.4.1.dbxml failed.there are more errors but they are not unique to the 64bit system. The shown messages repeat for different test settings(wholedoc/node - storage ...)
    the errors occurring in 3.3.1c and 12.4.1 can also be reproduced using dbxml,dbxml_dump and dbxml_load:
    ./dbxml -h /tmp
    dbxml>createcon test.dbxml
    dbxml>putdoc phone1 '<phone/>'
    dbxml>quit
    ./dbxml_dump -h /tmp/ -f /tmp/dbxml_2.3.11_test.dbxml.dump test.dbxml
    ./dbxml_load -h /tmp/ -f /tmp/dbxml_2.3.11_test.dbxml.dump test2.dbxml
    2.4.13
    The documentation states that the test should be run from within the tclsh, but I think make test should be supported too. (make test only works after adapting pathes to new location in dbxml/test/tcl/)
    similar procedure as above shows that the bug responsible for failing 3.3.1c and 12.4.1 is fixed
    and 8.8.8 still fails.
    Having a look at 8.8.8 my assumption is that the test fails simply because the machine is too fast (2.13Ghz Core2Duo) and executes the test query before the set timeout is triggered.
    Now back to perl:
    2.3.11 tests fail with:
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/XmlManager.t
    t/XmlManager....ok 43/89BDB XML: unexpected hexadecimal value ' '           
    failed
    Error: Invalid argument in t/XmlManager.t, line 350
    # Looks like you planned 89 tests but only ran 51.
    t/XmlManager....dubious                                                     
            Test returned status 255 (wstat 65280, 0xff00)
    DIED. FAILED tests 52-89
            Failed 38/89 tests, 57.30% okay
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t  255 65280    89   76  85.39%  52-89
    Failed 1/1 test scripts, 0.00% okay. 38/89 subtests failed, 57.30% okay.after wrapping the call to loadContainer in test 51 in eval {} catch{}
    the output looks like this (no further failures)
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/XmlManager.t
    t/XmlManager....ok 1/89BDB XML: unexpected hexadecimal value ' '            
    failed with std exception:Error: Invalid argument in t/XmlManager.t, line 350
    #   Failed test 'dump and load failed'
    #   in t/XmlManager.t at line 363.
    t/XmlManager....ok 53/89# Looks like you failed 1 test of 89.               
    t/XmlManager....dubious                                                     
            Test returned status 1 (wstat 256, 0x100)
    DIED. FAILED test 52
            Failed 1/89 tests, 98.88% okay
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t    1   256    89    1   1.12%  52
    Failed 1/1 test scripts, 0.00% okay. 1/89 subtests failed, 98.88% okay.luckily this is the only test that fails:
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t    1   256    89    1   1.12%  522.4.13 tests fail with:
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
    Failed Test Stat Wstat Total Fail Failed List of Failed
    t/XmlManager.t 1 256 89 1 1.12% 43
    t/XmlQueryContext.t 255 65280 33 62 187.88% 3-33
    t/XmlValue.t 1 256 248 1 0.40% 245
    looking at XmlManager test shows that it is not the same as above but something else
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/XmlManager.t
    t/XmlManager....ok 32/89                                                    
    #   Failed test 'getIndexNodes'
    #   in t/XmlManager.t at line 275.
    t/XmlManager....ok 52/89# Looks like you failed 1 test of 89.               
    t/XmlManager....dubious                                                     
            Test returned status 1 (wstat 256, 0x100)
    DIED. FAILED test 43
            Failed 1/89 tests, 98.88% okay
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t    1   256    89    1   1.12%  43
    Failed 1/1 test scripts, 0.00% okay. 1/89 subtests failed, 98.88% okay.The other two tests seem to fail because the tests are not correct, but i haven't had the time to look at them yet. Here is the output:
    t/XmlQueryContext..........ok 1/33Bareword "XmlQueryContext::DeadValues" not allowed while "strict subs" in use at t/XmlQueryContext.t line 194, <DATA> line 225.
    Bareword "XmlQueryContext::DeadValues" not allowed while "strict subs" in use at t/XmlQueryContext.t line 195, <DATA> line 225.
    Execution of t/XmlQueryContext.t aborted due to compilation errors.
    # Looks like you planned 33 tests but only ran 2.
    # Looks like your test died just after 2.
    t/XmlQueryContext..........dubious                                          
            Test returned status 255 (wstat 65280, 0xff00)
    DIED. FAILED tests 3-33
            Failed 31/33 tests, 6.06% okay
    t/XmlValue.................ok 1/248                                         
    #   Failed test 'getLocalName'
    #   in t/XmlValue.t at line 410.
    #          got: ''
    #     expected: '#document'
    t/XmlValue.................NOK 245# Looks like you failed 1 test of 248.    
    t/XmlValue.................dubious                                          
            Test returned status 1 (wstat 256, 0x100)
    DIED. FAILED test 245
            Failed 1/248 tests, 99.60% okaySo my questions are:
    1. can and will the fix for dump/load be back ported to 2.3.11
    2. is my assumption about 8.8.8 correct
    3. is there a patch underway for perl on 2.4.13?
    4. were there other issues in 2.3.11 that have been fixed in 2.4.13 but not back ported. especially regarding perl and php APIs on 64bit platforms.
    I noticed that at least the patch provided in: PHP / BDB XML works fine on Red Hat Fedora 5, not on SuSE 10.2/Athlon 64 by djimenez was not incorporated into 2.3.11 (2.4.13 seems to be fixed)
    5. since there seems to be no publicly available php test suite yet, will there be one in the near future?
    all comments welcome,
    thanks
    Gordon

    for anyone interested this is a patch for 2.3.11 that backports 64bit php fixes from 2.4.13. It also contains some other changes:
    -additional php possibly wrong usage of long instead of int on 64 bit in db-4.5.20
    -perl see: Re: perl script segfaults on putDocument
    -dbxml tcl test: configure.ac LIBTSO_MODSUFFIX and setting the default tcl test to "run_all" instead of "run_xml"
    Please note: The code looks a bit strange because the [ i ] access into an array is interpreted by the forum software and converted to &lt;i&gt;. So you cannot directly copy the patch from browser but need to copy the raw html and modify it (e.g. pass it through sed).
    you'll need the &lt;pre&gt; &lt;/pre&gt; part from this post and exchange &lt;i&gt; for [ i ] (without spaces) and &lt;br&gt; for '\n'. Maybe it will work. :-)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/db-4.5.20/php_db4/db4.cpp dbxml-2.3.11-64/db-4.5.20/php_db4/db4.cpp
    --- dbxml-2.3.11.orig/db-4.5.20/php_db4/db4.cpp     2006-09-16 03:20:58.000000000 +0200
    +++ dbxml-2.3.11-64/db-4.5.20/php_db4/db4.cpp     2008-05-30 18:35:43.000000000 +0200
    @@ -1203,7 +1203,7 @@
         DB_TXN *dbtxn = NULL;
         zval *dbtxn_obj = NULL;
         char file = NULL, database = NULL;
    -    long filelen = 0, databaselen = 0;
    +    int filelen = 0, databaselen = 0;
         DBTYPE type = DB_BTREE;
         u_int32_t flags = DB_CREATE;
         int mode = 0;
    @@ -2015,7 +2015,7 @@
         DbEnv *dbe;
         zval *self;
         char *home;
    -    long homelen;
    +    int homelen;
         u_int32_t flags = 0;
         self = getThis();
         getDbEnvFromThis(dbenv);
    @@ -2035,7 +2035,7 @@
         DB_ENV *dbenv;
         zval *self;
         char *dir;
    -    long dirlen;
    +    int dirlen;
         self = getThis();
         getDbEnvFromThis(dbenv);
         if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &dir, &dirlen) == FAILURE)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/dist/configure.ac dbxml-2.3.11-64/dbxml/dist/configure.ac
    --- dbxml-2.3.11.orig/dbxml/dist/configure.ac     2007-01-19 16:52:44.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/dist/configure.ac     2008-06-02 18:30:41.000000000 +0200
    @@ -364,7 +364,7 @@
         LIBJSO_LN_INSTALL="test -f \$(libjso_base)-\$(SOVERSION).dylib && \$(ln) -f -s \$(libjso_base)-\$(SOVERSION).dylib \$(libjso_base)-\$(SOVERSION).jnilib";;
         LIBTSO_MODULE="-module"
    -     LIBTSO_MODSUFFIX=@MODSUFFIX@
    +     LIBTSO_MODSUFFIX=$MODSUFFIX
         LIBJSO_LN_BUILD=""
         LIBJSO_LN_INSTALL="";;
    esac
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/dbxml/db_rdbt.c dbxml-2.3.11-64/dbxml/src/dbxml/db_rdbt.c
    --- dbxml-2.3.11.orig/dbxml/src/dbxml/db_rdbt.c     2008-04-16 17:46:53.000000000 +0200
    +++ dbxml-2.3.11-64/dbxml/src/dbxml/db_rdbt.c     2008-06-04 18:01:55.000000000 +0200
    @@ -206,7 +206,7 @@
                        break;
                   buf[linelen++] = '\0';
              } else
    -               linelen = strlen(buf) + 1;
    +               linelen = (int) strlen(buf) + 1;
              start += linelen;
              if (name != NULL) {
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/dbxml/DbWrapper.cpp dbxml-2.3.11-64/dbxml/src/dbxml/DbWrapper.cpp
    --- dbxml-2.3.11.orig/dbxml/src/dbxml/DbWrapper.cpp     2008-04-16 17:46:53.000000000 +0200
    +++ dbxml-2.3.11-64/dbxml/src/dbxml/DbWrapper.cpp     2008-06-04 20:33:18.000000000 +0200
    @@ -219,7 +219,7 @@
         int version, ret, t_ret;
         DBTYPE dbtype;
         char *subdb;
    -     u_int32_t read_flags;
    +     u_int32_t read_flags, tflags;
         Dbt key, data;
         db_recno_t recno, datarecno;
         DB_ENV *dbenv = environment_ ? environment_->get_DB_ENV() : 0;
    @@ -252,11 +252,14 @@
              db_.err(ENOMEM, NULL);
              goto err;
    +     
    +     // work around gcc optimizer issue that seems to modify
    +     // read_flags (4.1.1 on 64-bit linux)
    +     tflags = read_flags;
         /* Get each key/data pair and add them to the database. */
         for (recno = 1;; ++recno) {
              if ((ret = __db_rdbt(dbenv, key.get_DBT(), data.get_DBT(),
    -                         read_flags, read_callback, in, lineno)) != 0) {
    +                         tflags, read_callback, in, lineno)) != 0) {
                   if (ret == EOF)
                        ret = 0;
                   break;
    @@ -267,7 +270,7 @@
                   break;
              case DB_KEYEXIST:
                   db_.errx("line %d: key already exists, not loaded:", *lineno);
    -               dbenv->prdbt(key.get_DBT(), read_flags & DB_READ_PRINTABLE,
    +               dbenv->prdbt(key.get_DBT(), tflags & DB_READ_PRINTABLE,
                             0, &std::cerr, pr_callback, 0);
                   break;
              default:
    @@ -602,9 +605,9 @@
         // but if incrementing the last byte results in a carry
         // (value overflows and goes back to zero), then we have
         // to increment the last-but-one byte - and so on.
    -     char maxPtr = (char )dbt.get_data();
    +     unsigned char maxPtr = (unsigned char )dbt.get_data();
         u_int32_t maxSize = dbt.get_size();
    -     char *pos = maxPtr + maxSize;
    +     unsigned char *pos = maxPtr + maxSize;
         for(--pos; pos >= maxPtr; --pos) {
              ++(*pos);
              if(*pos != 0) break;
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/perl/DbXml/DbXml.xs dbxml-2.3.11-64/dbxml/src/perl/DbXml/DbXml.xs
    --- dbxml-2.3.11.orig/dbxml/src/perl/DbXml/DbXml.xs     2006-11-22 23:56:13.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/perl/DbXml/DbXml.xs     2008-06-06 17:35:46.000000000 +0200
    @@ -1313,20 +1313,20 @@
             else if (sv_derived_from(contents, "XmlInputStream"))
                 XmlInputStream *s = GetObjPointer(contents, XmlInputStream);
    +            ClearObjPointer(contents);
                 if (txn)
                     RETVAL = THIS->putDocument(*txn, name, s, *context, flags);
                 else
                     RETVAL = THIS->putDocument(name, s, *context, flags);
    -            ClearObjPointer(contents);
             else if (sv_derived_from(contents, "XmlEventReader"))
                 XmlEventReader *s = GetObjPointer(contents, XmlEventReader);
    +            ClearObjPointer(contents);
                 if (txn)
                     RETVAL = THIS->putDocument(*txn, name, s, context, flags);
                 else
                     RETVAL = THIS->putDocument(name, s, context, flags);
    -            ClearObjPointer(contents);
             else
                 croak("putDocument parameter 2 should be an XmlInputStream, XmlEventReader or a string");
    @@ -1560,7 +1560,7 @@
         INIT:
             MY_TRY
         CLEANUP:
    -        ClearObjPointer(ST(1));
    +         ClearObjPointer(ST(1));
             MY_CATCH
    string
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/perl/DbXml/t/XmlManager.t dbxml-2.3.11-64/dbxml/src/perl/DbXml/t/XmlManager.t
    --- dbxml-2.3.11.orig/dbxml/src/perl/DbXml/t/XmlManager.t     2006-11-22 17:02:31.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/perl/DbXml/t/XmlManager.t     2008-06-06 17:31:39.000000000 +0200
    @@ -346,14 +346,28 @@
         ok -e "$tmp_dir/cont", "dumped content exists";
         my $new_container_name = "$tmp_dir/new";
    +    eval {
         $mgr->loadContainer($new_container_name, "$tmp_dir/cont");
    +   
         my $c1 = $mgr->openContainer($new_container_name);
         my $doc = $c1->getDocument('x') ;
    +
         my $cont = $doc->getContent();
    +
         is $cont, $content, "getContent ok" ;
    +    };
    +    if (my $e = catch std::exception)
    +    {
    +      warn "failed with std exception:" . $e->what() . "\n";
    +      ok 0, "dump and load failed with std::exception"
    +    }
    +    elsif ($@)
    +    {
    +      warn "failed\n";
    +      warn $@ . "\n";
    +      ok 0, "dump and load failed"
    +    }
         unlink "$tmp_dir/cont";
    if (my $e = catch std::exception)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_container.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_container.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_container.cpp     2006-10-30 18:46:02.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_container.cpp     2008-06-04 13:35:09.000000000 +0200
    @@ -36,7 +36,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       std::string buffer = This.getName();
    -  RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    +  DBXML_RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    PHP_DBXML_METHOD_END()
    @@ -97,7 +97,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  int urilen, namelen, indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -125,7 +125,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  int urilen, namelen, indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -153,7 +153,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  int urilen, namelen, indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -180,8 +180,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
    -  char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  char *index;
    +  int indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O",
           &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -208,8 +208,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
    -  char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  char *index;
    +  int indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O",
           &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -236,8 +236,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
    -  char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  char *index;
    +  int indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O",
           &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -270,7 +270,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval *ztxn = NULL;
       char *name;
    -  long namelen;
    +  int namelen;
       long flags = 0;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
           &name, &namelen, &flags)) {
    @@ -299,7 +299,7 @@
         PHP_DBXML_STUFFED_THIS(XmlContainer);
         zval *ztxn = NULL;
         char *handle;
    -     long handleLen;
    +     int handleLen;
         long flags = 0;
         if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
                                    &handle, &handleLen, &flags)) {
    @@ -325,7 +325,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, zstream = NULL, zctx = NULL;
       char name, contents;
    -  long namelen, contentslen, flags = 0;
    +  int namelen, contentslen;
    +  long flags = 0;
       /* XmlDocument */
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|Ol",
         &zdoc, php_dbxml_XmlDocument_ce,
    @@ -389,8 +390,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, zstream = NULL, zctx = NULL;
    -  char name, contents;
    -  long namelen, contentslen, flags = 0;
    +  long flags = 0;
       /* XmlDocument */
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|Ol",
         &zdoc, php_dbxml_XmlDocument_ce,
    @@ -421,7 +421,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, *zctx = NULL;
       char *name;
    -  long namelen, contentslen;
    +  int namelen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|O",
         &zdoc, php_dbxml_XmlDocument_ce,
         &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -462,8 +462,6 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, *zctx = NULL;
    -  char *name;
    -  long namelen, contentslen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|O",
         &zdoc, php_dbxml_XmlDocument_ce,
         &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -489,9 +487,9 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zctx = NULL, *zvl = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    -  char puri, pname, *pindex;
    -  long purilen, pnamelen, pindexlen;
    +  int urilen, namelen, indexlen;
    +  char puri, pname;
    +  int purilen, pnamelen;
       long flags = 0;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Osss|Ol",
           &zctx, php_dbxml_XmlQueryContext_ce,
    @@ -582,9 +580,9 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zctx = NULL, *zvl = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    -  char puri, pname, *pindex;
    -  long purilen, pnamelen, pindexlen;
    +  int urilen, namelen, indexlen;
    +  char puri, pname;
    +  int purilen, pnamelen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zvl, php_dbxml_XmlValue_ce))
    @@ -660,7 +658,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       char *name;
    -  long namelen;
    +  int namelen;
       if(FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
         return;
    @@ -672,7 +670,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       char *name;
    -  long namelen;
    +  int namelen;
       if(FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
         return;
    @@ -712,9 +710,9 @@
       if(ztxn) {
         XmlTransaction txn = php_dbxml_get_XmlTransaction_object_pointer(ztxn TSRMLS_CC);
    -    RETURN_LONG(This.getNumDocuments(txn));
    +    DBXML_RETURN_LONG(This.getNumDocuments(txn));
       } else {
    -    RETURN_LONG(This.getNumDocuments());
    +    DBXML_RETURN_LONG(This.getNumDocuments());
    PHP_DBXML_METHOD_END()
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.cpp     2006-11-22 17:45:05.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml.cpp     2008-06-04 14:52:22.000000000 +0200
    @@ -50,7 +50,7 @@
         return;
    -  RETVAL_STRING((char*)dbxml_version(&M, &m, &p), 1);
    +  RETVAL_STRING((char*)dbxml_version(&M, &m, &p), (int)1);
       if (ZEND_NUM_ARGS()) {
         convert_to_long(maj);
    @@ -70,7 +70,7 @@
         return;
    -  DbXml::setLogLevel((DbXml::LogLevel)level, on);
    +  DbXml::setLogLevel((DbXml::LogLevel)level, (on != 0));
    static PHP_FUNCTION(dbxml_set_log_category)
    @@ -81,7 +81,7 @@
         return;
    -  DbXml::setLogCategory((DbXml::LogCategory)level, on);
    +  DbXml::setLogCategory((DbXml::LogCategory)level, (on != 0));
    function_entry dbxml_functions[] = {
    @@ -96,7 +96,7 @@
       zend_class_entry ce;
    #ifdef PHP_DBXML_EXCEPTIONS
    -  php_dbxml_init_exceptions();
    +  php_dbxml_init_exceptions(TSRMLS_C);
    #endif
       PHP_DBXML_REGISTER_CLASS(XmlData, php_dbxml_XmlData_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlValue, php_dbxml_XmlValue_dtor);
    @@ -108,6 +108,7 @@
       PHP_DBXML_REGISTER_CLASS(XmlEventReader, php_dbxml_XmlEventReader_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlEventReaderToWriter, php_dbxml_XmlEventReaderToWriter_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlEventWriter, php_dbxml_XmlEventWriter_dtor);
    +  PHP_DBXML_REGISTER_CLASS(XmlIndexLookup, php_dbxml_XmlIndexLookup_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlIndexSpecification, php_dbxml_XmlIndexSpecification_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlModify, php_dbxml_XmlModify_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlQueryContext, php_dbxml_XmlQueryContext_dtor);
    @@ -141,9 +142,14 @@
       REGISTER_LONG_CONSTANT( "DBXML_ENCRYPT", DBXML_ENCRYPT, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_GEN_NAME", DBXML_GEN_NAME, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_LAZY_DOCS", DBXML_LAZY_DOCS, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_DOCUMENT_PROJECTION", DBXML_DOCUMENT_PROJECTION, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_NO_AUTO_COMMIT", DBXML_NO_AUTO_COMMIT, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_CACHE_DOCUMENTS", DBXML_CACHE_DOCUMENTS, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_NO_INDEX_NODES", DBXML_NO_INDEX_NODES, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_INDEX_NODES", DBXML_INDEX_NODES, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_NO_STATISTICS", DBXML_NO_STATISTICS, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_STATISTICS", DBXML_STATISTICS, CONST_CS | CONST_PERSISTENT);
    +  REGISTER_LONG_CONSTANT( "DBXML_WELL_FORMED_ONLY", DBXML_WELL_FORMED_ONLY, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "LEVEL_NONE", LEVEL_NONE, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "LEVEL_DEBUG", LEVEL_DEBUG, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "LEVEL_INFO", LEVEL_INFO, CONST_CS | CONST_PERSISTENT);
    @@ -237,6 +243,8 @@
       REGISTER_LONG_CONSTANT("XmlException_NULL_POINTER", XmlException::NULL_POINTER, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_INDEXER_PARSER_ERROR", XmlException::INDEXER_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_DATABASE_ERROR", XmlException::DATABASE_ERROR, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT("XmlException_QUERY_PARSER_ERROR", XmlException::QUERY_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT("XmlException_QUERY_EVALUATION_ERROR", XmlException::QUERY_EVALUATION_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_XPATH_PARSER_ERROR", XmlException::XPATH_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_DOM_PARSER_ERROR", XmlException::DOM_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_XPATH_EVALUATION_ERROR", XmlException::XPATH_EVALUATION_ERROR, CONST_CS | CONST_PERSISTENT);
    @@ -302,6 +310,9 @@
    #if COMPILE_DL_DBXML
    +#ifdef PHP_WIN32
    +#include "zend_arg_defs.c"
    +#endif
    BEGIN_EXTERN_C()
    ZEND_GET_MODULE(dbxml)
    END_EXTERN_C()
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_data.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_data.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_data.cpp     2006-10-30 18:46:02.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_data.cpp     2008-06-04 14:58:27.000000000 +0200
    @@ -39,7 +39,7 @@
         WRONG_PARAM_COUNT;
    -  RETURN_STRINGL((char*)This.get_data(), This.get_size(), 1);
    +  DBXML_RETURN_STRINGL((char*)This.get_data(), This.get_size(), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlData, set_data)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_document.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_document.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_document.cpp     2006-10-30 18:46:02.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_document.cpp     2008-06-04 15:00:30.000000000 +0200
    @@ -32,24 +32,6 @@
       RETURN_BOOL(This == other);
    } PHP_DBXML_METHOD_END()
    -PHP_DBXML_METHOD_BEGIN(XmlDocument, getName)
    -  PHP_DBXML_STUFFED_THIS(XmlDocument);
    -  std::string buffer = This.getName();
    -  RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    -} PHP_DBXML_METHOD_END()
    -PHP_DBXML_METHOD_BEGIN(XmlDocument, setName)
    -  PHP_DBXML_STUFFED_THIS(XmlDocument);
    -  char *name;
    -  long namelen;
    -  if(FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
    -    return;
    -  This.setName(std::string(name, namelen));
    -} PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlDocument, getContent)
       PHP_DBXML_STUFFED_THIS(XmlDocument);
    @@ -62,7 +44,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       std::string buffer;
       This.getContent(buffer);
    -  RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    +  DBXML_RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlDocument, getContentAsEventReader)
    @@ -77,7 +59,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval *zv = NULL;
       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &zv, php_dbxml_XmlEventWriter_ce)) {
    -    XmlEventWriter &writer = php_dbxml_get_XmlEventWriter_object_pointer(zv TSRMLS_DC);
    +    XmlEventWriter &writer = php_dbxml_get_XmlEventWriter_object_ref(zv TSRMLS_CC);
         This.getContentAsEventWriter(writer);
    } PHP_DBXML_METHOD_END()
    @@ -87,7 +69,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval zstr = NULL, zdat = NULL;
       char *content;
    -  long contentlen;
    +  int contentlen;
       if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &content, &contentlen)) {
         This.setContent(std::string(content, contentlen));
    @@ -100,7 +82,7 @@
         This.setContentAsXmlInputStream(str);
       else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &zstr, php_dbxml_XmlEventReader_ce)) {
    -    XmlEventReader &reader = php_dbxml_get_XmlEventReader_object_pointer(zstr TSRMLS_DC);
    +    XmlEventReader &reader = php_dbxml_get_XmlEventReader_object_ref(zstr TSRMLS_CC);
         This.setContentAsEventReader(reader);
       else {
    @@ -123,7 +105,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval zvl = NULL, zdat = NULL;
       char uri, name;
    -  long urilen, namelen;
    +  int urilen, namelen;
       if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss",
           &uri, &urilen, &name, &namelen)) {
         XmlValue vl;
    @@ -140,7 +122,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval zvl = NULL, zdat = NULL;
       char uri, name;
    -  long urilen, namelen;
    +  int urilen, namelen;
       if(SUCCESS == zend_parse_parameters(
              ZEND_NUM_ARGS() TSRMLS_CC, "ssO",
              &uri, &urilen, &name, &namelen,&zvl, php_dbxml_XmlValue_ce)) {
    @@ -150,11 +132,11 @@
    } PHP_DBXML_METHOD_END()
    +PHP_DBXML_STRING_GETTER_AND_SETTER(XmlDocument, Name);
    +
    function_entry php_dbxml_XmlDocument_methods[] = {
    PHP_ME(XmlDocument, XmlDocument, NULL, 0)
    -PHP_ME(XmlDocument, getName, NULL, 0)
    PHP_ME(XmlDocument, equals, NULL, 0)
    -PHP_ME(XmlDocument, setName, NULL, 0)
    PHP_ME(XmlDocument, getContent, NULL, 0)
    PHP_ME(XmlDocument, getContentAsString, NULL, 0)
    PHP_ME(XmlDocument, getContentAsEventReader, NULL, 0)
    @@ -163,6 +145,7 @@
    PHP_ME(XmlDocument, fetchAllData, NULL, 0)
    PHP_ME(XmlDocument, getMetaData, NULL, 0)
    PHP_ME(XmlDocument, setMetaData, NULL, 0)
    +PHP_DBXML_ME_GETTER_AND_SETTER(XmlDocument, Name)
    {NULL, NULL, NULL}
    /*  vim: set sts=2 ts=2 expandtab ai bs=2 : */
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreader.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreader.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreader.cpp     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreader.cpp     2008-06-04 15:01:44.000000000 +0200
    @@ -59,15 +59,15 @@
         PHP_DBXML_STUFFED_REF(XmlEventReader);
         int len;
         const unsigned char *val = This.getValue(len);
    -     RETURN_STRINGL((char *)val, len, 1);
    +     DBXML_RETURN_STRINGL((char *)val, len, 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getValueLen)
         PHP_DBXML_STUFFED_REF(XmlEventReader);
    -     int len;
    +        int len;
         (void) This.getValue(len);
    -     RETURN_LONG(len);
    +     DBXML_RETURN_LONG(len);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, isAttributeSpecified)
    @@ -86,7 +86,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributeLocalName(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributeLocalName(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getAttributeNamespaceURI)
    @@ -96,7 +96,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributeNamespaceURI(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributeNamespaceURI(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getAttributePrefix)
    @@ -106,7 +106,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributePrefix(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributePrefix(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getAttributeValue)
    @@ -116,7 +116,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributeValue(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributeValue(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, needsEntityEscape)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreadertowriter.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreadertowriter.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreadertowriter.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreadertowriter.cpp     2008-06-03 18:02:40.000000000 +0200
    @@ -24,9 +24,9 @@
                  &wval, php_dbxml_XmlEventWriter_ce,
                  &ownsReader)) {
              XmlEventReader &reader =
    -               php_dbxml_get_XmlEventReader_object_pointer(rval TSRMLS_DC);
    +               php_dbxml_get_XmlEventReader_object_ref(rval TSRMLS_CC);
              XmlEventWriter &writer =
    -               php_dbxml_get_XmlEventWriter_object_pointer(wval TSRMLS_DC);
    +               php_dbxml_get_XmlEventWriter_object_ref(wval TSRMLS_CC);
              XmlEventReaderToWriter r2w(reader, writer, ownsReader);
              php_dbxml_set_XmlEventReaderToWriter_object_factory(
                   getThis(), r2w TSRMLS_CC);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventwriter.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventwriter.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventwriter.cpp     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventwriter.cpp     2008-06-03 18:06:06.000000000 +0200
    @@ -29,7 +29,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char lname, prefix, uri, value;
    -     long lLen, pLen, uLen, vLen;
    +     int lLen, pLen, uLen, vLen;
         bool specified = true; // optional in PHP interface
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssss|b",
    @@ -46,10 +46,10 @@
    PHP_DBXML_METHOD_BEGIN(XmlEventWriter, writeText)
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
    -     long type;
    +     int type;
         char *text;
    -     long unused; // length is ignored if passed to PHP's writeText
    -     long tLen;
    +     int unused; // length is ignored if passed to PHP's writeText
    +     int tLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls|l", &type,
                          &text, &tLen, &unused))
    @@ -61,7 +61,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char target, data;
    -     long tLen, dLen;
    +     int tLen, dLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &target,
                          &tLen, &data, &dLen))
    @@ -73,7 +73,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char lname, prefix, *uri;
    -     long lLen, pLen, uLen, nattrs;
    +     int lLen, pLen, uLen, nattrs;
         bool empty = false; // default in PHP
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sssl|b",
    @@ -90,7 +90,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char lname, prefix, *uri;
    -     long lLen, pLen, uLen;
    +     int lLen, pLen, uLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
                          &lname, &lLen, &prefix, &pLen, &uri, &uLen)) {
    @@ -104,8 +104,8 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char *text;
    -     long unused; // length is ignored if passed
    -     long tLen;
    +     int unused; // length is ignored if passed
    +     int tLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
                          &text, &tLen, &unused))
    @@ -119,7 +119,7 @@
         char *version = 0;
         char *encoding = 0;
         char *standalone = 0;
    -     long vLen, eLen, sLen;
    +     int vLen, eLen, sLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sss",
                          &version, &vLen, &encoding, &eLen,
    @@ -140,7 +140,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char *name;
    -     long tLen;
    +     int tLen;
         bool expandedInfoFollows = true; // default this
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b",
    @@ -153,7 +153,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char *name;
    -     long tLen;
    +     int tLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
                          &name, &tLen))
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_exception.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_exception.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_exception.cpp     2006-11-15 18:21:45.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_exception.cpp     2008-06-04 15:03:30.000000000 +0200
    @@ -19,10 +19,14 @@
    PHP_DBXML_DECLARE_CLASS(XmlException);
    -void php_dbxml_init_exceptions()
    +void php_dbxml_init_exceptions(TSRMLS_D)
         zend_class_entry ce;
    +#if (PHP_MAJOR_VERSION == 5) && (PHP_MINOR_VERSION < 2)
         PHP_DBXML_REGISTER_CLASS_WITH_PARENT(XmlException, zend_exception_get_default(), php_dbxml_XmlException_dtor);
    +#else
    +     PHP_DBXML_REGISTER_CLASS_WITH_PARENT(XmlException, zend_exception_get_default(TSRMLS_C), php_dbxml_XmlException_dtor);
    +#endif
         zend_declare_property_long(php_dbxml_XmlException_ce, "code",
                           sizeof("code")-1, 0,
                           ZEND_ACC_PROTECTED TSRMLS_CC);
    @@ -43,7 +47,7 @@
                           ZEND_ACC_PROTECTED TSRMLS_CC);
    -void php_dbxml_throw_exception(const XmlException &xe)
    +void php_dbxml_throw_exception(const XmlException &xe TSRMLS_DC)
         zval *xml_ex;
         MAKE_STD_ZVAL(xml_ex);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.h dbxml-2.3.11-64/dbxml/src/php/php_dbxml.h
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.h     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml.h     2008-06-04 15:04:22.000000000 +0200
    @@ -20,7 +20,6 @@
    #ifndef PHP_DBXML_H
    #define PHP_DBXML_H
    extern zend_module_entry dbxml_module_entry;
    #define phpext_dbxml_ptr &dbxml_module_entry
    @@ -39,9 +38,7 @@
    #endif
    #ifdef PHP_DBXML_EXCEPTIONS
    -extern "C" {
    #include "zend_exceptions.h"
    #endif
    PHP_MINIT_FUNCTION(dbxml);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexlookup.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexlookup.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexlookup.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexlookup.cpp     2008-06-04 15:08:05.000000000 +0200
    @@ -34,7 +34,7 @@
       index = This.getIndex();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -65,7 +65,7 @@
       index = This.getNodeURI();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -81,7 +81,7 @@
       index = This.getNodeName();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -112,7 +112,7 @@
       index = This.getParentURI();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -143,7 +143,7 @@
       index = This.getParentName();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -183,7 +183,7 @@
       zval *zv;
       long op;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    -  if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
    +  if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
         WRONG_PARAM_COUNT;
    @@ -228,7 +228,7 @@
       zval *zv;
       long op;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    -  if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
    +  if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
         WRONG_PARAM_COUNT;
    @@ -257,9 +257,8 @@
    PHP_DBXML_METHOD_BEGIN(XmlIndexLookup, setContainer)
       zval *zv;
    -  long op;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    -  if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O", &zv, php_dbxml_XmlContainer_ce))
    +  if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O", &zv, php_dbxml_XmlContainer_ce))
         WRONG_PARAM_COUNT;
    @@ -276,19 +275,22 @@
       long flags = 0;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    +#define SET_PTR(expr)  \
    +  XmlQueryContext c = php_dbxml_get_XmlQueryContext_object_pointer(zqc TSRMLS_CC); \
    +  XmlResults r = expr; \
    +  object_init_ex(return_value, php_dbxml_XmlResults_ce); \
    +  php_dbxml_set_XmlResults_object_pointer(return_value, r TSRMLS_CC);
    +
       if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
           "O|l", &zqc, php_dbxml_XmlQueryContext_ce, &flags)) {
    -    XmlQueryContext c = php_dbxml_get_XmlQueryContext_object_pointer(zqc TSRMLS_CC);
    -    XmlResults r = This.execute(c, flags);
    +    SET_PTR(This.execute(c, flags));
         php_dbxml_set_XmlResults_object_pointer(return_value, r TSRMLS_CC);
       } else if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
           "OO", &zt, php_dbxml_XmlTransaction_ce, &zqc, php_dbxml_XmlQueryContext_ce, &flags)) {
         XmlTransaction t = php_dbxml_get_XmlTransaction_object_pointer(zt TSRMLS_CC);
    -    XmlQueryContext c = php_dbxml_get_XmlQueryContext_object_pointer(zqc TSRMLS_CC);
    -    XmlResults r = This.execute(t,c,flags);
    -    php_dbxml_set_XmlResults_object_pointer(return_value, r TSRMLS_CC);
    +    SET_PTR(This.execute(t, c, flags));      
       } else {
         WRONG_PARAM_COUNT;
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexspecification.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexspecification.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexspecification.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexspecification.cpp     2008-06-04 15:08:49.000000000 +0200
    @@ -156,7 +156,7 @@
       if (This.find(std::string(uri, uri_len), std::string(name, name_len), index)) {
    -    RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +    DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
       } else {
         RETURN_FALSE;
    @@ -175,7 +175,7 @@
       index = This.getDefaultIndex();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -191,9 +191,9 @@
           zval *el;
           MAKE_STD_ZVAL(el);
           array_init(el);
    -      add_assoc_stringl(el, "uri", (char *) uri.data(), uri.length(), 1);
    -      add_assoc_stringl(el, "name", (char *) name.data(), name.length(), 1);
    -      add_assoc_stringl(el, "index", (char *) index.data(), index.length(), 1);
    +      add_assoc_stringl(el, "uri", (char *) uri.data(), (int)uri.length(), (int)1);
    +      add_assoc_stringl(el, "name", (char *) name.data(), (int)name.length(), (int)1);
    +      add_assoc_stringl(el, "index", (char *) index.data(), (int)index.length(), (int)1);
           add_next_index_zval(return_value, el);
         return;
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_inputstream.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_inputstream.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_inputstream.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_inputstream.cpp     2008-06-03 18:12:07.000000000 +0200
    @@ -37,7 +37,7 @@
        Read a number of bytes and return them as a string */
    PHP_DBXML_METHOD_BEGIN(XmlInputStream, readBytes)
    -  long toread;
    +  int toread;
       PHP_DBXML_GETTHIS(XmlInputStream);
       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &toread)) {
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_int.hpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_int.hpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_int.hpp     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_int.hpp     2008-06-04 15:57:38.000000000 +0200
    @@ -11,14 +11,21 @@
    # include "config.h"
    #endif
    +// this is here to work around a PHP build issue on Windows
    +#include <iostream>
    +
    extern "C" {
    #include "php.h"
    #include "php_ini.h"
    #include "ext/standard/info.h"
    +#ifdef PHP_WIN32
    +#include "php_db4.h"
    +#else
    #include "ext/db4/php_db4.h"
    +#endif
    +#include "php_dbxml.h"
    #include <exception>
    -#include "php_dbxml.h"
    #include "dbxml/DbXml.hpp"
    using namespace DbXml;
    @@ -34,7 +41,7 @@
    #define PHP_DBXML_METHOD_END()           \
    } catch(XmlException &xe) {           \
    -  php_dbxml_throw_exception(xe);         \
    +  php_dbxml_throw_exception(xe TSRMLS_CC);         \
    catch(std::exception &e) {                     \
       php_error_docref(NULL TSRMLS_CC, E_WARNING, e.what()); \
    @@ -53,6 +60,15 @@
    #endif
    +// encapsulate calls to RETURN_STRINGL macro in PHP
    +#define DBXML_RETURN_STRINGL(d, l, s) \
    +    RETURN_STRINGL((char*)(d),(int)(l), (s))
    +
    +#define DBXML_RETURN_STRING(d, s) \
    +    RETURN_STRING((char*)(d),(int)(s))
    +
    +#define DBXML_RETURN_LONG(l) RETURN_LONG((long)(l))
    +
    static inline void php_dbxml_set_object_pointer(zval object, int type, void ptr TSRMLS_DC)
       zval *z;
    @@ -120,10 +136,13 @@
         zend_list_addref(Z_RESVAL_PP(prop));
    -/* fun with those on-the-stack-only style object (XmlContainer) that have their own magic refcounts */
    +/*
    + * macros to handle the Xml* objects
    + * "object_pointer" really means object reference (e.g. XmlDocument &)
    + */
    #define PHP_DBXML_STUFFED_INSTANCES(class_type) \
    -  class php_dbxml_stuffed_##class_type { \
    +  struct php_dbxml_stuffed_##class_type { \
       public: class_type stuffed; \
       php_dbxml_stuffed_##class_type(class_type &s): stuffed(s) {} \
    @@ -136,7 +155,7 @@
         struct php_dbxml_stuffed_##class_type *s = new struct php_dbxml_stuffed_##class_type(instance); \
         php_dbxml_set_object_pointer(object, le_##class_type, s TSRMLS_CC); \
    -  static inline class_type php_dbxml_get_##class_type##_object_pointer(zval *object TSRMLS_DC) { \
    +  static inline class_type & php_dbxml_get_##class_type##_object_pointer(zval *object TSRMLS_DC) { \
         struct php_dbxml_stuffed_##class_type s = (struct php_dbxml_stuffed_##class_type ) \
             php_dbxml_get_object_pointer(object, le_##class_type, php_dbxml_##class_type##_ce, #class_type TSRMLS_CC); \
         if (s) { return s->stuffed; } /* does internal addref */ \
    @@ -147,12 +166,14 @@
         delete s; \
    -// this is nearly identical to STUFFED_INSTANCES, above, with the exception
    -// that it stores an object reference, not an actual instance, which
    -// changes the member variable to a reference, along with the
    -// accessor's return value.  Everything else is identical.
    +/*
    + * this is nearly identical to STUFFED_INSTANCES, above, with the exception
    + * that it stores an object reference, not an actual instance, which
    + * changes the member variable to a reference, along with the
    + * accessor's return value.  Everything else is identical.
    + */
    #define PHP_DBXML_STUFFED_REFERENCES(class_type) \
    -  class php_dbxml_stuffed_##class_type { \
    +  struct php_dbxml_stuffed_##class_type { \
       public: class_type &stuffed; \
       php_dbxml_stuffed_##class_type(class_type &s): stuffed(s) {} \
    @@ -165,7 +186,7 @@
         struct php_dbxml_stuffed_##class_type *s = new struct php_dbxml_stuffed_##class_type(instance); \
         php_dbxml_set_object_pointer(object, le_##class_type, s TSRMLS_CC); \
    -  static inline class_type &php_dbxml_get_##class_type##_object_pointer(zval *object TSRMLS_DC) { \
    +  static inline class_type &php_dbxml_get_##class_type##_object_ref(zval *object TSRMLS_DC) { \
         struct php_dbxml_stuffed_##class_type s = (struct php_dbxml_stuffed_##class_type ) \
             php_dbxml_get_object_pointer(object, le_##class_type, php_dbxml_##class_type##_ce, #class_type TSRMLS_CC); \
         if (s) { return s->stuffed; } /* does internal addref */ \
    @@ -177,10 +198,10 @@
    #define PHP_DBXML_STUFFED_THIS(class_type)  \
    -  class_type This = php_dbxml_get_##class_type##_object_pointer(getThis() TSRMLS_CC);
    +  class_type &This = php_dbxml_get_##class_type##_object_pointer(getThis() TSRMLS_CC);
    #define PHP_DBXML_STUFFED_REF(class_type)                    \
    -  class_type &This = php_dbxml_get_##class_type##_object_pointer(getThis() TSRMLS_CC);
    +  class_type &This = php_dbxml_get_##class_type##_object_ref(getThis() TSRMLS_CC);
    #define PHP_DBXML_DECLARE_CLASS(class_type) \
       int le_##class_type; \
    @@ -197,7 +218,7 @@
         int i;
         for(i = 0; fe.handler; i++) {
    fe[i].fname = strdup(fe[i].fname);
    - zend_str_tolower(fe[i].fname, strlen(fe[i].fname));
    + zend_str_tolower(fe[i].fname, (unsigned int)strlen(fe[i].fname));
    @@ -241,6 +262,27 @@
    This->set##propname((proptype)val); \
    +#define PHP_DBXML_STRING_GETTER_AND_SETTER(class_type, propname) \
    +PHP_METHOD(class_type, get##propname)  \
    +{                                      \
    + PHP_DBXML_GETTHIS(class_type); \
    + if (ZEND_NUM_ARGS()) {               \
    + WRONG_PARAM_COUNT; \
    + } \
    + std::string str = This->get##propname(); \
    + DBXML_RETURN_STRINGL((char*)str.data(), str.length(), 1); \
    +} \
    +PHP_METHOD(class_type, set##propname)  \
    +{                                      \
    + char *val;                           \
    + int val_len; \
    + PHP_DBXML_GETTHIS(class_type); \
    + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &val, &val_len)) { \
    + RETURN_FALSE; \
    + } \
    + This->set##propname(std::string(val, val_len)); \
    +}
    +
    PHP_DBXML_EXTERN_CLASS(XmlContainer);
    PHP_DBXML_EXTERN_CLASS(XmlData);
    PHP_DBXML_EXTERN_CLASS(XmlManager);
    @@ -261,8 +303,8 @@
    PHP_DBXML_EXTERN_CLASS(XmlInputStream);
    PHP_DBXML_EXTERN_CLASS(XmlValue);
    #ifdef PHP_DBXML_EXCEPTIONS
    -extern void php_dbxml_init_exceptions();
    -extern void php_dbxml_throw_exception(const XmlException &xe);
    +extern void php_dbxml_init_exceptions(TSRMLS_D);
    +extern void php_dbxml_throw_exception(const XmlException &xe TSRMLS_DC);
    PHP_DBXML_EXTERN_CLASS(XmlException);
    PHP_DBXML_STUFFED_INSTANCES(XmlException);
    #endif
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_manager.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_manager.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_manager.cpp     2006-10-30 18:46:04.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_manager.cpp     2008-06-04 15:13:37.000000000 +0200
    @@ -8,7 +8,6 @@
    #include "php_dbxml_int.hpp"
    -#include "ext/db4/php_db4.h"
    ZEND_RSRC_DTOR_FUNC(php_dbxml_XmlManager_dtor)
    @@ -35,7 +34,7 @@
    if (dbenv_obj) {
    - dbenv = php_db4_getDbEnvFromObj(dbenv_obj);
    + dbenv = php_db4_getDbEnvFromObj(dbenv_obj TSRMLS_CC);
    This = new XmlManager(DbEnv::get_DbEnv(dbenv), (unsigned int)flags);
    } else {
    This = new XmlManager((unsigned int)flags);
    @@ -63,7 +62,7 @@
    PHP_DBXML_GETTHIS(XmlManager);
    char *name;
    - long namelen;
    + int namelen;
    int ret = 0;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
         ret = This->existsContainer(std::string(name, namelen));
    @@ -76,7 +75,8 @@
    char *name;
    // these must be the same as BDB XML defaults
    - long namelen, flags = 0, mode = 0;
    + int namelen;
    + long flags = 0, mode = 0;
    XmlContainer::ContainerType type = XmlContainer::NodeContainer;
    zval *ztxn = NULL;
    PHP_DBXML_GETTHIS(XmlManager);
    @@ -108,7 +108,8 @@
    PHP_DBXML_METHOD_BEGIN(XmlManager, openContainer)
    char *name;
    - long namelen, flags = 0, mode = 0;
    + int namelen;
    + long flags = 0, mode = 0;
    XmlContainer::ContainerType type = XmlContainer::NodeContainer;
    zval *ztxn = NULL;
    PHP_DBXML_GETTHIS(XmlManager);
    @@ -138,7 +139,7 @@
    PHP_DBXML_GETTHIS(XmlManager);
    zval *ztxn = NULL;
    char *name;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
    This->removeContainer(std::string(name, namelen));
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen)) {
    @@ -156,7 +157,7 @@
    zval *ztxn = NULL;
    XmlTransaction *txn = NULL;
    char name, newname;
    - long namelen, newnamelen;
    + int namelen, newnamelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &namelen, &newname, &newnamelen)) {
    This->renameContainer(std::string(name, namelen), std::string(newname, newnamelen));
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &newname, &newnamelen)) {
    @@ -174,7 +175,7 @@
    PHP_DBXML_METHOD_BEGIN(XmlManager, createMemBufInputStream)
    char buffer, bufID;
    - long bufferlen, bufIDlen;
    + int bufferlen, bufIDlen;
    PHP_DBXML_GETTHIS(XmlManager);
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &buffer, &bufferlen, &bufID, &bufIDlen)) {
    return;
    @@ -200,7 +201,7 @@
    PHP_DBXML_METHOD_BEGIN(XmlManager, createQueryContext)
    PHP_DBXML_GETTHIS(XmlManager);
    - long rt = (long) XmlQueryContext::LiveValues, et = (long) XmlQueryContext::Eager;
    + int rt = (int) XmlQueryContext::LiveValues, et = (int) XmlQueryContext::Eager;
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|ll", &rt, &et)) {
    return;
    @@ -228,8 +229,7 @@
    zval *ztxn = NULL;
    zval *zctx = NULL;
    char *query;
    - long querylen;
    - XmlQueryContext *context;
    + int querylen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O", &query, &querylen, &zctx, php_dbxml_XmlQueryContext_ce)) {
    if(zctx) {
    @@ -264,7 +264,8 @@
    zval *ztxn = NULL;
    zval *zctx = NULL;
    char *query;
    - long querylen, flags = 0;
    + int querylen;
    + long flags = 0;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &query, &querylen, &zctx, php_dbxml_XmlQueryContext_ce, &flags)) {
    if(zctx) {
    @@ -346,14 +347,15 @@
    return;
    XmlContainer cont = php_dbxml_get_XmlContainer_object_pointer(zc TSRMLS_CC);
    + XmlIndexLookup lu;
    if(zv == NULL) {
    XmlValue value = XmlValue();
    - XmlIndexLookup lookup = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    - php_dbxml_set_XmlIndexLookup_object_factory(return_value, lookup TSRMLS_CC);
    + lu = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    + php_dbxml_set_XmlIndexLookup_object_factory(return_value, lu TSRMLS_CC);
    } else {
    XmlValue value = php_dbxml_get_XmlValue_object_pointer(zv TSRMLS_CC);
    - XmlIndexLookup lookup = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    - php_dbxml_set_XmlIndexLookup_object_factory(return_value, lookup TSRMLS_CC);
    + lu = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    + php_dbxml_set_XmlIndexLookup_object_factory(return_value, lu TSRMLS_CC);
    PHP_DBXML_ADDREF(getThis());
    @@ -383,7 +385,7 @@
    zval *zuc = NULL;
    char *name;
    long flags = 0;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|Ol", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else {
    @@ -408,7 +410,7 @@
    zval *zuc = NULL;
    char *name;
    long flags = 0;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|Ol", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else {
    @@ -433,7 +435,7 @@
    zval *zuc = NULL;
    char *name;
    long flags = 0;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|Ol", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else {
    @@ -454,7 +456,7 @@
    PHP_DBXML_GETTHIS(XmlManager);
    std::string buffer = This->getHome();
    - RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    + DBXML_RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    PHP_DBXML_METHOD_END()
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_modify.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_modify.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_modify.cpp     2006-10-30 18:46:04.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_modify.cpp     2008-06-04 15:14:42.000000000 +0200
    @@ -29,7 +29,7 @@
    zval zexp, zres;
    long type;
    char name, content;
    - long name_len, content_len;
    + int name_len, content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
    @@ -66,7 +66,7 @@
    zval zexp, zres;
    long type;
    char name, content;
    - long name_len, content_len;
    + int name_len, content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
    @@ -103,7 +103,7 @@
    zval zexp, zres;
    long type, location = -1;
    char name, content;
    - long name_len, content_len;
    + int name_len, content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
    @@ -140,7 +140,7 @@
    zval *zexp;
    char *content;
    - long content_len;
    + int content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &zexp, php_dbxml_XmlQueryExpression_ce,
    @@ -159,7 +159,7 @@
    zval *zexp;
    char *content;
    - long content_len;
    + int content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &zexp, php_dbxml_XmlQueryExpression_ce,
    @@ -208,8 +208,6 @@
    PHP_DBXML_METHOD_BEGIN(XmlModify, execute)
    - char *encoding;
    - int encoding_len;
    zval zv, zqc, zuc, zt;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_querycontext.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_querycontext.cpp
    --- dbxml-2.3.11.orig/dbxml/

Maybe you are looking for