Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
gString.cc
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
4# Produced at the Lawrence Livermore National Laboratory
5# Written by Bret R. Beck, [email protected].
6# CODE-461393
7# All rights reserved.
8#
9# This file is part of GIDI. For details, see nuclear.llnl.gov.
10# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
11#
12# Redistribution and use in source and binary forms, with or without modification,
13# are permitted provided that the following conditions are met:
14#
15# 1) Redistributions of source code must retain the above copyright notice,
16# this list of conditions and the disclaimer below.
17# 2) Redistributions in binary form must reproduce the above copyright notice,
18# this list of conditions and the disclaimer (as noted below) in the
19# documentation and/or other materials provided with the distribution.
20# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
21# used to endorse or promote products derived from this software without
22# specific prior written permission.
23#
24# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
25# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
27# SHALL LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
28# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
31# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34# <<END-copyright>>
35*/
36#include "gString.h"
37#include <xData.h>
38#include <string.h>
39
40#if defined __cplusplus
41namespace GIDI {
42using namespace GIDI;
43#endif
44
45/*
46***************************************************
47*/
48int gString_initialize( statusMessageReporting *smr, gString *gStr, int size, int increment ) {
49
50 if( size > 0 ) {
51 //if( ( gStr->gStr = xData_malloc2( smr, size + 1, 0, "gStr->gStr" ) ) == NULL ) return( 1 );
52 if( ( gStr->gStr = (char*) xData_malloc2( smr, size + 1, 0, "gStr->gStr" ) ) == NULL ) return( 1 );
53 gStr->length = 1;
54 gStr->gStr[0] = 0; }
55 else {
56 size = 0;
57 gStr->length = 0;
58 gStr->gStr = NULL;
59 }
60 gStr->allocated = size;
61 //if( increment < gString_minIncrement ) increment = gString_minIncrement;
62 if( increment < (int) gString_minIncrement ) increment = gString_minIncrement;
63 gStr->increment = increment;
64 return( 0 );
65}
66/*
67***************************************************
68*/
70
71 if( gStr->gStr != NULL ) free( gStr->gStr );
72 gString_initialize( smr, gStr, 0, gStr->increment );
73 return( 0 );
74}
75/*
76***************************************************
77*/
78//int gString_clear( statusMessageReporting *smr, gString *gStr ) {
80
81 if( gStr->gStr != NULL ) {
82 gStr->length = 1;
83 gStr->gStr[0] = 0;
84 }
85 return( 0 );
86}
87/*
88***************************************************
89*/
90int gString_addTo( statusMessageReporting *smr, gString *gStr, char const *str ) {
91
92 int n, size = strlen( str );
93
94 if( gStr->gStr == NULL ) {
95 if( gString_initialize( smr, gStr, size + 1, gStr->increment ) != 0 ) return( 1 ); }
96 else if( ( gStr->length + size ) > gStr->allocated ) {
97 n = gStr->increment;
98 if( n < size ) n = size;
99 //if( ( gStr->gStr = xData_realloc2( smr, gStr->gStr, gStr->allocated + n, "gStr->gStr" ) ) == NULL ) return( 1 );
100 if( ( gStr->gStr = (char*) xData_realloc2( smr, gStr->gStr, gStr->allocated + n, "gStr->gStr" ) ) == NULL ) return( 1 );
101 gStr->allocated += n;
102 }
103 strcpy( &(gStr->gStr[gStr->length - 1]), str );
104 gStr->length = gStr->length + size;
105 return( 0 );
106}
107/*
108***************************************************
109*/
110//char const *gString_string( statusMessageReporting *smr, gString *gStr ) {
112
113 return( gStr->gStr );
114}
115/*
116***************************************************
117*/
118//int gString_length( statusMessageReporting *smr, gString *gStr ) {
120
121 return( gStr->length );
122}
123/*
124***************************************************
125*/
126//int gString_allocated( statusMessageReporting *smr, gString *gStr ) {
128
129 return( gStr->allocated );
130}
131/*
132***************************************************
133*/
134//int gString_increment( statusMessageReporting *smr, gString *gStr ) {
136
137 return( gStr->increment );
138}
139
140#if defined __cplusplus
141}
142#endif
#define gString_minIncrement
Definition: gString.h:49
int gString_length(statusMessageReporting *smr, gString *gStr)
Definition: gString.cc:119
int gString_addTo(statusMessageReporting *smr, gString *gStr, char const *str)
Definition: gString.cc:90
char const * gString_string(statusMessageReporting *smr, gString *gStr)
Definition: gString.cc:111
int gString_release(statusMessageReporting *smr, gString *gStr)
Definition: gString.cc:69
int gString_allocated(statusMessageReporting *smr, gString *gStr)
Definition: gString.cc:127
int gString_initialize(statusMessageReporting *smr, gString *gStr, int size, int increment)
Definition: gString.cc:48
int gString_increment(statusMessageReporting *smr, gString *gStr)
Definition: gString.cc:135
int gString_clear(statusMessageReporting *smr, gString *gStr)
Definition: gString.cc:79
int length
Definition: gString.h:53
int increment
Definition: gString.h:53
int allocated
Definition: gString.h:53
char * gStr
Definition: gString.h:54
#define xData_malloc2(smr, size, zero, forItem)
Definition: xData.h:313
#define xData_realloc2(smr, old, size, forItem)
Definition: xData.h:314