同步操作将从 唐佐林/python 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/** This file is part of the MicroPython project, http://micropython.org/** The MIT License (MIT)** Copyright (c) 2015 Paul Sokolovsky* Copyright (c) 2016 Damien P. George** 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 <string.h>#include <stdint.h>#include "py/lexer.h"#include "py/frozenmod.h"#if MICROPY_MODULE_FROZEN_STR#ifndef MICROPY_MODULE_FROZEN_LEXER#define MICROPY_MODULE_FROZEN_LEXER mp_lexer_new_from_str_len#elsemp_lexer_t *MICROPY_MODULE_FROZEN_LEXER(qstr src_name, const char *str, mp_uint_t len, mp_uint_t free_len);#endifextern const char mp_frozen_str_names[];extern const uint32_t mp_frozen_str_sizes[];extern const char mp_frozen_str_content[];// On input, *len contains size of name, on output - size of contentconst char *mp_find_frozen_str(const char *str, size_t *len) {const char *name = mp_frozen_str_names;size_t offset = 0;for (int i = 0; *name != 0; i++) {size_t l = strlen(name);if (l == *len && !memcmp(str, name, l)) {*len = mp_frozen_str_sizes[i];return mp_frozen_str_content + offset;}name += l + 1;offset += mp_frozen_str_sizes[i] + 1;}return NULL;}STATIC mp_lexer_t *mp_lexer_frozen_str(const char *str, size_t len) {size_t name_len = len;const char *content = mp_find_frozen_str(str, &len);if (content == NULL) {return NULL;}qstr source = qstr_from_strn(str, name_len);mp_lexer_t *lex = MICROPY_MODULE_FROZEN_LEXER(source, content, len, 0);return lex;}#endif#if MICROPY_MODULE_FROZEN_MPY#include "py/emitglue.h"extern const char mp_frozen_mpy_names[];extern const mp_raw_code_t *const mp_frozen_mpy_content[];STATIC const mp_raw_code_t *mp_find_frozen_mpy(const char *str, size_t len) {const char *name = mp_frozen_mpy_names;for (size_t i = 0; *name != 0; i++) {size_t l = strlen(name);if (l == len && !memcmp(str, name, l)) {return mp_frozen_mpy_content[i];}name += l + 1;}return NULL;}#endif#if MICROPY_MODULE_FROZENSTATIC mp_import_stat_t mp_frozen_stat_helper(const char *name, const char *str) {size_t len = strlen(str);for (int i = 0; *name != 0; i++) {size_t l = strlen(name);if (l >= len && !memcmp(str, name, len)) {if (name[len] == 0) {return MP_IMPORT_STAT_FILE;} else if (name[len] == '/') {return MP_IMPORT_STAT_DIR;}}name += l + 1;}return MP_IMPORT_STAT_NO_EXIST;}mp_import_stat_t mp_frozen_stat(const char *str) {mp_import_stat_t stat;#if MICROPY_MODULE_FROZEN_STRstat = mp_frozen_stat_helper(mp_frozen_str_names, str);if (stat != MP_IMPORT_STAT_NO_EXIST) {return stat;}#endif#if MICROPY_MODULE_FROZEN_MPYstat = mp_frozen_stat_helper(mp_frozen_mpy_names, str);if (stat != MP_IMPORT_STAT_NO_EXIST) {return stat;}#endifreturn MP_IMPORT_STAT_NO_EXIST;}int mp_find_frozen_module(const char *str, size_t len, void **data) {#if MICROPY_MODULE_FROZEN_STRmp_lexer_t *lex = mp_lexer_frozen_str(str, len);if (lex != NULL) {*data = lex;return MP_FROZEN_STR;}#endif#if MICROPY_MODULE_FROZEN_MPYconst mp_raw_code_t *rc = mp_find_frozen_mpy(str, len);if (rc != NULL) {*data = (void *)rc;return MP_FROZEN_MPY;}#endifreturn MP_FROZEN_NONE;}#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。