Explorar el Código

some optimize

blueloveTH hace 1 año
padre
commit
237fd57b66
Se han modificado 2 ficheros con 110 adiciones y 50 borrados
  1. 50 50
      include/pocketpy/str.h
  2. 60 0
      src/str.cpp

+ 50 - 50
include/pocketpy/str.h

@@ -174,61 +174,61 @@ struct CString{
 };
 
 // unary operators
-const StrName __repr__ = StrName::get("__repr__");
-const StrName __str__ = StrName::get("__str__");
-const StrName __hash__ = StrName::get("__hash__");
-const StrName __len__ = StrName::get("__len__");
-const StrName __iter__ = StrName::get("__iter__");
-const StrName __next__ = StrName::get("__next__");
-const StrName __neg__ = StrName::get("__neg__");
+extern const StrName __repr__;
+extern const StrName __str__;
+extern const StrName __hash__;
+extern const StrName __len__;
+extern const StrName __iter__;
+extern const StrName __next__;
+extern const StrName __neg__;
 // logical operators
-const StrName __eq__ = StrName::get("__eq__");
-const StrName __lt__ = StrName::get("__lt__");
-const StrName __le__ = StrName::get("__le__");
-const StrName __gt__ = StrName::get("__gt__");
-const StrName __ge__ = StrName::get("__ge__");
-const StrName __contains__ = StrName::get("__contains__");
+extern const StrName __eq__;
+extern const StrName __lt__;
+extern const StrName __le__;
+extern const StrName __gt__;
+extern const StrName __ge__;
+extern const StrName __contains__;
 // binary operators
-const StrName __add__ = StrName::get("__add__");
-const StrName __radd__ = StrName::get("__radd__");
-const StrName __sub__ = StrName::get("__sub__");
-const StrName __rsub__ = StrName::get("__rsub__");
-const StrName __mul__ = StrName::get("__mul__");
-const StrName __rmul__ = StrName::get("__rmul__");
-const StrName __truediv__ = StrName::get("__truediv__");
-const StrName __floordiv__ = StrName::get("__floordiv__");
-const StrName __mod__ = StrName::get("__mod__");
-const StrName __pow__ = StrName::get("__pow__");
-const StrName __matmul__ = StrName::get("__matmul__");
-const StrName __lshift__ = StrName::get("__lshift__");
-const StrName __rshift__ = StrName::get("__rshift__");
-const StrName __and__ = StrName::get("__and__");
-const StrName __or__ = StrName::get("__or__");
-const StrName __xor__ = StrName::get("__xor__");
-const StrName __invert__ = StrName::get("__invert__");
+extern const StrName __add__;
+extern const StrName __radd__;
+extern const StrName __sub__;
+extern const StrName __rsub__;
+extern const StrName __mul__;
+extern const StrName __rmul__;
+extern const StrName __truediv__;
+extern const StrName __floordiv__;
+extern const StrName __mod__;
+extern const StrName __pow__;
+extern const StrName __matmul__;
+extern const StrName __lshift__;
+extern const StrName __rshift__;
+extern const StrName __and__;
+extern const StrName __or__;
+extern const StrName __xor__;
+extern const StrName __invert__;
 // indexer
-const StrName __getitem__ = StrName::get("__getitem__");
-const StrName __setitem__ = StrName::get("__setitem__");
-const StrName __delitem__ = StrName::get("__delitem__");
+extern const StrName __getitem__;
+extern const StrName __setitem__;
+extern const StrName __delitem__;
 
 // specials
-const StrName __new__ = StrName::get("__new__");
-const StrName __init__ = StrName::get("__init__");
-const StrName __call__ = StrName::get("__call__");
-const StrName __divmod__ = StrName::get("__divmod__");
-const StrName __enter__ = StrName::get("__enter__");
-const StrName __exit__ = StrName::get("__exit__");
-const StrName __name__ = StrName::get("__name__");
-const StrName __all__ = StrName::get("__all__");
-const StrName __package__ = StrName::get("__package__");
-const StrName __path__ = StrName::get("__path__");
-const StrName __class__ = StrName::get("__class__");
-const StrName __missing__ = StrName::get("__missing__");
-
-const StrName pk_id_add = StrName::get("add");
-const StrName pk_id_set = StrName::get("set");
-const StrName pk_id_long = StrName::get("long");
-const StrName pk_id_complex = StrName::get("complex");
+extern const StrName __new__;
+extern const StrName __init__;
+extern const StrName __call__;
+extern const StrName __divmod__;
+extern const StrName __enter__;
+extern const StrName __exit__;
+extern const StrName __name__;
+extern const StrName __all__;
+extern const StrName __package__;
+extern const StrName __path__;
+extern const StrName __class__;
+extern const StrName __missing__;
+
+extern const StrName pk_id_add;
+extern const StrName pk_id_set;
+extern const StrName pk_id_long;
+extern const StrName pk_id_complex;
 
 #define DEF_SNAME(name) const static StrName name(#name)
 

+ 60 - 0
src/str.cpp

@@ -539,4 +539,64 @@ int utf8len(unsigned char c, bool suppress){
 #undef PK_STR_ALLOCATE
 #undef PK_STR_COPY_INIT
 
+
+
+// unary operators
+const StrName __repr__ = StrName::get("__repr__");
+const StrName __str__ = StrName::get("__str__");
+const StrName __hash__ = StrName::get("__hash__");
+const StrName __len__ = StrName::get("__len__");
+const StrName __iter__ = StrName::get("__iter__");
+const StrName __next__ = StrName::get("__next__");
+const StrName __neg__ = StrName::get("__neg__");
+// logical operators
+const StrName __eq__ = StrName::get("__eq__");
+const StrName __lt__ = StrName::get("__lt__");
+const StrName __le__ = StrName::get("__le__");
+const StrName __gt__ = StrName::get("__gt__");
+const StrName __ge__ = StrName::get("__ge__");
+const StrName __contains__ = StrName::get("__contains__");
+// binary operators
+const StrName __add__ = StrName::get("__add__");
+const StrName __radd__ = StrName::get("__radd__");
+const StrName __sub__ = StrName::get("__sub__");
+const StrName __rsub__ = StrName::get("__rsub__");
+const StrName __mul__ = StrName::get("__mul__");
+const StrName __rmul__ = StrName::get("__rmul__");
+const StrName __truediv__ = StrName::get("__truediv__");
+const StrName __floordiv__ = StrName::get("__floordiv__");
+const StrName __mod__ = StrName::get("__mod__");
+const StrName __pow__ = StrName::get("__pow__");
+const StrName __matmul__ = StrName::get("__matmul__");
+const StrName __lshift__ = StrName::get("__lshift__");
+const StrName __rshift__ = StrName::get("__rshift__");
+const StrName __and__ = StrName::get("__and__");
+const StrName __or__ = StrName::get("__or__");
+const StrName __xor__ = StrName::get("__xor__");
+const StrName __invert__ = StrName::get("__invert__");
+// indexer
+const StrName __getitem__ = StrName::get("__getitem__");
+const StrName __setitem__ = StrName::get("__setitem__");
+const StrName __delitem__ = StrName::get("__delitem__");
+
+// specials
+const StrName __new__ = StrName::get("__new__");
+const StrName __init__ = StrName::get("__init__");
+const StrName __call__ = StrName::get("__call__");
+const StrName __divmod__ = StrName::get("__divmod__");
+const StrName __enter__ = StrName::get("__enter__");
+const StrName __exit__ = StrName::get("__exit__");
+const StrName __name__ = StrName::get("__name__");
+const StrName __all__ = StrName::get("__all__");
+const StrName __package__ = StrName::get("__package__");
+const StrName __path__ = StrName::get("__path__");
+const StrName __class__ = StrName::get("__class__");
+const StrName __missing__ = StrName::get("__missing__");
+
+const StrName pk_id_add = StrName::get("add");
+const StrName pk_id_set = StrName::get("set");
+const StrName pk_id_long = StrName::get("long");
+const StrName pk_id_complex = StrName::get("complex");
+
+
 } // namespace pkpy