Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleDetection
提交
bc7be832
P
PaddleDetection
项目概览
PaddlePaddle
/
PaddleDetection
大约 1 年 前同步成功
通知
695
Star
11112
Fork
2696
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
184
列表
看板
标记
里程碑
合并请求
40
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
184
Issue
184
列表
看板
标记
里程碑
合并请求
40
合并请求
40
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
bc7be832
编写于
2月 09, 2018
作者:
Y
Yi Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update pre-commit
上级
35e61b3e
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
84 addition
and
46 deletion
+84
-46
paddle/fluid/pybind/pybind.h
paddle/fluid/pybind/pybind.h
+14
-0
paddle/string/piece.h
paddle/string/piece.h
+2
-2
paddle/string/printf_test.cc
paddle/string/printf_test.cc
+2
-2
paddle/string/tinyformat/tinyformat.h
paddle/string/tinyformat/tinyformat.h
+65
-41
paddle/string/to_string_test.cc
paddle/string/to_string_test.cc
+1
-1
未找到文件。
paddle/fluid/pybind/pybind.h
浏览文件 @
bc7be832
// Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Generated by the paddle/operator/CMakeLists.txt. DO NOT EDIT!
USE_CUDA_ONLY_OP
(
ncclAllReduce
);
...
...
paddle/string/piece.h
浏览文件 @
bc7be832
...
...
@@ -28,7 +28,7 @@ namespace string {
// its syntax is simple as it doesn't own/manage the string, it is
// cheap to construct Pieces and pass them around.
class
Piece
{
public:
public:
static
const
size_t
npos
=
static_cast
<
size_t
>
(
-
1
);
// We provide non-explicit singleton constructors so users can
...
...
@@ -55,7 +55,7 @@ class Piece {
// Return a string that contains the copy of the referenced data.
std
::
string
ToString
()
const
{
return
std
::
string
(
data_
,
size_
);
}
private:
private:
const
char
*
data_
;
size_t
size_
;
...
...
paddle/string/printf_test.cc
浏览文件 @
bc7be832
...
...
@@ -24,6 +24,6 @@ TEST(StringPrintf, StringPrintf) {
long
hour
=
14
;
int
min
=
44
;
EXPECT_EQ
(
std
::
string
(
"Wednesday, July 27, 14:44"
),
paddle
::
string
::
Sprintf
(
"%s, %s %d, %.2d:%.2d"
,
weekday
,
month
,
day
,
hour
,
min
));
paddle
::
string
::
Sprintf
(
"%s, %s %d, %.2d:%.2d"
,
weekday
,
month
,
day
,
hour
,
min
));
}
paddle/string/tinyformat/tinyformat.h
浏览文件 @
bc7be832
...
...
@@ -147,7 +147,7 @@ namespace detail {
// Test whether type T1 is convertible to type T2
template
<
typename
T1
,
typename
T2
>
struct
is_convertible
{
private:
private:
// two types of different size
struct
fail
{
char
dummy
[
2
];
...
...
@@ -160,7 +160,7 @@ struct is_convertible {
static
succeed
tryConvert
(
const
T2
&
);
static
const
T1
&
makeT1
();
public:
public:
// Standard trick: the (...) version of tryConvert will be chosen from
// the overload set only if the version taking a T2 doesn't match.
// Then we compare the sizes of the return types to check which
...
...
@@ -170,7 +170,8 @@ struct is_convertible {
// Format the value by casting to type fmtT. This default implementation
// should never be called.
template
<
typename
T
,
typename
fmtT
,
template
<
typename
T
,
typename
fmtT
,
bool
convertible
=
is_convertible
<
T
,
fmtT
>
::
value
>
struct
formatValueAsType
{
static
void
invoke
(
std
::
ostream
&
/*out*/
,
const
T
&
/*value*/
)
{
assert
(
0
);
}
...
...
@@ -240,8 +241,11 @@ TINYFORMAT_DEFINE_FORMAT_TRUNCATED_CSTR(char)
/// operator<< to format the type T, with special cases for the %c and %p
/// conversions.
template
<
typename
T
>
inline
void
formatValue
(
std
::
ostream
&
out
,
const
char
*
/*fmtBegin*/
,
const
char
*
fmtEnd
,
int
ntrunc
,
const
T
&
value
)
{
inline
void
formatValue
(
std
::
ostream
&
out
,
const
char
*
/*fmtBegin*/
,
const
char
*
fmtEnd
,
int
ntrunc
,
const
T
&
value
)
{
// The mess here is to support the %c and %p conversions: if these
// conversions are active we try to convert the type to a char or const
// void* respectively and format that instead of the value itself. For the
...
...
@@ -264,8 +268,11 @@ inline void formatValue(std::ostream &out, const char * /*fmtBegin*/,
// Overloaded version for char types to support printing as an integer
#define TINYFORMAT_DEFINE_FORMATVALUE_CHAR(charType) \
inline void formatValue(std::ostream &out, const char *
/*fmtBegin*/
, \
const char *fmtEnd, int
/**/
, charType value) { \
inline void formatValue(std::ostream &out, \
const char *
/*fmtBegin*/
, \
const char *fmtEnd, \
int
/**/
, \
charType value) { \
switch (*(fmtEnd - 1)) { \
case 'u': \
case 'd': \
...
...
@@ -475,7 +482,7 @@ namespace detail {
// each argument to be allocated as a homogenous array inside FormatList
// whereas a naive implementation based on inheritance does not.
class
FormatArg
{
public:
public:
FormatArg
()
{}
template
<
typename
T
>
...
...
@@ -484,17 +491,22 @@ class FormatArg {
m_formatImpl
(
&
formatImpl
<
T
>
),
m_toIntImpl
(
&
toIntImpl
<
T
>
)
{}
void
format
(
std
::
ostream
&
out
,
const
char
*
fmtBegin
,
const
char
*
fmtEnd
,
void
format
(
std
::
ostream
&
out
,
const
char
*
fmtBegin
,
const
char
*
fmtEnd
,
int
ntrunc
)
const
{
m_formatImpl
(
out
,
fmtBegin
,
fmtEnd
,
ntrunc
,
m_value
);
}
int
toInt
()
const
{
return
m_toIntImpl
(
m_value
);
}
private:
private:
template
<
typename
T
>
static
void
formatImpl
(
std
::
ostream
&
out
,
const
char
*
fmtBegin
,
const
char
*
fmtEnd
,
int
ntrunc
,
const
void
*
value
)
{
static
void
formatImpl
(
std
::
ostream
&
out
,
const
char
*
fmtBegin
,
const
char
*
fmtEnd
,
int
ntrunc
,
const
void
*
value
)
{
formatValue
(
out
,
fmtBegin
,
fmtEnd
,
ntrunc
,
*
static_cast
<
const
T
*>
(
value
));
}
...
...
@@ -504,8 +516,11 @@ class FormatArg {
}
const
void
*
m_value
;
void
(
*
m_formatImpl
)(
std
::
ostream
&
out
,
const
char
*
fmtBegin
,
const
char
*
fmtEnd
,
int
ntrunc
,
const
void
*
value
);
void
(
*
m_formatImpl
)(
std
::
ostream
&
out
,
const
char
*
fmtBegin
,
const
char
*
fmtEnd
,
int
ntrunc
,
const
void
*
value
);
int
(
*
m_toIntImpl
)(
const
void
*
value
);
};
...
...
@@ -554,10 +569,12 @@ inline const char *printFormatStringLiteral(std::ostream &out,
// necessary to pull out variable width and precision . The function returns a
// pointer to the character after the end of the current format spec.
inline
const
char
*
streamStateFromFormat
(
std
::
ostream
&
out
,
bool
&
spacePadPositive
,
int
&
ntrunc
,
bool
&
spacePadPositive
,
int
&
ntrunc
,
const
char
*
fmtStart
,
const
detail
::
FormatArg
*
formatters
,
int
&
argIndex
,
int
numFormatters
)
{
int
&
argIndex
,
int
numFormatters
)
{
if
(
*
fmtStart
!=
'%'
)
{
TINYFORMAT_ERROR
(
"tinyformat: Not enough conversion specifiers in format string"
);
...
...
@@ -733,8 +750,10 @@ inline const char *streamStateFromFormat(std::ostream &out,
}
//------------------------------------------------------------------------------
inline
void
formatImpl
(
std
::
ostream
&
out
,
const
char
*
fmt
,
const
detail
::
FormatArg
*
formatters
,
int
numFormatters
)
{
inline
void
formatImpl
(
std
::
ostream
&
out
,
const
char
*
fmt
,
const
detail
::
FormatArg
*
formatters
,
int
numFormatters
)
{
// Saved stream state
std
::
streamsize
origWidth
=
out
.
width
();
std
::
streamsize
origPrecision
=
out
.
precision
();
...
...
@@ -746,9 +765,13 @@ inline void formatImpl(std::ostream &out, const char *fmt,
fmt
=
printFormatStringLiteral
(
out
,
fmt
);
bool
spacePadPositive
=
false
;
int
ntrunc
=
-
1
;
const
char
*
fmtEnd
=
streamStateFromFormat
(
out
,
spacePadPositive
,
ntrunc
,
fmt
,
formatters
,
argIndex
,
numFormatters
);
const
char
*
fmtEnd
=
streamStateFromFormat
(
out
,
spacePadPositive
,
ntrunc
,
fmt
,
formatters
,
argIndex
,
numFormatters
);
if
(
argIndex
>=
numFormatters
)
{
// Check args remain after reading any variable width/precision
TINYFORMAT_ERROR
(
"tinyformat: Not enough format arguments"
);
...
...
@@ -797,14 +820,15 @@ inline void formatImpl(std::ostream &out, const char *fmt,
/// information has been stripped from the arguments, leaving just enough of a
/// common interface to perform formatting as required.
class
FormatList
{
public:
public:
FormatList
(
detail
::
FormatArg
*
formatters
,
int
N
)
:
m_formatters
(
formatters
),
m_N
(
N
)
{}
friend
void
vformat
(
std
::
ostream
&
out
,
const
char
*
fmt
,
friend
void
vformat
(
std
::
ostream
&
out
,
const
char
*
fmt
,
const
FormatList
&
list
);
private:
private:
const
detail
::
FormatArg
*
m_formatters
;
int
m_N
;
};
...
...
@@ -817,7 +841,7 @@ namespace detail {
// Format list subclass with fixed storage to avoid dynamic allocation
template
<
int
N
>
class
FormatListN
:
public
FormatList
{
public:
public:
template
<
typename
...
Args
>
FormatListN
(
const
Args
&
...
args
)
:
FormatList
(
&
m_formatterStore
[
0
],
N
),
...
...
@@ -825,14 +849,14 @@ class FormatListN : public FormatList {
static_assert
(
sizeof
...(
args
)
==
N
,
"Number of args must be N"
);
}
private:
private:
FormatArg
m_formatterStore
[
N
];
};
// Special 0-arg version - MSVC says zero-sized C array in struct is nonstandard
template
<
>
class
FormatListN
<
0
>
:
public
FormatList
{
public:
public:
FormatListN
()
:
FormatList
(
0
,
0
)
{}
};
...
...
paddle/string/to_string_test.cc
浏览文件 @
bc7be832
...
...
@@ -17,7 +17,7 @@ limitations under the License. */
constexpr
char
kOutputString
[]
=
"User Defined Output"
;
class
UserDefinedClass
{
public:
public:
};
std
::
ostream
&
operator
<<
(
std
::
ostream
&
s
,
const
UserDefinedClass
&
ins
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录