blob: 8b9410d95cb0e7f5955a868b8a228848e792cc3a [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* etchurl.h -- URL class
* modeled after java binding URL class
*/
#ifndef ETCHURL_H
#define ETCHURL_H
#include "etch_collection.h"
#include "etch_arraylist.h"
#include "etchhash.h"
#define ETCH_URL_DEFAULT_SCHEME L"http"
#define ETCH_URL_DEFNUMPARMS 4
#define ETCH_URL_DEFNUMTERMS 4
#define ETCH_URL_DEFSUBTERMS 4
typedef struct etch_url
{
unsigned int hashkey;
unsigned short obj_type;
unsigned short class_id;
struct objmask* vtab;
int (*destroy)(void*);
void*(*clone) (void*);
obj_gethashkey get_hashkey;
struct objmask* parent;
etchresult* result;
unsigned int refcount;
unsigned int length;
unsigned char is_null;
unsigned char is_copy;
unsigned char is_static;
unsigned char reserved;
unsigned port;
wchar_t* raw;
wchar_t* scheme;
wchar_t* user;
wchar_t* password;
wchar_t* fragment;
wchar_t* host;
wchar_t* uri;
etch_arraylist* params;
etch_hashtable* terms;
size_t charcount;
size_t bytecount;
} etch_url;
etch_url* new_url(wchar_t* urlstring);
etch_object* etchurl_get_term (etch_url*, const wchar_t* termname);
boolean etchurl_get_boolean_term(etch_url*, const wchar_t* termname, boolean* retval);
etch_iterator* etchurl_get_params(etch_url*);
objmask* etchurl_remove_term(etch_url*, wchar_t* key);
int etchurl_get_integer_term(etch_url*, const wchar_t* termname, int* retval);
int etchurl_add_term(etch_url*, wchar_t* termname, wchar_t* termval);
int etchurl_add_double_term( etch_url*, wchar_t* termname, const double termval);
int etchurl_add_integer_term(etch_url*, wchar_t* termname, const int termval);
int etchurl_paramcount(etch_url*);
int etchurl_termcount (etch_url*);
int is_url_scheme_http (etch_url*);
int is_url_scheme_udp (etch_url*);
#endif /* #ifndef ETCHURL_H */