Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
bfdc2059
Commit
bfdc2059
authored
Nov 29, 2014
by
Paul Sokolovsky
Committed by
Damien George
Nov 29, 2014
Browse files
modubinascii: Add, with hexlify() implementation.
parent
d96e6b14
Changes
7
Hide whitespace changes
Inline
Side-by-side
extmod/modubinascii.c
0 → 100644
View file @
bfdc2059
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2014 Paul Sokolovsky
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include
<stdio.h>
#include
<assert.h>
#include
<string.h>
#include
"mpconfig.h"
#include
"nlr.h"
#include
"misc.h"
#include
"qstr.h"
#include
"obj.h"
#include
"runtime.h"
#include
"binary.h"
#if MICROPY_PY_UBINASCII
STATIC
mp_obj_t
mod_binascii_hexlify
(
mp_uint_t
n_args
,
const
mp_obj_t
*
args
)
{
mp_buffer_info_t
bufinfo
;
mp_get_buffer_raise
(
args
[
0
],
&
bufinfo
,
MP_BUFFER_READ
);
byte
*
in
=
bufinfo
.
buf
,
*
out
;
mp_obj_t
o
=
mp_obj_str_builder_start
(
&
mp_type_bytes
,
bufinfo
.
len
*
2
,
&
out
);
for
(
mp_uint_t
i
=
bufinfo
.
len
;
i
--
;)
{
byte
d
=
(
*
in
>>
4
);
if
(
d
>
9
)
{
d
+=
'a'
-
'9'
-
1
;
}
*
out
++
=
d
+
'0'
;
d
=
(
*
in
++
&
0xf
);
if
(
d
>
9
)
{
d
+=
'a'
-
'9'
-
1
;
}
*
out
++
=
d
+
'0'
;
}
return
mp_obj_str_builder_end
(
o
);
}
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
mod_binascii_hexlify_obj
,
1
,
2
,
mod_binascii_hexlify
);
STATIC
const
mp_map_elem_t
mp_module_binascii_globals_table
[]
=
{
{
MP_OBJ_NEW_QSTR
(
MP_QSTR___name__
),
MP_OBJ_NEW_QSTR
(
MP_QSTR_ubinascii
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_hexlify
),
(
mp_obj_t
)
&
mod_binascii_hexlify_obj
},
// { MP_OBJ_NEW_QSTR(MP_QSTR_unhexlify), (mp_obj_t)&mod_binascii_unhexlify_obj },
// { MP_OBJ_NEW_QSTR(MP_QSTR_a2b_base64), (mp_obj_t)&mod_binascii_a2b_base64_obj },
// { MP_OBJ_NEW_QSTR(MP_QSTR_b2a_base64), (mp_obj_t)&mod_binascii_b2a_base64_obj },
};
STATIC
const
mp_obj_dict_t
mp_module_binascii_globals
=
{
.
base
=
{
&
mp_type_dict
},
.
map
=
{
.
all_keys_are_qstrs
=
1
,
.
table_is_fixed_array
=
1
,
.
used
=
MP_ARRAY_SIZE
(
mp_module_binascii_globals_table
),
.
alloc
=
MP_ARRAY_SIZE
(
mp_module_binascii_globals_table
),
.
table
=
(
mp_map_elem_t
*
)
mp_module_binascii_globals_table
,
},
};
const
mp_obj_module_t
mp_module_ubinascii
=
{
.
base
=
{
&
mp_type_module
},
.
name
=
MP_QSTR_ubinascii
,
.
globals
=
(
mp_obj_dict_t
*
)
&
mp_module_binascii_globals
,
};
#endif //MICROPY_PY_UBINASCII
py/builtin.h
View file @
bfdc2059
...
...
@@ -95,3 +95,4 @@ extern const mp_obj_module_t mp_module_ujson;
extern
const
mp_obj_module_t
mp_module_ure
;
extern
const
mp_obj_module_t
mp_module_uheapq
;
extern
const
mp_obj_module_t
mp_module_uhashlib
;
extern
const
mp_obj_module_t
mp_module_ubinascii
;
py/builtintables.c
View file @
bfdc2059
...
...
@@ -224,6 +224,9 @@ STATIC const mp_map_elem_t mp_builtin_module_table[] = {
#if MICROPY_PY_UHASHLIB
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_uhashlib
),
(
mp_obj_t
)
&
mp_module_uhashlib
},
#endif
#if MICROPY_PY_UBINASCII
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_ubinascii
),
(
mp_obj_t
)
&
mp_module_ubinascii
},
#endif
// extra builtin modules as defined by a port
MICROPY_PORT_BUILTIN_MODULES
...
...
py/mpconfig.h
View file @
bfdc2059
...
...
@@ -439,6 +439,10 @@ typedef double mp_float_t;
#define MICROPY_PY_UHASHLIB (0)
#endif
#ifndef MICROPY_PY_UBINASCII
#define MICROPY_PY_UBINASCII (0)
#endif
/*****************************************************************************/
/* Hooks for a port to add builtins */
...
...
py/py.mk
View file @
bfdc2059
...
...
@@ -117,6 +117,7 @@ PY_O_BASENAME = \
../extmod/moduzlib.o
\
../extmod/moduheapq.o
\
../extmod/moduhashlib.o
\
../extmod/modubinascii.o
\
# prepend the build destination prefix to the py object files
PY_O
=
$(
addprefix
$(PY_BUILD)
/,
$(PY_O_BASENAME)
)
...
...
py/qstrdefs.h
View file @
bfdc2059
...
...
@@ -518,3 +518,8 @@ Q(digest)
Q
(
hexdigest
)
Q
(
sha256
)
#endif
#if MICROPY_PY_UBINASCII
Q
(
ubinascii
)
Q
(
hexlify
)
#endif
unix/mpconfigport.h
View file @
bfdc2059
...
...
@@ -62,6 +62,7 @@
#define MICROPY_PY_URE (1)
#define MICROPY_PY_UHEAPQ (1)
#define MICROPY_PY_UHASHLIB (1)
#define MICROPY_PY_UBINASCII (1)
// Define to MICROPY_ERROR_REPORTING_DETAILED to get function, etc.
// names in exception messages (may require more RAM).
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment