summaryrefslogtreecommitdiff
path: root/Lib/ocaml/std_string.i
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/ocaml/std_string.i')
-rw-r--r--Lib/ocaml/std_string.i180
1 files changed, 65 insertions, 115 deletions
diff --git a/Lib/ocaml/std_string.i b/Lib/ocaml/std_string.i
index e75e95304..5b6966dec 100644
--- a/Lib/ocaml/std_string.i
+++ b/Lib/ocaml/std_string.i
@@ -11,141 +11,91 @@
// However, I think I'll wait until someone asks for it...
// ------------------------------------------------------------------------
-%include <exception.i>
-
%{
#include <string>
#include <vector>
- using std::string;
- using std::vector;
%}
-
+
+%include <exception.i>
%include <std_vector.i>
-%naturalvar std::string;
-%naturalvar std::wstring;
-
namespace std {
- template <class charT> class basic_string {
- public:
- typedef charT *pointer;
- typedef charT &reference;
- typedef const charT &const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- basic_string();
- basic_string( charT *str );
- size_t size();
- charT operator []( int pos ) const;
- charT *c_str() const;
- basic_string<charT> &operator = ( const basic_string &ws );
- basic_string<charT> &operator = ( const charT *str );
- basic_string<charT> &append( const basic_string<charT> &other );
- basic_string<charT> &append( const charT *str );
- void push_back( charT c );
- void clear();
- void reserve( size_type t );
- void resize( size_type n, charT c = charT() );
- int compare( const basic_string<charT> &other ) const;
- int compare( const charT *str ) const;
- basic_string<charT> &insert( size_type pos,
- const basic_string<charT> &str );
- size_type find( const basic_string<charT> &other, int pos = 0 ) const;
- size_type find( charT c, int pos = 0 ) const;
- %extend {
- bool operator == ( const basic_string<charT> &other ) const {
- return self->compare( other ) == 0;
- }
- bool operator != ( const basic_string<charT> &other ) const {
- return self->compare( other ) != 0;
- }
- bool operator < ( const basic_string<charT> &other ) const {
- return self->compare( other ) == -1;
- }
- bool operator > ( const basic_string<charT> &other ) const {
- return self->compare( other ) == 1;
- }
- bool operator <= ( const basic_string<charT> &other ) const {
- return self->compare( other ) != 1;
- }
- bool operator >= ( const basic_string<charT> &other ) const {
- return self->compare( other ) != -1;
- }
- }
- };
-
- %template(string) basic_string<char>;
- %template(wstring) basic_string<wchar_t>;
- typedef basic_string<char> string;
- typedef basic_string<wchar_t> wstring;
-
- /* Overloading check */
- %typemap(in) string {
- if (caml_ptr_check($input))
- $1.assign((char *)caml_ptr_val($input,0),
- caml_string_len($input));
- else
- SWIG_exception(SWIG_TypeError, "string expected");
- }
- %typemap(in) const string & (std::string temp) {
- if (caml_ptr_check($input)) {
- temp.assign((char *)caml_ptr_val($input,0),
- caml_string_len($input));
- $1 = &temp;
- } else {
- SWIG_exception(SWIG_TypeError, "string expected");
- }
- }
+%naturalvar string;
+%naturalvar wstring;
+
+class string;
+class wstring;
+
+/* Overloading check */
+%typemap(in) string {
+ /* %typemap(in) string */
+ if (caml_ptr_check($input))
+ $1.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
+ else
+ SWIG_exception(SWIG_TypeError, "string expected");
+}
- %typemap(in) string & (std::string temp) {
- if (caml_ptr_check($input)) {
- temp.assign((char *)caml_ptr_val($input,0),
- caml_string_len($input));
- $1 = &temp;
- } else {
- SWIG_exception(SWIG_TypeError, "string expected");
- }
- }
+%typemap(in) const string & (std::string temp) {
+ /* %typemap(in) const string & */
+ if (caml_ptr_check($input)) {
+ temp.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
+ $1 = &temp;
+ } else {
+ SWIG_exception(SWIG_TypeError, "string expected");
+ }
+}
- %typemap(in) string * (std::string *temp) {
- if (caml_ptr_check($input)) {
- temp = new std::string((char *)caml_ptr_val($input,0),
- caml_string_len($input));
- $1 = temp;
- } else {
- SWIG_exception(SWIG_TypeError, "string expected");
- }
- }
+%typemap(in) string & (std::string temp) {
+ /* %typemap(in) string & */
+ if (caml_ptr_check($input)) {
+ temp.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
+ $1 = &temp;
+ } else {
+ SWIG_exception(SWIG_TypeError, "string expected");
+ }
+}
- %typemap(free) string * (std::string *temp) {
- delete temp;
- }
+%typemap(in) string * (std::string *temp) {
+ /* %typemap(in) string * */
+ if (caml_ptr_check($input)) {
+ temp = new std::string((char *)caml_ptr_val($input,0), caml_string_len($input));
+ $1 = temp;
+ } else {
+ SWIG_exception(SWIG_TypeError, "string expected");
+ }
+}
- %typemap(argout) string & {
- caml_list_append(swig_result,caml_val_string_len((*$1).c_str(),
- (*$1).size()));
- }
+%typemap(free) string * (std::string *temp) {
+ delete temp;
+}
- %typemap(directorout) string {
- $result.assign((char *)caml_ptr_val($input,0),
- caml_string_len($input));
- }
+%typemap(argout) string & {
+ /* %typemap(argout) string & */
+ swig_result = caml_list_append(swig_result,caml_val_string_len((*$1).c_str(), (*$1).size()));
+}
- %typemap(out) string {
- $result = caml_val_string_len($1.c_str(),$1.size());
- }
+%typemap(directorout) string {
+ /* %typemap(directorout) string */
+ $result.assign((char *)caml_ptr_val($input,0), caml_string_len($input));
+}
+
+%typemap(out) string {
+ /* %typemap(out) string */
+ $result = caml_val_string_len($1.c_str(),$1.size());
+}
- %typemap(out) string * {
+%typemap(out) string * {
+ /* %typemap(out) string * */
$result = caml_val_string_len((*$1).c_str(),(*$1).size());
- }
+}
}
#ifdef ENABLE_CHARPTR_ARRAY
-char **c_charptr_array( const std::vector <string > &str_v );
+char **c_charptr_array( const std::vector <std::string > &str_v );
%{
- SWIGEXT char **c_charptr_array( const std::vector <string > &str_v ) {
+ SWIGEXT char **c_charptr_array( const std::vector <std::string > &str_v ) {
char **out = new char *[str_v.size() + 1];
out[str_v.size()] = 0;
for( int i = 0; i < str_v.size(); i++ ) {
@@ -157,7 +107,7 @@ char **c_charptr_array( const std::vector <string > &str_v );
#endif
#ifdef ENABLE_STRING_VECTOR
-%template (StringVector) std::vector<string >;
+%template (StringVector) std::vector<std::string >;
%insert(ml) %{
(* Some STL convenience items *)