-
首页
-
C4D R23.110 C++ SDK
Macros
|
#define
|
FID
(IID, TYPE)
|
#define
|
RESOURCE_DEFINE
(ID, VAL)
|
#define
|
RESOURCE_DEFAULT
(...)
|
#define
|
MAXON_RESOURCE_DATABASE_SCOPE
(id)
|
#define
|
PRIVATE_RESOURCE_ID_CLASS
(UID, IID, TYPE, BODY, ...)
|
#define
|
PRIVATE_RESOURCE_ID_DECL
(STORAGE, UID)
|
#define
|
MAXON_ATTRIBUTE
(TYPE, NAME, RID, ...)
|
#define
|
MAXON_ATTRIBUTE_CLASS
(TYPE, NAME, RID, ...)
|
#define
|
MAXON_ATTRIBUTE_LOCAL
(TYPE, NAME, RID, ...)
|
#define
|
ID_SWITCH
(key)
|
#define
|
PRIVATE_ID_CASE
(key, line)
|
#define
|
ID_CASE
(key)
|
Typedefs
|
using
|
Group
= void
|
函数
|
maxon::Id
|
PrivateGetDatabaseScope
()
|
|
MAXON_MEMBERTYPE_DETECTOR
(IsFidClass, FidType, std::false_type)
|
IdSwitchCheck< InternedIdSwitch >
|
GetIdSwitch
(const InternedId &iid, OverloadRank2)
|
IdSwitchCheck< InternedIdSwitch >
|
GetIdSwitch
(const InternedId *iid, OverloadRank2)
|
IdSwitchCheck< IdSwitch >
|
GetIdSwitch
(const Id &id, OverloadRank1)
|
IdSwitchCheck< DataIdSwitch >
|
GetIdSwitch
(const ConstDataPtr &data, OverloadRank0)
|
IdSwitchCheck< DataIdSwitch >
|
GetIdSwitch
(const ForwardingDataPtr &data, OverloadRank0)
|
template<typename RESTRICT , Bool ONLYFID, typename KEY >
|
std::enable_if<!IsFidClass< KEY >::value, typename std::conditional<
STD_IS_REPLACEMENT
(reference, KEY)||
STD_IS_REPLACEMENT
(const, KEY), ConstDataPtr, MoveDataPtr >::type >::type
|
ConvertKeyToDataPtr
(KEY &&key)
|
template<typename RESTRICT , Bool ONLYFID, typename KEY >
|
std::enable_if< IsFidClass< KEY >::value, ConstDataPtr >::type
|
ConvertKeyToDataPtr
(KEY &&key)
|
template<typename T >
|
RESTRICT
|
TestRestriction
(T y, OverloadRank0)
|
|
MAXON_MEMBERTYPE_DETECTOR
(GetRestrict, RESTRICT_DICTIONARY_PROPS,
maxon::RESTRICT
)
|
Macro Definition Documentation
◆
FID
#define FID
|
(
|
|
IID,
|
|
|
|
TYPE
|
|
)
|
|
|
Defines a resource id with type. E.g.
FID(1000, Real)
allows to set this type directly into a DataDictionary. The Set()/Get() of the DataDictionary then is type checked.
◆
RESOURCE_DEFINE
#define RESOURCE_DEFINE
|
(
|
|
ID,
|
|
|
|
VAL
|
|
)
|
|
|
◆
RESOURCE_DEFAULT
#define RESOURCE_DEFAULT
|
(
|
|
...
|
)
|
|
defines the default value
◆
MAXON_RESOURCE_DATABASE_SCOPE
#define MAXON_RESOURCE_DATABASE_SCOPE
|
(
|
|
id
|
)
|
|
◆
PRIVATE_RESOURCE_ID_CLASS
#define PRIVATE_RESOURCE_ID_CLASS
|
(
|
|
UID,
|
|
|
|
IID,
|
|
|
|
TYPE,
|
|
|
|
BODY,
|
|
|
|
...
|
|
)
|
|
|
◆
PRIVATE_RESOURCE_ID_DECL
#define PRIVATE_RESOURCE_ID_DECL
|
(
|
|
STORAGE,
|
|
|
|
UID
|
|
)
|
|
|
◆
MAXON_ATTRIBUTE
#define MAXON_ATTRIBUTE
|
(
|
|
TYPE,
|
|
|
|
NAME,
|
|
|
|
RID,
|
|
|
|
...
|
|
)
|
|
|
Declares a resource id with type in the current namespace. E.g.,
MAXON_ATTRIBUTE
(
Vector32
,
COLOR
, 1000);
declares a resource id
COLOR
in the current namespace which uses 1000 as its key in dictionaries and has values of type
Vector32
. You have to make sure that you don't use different resource ids with equal key in the same dictionary. TODO: (Anybody) naming convention.
-
参数
-
[in]
|
TYPE
|
The type of the values of this resource id.
|
[in]
|
NAME
|
The C++ name of the resource id. A global variable of that name will be added to the current namespace.
|
[in]
|
RID
|
The resource id to be used as key in dictionaries. This can be of any type which is supported by DataType. A c-string literal will be treated as an InternedId.
|
[in]
|
...
|
Further information about the resource.
|
-
注意
-
The macro itself leaves incomplete code which is completed by the source processor. So you have to place the macro in a header file, because the source processor only scans header files, and you have to include the generated hxx files in the header file.
◆
MAXON_ATTRIBUTE_CLASS
#define MAXON_ATTRIBUTE_CLASS
|
(
|
|
TYPE,
|
|
|
|
NAME,
|
|
|
|
RID,
|
|
|
|
...
|
|
)
|
|
|
Declares a resource id with type as a class member in the current class. E.g.,
MAXON_ATTRIBUTE_CLASS
(
Bool
, WideningConversion,
"widening"
);
declares a resource id
WideningConversion
in the current class which uses "widening" as its key in dictionaries and has values of type
Bool
. You have to make sure that you don't use different resource ids with equal key in the same dictionary. TODO: (Anybody) naming convention.
-
参数
-
[in]
|
TYPE
|
The type of the values of this resource id.
|
[in]
|
NAME
|
The C++ name of the resource id. A static member variable of that name will be added to the current class.
|
[in]
|
RID
|
The resource id to be used as key in dictionaries. This can be of any type which is supported by DataType. A c-string literal will be treated as an InternedId.
|
[in]
|
...
|
Further information about the resource.
|
-
注意
-
The macro itself leaves incomplete code which is completed by the source processor. So you have to place the macro in a header file, because the source processor only scans header files, and you have to include the generated hxx files in the header file.
◆
MAXON_ATTRIBUTE_LOCAL
#define MAXON_ATTRIBUTE_LOCAL
|
(
|
|
TYPE,
|
|
|
|
NAME,
|
|
|
|
RID,
|
|
|
|
...
|
|
)
|
|
|
Declares a resource id with type in the current namespace. Unlike the other MAXON_ATTRIBUTE macros, this macro has to be used in a cpp file. E.g.,
MAXON_ATTRIBUTE_LOCAL
(IoMemoryRef, URL_MEMORY_REF,
'memo'
);
declares a resource id
URL_MEMORY_REF
in the current namespace which uses 'memo' as its key in dictionaries and has values of type
IoMemoryRef
. You have to make sure that you don't use different resource ids with equal key in the same dictionary. TODO: (Anybody) naming convention.
-
参数
-
[in]
|
TYPE
|
The type of the values of this resource id.
|
[in]
|
NAME
|
The C++ name of the resource id. A static member variable of that name will be added to the current class.
|
[in]
|
RID
|
The resource id to be used as key in dictionaries. This can be of any type which is supported by DataType. A c-string literal will be treated as an InternedId.
|
[in]
|
...
|
Further information about the resource.
|
◆
ID_SWITCH
#define ID_SWITCH
|
(
|
|
key
|
)
|
|
ID_SWITCH and ID_CASE allow to use Id or InternedId values in a switch statement.
ID_SWITCH
has to wrap the switch expression, it supports switch expressions of type Id, InternedId, pointer to InternedId or ConstDataPtr/ForwardingDataPtr. Each case label has to be wrapped by
ID_CASE
, this supports ids that are declared by MAXON_DECLARATION, MAXON_ATTRIBUTE, #CLASS_RESOURCE_ID, #RESOURCE_AUTOID or #CLASS_RESOURCE_AUTOID. Example:
switch
(
ID_SWITCH
(key))
{
case
ID_CASE
(STREAMFLAGS::HTTP_REMOTEADDRESS):
return Data(_httpFile.GetRemoteAddr());
break
;
case
ID_CASE
(STREAMFLAGS::HTTP_HEADER):
return Data(_httpFile.GetHeader());
break
;
}
-
参数
-
[in]
|
key
|
The key to be used for the switch expression.
|
-
注意
-
These macros also support fallthroughs and multiple values for a single case block. Nesting of switch statements will most likely cause a warning about a shadowed local variable because each ID_SWITCH macro declares a local variable of name
privateSwitchId
in the scope of the switch statement.
-
You will get a compile-time error in the rare case that two ids have the same hashcode. In this case you can't use a switch statement, you have to use if statements instead.
◆
PRIVATE_ID_CASE
#define PRIVATE_ID_CASE
|
(
|
|
key,
|
|
|
|
line
|
|
)
|
|
|
◆
ID_CASE
ID_SWITCH and ID_CASE allow to use InternedId values in a switch statement, see
ID_SWITCH
.
-
参数
-
[in]
|
key
|
The key to be used for the case.
|
Function Documentation
◆
PrivateGetDatabaseScope()
#define MAXON_ATTRIBUTE_LOCAL(TYPE, NAME, RID,...)
定义:
fid.h:182
#define MAXON_ATTRIBUTE_CLASS(TYPE, NAME, RID,...)
定义:
fid.h:165
COLOR
Vector.
定义:
c4d_basebitmap.h:7
#define ID_SWITCH(key)
定义:
fid.h:331
#define ID_CASE(key)
定义:
fid.h:344
maxon::Bool Bool
定义:
ge_sys_math.h:53
#define MAXON_ATTRIBUTE(TYPE, NAME, RID,...)
定义:
fid.h:146