// Name: htmltag.cpp
// Purpose: wxHtmlTag class (represents single tag)
// Author: Vaclav Slavik
+// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#include <wx/wx.h>
#endif
-#include <wx/html/htmltag.h>
+#include "wx/html/htmltag.h"
+#include <stdio.h> // for vsscanf
#include <stdarg.h>
i++;
}
dummy[i] = 0;
- m_Cache[tg].Name = (char*) malloc(i+1);
+ m_Cache[tg].Name = new char[i+1];
memcpy(m_Cache[tg].Name, dummy, i+1);
while (src[pos] != '>') pos++;
// ok, we're done, now we'll free .Name members of cache - we don't need it anymore:
for (i = 0; i < m_CacheSize; i++) {
- free(m_Cache[i].Name);
+ delete[] m_Cache[i].Name;
m_Cache[i].Name = NULL;
}
}
while ((i < end_pos) && ((c = source[i++]) != '"')) m_Params += c;
m_Params += c;
}
+ else if (c == '\'') {
+ while ((i < end_pos) && ((c = source[i++]) != '\'')) m_Params += c;
+ m_Params += c;
+ }
}
m_Begin = i;
const char *st = m_Params, *p = par;
const char *st2, *p2;
bool comma;
+ char comma_char;
if (*st == 0) return "";
if (*p == 0) return "";
wxString fnd = "";
st2++; // '=' character
comma = FALSE;
- if (!with_commas && (*(st2) == '"')) {st2++; comma = TRUE;}
+ comma_char = '\0';
+ if (!with_commas && (*(st2) == '"')) {
+ st2++;
+ comma = TRUE;
+ comma_char = '"';
+ }
+ else if (!with_commas && (*(st2) == '\'')) {
+ st2++;
+ comma = TRUE;
+ comma_char = '\'';
+ }
while (*st2 != 0) {
- if (*st2 == '"') comma = !comma;
+ if (comma && *st2 == comma_char) comma = FALSE;
else if ((*st2 == ' ') && (!comma)) break;
fnd += (*(st2++));
}
- if (!with_commas && (*(st2-1) == '"')) fnd.RemoveLast();
+ if (!with_commas && (*(st2-1) == comma_char)) fnd.RemoveLast();
return fnd;
}
if (*st2 == 0) return "";
st2++;
while (*st2 != '"') st2++;
}
+ else if (*st2 == '\'') {
+ st2++;
+ while (*st2 != '\'') st2++;
+ }
st2++;
}
}
-void wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const
+int wxHtmlTag::ScanParam(const wxString& par, char *format, void *param) const
{
- va_list argptr;
wxString parval = GetParam(par);
-
- va_start(argptr, format);
-
-//#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__VISUALC__)
-#ifndef HAVE_VSSCANF
- sscanf((const char*)parval, format, va_arg(argptr, void *));
-#else
- vsscanf((const char*)parval, format, argptr);
-#endif
-
-/*
- --- vsscanf is not defined under Cygwin or Mingw32 or M$ Visual C++ environment
- if this module doesn't compile with your compiler,
- modify the def statement and let me know. Thanks...
-
- So far wxHtml functions are scanning only _one_ value
- so I workarounded this by supposing that there is only
- one ...-parameter
-*/
-
- va_end(argptr);
+ return sscanf((const char*)parval, format, param);
}
#endif