Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Libretro
libretro-chailove
Commits
69835f9a
Verified
Commit
69835f9a
authored
Jul 13, 2019
by
RobLoach
Browse files
Fix cpplint
parent
befb4724
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/libretro_core_options.h
View file @
69835f9a
#ifndef LIBRETRO_CORE_OPTIONS_H_
_
#define LIBRETRO_CORE_OPTIONS_H_
_
#ifndef
SRC_
LIBRETRO_CORE_OPTIONS_H_
#define
SRC_
LIBRETRO_CORE_OPTIONS_H_
#include <stdlib.h>
#include <string.h>
...
...
@@ -12,43 +12,43 @@ extern "C" {
#endif
/*
********************************
* Core Option Definitions
********************************
********************************
* Core Option Definitions
********************************
*/
/* RETRO_LANGUAGE_ENGLISH */
/* Default language:
* - All other languages must include the same keys and values
* - Will be used as a fallback in the event that frontend language
* is not available
* - Will be used as a fallback for any missing entries in
* frontend language definition */
* - All other languages must include the same keys and values
* - Will be used as a fallback in the event that frontend language
* is not available
* - Will be used as a fallback for any missing entries in
* frontend language definition */
struct
retro_core_option_definition
option_defs_us
[]
=
{
{
"chailove_alphablending"
,
"Alpha Blending"
,
"Whether or not to enable hardware alpha blending. This will improve graphics, but have an impact on performance."
,
{
{
"enabled"
,
NULL
},
{
"disabled"
,
NULL
},
{
NULL
,
NULL
},
},
"enabled"
},
{
"chailove_highquality"
,
"High Quality"
,
"When enabled, will take steps to improve the graphic fidelity. Can have an impact on performance."
,
{
{
"enabled"
,
NULL
},
{
"disabled"
,
NULL
},
{
NULL
,
NULL
},
},
"enabled"
},
{
NULL
,
NULL
,
NULL
,
{{
0
}},
NULL
},
{
"chailove_alphablending"
,
"Alpha Blending"
,
"Whether or not to enable hardware alpha blending. This will improve graphics, but have an impact on performance."
,
{
{
"enabled"
,
NULL
},
{
"disabled"
,
NULL
},
{
NULL
,
NULL
},
},
"enabled"
},
{
"chailove_highquality"
,
"High Quality"
,
"When enabled, will take steps to improve the graphic fidelity. Can have an impact on performance."
,
{
{
"enabled"
,
NULL
},
{
"disabled"
,
NULL
},
{
NULL
,
NULL
},
},
"enabled"
},
{
NULL
,
NULL
,
NULL
,
{{
0
}},
NULL
},
};
/* RETRO_LANGUAGE_JAPANESE */
...
...
@@ -88,175 +88,162 @@ struct retro_core_option_definition option_defs_us[] = {
/* RETRO_LANGUAGE_TURKISH */
/*
********************************
* Language Mapping
********************************
********************************
* Language Mapping
********************************
*/
struct
retro_core_option_definition
*
option_defs_intl
[
RETRO_LANGUAGE_LAST
]
=
{
option_defs_us
,
/* RETRO_LANGUAGE_ENGLISH */
NULL
,
/* RETRO_LANGUAGE_JAPANESE */
NULL
,
/* RETRO_LANGUAGE_FRENCH */
NULL
,
/* RETRO_LANGUAGE_SPANISH */
NULL
,
/* RETRO_LANGUAGE_GERMAN */
NULL
,
/* RETRO_LANGUAGE_ITALIAN */
NULL
,
/* RETRO_LANGUAGE_DUTCH */
NULL
,
/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
NULL
,
/* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
NULL
,
/* RETRO_LANGUAGE_RUSSIAN */
NULL
,
/* RETRO_LANGUAGE_KOREAN */
NULL
,
/* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
NULL
,
/* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
NULL
,
/* RETRO_LANGUAGE_ESPERANTO */
NULL
,
/* RETRO_LANGUAGE_POLISH */
NULL
,
/* RETRO_LANGUAGE_VIETNAMESE */
NULL
,
/* RETRO_LANGUAGE_ARABIC */
NULL
,
/* RETRO_LANGUAGE_GREEK */
NULL
,
/* RETRO_LANGUAGE_TURKISH */
option_defs_us
,
/* RETRO_LANGUAGE_ENGLISH */
NULL
,
/* RETRO_LANGUAGE_JAPANESE */
NULL
,
/* RETRO_LANGUAGE_FRENCH */
NULL
,
/* RETRO_LANGUAGE_SPANISH */
NULL
,
/* RETRO_LANGUAGE_GERMAN */
NULL
,
/* RETRO_LANGUAGE_ITALIAN */
NULL
,
/* RETRO_LANGUAGE_DUTCH */
NULL
,
/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
NULL
,
/* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
NULL
,
/* RETRO_LANGUAGE_RUSSIAN */
NULL
,
/* RETRO_LANGUAGE_KOREAN */
NULL
,
/* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
NULL
,
/* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
NULL
,
/* RETRO_LANGUAGE_ESPERANTO */
NULL
,
/* RETRO_LANGUAGE_POLISH */
NULL
,
/* RETRO_LANGUAGE_VIETNAMESE */
NULL
,
/* RETRO_LANGUAGE_ARABIC */
NULL
,
/* RETRO_LANGUAGE_GREEK */
NULL
,
/* RETRO_LANGUAGE_TURKISH */
};
/*
********************************
* Functions
********************************
********************************
* Functions
********************************
*/
/* Handles configuration/setting of core options.
* Should only be called inside retro_set_environment().
* > We place the function body in the header to avoid the
* necessity of adding more .c files (i.e. want this to
* be as painless as possible for core devs)
*/
static
INLINE
void
libretro_set_core_options
(
retro_environment_t
environ_cb
)
{
unsigned
version
=
0
;
if
(
!
environ_cb
)
return
;
if
(
environ_cb
(
RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION
,
&
version
)
&&
(
version
==
1
))
{
struct
retro_core_options_intl
core_options_intl
;
unsigned
language
=
0
;
core_options_intl
.
us
=
option_defs_us
;
core_options_intl
.
local
=
NULL
;
if
(
environ_cb
(
RETRO_ENVIRONMENT_GET_LANGUAGE
,
&
language
)
&&
(
language
<
RETRO_LANGUAGE_LAST
)
&&
(
language
!=
RETRO_LANGUAGE_ENGLISH
))
core_options_intl
.
local
=
option_defs_intl
[
language
];
environ_cb
(
RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL
,
&
core_options_intl
);
}
else
{
size_t
i
;
size_t
num_options
=
0
;
struct
retro_variable
*
variables
=
NULL
;
char
**
values_buf
=
NULL
;
/* Determine number of options */
while
(
true
)
{
if
(
option_defs_us
[
num_options
].
key
)
num_options
++
;
else
break
;
}
/* Allocate arrays */
variables
=
(
struct
retro_variable
*
)
calloc
(
num_options
+
1
,
sizeof
(
struct
retro_variable
));
values_buf
=
(
char
**
)
calloc
(
num_options
,
sizeof
(
char
*
));
if
(
!
variables
||
!
values_buf
)
goto
error
;
/* Copy parameters from option_defs_us array */
for
(
i
=
0
;
i
<
num_options
;
i
++
)
{
const
char
*
key
=
option_defs_us
[
i
].
key
;
const
char
*
desc
=
option_defs_us
[
i
].
desc
;
struct
retro_core_option_value
*
values
=
option_defs_us
[
i
].
values
;
size_t
buf_len
=
3
;
values_buf
[
i
]
=
NULL
;
if
(
desc
)
{
size_t
num_values
=
0
;
/* Determine number of values */
while
(
true
)
{
if
(
values
[
num_values
].
value
)
{
buf_len
+=
strlen
(
values
[
num_values
].
value
);
num_values
++
;
}
else
break
;
}
/* Build values string */
if
(
num_values
>
1
)
{
size_t
j
;
buf_len
+=
num_values
-
1
;
buf_len
+=
strlen
(
desc
);
values_buf
[
i
]
=
(
char
*
)
calloc
(
buf_len
,
sizeof
(
char
));
if
(
!
values_buf
[
i
])
goto
error
;
strcpy
(
values_buf
[
i
],
desc
);
strcat
(
values_buf
[
i
],
"; "
);
for
(
j
=
0
;
j
<
num_values
;
j
++
)
{
strcat
(
values_buf
[
i
],
values
[
j
].
value
);
if
(
j
!=
num_values
-
1
)
strcat
(
values_buf
[
i
],
"|"
);
}
}
}
variables
[
i
].
key
=
key
;
variables
[
i
].
value
=
values_buf
[
i
];
}
/* Set variables */
environ_cb
(
RETRO_ENVIRONMENT_SET_VARIABLES
,
variables
);
* Should only be called inside retro_set_environment().
* > We place the function body in the header to avoid the
* necessity of adding more .c files (i.e. want this to
* be as painless as possible for core devs)
*/
static
INLINE
void
libretro_set_core_options
(
retro_environment_t
environ_cb
)
{
unsigned
version
=
0
;
if
(
!
environ_cb
)
return
;
if
(
environ_cb
(
RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION
,
&
version
)
&&
(
version
==
1
))
{
struct
retro_core_options_intl
core_options_intl
;
unsigned
language
=
0
;
core_options_intl
.
us
=
option_defs_us
;
core_options_intl
.
local
=
NULL
;
if
(
environ_cb
(
RETRO_ENVIRONMENT_GET_LANGUAGE
,
&
language
)
&&
(
language
<
RETRO_LANGUAGE_LAST
)
&&
(
language
!=
RETRO_LANGUAGE_ENGLISH
))
core_options_intl
.
local
=
option_defs_intl
[
language
];
environ_cb
(
RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL
,
&
core_options_intl
);
}
else
{
size_t
i
;
size_t
num_options
=
0
;
struct
retro_variable
*
variables
=
NULL
;
char
**
values_buf
=
NULL
;
/* Determine number of options */
while
(
true
)
{
if
(
option_defs_us
[
num_options
].
key
)
{
num_options
++
;
}
else
{
break
;
}
}
/* Allocate arrays */
variables
=
(
struct
retro_variable
*
)
calloc
(
num_options
+
1
,
sizeof
(
struct
retro_variable
));
values_buf
=
(
char
**
)
calloc
(
num_options
,
sizeof
(
char
*
));
if
(
!
variables
||
!
values_buf
)
{
goto
error
;
}
/* Copy parameters from option_defs_us array */
for
(
i
=
0
;
i
<
num_options
;
i
++
)
{
const
char
*
key
=
option_defs_us
[
i
].
key
;
const
char
*
desc
=
option_defs_us
[
i
].
desc
;
struct
retro_core_option_value
*
values
=
option_defs_us
[
i
].
values
;
size_t
buf_len
=
3
;
values_buf
[
i
]
=
NULL
;
if
(
desc
)
{
size_t
num_values
=
0
;
/* Determine number of values */
while
(
true
)
{
if
(
values
[
num_values
].
value
)
{
buf_len
+=
strlen
(
values
[
num_values
].
value
);
num_values
++
;
}
else
{
break
;
}
}
/* Build values string */
if
(
num_values
>
1
)
{
size_t
j
;
buf_len
+=
num_values
-
1
;
buf_len
+=
strlen
(
desc
);
values_buf
[
i
]
=
(
char
*
)
calloc
(
buf_len
,
sizeof
(
char
));
if
(
!
values_buf
[
i
])
goto
error
;
strcpy
(
values_buf
[
i
],
desc
);
// NOLINT
strcat
(
values_buf
[
i
],
"; "
);
// NOLINT
for
(
j
=
0
;
j
<
num_values
;
j
++
)
{
strcat
(
values_buf
[
i
],
values
[
j
].
value
);
// NOLINT
if
(
j
!=
num_values
-
1
)
strcat
(
values_buf
[
i
],
"|"
);
// NOLINT
}
}
}
variables
[
i
].
key
=
key
;
variables
[
i
].
value
=
values_buf
[
i
];
}
/* Set variables */
environ_cb
(
RETRO_ENVIRONMENT_SET_VARIABLES
,
variables
);
error:
/* Clean up */
if
(
values_buf
)
{
for
(
i
=
0
;
i
<
num_options
;
i
++
)
{
if
(
values_buf
[
i
])
{
free
(
values_buf
[
i
]);
values_buf
[
i
]
=
NULL
;
}
}
free
(
values_buf
);
values_buf
=
NULL
;
}
if
(
variables
)
{
free
(
variables
);
variables
=
NULL
;
}
}
/* Clean up */
if
(
values_buf
)
{
for
(
i
=
0
;
i
<
num_options
;
i
++
)
{
if
(
values_buf
[
i
])
{
free
(
values_buf
[
i
]);
values_buf
[
i
]
=
NULL
;
}
}
free
(
values_buf
);
values_buf
=
NULL
;
}
if
(
variables
)
{
free
(
variables
);
variables
=
NULL
;
}
}
}
#ifdef __cplusplus
}
#endif
#endif
#endif
// SRC_LIBRETRO_CORE_OPTIONS_H_
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