/* $XConsortium: StringParse.dat /main/4 1995/07/17 10:25:20 drk $ */ /* * @OPENGROUP_COPYRIGHT@ * COPYRIGHT NOTICE * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc. * Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for * the full copyright text. * * This software is subject to an open license. It may only be * used on, with or for operating systems which are themselves open * source systems. You must contact The Open Group for a license * allowing distribution and sublicensing of this software on, with, * or for operating systems which are not Open Source programs. * * See http://www.opengroup.org/openmotif/license for full * details of the license agreement. Any use, reproduction, or * distribution of the program constitutes recipient's acceptance of * this agreement. * * EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS * PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY * WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE * * EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT * NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE * EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */ /* * HISTORY */ @) The following panels tests the XmParseMapping and XmStringParse API. An empty drawing area widget should be displayed in the test window. C) #) In this first panel, the character string \"One./Two/>Tab\" is parsed replacing the patterns \"/" with a separator and \">" with a tab. #) XmStringParse() is called with XmNincludeStatus = XmTERMINATE for each of the XmParseMapping entries of the XmParseTable. The XmString should terminate after the first pattern is encountered. Verify that the XmString displayed matches the text below: @) One. C) #) XmStringParse() is called with XmNincludeStatus = XmINSERT for each of the XmParseMapping entries and the delimiter is a \".\". The XmString should terminate prior to the \".\" character. Verify that the XmString displayed matches the text below: @) One C) #) XmStringParse() is called with XmNincludeStatus = XmINSERT for each of the XmParseMapping entries and no delimiter is specified. The XmString should terminate after the entire character string is parsed. Verify that the XmString displayed matches the text below, where the word \"Tab\" is indented by one inch: @) One. @) Two @) Tab C) #) Call XmStringUnparse() to retrieve the original character string which was parsed to create an XmString. A message will be printed to the terminal indicating whether or not XmStringUnparse() was successful in generating the original character string. C) @) A parse proc is assigned to the XmParseMapping which converts the pattern \"/\" to a string. Now when the pattern \"/\" is encountered, the word \"String\" is inserted into the string prior to the separator. #) When XmStringParse() is called, the XmString should terminate after the first pattern is encountered. Verify that the XmString displayed matches the text below: @) One. String C) #) When XmStringParse() is called, the XmString should terminate at the end of the character string. Verify that the XmString displayed matches the text below: @) One. String @) Two String @) Tab C) #) A new parse table is created which replaces the pattern \">\" with an XmString direction component with direction set to XmSTRING_DIRECTION_L_TO_R and replaces the pattern \"<\" with the an XmString direction component with direction set to XmSTRING_DIRECTION_R_TO_L. XmStringTableParseStringArray() is called to parse an array of character strings containing these patterns and returns a table of XmStrings. The following strings should be displayed: @) Left To Right @) Right To Left @) Left To Right @) Right To Left #) Call XmStringTableUnparse() to retrieve the original character string which was parsed to create the XmStrings. A message will be printed to the terminal indicating whether or not XmStringTableUnparse() was successful in generating the original character string. C) #) XmStringTableToXmString() is called to convert an array of XmStrings to one XmString with a specified break component inserted between each of the original XmStrings. XmStringGetNextComponent() is then called to traverse the new XmString to ensure each of the components is correct. A message will be printed to the terminal indicating whether or not XmStringTableToXmString() was successful in building the one XmString. #) XmStringToXmStringTable() is then called to convert the one XmString back to a table of XmStrings. Each XmString in the returned table is compared with its corresponding XmString in the original table. If all the XmStrings match, the function was successful. A message will be printed to the terminal indicating whether or not XmStringToXmStringTable() was successful or not. C) E)