OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimDdfutils.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  * Copied from "gdal" project. See licence below.
3  *
4  * Project: ISO 8211 Access
5  * Purpose: Various utility functions.
6  * Author: Frank Warmerdam, warmerda@home.com
7  *
8  ******************************************************************************
9  * Copyright (c) 1999, Frank Warmerdam
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a
12  * copy of this software and associated documentation files (the "Software"),
13  * to deal in the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15  * and/or sell copies of the Software, and to permit persons to whom the
16  * Software is furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included
19  * in all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  ******************************************************************************
29  * $Id: ossimDdfutils.cpp 9094 2006-06-13 19:12:40Z dburken $
30  */
31 
32 #include <cstring>
34 
35 /************************************************************************/
36 /* DDFScanInt() */
37 /* */
38 /* Read up to nMaxChars from the passed string, and interpret */
39 /* as an integer. */
40 /************************************************************************/
41 
42 long ossimDDFScanInt( const char * pszString, int nMaxChars )
43 
44 {
45  char szWorking[33];
46 
47  if( nMaxChars > 32 || nMaxChars == 0 )
48  nMaxChars = 32;
49 
50  memcpy( szWorking, pszString, nMaxChars );
51  szWorking[nMaxChars] = '\0';
52 
53  return( atoi(szWorking) );
54 }
55 
56 /************************************************************************/
57 /* DDFScanVariable() */
58 /* */
59 /* Establish the length of a variable length string in a */
60 /* record. */
61 /************************************************************************/
62 
63 int ossimDDFScanVariable( const char *pszRecord, int nMaxChars, int nDelimChar )
64 
65 {
66  int i;
67 
68  for( i = 0; i < nMaxChars-1 && pszRecord[i] != nDelimChar; i++ ) {}
69 
70  return i;
71 }
72 
73 /************************************************************************/
74 /* DDFFetchVariable() */
75 /* */
76 /* Fetch a variable length string from a record, and allocate */
77 /* it as a new string (with CPLStrdup()). */
78 /************************************************************************/
79 
80 char * ossimDDFFetchVariable( const char *pszRecord, int nMaxChars,
81  int nDelimChar1, int nDelimChar2,
82  int *pnConsumedChars )
83 
84 {
85  int i;
86  char *pszReturn;
87 
88  for( i = 0; i < nMaxChars-1 && pszRecord[i] != nDelimChar1
89  && pszRecord[i] != nDelimChar2; i++ ) {}
90 
91  *pnConsumedChars = i;
92  if( i < nMaxChars
93  && (pszRecord[i] == nDelimChar1 || pszRecord[i] == nDelimChar2) )
94  (*pnConsumedChars)++;
95 
96  pszReturn = (char *) malloc(i+1);
97  pszReturn[i] = '\0';
98  strncpy( pszReturn, pszRecord, i );
99 
100  return pszReturn;
101 }
char * ossimDDFFetchVariable(const char *pszRecord, int nMaxChars, int nDelimChar1, int nDelimChar2, int *pnConsumedChars)
int ossimDDFScanVariable(const char *pszRecord, int nMaxChars, int nDelimChar)
long ossimDDFScanInt(const char *pszString, int nMaxChars)