p4ruby 2022.1.2359956-x64-mingw-ucrt
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +484 -0
- data/README.md +17 -0
- data/ext/P4/clientprogressruby.cpp +98 -0
- data/ext/P4/clientprogressruby.h +52 -0
- data/ext/P4/clientuserruby.cpp +979 -0
- data/ext/P4/clientuserruby.h +158 -0
- data/ext/P4/extconf.rb +634 -0
- data/ext/P4/gc_hack.h +10 -0
- data/ext/P4/p4.cpp +1509 -0
- data/ext/P4/p4clientapi.cpp +841 -0
- data/ext/P4/p4clientapi.h +263 -0
- data/ext/P4/p4error.cpp +137 -0
- data/ext/P4/p4error.h +62 -0
- data/ext/P4/p4mapmaker.cpp +459 -0
- data/ext/P4/p4mapmaker.h +69 -0
- data/ext/P4/p4mergedata.cpp +272 -0
- data/ext/P4/p4mergedata.h +97 -0
- data/ext/P4/p4result.cpp +260 -0
- data/ext/P4/p4result.h +86 -0
- data/ext/P4/p4rubydebug.h +46 -0
- data/ext/P4/p4specdata.cpp +137 -0
- data/ext/P4/p4specdata.h +54 -0
- data/ext/P4/p4utils.cpp +62 -0
- data/ext/P4/p4utils.h +46 -0
- data/ext/P4/specmgr.cpp +700 -0
- data/ext/P4/specmgr.h +104 -0
- data/ext/P4/undefdups.h +64 -0
- data/lib/2.7/P4.so +0 -0
- data/lib/3.0/P4.so +0 -0
- data/lib/3.1/P4.so +0 -0
- data/lib/P4/version.rb +3 -0
- data/lib/P4.rb +688 -0
- data/lib/P4.so +0 -0
- metadata +76 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
|
3
|
+
Copyright (c) 2001-2008, Perforce Software, Inc. All rights reserved.
|
4
|
+
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
7
|
+
|
8
|
+
1. Redistributions of source code must retain the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
10
|
+
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright
|
12
|
+
notice, this list of conditions and the following disclaimer in the
|
13
|
+
documentation and/or other materials provided with the distribution.
|
14
|
+
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY
|
19
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
*******************************************************************************/
|
27
|
+
|
28
|
+
/*******************************************************************************
|
29
|
+
* Name : p4rubydebug.h
|
30
|
+
*
|
31
|
+
* Author : Tony Smith <tony@perforce.com> or <tony@smee.org>
|
32
|
+
*
|
33
|
+
* Description : Debugging support for P4Ruby
|
34
|
+
*
|
35
|
+
******************************************************************************/
|
36
|
+
#ifndef P4RUBYDEBUG_H
|
37
|
+
# define P4RUBYDEBUG_H
|
38
|
+
|
39
|
+
#define P4RDB_COMMANDS ( debug > 0 )
|
40
|
+
#define P4RDB_CALLS ( debug > 1 )
|
41
|
+
#define P4RDB_DATA ( debug > 2 )
|
42
|
+
#define P4RDB_GC ( debug > 3 )
|
43
|
+
#define P4RDB_RPC ( debug > 8 )
|
44
|
+
#define P4RDB_SSL ( debug > 10 )
|
45
|
+
|
46
|
+
#endif
|
@@ -0,0 +1,137 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
|
3
|
+
Copyright (c) 2009, Perforce Software, Inc. All rights reserved.
|
4
|
+
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
7
|
+
|
8
|
+
1. Redistributions of source code must retain the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
10
|
+
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright
|
12
|
+
notice, this list of conditions and the following disclaimer in the
|
13
|
+
documentation and/or other materials provided with the distribution.
|
14
|
+
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY
|
19
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
*******************************************************************************/
|
27
|
+
|
28
|
+
/*******************************************************************************
|
29
|
+
* Name : p4specdata.cpp
|
30
|
+
*
|
31
|
+
* Author : Tony Smith <tony@perforce.com> or <tony@smee.org>
|
32
|
+
*
|
33
|
+
* Description : Ruby bindings for the Perforce API. SpecData subclass for
|
34
|
+
* P4Ruby. This class allows for manipulation of Spec data
|
35
|
+
* stored in a Ruby hash using the standard Perforce classes
|
36
|
+
*
|
37
|
+
******************************************************************************/
|
38
|
+
|
39
|
+
#include <ruby.h>
|
40
|
+
#include "undefdups.h"
|
41
|
+
#include <p4/clientapi.h>
|
42
|
+
#include <p4/i18napi.h>
|
43
|
+
#include <p4/spec.h>
|
44
|
+
#include <p4/debug.h>
|
45
|
+
#include "p4rubydebug.h"
|
46
|
+
#include "p4utils.h"
|
47
|
+
#include "p4specdata.h"
|
48
|
+
|
49
|
+
StrPtr *
|
50
|
+
SpecDataRuby::GetLine( SpecElem *sd, int x, const char **cmt )
|
51
|
+
{
|
52
|
+
*cmt = 0;
|
53
|
+
VALUE val;
|
54
|
+
VALUE key;
|
55
|
+
StrBuf t;
|
56
|
+
|
57
|
+
key = P4Utils::ruby_string( sd->tag.Text(), sd->tag.Length() );
|
58
|
+
val = rb_hash_aref( hash, key );
|
59
|
+
if( val == Qnil ) return 0;
|
60
|
+
|
61
|
+
if( !sd->IsList() )
|
62
|
+
{
|
63
|
+
last = StringValuePtr( val );
|
64
|
+
return &last;
|
65
|
+
}
|
66
|
+
|
67
|
+
// It's a list, which means we should have an array value here
|
68
|
+
|
69
|
+
if( !rb_obj_is_kind_of( val, rb_cArray ) )
|
70
|
+
{
|
71
|
+
rb_warn( "%s should be an array element. Ignoring...",
|
72
|
+
sd->tag.Text() );
|
73
|
+
return 0;
|
74
|
+
}
|
75
|
+
val = rb_ary_entry( val, x );
|
76
|
+
if( val == Qnil ) return 0;
|
77
|
+
|
78
|
+
last = StringValuePtr( val );
|
79
|
+
return &last;
|
80
|
+
}
|
81
|
+
|
82
|
+
void
|
83
|
+
SpecDataRuby::SetLine( SpecElem *sd, int x, const StrPtr *v, Error *e )
|
84
|
+
{
|
85
|
+
VALUE key;
|
86
|
+
VALUE val;
|
87
|
+
VALUE ary;
|
88
|
+
StrBuf t;
|
89
|
+
|
90
|
+
key = P4Utils::ruby_string( sd->tag.Text(), sd->tag.Length() );
|
91
|
+
val = P4Utils::ruby_string( v->Text(), v->Length() );
|
92
|
+
|
93
|
+
if( sd->IsList() )
|
94
|
+
{
|
95
|
+
ary = rb_hash_aref( hash, key );
|
96
|
+
if( ary == Qnil )
|
97
|
+
{
|
98
|
+
ary = rb_ary_new();
|
99
|
+
rb_hash_aset( hash, key, ary );
|
100
|
+
}
|
101
|
+
rb_ary_store( ary, x, val );
|
102
|
+
}
|
103
|
+
else
|
104
|
+
{
|
105
|
+
rb_hash_aset( hash, key, val );
|
106
|
+
}
|
107
|
+
return;
|
108
|
+
}
|
109
|
+
|
110
|
+
void
|
111
|
+
SpecDataRuby::Comment ( SpecElem *sd, int x, const char **wv, int nl, Error *e )
|
112
|
+
{
|
113
|
+
VALUE key;
|
114
|
+
VALUE val;
|
115
|
+
VALUE ary;
|
116
|
+
StrBuf t;
|
117
|
+
|
118
|
+
key = P4Utils::ruby_string( sd->tag.Text(), sd->tag.Length() );
|
119
|
+
val = P4Utils::ruby_string( *wv );
|
120
|
+
|
121
|
+
if( sd->IsList() )
|
122
|
+
{
|
123
|
+
|
124
|
+
ary = rb_hash_aref( hash, key ); // rb_hash_aref - get the value for hash key
|
125
|
+
if( ary == Qnil )
|
126
|
+
{
|
127
|
+
ary = rb_ary_new();
|
128
|
+
rb_hash_aset( hash, key, ary ); // rb_hash_aset(hash, key, value) - set the hash key to value
|
129
|
+
}
|
130
|
+
rb_ary_store( ary, x, val );
|
131
|
+
}
|
132
|
+
else
|
133
|
+
{
|
134
|
+
rb_hash_aset( hash, key, val );
|
135
|
+
}
|
136
|
+
return;
|
137
|
+
}
|
data/ext/P4/p4specdata.h
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
|
3
|
+
Copyright (c) 2009, Perforce Software, Inc. All rights reserved.
|
4
|
+
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
7
|
+
|
8
|
+
1. Redistributions of source code must retain the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
10
|
+
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright
|
12
|
+
notice, this list of conditions and the following disclaimer in the
|
13
|
+
documentation and/or other materials provided with the distribution.
|
14
|
+
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY
|
19
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
*******************************************************************************/
|
27
|
+
|
28
|
+
/*******************************************************************************
|
29
|
+
* Name : p4specdata.h
|
30
|
+
*
|
31
|
+
* Author : Tony Smith <tony@perforce.com> or <tony@smee.org>
|
32
|
+
*
|
33
|
+
* Description : Ruby bindings for the Perforce API. SpecData subclass for
|
34
|
+
* P4Ruby. This class allows for manipulation of Spec data
|
35
|
+
* stored in a Ruby hash using the standard Perforce classes
|
36
|
+
*
|
37
|
+
******************************************************************************/
|
38
|
+
|
39
|
+
class SpecDataRuby : public SpecData
|
40
|
+
{
|
41
|
+
public:
|
42
|
+
SpecDataRuby( VALUE h ) { hash = h; }
|
43
|
+
|
44
|
+
virtual StrPtr *GetLine( SpecElem *sd, int x, const char **cmt );
|
45
|
+
virtual void SetLine( SpecElem *sd, int x, const StrPtr *val,
|
46
|
+
Error *e );
|
47
|
+
virtual void Comment( SpecElem *sd, int x, const char **wv,
|
48
|
+
int nl, Error *e );
|
49
|
+
|
50
|
+
private:
|
51
|
+
VALUE hash;
|
52
|
+
StrBuf last;
|
53
|
+
};
|
54
|
+
|
data/ext/P4/p4utils.cpp
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
// vim:ts=8:sw=4:
|
2
|
+
/*******************************************************************************
|
3
|
+
|
4
|
+
Copyright (c) 2011, Perforce Software, Inc. All rights reserved.
|
5
|
+
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
8
|
+
|
9
|
+
1. Redistributions of source code must retain the above copyright
|
10
|
+
notice, this list of conditions and the following disclaimer.
|
11
|
+
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright
|
13
|
+
notice, this list of conditions and the following disclaimer in the
|
14
|
+
documentation and/or other materials provided with the distribution.
|
15
|
+
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
17
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
18
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
19
|
+
ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY
|
20
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
21
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
22
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
23
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
24
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
25
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
|
27
|
+
*******************************************************************************/
|
28
|
+
#include <ruby.h>
|
29
|
+
#ifdef HAVE_RUBY_ENCODING_H
|
30
|
+
#include <ruby/encoding.h>
|
31
|
+
#endif
|
32
|
+
#include "p4utils.h"
|
33
|
+
|
34
|
+
char *P4Utils::charset = 0;
|
35
|
+
|
36
|
+
VALUE P4Utils::ruby_string( const char *msg, long len )
|
37
|
+
{
|
38
|
+
VALUE str;
|
39
|
+
// If a length has been passed then use it
|
40
|
+
if( len )
|
41
|
+
{
|
42
|
+
str = rb_str_new( msg, len );
|
43
|
+
}
|
44
|
+
else
|
45
|
+
{
|
46
|
+
str = rb_str_new2( msg );
|
47
|
+
}
|
48
|
+
|
49
|
+
// Now check if an encoding should be set for the string.
|
50
|
+
#ifdef HAVE_RUBY_ENCODING_H
|
51
|
+
if( charset )
|
52
|
+
{
|
53
|
+
rb_enc_associate(str, rb_enc_find("UTF-8"));
|
54
|
+
}
|
55
|
+
else
|
56
|
+
{
|
57
|
+
rb_enc_associate(str, rb_locale_encoding());
|
58
|
+
}
|
59
|
+
#endif
|
60
|
+
|
61
|
+
return str;
|
62
|
+
}
|
data/ext/P4/p4utils.h
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
|
3
|
+
Copyright (c) 2011, Perforce Software, Inc. All rights reserved.
|
4
|
+
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
7
|
+
|
8
|
+
1. Redistributions of source code must retain the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
10
|
+
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright
|
12
|
+
notice, this list of conditions and the following disclaimer in the
|
13
|
+
documentation and/or other materials provided with the distribution.
|
14
|
+
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY
|
19
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
*******************************************************************************/
|
27
|
+
|
28
|
+
/*******************************************************************************
|
29
|
+
* Name : p4utils.h
|
30
|
+
*
|
31
|
+
* Author : Jayesh Mistry <jmistry@perforce.com>
|
32
|
+
*
|
33
|
+
* Description : C++ class with useful methods
|
34
|
+
*
|
35
|
+
******************************************************************************/
|
36
|
+
class P4Utils {
|
37
|
+
public:
|
38
|
+
static void SetCharset( const char *cs ) { charset = (char *) cs; };
|
39
|
+
static char* GetCharset() { return charset; };
|
40
|
+
|
41
|
+
static VALUE ruby_string( const char *msg, long len = 0);
|
42
|
+
|
43
|
+
private:
|
44
|
+
static char* charset;
|
45
|
+
};
|
46
|
+
|