Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
14ed0b2c
Kaydet (Commit)
14ed0b2c
authored
Eyl 29, 1994
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
* Modules/xxmodule.c: integrated with xxobject.c by Jack
* Modules/(posix,socket}module.c: more NT changes
üst
180d7b4d
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
169 additions
and
13 deletions
+169
-13
posixmodule.c
Modules/posixmodule.c
+25
-0
socketmodule.c
Modules/socketmodule.c
+12
-0
xxmodule.c
Modules/xxmodule.c
+132
-13
No files found.
Modules/posixmodule.c
Dosyayı görüntüle @
14ed0b2c
...
@@ -76,6 +76,11 @@ extern int symlink();
...
@@ -76,6 +76,11 @@ extern int symlink();
#include <utime.h>
#include <utime.h>
#endif
/* HAVE_UTIME_H */
#endif
/* HAVE_UTIME_H */
#ifdef HAVE_SYS_UTIME_H
#include <sys/utime.h>
#define HAVE_UTIME_H
/* pretend we do for the rest of this file */
#endif
/* HAVE_SYS_UTIME_H */
#ifdef HAVE_SYS_TIMES_H
#ifdef HAVE_SYS_TIMES_H
#include <sys/times.h>
#include <sys/times.h>
#endif
/* HAVE_SYS_TIMES_H */
#endif
/* HAVE_SYS_TIMES_H */
...
@@ -1010,6 +1015,26 @@ posix_times(self, args)
...
@@ -1010,6 +1015,26 @@ posix_times(self, args)
(
double
)
t
.
tms_cstime
/
HZ
);
(
double
)
t
.
tms_cstime
/
HZ
);
}
}
#endif
/* HAVE_TIMES */
#endif
/* HAVE_TIMES */
#ifdef NT
#define HAVE_TIMES
/* so the method table will pick it up */
static
object
*
posix_times
(
self
,
args
)
object
*
self
;
object
*
args
;
{
FILETIME
create
,
exit
,
kernel
,
user
;
HANDLE
hProc
;
if
(
!
getnoarg
(
args
))
return
NULL
;
hProc
=
GetCurrentProcess
();
GetProcessTimes
(
hProc
,
&
create
,
&
exit
,
&
kernel
,
&
user
);
return
mkvalue
(
"dddd"
,
(
double
)(
kernel
.
dwHighDateTime
*
2E32
+
kernel
.
dwLowDateTime
)
/
2E6
,
(
double
)(
user
.
dwHighDateTime
*
2E32
+
user
.
dwLowDateTime
)
/
2E6
,
(
double
)
0
,
(
double
)
0
);
}
#endif
/* NT */
#ifdef HAVE_SETSID
#ifdef HAVE_SETSID
static
object
*
static
object
*
...
...
Modules/socketmodule.c
Dosyayı görüntüle @
14ed0b2c
...
@@ -153,6 +153,18 @@ static object *SocketError;
...
@@ -153,6 +153,18 @@ static object *SocketError;
static
object
*
static
object
*
socket_error
()
socket_error
()
{
{
#ifdef NT
if
(
WSAGetLastError
())
{
object
*
v
;
v
=
mkvalue
(
"(is)"
,
WSAGetLastError
(),
"winsock error"
);
if
(
v
!=
NULL
)
{
err_setval
(
SocketError
,
v
);
DECREF
(
v
);
}
return
NULL
;
}
else
#endif
return
err_errno
(
SocketError
);
return
err_errno
(
SocketError
);
}
}
...
...
Modules/xxmodule.c
Dosyayı görüntüle @
14ed0b2c
...
@@ -22,11 +22,129 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
...
@@ -22,11 +22,129 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
******************************************************************/
/* xx module */
/* Use this file as a template to start implementing a module that
also declares objects types. All occurrences of 'xxo' should be changed
to something reasonable for your objects. After that, all other
occurrences of 'xx' should be changed to something reasonable for your
module. If your module is named foo your sourcefile should be named
foomodule.c.
You will probably want to delete all references to 'x_attr' and add
your own types of attributes instead. Maybe you want to name your
local variables other than 'self'. If your object type is needed in
other files, you'll have to create a file "foobarobject.h"; see
intobject.h for an example. */
/* Xxo objects */
#include "allobjects.h"
#include "allobjects.h"
#include "modsupport.h"
#include "modsupport.h"
/* For getargs() etc. */
static
object
*
ErrorObject
;
typedef
struct
{
OB_HEAD
object
*
x_attr
;
/* Attributes dictionary */
}
xxoobject
;
staticforward
typeobject
Xxotype
;
#define is_xxoobject(v) ((v)->ob_type == &Xxotype)
static
xxoobject
*
newxxoobject
(
arg
)
object
*
arg
;
{
xxoobject
*
self
;
self
=
NEWOBJ
(
xxoobject
,
&
Xxotype
);
if
(
self
==
NULL
)
return
NULL
;
self
->
x_attr
=
NULL
;
return
self
;
}
/* Xxo methods */
static
void
xxo_dealloc
(
self
)
xxoobject
*
self
;
{
XDECREF
(
self
->
x_attr
);
DEL
(
self
);
}
static
object
*
xxo_demo
(
self
,
args
)
xxoobject
*
self
;
object
*
args
;
{
if
(
!
getnoarg
(
args
))
return
NULL
;
INCREF
(
None
);
return
None
;
}
static
struct
methodlist
xxo_methods
[]
=
{
{
"demo"
,
(
method
)
xxo_demo
},
{
NULL
,
NULL
}
/* sentinel */
};
static
object
*
xxo_getattr
(
self
,
name
)
xxoobject
*
self
;
char
*
name
;
{
if
(
self
->
x_attr
!=
NULL
)
{
object
*
v
=
dictlookup
(
self
->
x_attr
,
name
);
if
(
v
!=
NULL
)
{
INCREF
(
v
);
return
v
;
}
}
return
findmethod
(
xxo_methods
,
(
object
*
)
self
,
name
);
}
static
int
xxo_setattr
(
self
,
name
,
v
)
xxoobject
*
self
;
char
*
name
;
object
*
v
;
{
if
(
self
->
x_attr
==
NULL
)
{
self
->
x_attr
=
newdictobject
();
if
(
self
->
x_attr
==
NULL
)
return
-
1
;
}
if
(
v
==
NULL
)
{
int
rv
=
dictremove
(
self
->
x_attr
,
name
);
if
(
rv
<
0
)
err_setstr
(
AttributeError
,
"delete non-existing xxo attribute"
);
return
rv
;
}
else
return
dictinsert
(
self
->
x_attr
,
name
,
v
);
}
static
typeobject
Xxotype
=
{
OB_HEAD_INIT
(
&
Typetype
)
0
,
/*ob_size*/
"xxo"
,
/*tp_name*/
sizeof
(
xxoobject
),
/*tp_basicsize*/
0
,
/*tp_itemsize*/
/* methods */
(
destructor
)
xxo_dealloc
,
/*tp_dealloc*/
0
,
/*tp_print*/
(
getattrfunc
)
xxo_getattr
,
/*tp_getattr*/
(
setattrfunc
)
xxo_setattr
,
/*tp_setattr*/
0
,
/*tp_compare*/
0
,
/*tp_repr*/
0
,
/*tp_as_number*/
0
,
/*tp_as_sequence*/
0
,
/*tp_as_mapping*/
0
,
/*tp_hash*/
};
/* --------------------------------------------------------------------- */
/* Function of two integers returning integer */
/* Function of two integers returning integer */
...
@@ -44,19 +162,22 @@ xx_foo(self, args)
...
@@ -44,19 +162,22 @@ xx_foo(self, args)
}
}
/* Function of no arguments returning
None
*/
/* Function of no arguments returning
new xxo object
*/
static
object
*
static
object
*
xx_
bar
(
self
,
args
)
xx_
new
(
self
,
args
)
object
*
self
;
/* Not used */
object
*
self
;
/* Not used */
object
*
args
;
object
*
args
;
{
{
int
i
,
j
;
int
i
,
j
;
xxoobject
*
rv
;
if
(
!
getnoarg
(
args
))
if
(
!
getnoarg
(
args
))
return
NULL
;
return
NULL
;
/* XXX Do something here */
rv
=
newxxoobject
(
args
);
INCREF
(
None
);
if
(
rv
==
NULL
)
return
None
;
return
NULL
;
return
(
object
*
)
rv
;
}
}
...
@@ -64,7 +185,7 @@ xx_bar(self, args)
...
@@ -64,7 +185,7 @@ xx_bar(self, args)
static
struct
methodlist
xx_methods
[]
=
{
static
struct
methodlist
xx_methods
[]
=
{
{
"foo"
,
xx_foo
},
{
"foo"
,
xx_foo
},
{
"
bar"
,
xx_bar
},
{
"
new"
,
xx_new
},
{
NULL
,
NULL
}
/* sentinel */
{
NULL
,
NULL
}
/* sentinel */
};
};
...
@@ -74,17 +195,15 @@ static struct methodlist xx_methods[] = {
...
@@ -74,17 +195,15 @@ static struct methodlist xx_methods[] = {
void
void
initxx
()
initxx
()
{
{
object
*
m
,
*
d
,
*
x
;
object
*
m
,
*
d
;
/* Create the module and add the functions */
/* Create the module and add the functions */
m
=
initmodule
(
"xx"
,
xx_methods
);
m
=
initmodule
(
"xx"
,
xx_methods
);
/* Add some symbolic constants to the module */
/* Add some symbolic constants to the module */
d
=
getmoduledict
(
m
);
d
=
getmoduledict
(
m
);
x
=
newstringobject
(
"xx.error"
);
ErrorObject
=
newstringobject
(
"xx.error"
);
dictinsert
(
d
,
"error"
,
x
);
dictinsert
(
d
,
"error"
,
ErrorObject
);
x
=
newintobject
(
42L
);
dictinsert
(
d
,
"magic"
,
x
);
/* Check for errors */
/* Check for errors */
if
(
err_occurred
())
if
(
err_occurred
())
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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