FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cefpython/src/string_visitor.pyx at master · linesight/cefpython · GitHub
linesight
/
cefpython
Public
forked from
cztomczak/cefpython
Notifications
You must be signed in to change notification settings
Fork
2
Star
11
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cefpython
/
src
/
string_visitor.pyx
Copy path
More file actions
More file actions
Latest commit
History
History
History
75 lines (63 loc) · 2.89 KB
Breadcrumbs
cefpython
/
src
/
string_visitor.pyx
Copy path
File metadata and controls
75 lines (63 loc) · 2.89 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#
Copyright (c) 2013 CEF Python, see the Authors file.
#
All rights reserved. Licensed under BSD 3-clause license.
#
Project website: https://github.com/cztomczak/cefpython
include
"
cefpython.pyx
"
import
weakref
#
-----------------------------------------------------------------------------
#
PyStringVisitor
#
-----------------------------------------------------------------------------
cdef
object
g_userStringVisitors
=
weakref.WeakValueDictionary()
cdef
int
g_userStringVisitorMaxId
=
0
cdef
int
StoreUserStringVisitor(
object
userStringVisitor)
except
*
:
global
g_userStringVisitorMaxId
global
g_userStringVisitors
g_userStringVisitorMaxId
+=
1
g_userStringVisitors[g_userStringVisitorMaxId]
=
userStringVisitor
return
g_userStringVisitorMaxId
cdef PyStringVisitor GetUserStringVisitor(
int
stringVisitorId):
global
g_userStringVisitors
cdef
object
userStringVisitor
cdef PyStringVisitor pyStringVisitor
if
stringVisitorId
in
g_userStringVisitors:
userStringVisitor
=
g_userStringVisitors[stringVisitorId]
pyStringVisitor
=
PyStringVisitor(userStringVisitor)
return
pyStringVisitor
cdef
class
PyStringVisitor:
cdef
object
userStringVisitor
def
__init__
(
self
, object
userStringVisitor
):
self
.userStringVisitor
=
userStringVisitor
cdef
object
GetCallback(
self
,
str
funcName):
if
self
.userStringVisitor
and
(
hasattr
(
self
.userStringVisitor, funcName)
and
(
callable
(
getattr
(
self
.userStringVisitor, funcName)))):
return
getattr
(
self
.userStringVisitor, funcName)
#
-----------------------------------------------------------------------------
#
C++ StringVisitor
#
-----------------------------------------------------------------------------
cdef CefRefPtr[CefStringVisitor] CreateStringVisitor(
object
userStringVisitor)
except
*
:
if
not
userStringVisitor:
raise
Exception
(
"
userStringVisitor object missing
"
)
if
not
hasattr
(userStringVisitor,
"
Visit
"
):
raise
Exception
(
"
userStringVisitor object is missing Visit() method
"
)
cdef
int
stringVisitorId
=
StoreUserStringVisitor(userStringVisitor)
cdef CefRefPtr[CefStringVisitor] cefStringVisitor
=
(
<
CefRefPtr[CefStringVisitor]?
>
new StringVisitor(stringVisitorId))
return
cefStringVisitor
cdef public
void
StringVisitor_Visit(
int
stringVisitorId,
const CefString
&
string
)
except
*
with
gil:
cdef
str
pyString
cdef PyStringVisitor userStringVisitor
cdef
object
callback
try
:
pyString
=
CefToPyString(string)
userStringVisitor
=
GetUserStringVisitor(stringVisitorId)
if
userStringVisitor:
callback
=
userStringVisitor.GetCallback(
"
Visit
"
)
if
callback:
callback(
value
=
pyString)
except
:
(exc_type, exc_value, exc_trace)
=
sys.exc_info()
sys.excepthook(exc_type, exc_value, exc_trace)
Back
|
FazBrowse Home
|
New Git URL