Swig_offset_string moved to misc.c

This commit is contained in:
William S Fulton 2013-12-05 20:57:30 +00:00
commit 7103a06849
5 changed files with 52 additions and 47 deletions

View file

@ -18,8 +18,6 @@
/* Hash type used for upcalls from C/C++ */
typedef DOH UpcallData;
// insert N tabs before each new line in s
void Swig_offset_string(String *s, int N);
class CSHARP:public Language {
static const char *usage;
@ -2004,7 +2002,7 @@ public:
} else {
for (int i = 0; i < nesting_depth; ++i)
Append(old_proxy_class_code, " ");
Append(old_proxy_class_code, "}\n");
Append(old_proxy_class_code, "}\n\n");
--nesting_depth;
}

View file

@ -18,8 +18,6 @@
/* Hash type used for upcalls from C/C++ */
typedef DOH UpcallData;
// insert N tabs before each new line in s
void Swig_offset_string(String *s, int N);
class JAVA:public Language {
static const char *usage;
@ -2068,7 +2066,7 @@ public:
} else {
for (int i = 0; i < nesting_depth; ++i)
Append(old_proxy_class_code, " ");
Append(old_proxy_class_code, "}\n");
Append(old_proxy_class_code, "}\n\n");
--nesting_depth;
}

View file

@ -3632,44 +3632,3 @@ Hash *Language::getClassHash() const {
return classhash;
}
// insert N tabs before each new line in s
void Swig_offset_string(String *s, int N)
{
// count a number of lines in s
int lines = 1;
int L = Len(s);
char *start = strchr(Char(s), '\n');
while (start) {
++lines;
start = strchr(start + 1, '\n');
}
// do not count pending new line
if ((Char(s))[L-1] == '\n')
--lines;
// allocate a temporary storage for a padded string
char *res = (char*)malloc(L + lines * N * 2 + 1);
res[L + lines * N * 2] = 0;
// copy lines to res, prepending tabs to each line
char *p = res; // output pointer
start = Char(s); // start of a current line
char *end = strchr(start, '\n'); // end of a current line
while (end) {
memset(p, ' ', N*2);
p += N*2;
memcpy(p, start, end - start + 1);
p += end - start + 1;
start = end + 1;
end = strchr(start, '\n');
}
// process the last line
if (*start) {
memset(p, ' ', N*2);
p += N*2;
strcpy(p, start);
}
// replace 's' contents with 'res'
Clear(s);
Append(s, res);
free(res);
}

View file

@ -1147,6 +1147,55 @@ String *Swig_string_strip(String *s) {
return ns;
}
/* -----------------------------------------------------------------------------
* Swig_offset_string()
*
* Insert number tabs before each new line in s
* ----------------------------------------------------------------------------- */
void Swig_offset_string(String *s, int number) {
char *res;
char *p;
char *end;
/* count a number of lines in s */
int lines = 1;
int len = Len(s);
char *start = strchr(Char(s), '\n');
while (start) {
++lines;
start = strchr(start + 1, '\n');
}
/* do not count pending new line */
if ((Char(s))[len-1] == '\n')
--lines;
/* allocate a temporary storage for a padded string */
res = (char*)malloc(len + lines * number * 2 + 1);
res[len + lines * number * 2] = 0;
/* copy lines to res, prepending tabs to each line */
p = res; /* output pointer */
start = Char(s); /* start of a current line */
end = strchr(start, '\n'); /* end of a current line */
while (end) {
memset(p, ' ', number*2);
p += number*2;
memcpy(p, start, end - start + 1);
p += end - start + 1;
start = end + 1;
end = strchr(start, '\n');
}
/* process the last line */
if (*start) {
memset(p, ' ', number*2);
p += number*2;
strcpy(p, start);
}
/* replace 's' contents with 'res' */
Clear(s);
Append(s, res);
free(res);
}
#ifdef HAVE_PCRE
#include <pcre.h>

View file

@ -332,6 +332,7 @@ extern int ParmList_is_compactdefargs(ParmList *p);
extern String *Swig_string_lower(String *s);
extern String *Swig_string_upper(String *s);
extern String *Swig_string_title(String *s);
extern void Swig_offset_string(String *s, int number);
extern String *Swig_pcre_version(void);
extern void Swig_init(void);
extern int Swig_value_wrapper_mode(int mode);