diff options
Diffstat (limited to 'source/myurl/scheme.h')
-rw-r--r-- | source/myurl/scheme.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/source/myurl/scheme.h b/source/myurl/scheme.h new file mode 100644 index 0000000..08bd520 --- /dev/null +++ b/source/myurl/scheme.h @@ -0,0 +1,78 @@ +/* + Copyright (C) 2016-2017 Alexander Borisov + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + Author: lex.borisov@gmail.com (Alexander Borisov) +*/ + +#ifndef MyURL_SCHEME_H +#define MyURL_SCHEME_H +#pragma once + +#include "myurl/myosi.h" +#include "myurl/scheme_const.h" +#include "mycore/utils.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum myurl_scheme_type { + MyURL_SCHEME_TYPE_UNDEF = 0x00, + MyURL_SCHEME_TYPE_SPECIAL = 0x01, + MyURL_SCHEME_TYPE_LOCAL = 0x02, + MyURL_SCHEME_TYPE_HTTP_S = 0x04, + MyURL_SCHEME_TYPE_NETWORK = 0x08, + MyURL_SCHEME_TYPE_FETCH = 0x10 +} +typedef myurl_scheme_type_t; + +struct myurl_scheme { + char* name; + size_t length; + size_t port; + + myurl_scheme_id_t sid; + myurl_scheme_type_t type; +} +typedef myurl_scheme_t; + +struct myurl_scheme_entry { + const char* name; + size_t name_length; + + myurl_scheme_id_t m_id; + size_t port; + myurl_scheme_type_t type; + + size_t next; + size_t curr; +} +typedef myurl_scheme_entry_t; + +void myurl_scheme_clean(myurl_t* url, myurl_scheme_t* scheme); +myurl_scheme_t * myurl_scheme_destroy(myurl_t* url, myurl_scheme_t* scheme, bool self_destroy); + +const myurl_scheme_entry_t * myurl_scheme_find_entry(const char* name, size_t length); +myurl_scheme_id_t myurl_scheme_id_by_name(const char *name, size_t length); + +mystatus_t myurl_scheme_copy(myurl_t* url, myurl_scheme_t* from, myurl_scheme_t* to); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* MyURL_SCHEME_H */ |