str.cpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "pocketpy/common/str.hpp"
  2. #include <cassert>
  3. #include <ostream>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <map>
  7. namespace pkpy {
  8. // unary operators
  9. const StrName __repr__ = StrName::get("__repr__");
  10. const StrName __str__ = StrName::get("__str__");
  11. const StrName __hash__ = StrName::get("__hash__");
  12. const StrName __len__ = StrName::get("__len__");
  13. const StrName __iter__ = StrName::get("__iter__");
  14. const StrName __next__ = StrName::get("__next__");
  15. const StrName __neg__ = StrName::get("__neg__");
  16. // logical operators
  17. const StrName __eq__ = StrName::get("__eq__");
  18. const StrName __lt__ = StrName::get("__lt__");
  19. const StrName __le__ = StrName::get("__le__");
  20. const StrName __gt__ = StrName::get("__gt__");
  21. const StrName __ge__ = StrName::get("__ge__");
  22. const StrName __contains__ = StrName::get("__contains__");
  23. // binary operators
  24. const StrName __add__ = StrName::get("__add__");
  25. const StrName __radd__ = StrName::get("__radd__");
  26. const StrName __sub__ = StrName::get("__sub__");
  27. const StrName __rsub__ = StrName::get("__rsub__");
  28. const StrName __mul__ = StrName::get("__mul__");
  29. const StrName __rmul__ = StrName::get("__rmul__");
  30. const StrName __truediv__ = StrName::get("__truediv__");
  31. const StrName __floordiv__ = StrName::get("__floordiv__");
  32. const StrName __mod__ = StrName::get("__mod__");
  33. const StrName __pow__ = StrName::get("__pow__");
  34. const StrName __matmul__ = StrName::get("__matmul__");
  35. const StrName __lshift__ = StrName::get("__lshift__");
  36. const StrName __rshift__ = StrName::get("__rshift__");
  37. const StrName __and__ = StrName::get("__and__");
  38. const StrName __or__ = StrName::get("__or__");
  39. const StrName __xor__ = StrName::get("__xor__");
  40. const StrName __invert__ = StrName::get("__invert__");
  41. // indexer
  42. const StrName __getitem__ = StrName::get("__getitem__");
  43. const StrName __setitem__ = StrName::get("__setitem__");
  44. const StrName __delitem__ = StrName::get("__delitem__");
  45. // specials
  46. const StrName __new__ = StrName::get("__new__");
  47. const StrName __init__ = StrName::get("__init__");
  48. const StrName __call__ = StrName::get("__call__");
  49. const StrName __divmod__ = StrName::get("__divmod__");
  50. const StrName __enter__ = StrName::get("__enter__");
  51. const StrName __exit__ = StrName::get("__exit__");
  52. const StrName __name__ = StrName::get("__name__");
  53. const StrName __all__ = StrName::get("__all__");
  54. const StrName __package__ = StrName::get("__package__");
  55. const StrName __path__ = StrName::get("__path__");
  56. const StrName __class__ = StrName::get("__class__");
  57. const StrName __missing__ = StrName::get("__missing__");
  58. const StrName pk_id_add = StrName::get("add");
  59. const StrName pk_id_set = StrName::get("set");
  60. const StrName pk_id_long = StrName::get("long");
  61. const StrName pk_id_complex = StrName::get("complex");
  62. } // namespace pkpy