00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef VLC_VARIABLES_H
00026 #define VLC_VARIABLES_H 1
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #define VLC_VAR_TYPE 0x00ff
00048 #define VLC_VAR_CLASS 0x00f0
00049 #define VLC_VAR_FLAGS 0xff00
00050
00051
00052
00053
00054
00055
00056 #define VLC_VAR_HASCHOICE 0x0100
00057 #define VLC_VAR_HASMIN 0x0200
00058 #define VLC_VAR_HASMAX 0x0400
00059 #define VLC_VAR_HASSTEP 0x0800
00060
00061 #define VLC_VAR_ISCOMMAND 0x2000
00062
00063
00064
00065
00066 #define VLC_VAR_DOINHERIT 0x8000
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 #define VLC_VAR_SETMIN 0x0010
00083
00084
00085
00086
00087
00088 #define VLC_VAR_SETMAX 0x0011
00089 #define VLC_VAR_SETSTEP 0x0012
00090
00091
00092
00093
00094
00095
00096 #define VLC_VAR_SETVALUE 0x0013
00097
00098 #define VLC_VAR_SETTEXT 0x0014
00099 #define VLC_VAR_GETTEXT 0x0015
00100
00101 #define VLC_VAR_GETMIN 0x0016
00102 #define VLC_VAR_GETMAX 0x0017
00103 #define VLC_VAR_GETSTEP 0x0018
00104
00105 #define VLC_VAR_ADDCHOICE 0x0020
00106 #define VLC_VAR_DELCHOICE 0x0021
00107 #define VLC_VAR_CLEARCHOICES 0x0022
00108 #define VLC_VAR_SETDEFAULT 0x0023
00109 #define VLC_VAR_GETCHOICES 0x0024
00110 #define VLC_VAR_GETLIST 0x0025
00111 #define VLC_VAR_CHOICESCOUNT 0x0026
00112
00113 #define VLC_VAR_INHERITVALUE 0x0030
00114
00115 #define VLC_VAR_SETISCOMMAND 0x0040
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 #define VLC_VAR_TOGGLE_BOOL 0x0010
00127
00128
00129
00130
00131 #define VLC_VAR_INTEGER_INCDEC 0x0020
00132
00133
00134
00135
00136
00137 VLC_EXPORT( int, __var_Create, ( vlc_object_t *, const char *, int ) );
00138 VLC_EXPORT( int, __var_Destroy, ( vlc_object_t *, const char * ) );
00139
00140 VLC_EXPORT( int, __var_Change, ( vlc_object_t *, const char *, int, vlc_value_t *, vlc_value_t * ) );
00141
00142 VLC_EXPORT( int, __var_Type, ( vlc_object_t *, const char * ) LIBVLC_USED );
00143 VLC_EXPORT( int, __var_Set, ( vlc_object_t *, const char *, vlc_value_t ) );
00144 VLC_EXPORT( int, __var_Get, ( vlc_object_t *, const char *, vlc_value_t * ) );
00145 VLC_EXPORT( int, var_SetChecked, ( vlc_object_t *, const char *, int, vlc_value_t ) );
00146 VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
00147 VLC_EXPORT( int, __var_GetAndSet, ( vlc_object_t *, const char *, int, vlc_value_t ) );
00148
00149 #define var_Command(a,b,c,d,e) __var_Command( VLC_OBJECT( a ), b, c, d, e )
00150 VLC_EXPORT( int, __var_Command, ( vlc_object_t *, const char *, const char *, const char *, char ** ) );
00151
00152 VLC_EXPORT( void, var_FreeList, ( vlc_value_t *, vlc_value_t * ) );
00153
00154
00155
00156
00157 #define var_Create(a,b,c) __var_Create( VLC_OBJECT(a), b, c )
00158
00159
00160
00161 #define var_Destroy(a,b) __var_Destroy( VLC_OBJECT(a), b )
00162
00163
00164
00165
00166 #define var_Change(a,b,c,d,e) __var_Change( VLC_OBJECT(a), b, c, d, e )
00167
00168
00169
00170
00171 #define var_Type(a,b) __var_Type( VLC_OBJECT(a), b )
00172
00173
00174
00175 #define var_Set(a,b,c) __var_Set( VLC_OBJECT(a), b, c )
00176
00177
00178
00179 #define var_Get(a,b,c) __var_Get( VLC_OBJECT(a), b, c )
00180
00181
00182
00183 #define var_GetAndSet(a,b,c,d) __var_GetAndSet(VLC_OBJECT(a), b, c, d)
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194 VLC_EXPORT( int, __var_AddCallback, ( vlc_object_t *, const char *, vlc_callback_t, void * ) );
00195 VLC_EXPORT( int, __var_DelCallback, ( vlc_object_t *, const char *, vlc_callback_t, void * ) );
00196 VLC_EXPORT( int, __var_TriggerCallback, ( vlc_object_t *, const char * ) );
00197
00198
00199
00200
00201 #define var_AddCallback(a,b,c,d) __var_AddCallback( VLC_OBJECT(a), b, c, d )
00202
00203
00204
00205 #define var_DelCallback(a,b,c,d) __var_DelCallback( VLC_OBJECT(a), b, c, d )
00206
00207
00208
00209 #define var_TriggerCallback(a,b) __var_TriggerCallback( VLC_OBJECT(a), b )
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222 static inline int __var_SetInteger( vlc_object_t *p_obj, const char *psz_name, int i )
00223 {
00224 vlc_value_t val;
00225 val.i_int = i;
00226 return var_SetChecked( p_obj, psz_name, VLC_VAR_INTEGER, val );
00227 }
00228
00229
00230
00231
00232
00233
00234
00235
00236 static inline int __var_SetBool( vlc_object_t *p_obj, const char *psz_name, bool b )
00237 {
00238 vlc_value_t val;
00239 val.b_bool = b;
00240 return var_SetChecked( p_obj, psz_name, VLC_VAR_BOOL, val );
00241 }
00242
00243
00244
00245
00246
00247
00248
00249
00250 static inline int __var_SetTime( vlc_object_t *p_obj, const char *psz_name, int64_t i )
00251 {
00252 vlc_value_t val;
00253 val.i_time = i;
00254 return var_SetChecked( p_obj, psz_name, VLC_VAR_TIME, val );
00255 }
00256
00257
00258
00259
00260
00261
00262
00263
00264 static inline int __var_SetFloat( vlc_object_t *p_obj, const char *psz_name, float f )
00265 {
00266 vlc_value_t val;
00267 val.f_float = f;
00268 return var_SetChecked( p_obj, psz_name, VLC_VAR_FLOAT, val );
00269 }
00270
00271
00272
00273
00274
00275
00276
00277
00278 static inline int __var_SetString( vlc_object_t *p_obj, const char *psz_name, const char *psz_string )
00279 {
00280 vlc_value_t val;
00281 val.psz_string = (char *)psz_string;
00282 return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
00283 }
00284
00285
00286
00287
00288
00289
00290
00291
00292 static inline
00293 int __var_SetAddress( vlc_object_t *p_obj, const char *psz_name, void *ptr )
00294 {
00295 vlc_value_t val;
00296 val.p_address = ptr;
00297 return var_SetChecked( p_obj, psz_name, VLC_VAR_ADDRESS, val );
00298 }
00299
00300
00301
00302
00303 #define var_SetInteger(a,b,c) __var_SetInteger( VLC_OBJECT(a),b,c)
00304
00305
00306
00307 #define var_SetBool(a,b,c) __var_SetBool( VLC_OBJECT(a),b,c)
00308
00309
00310
00311 #define var_SetTime(a,b,c) __var_SetTime( VLC_OBJECT(a),b,c)
00312
00313
00314
00315 #define var_SetFloat(a,b,c) __var_SetFloat( VLC_OBJECT(a),b,c)
00316
00317
00318
00319 #define var_SetString(a,b,c) __var_SetString( VLC_OBJECT(a),b,c)
00320
00321
00322
00323 #define var_SetAddress(o, n, p) __var_SetAddress(VLC_OBJECT(o), n, p)
00324
00325
00326
00327
00328
00329
00330
00331
00332 LIBVLC_USED
00333 static inline int __var_GetInteger( vlc_object_t *p_obj, const char *psz_name )
00334 {
00335 vlc_value_t val;
00336 if( !var_GetChecked( p_obj, psz_name, VLC_VAR_INTEGER, &val ) )
00337 return val.i_int;
00338 else
00339 return 0;
00340 }
00341
00342
00343
00344
00345
00346
00347
00348 LIBVLC_USED
00349 static inline bool __var_GetBool( vlc_object_t *p_obj, const char *psz_name )
00350 {
00351 vlc_value_t val; val.b_bool = false;
00352
00353 if( !var_GetChecked( p_obj, psz_name, VLC_VAR_BOOL, &val ) )
00354 return val.b_bool;
00355 else
00356 return false;
00357 }
00358
00359
00360
00361
00362
00363
00364
00365 LIBVLC_USED
00366 static inline int64_t __var_GetTime( vlc_object_t *p_obj, const char *psz_name )
00367 {
00368 vlc_value_t val; val.i_time = 0L;
00369 if( !var_GetChecked( p_obj, psz_name, VLC_VAR_TIME, &val ) )
00370 return val.i_time;
00371 else
00372 return 0;
00373 }
00374
00375
00376
00377
00378
00379
00380
00381 LIBVLC_USED
00382 static inline float __var_GetFloat( vlc_object_t *p_obj, const char *psz_name )
00383 {
00384 vlc_value_t val; val.f_float = 0.0;
00385 if( !var_GetChecked( p_obj, psz_name, VLC_VAR_FLOAT, &val ) )
00386 return val.f_float;
00387 else
00388 return 0.0;
00389 }
00390
00391
00392
00393
00394
00395
00396
00397 LIBVLC_USED
00398 static inline char *__var_GetString( vlc_object_t *p_obj, const char *psz_name )
00399 {
00400 vlc_value_t val; val.psz_string = NULL;
00401 if( var_GetChecked( p_obj, psz_name, VLC_VAR_STRING, &val ) )
00402 return NULL;
00403 else
00404 return val.psz_string;
00405 }
00406
00407 LIBVLC_USED
00408 static inline char *__var_GetNonEmptyString( vlc_object_t *p_obj, const char *psz_name )
00409 {
00410 vlc_value_t val;
00411 if( var_GetChecked( p_obj, psz_name, VLC_VAR_STRING, &val ) )
00412 return NULL;
00413 if( val.psz_string && *val.psz_string )
00414 return val.psz_string;
00415 free( val.psz_string );
00416 return NULL;
00417 }
00418
00419 LIBVLC_USED
00420 static inline void *__var_GetAddress( vlc_object_t *p_obj, const char *psz_name )
00421 {
00422 vlc_value_t val;
00423 if( var_GetChecked( p_obj, psz_name, VLC_VAR_ADDRESS, &val ) )
00424 return NULL;
00425 else
00426 return val.p_address;
00427 }
00428
00429
00430
00431
00432 #define var_GetInteger(a,b) __var_GetInteger( VLC_OBJECT(a),b)
00433
00434
00435
00436 #define var_GetBool(a,b) __var_GetBool( VLC_OBJECT(a),b)
00437
00438
00439
00440 #define var_GetTime(a,b) __var_GetTime( VLC_OBJECT(a),b)
00441
00442
00443
00444 #define var_GetFloat(a,b) __var_GetFloat( VLC_OBJECT(a),b)
00445
00446
00447
00448 #define var_GetString(a,b) __var_GetString( VLC_OBJECT(a),b)
00449 #define var_GetNonEmptyString(a,b) __var_GetNonEmptyString( VLC_OBJECT(a),b)
00450
00451
00452
00453 #define var_GetAddress(a,b) __var_GetAddress( VLC_OBJECT(a),b)
00454
00455
00456
00457
00458
00459
00460
00461
00462 static inline void __var_IncInteger( vlc_object_t *p_obj, const char *psz_name )
00463 {
00464 vlc_value_t val;
00465 val.i_int = 1;
00466 __var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
00467 }
00468 #define var_IncInteger(a,b) __var_IncInteger( VLC_OBJECT(a), b )
00469
00470
00471
00472
00473
00474
00475 static inline void __var_DecInteger( vlc_object_t *p_obj, const char *psz_name )
00476 {
00477 vlc_value_t val;
00478 val.i_int = -1;
00479 __var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
00480 }
00481 #define var_DecInteger(a,b) __var_DecInteger( VLC_OBJECT(a), b )
00482
00483
00484
00485
00486
00487
00488
00489 LIBVLC_USED
00490 static inline int __var_CreateGetInteger( vlc_object_t *p_obj, const char *psz_name )
00491 {
00492 __var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
00493 return __var_GetInteger( p_obj, psz_name );
00494 }
00495
00496
00497
00498
00499
00500
00501
00502 LIBVLC_USED
00503 static inline bool __var_CreateGetBool( vlc_object_t *p_obj, const char *psz_name )
00504 {
00505 __var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
00506 return __var_GetBool( p_obj, psz_name );
00507 }
00508
00509
00510
00511
00512
00513
00514
00515 LIBVLC_USED
00516 static inline int64_t __var_CreateGetTime( vlc_object_t *p_obj, const char *psz_name )
00517 {
00518 __var_Create( p_obj, psz_name, VLC_VAR_TIME | VLC_VAR_DOINHERIT );
00519 return __var_GetTime( p_obj, psz_name );
00520 }
00521
00522
00523
00524
00525
00526
00527
00528 LIBVLC_USED
00529 static inline float __var_CreateGetFloat( vlc_object_t *p_obj, const char *psz_name )
00530 {
00531 __var_Create( p_obj, psz_name, VLC_VAR_FLOAT | VLC_VAR_DOINHERIT );
00532 return __var_GetFloat( p_obj, psz_name );
00533 }
00534
00535
00536
00537
00538
00539
00540
00541 LIBVLC_USED
00542 static inline char *__var_CreateGetString( vlc_object_t *p_obj,
00543 const char *psz_name )
00544 {
00545 __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT );
00546 return __var_GetString( p_obj, psz_name );
00547 }
00548
00549 LIBVLC_USED
00550 static inline char *__var_CreateGetNonEmptyString( vlc_object_t *p_obj,
00551 const char *psz_name )
00552 {
00553 __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT );
00554 return __var_GetNonEmptyString( p_obj, psz_name );
00555 }
00556
00557
00558
00559
00560
00561
00562
00563 LIBVLC_USED
00564 static inline void *__var_CreateGetAddress( vlc_object_t *p_obj,
00565 const char *psz_name )
00566 {
00567 __var_Create( p_obj, psz_name, VLC_VAR_ADDRESS | VLC_VAR_DOINHERIT );
00568 return __var_GetAddress( p_obj, psz_name );
00569 }
00570
00571
00572
00573
00574 #define var_CreateGetInteger(a,b) __var_CreateGetInteger( VLC_OBJECT(a),b)
00575
00576
00577
00578 #define var_CreateGetBool(a,b) __var_CreateGetBool( VLC_OBJECT(a),b)
00579
00580
00581
00582 #define var_CreateGetTime(a,b) __var_CreateGetTime( VLC_OBJECT(a),b)
00583
00584
00585
00586 #define var_CreateGetFloat(a,b) __var_CreateGetFloat( VLC_OBJECT(a),b)
00587
00588
00589
00590 #define var_CreateGetString(a,b) __var_CreateGetString( VLC_OBJECT(a),b)
00591 #define var_CreateGetNonEmptyString(a,b) __var_CreateGetNonEmptyString( VLC_OBJECT(a),b)
00592
00593
00594
00595 #define var_CreateGetAddress(a,b) __var_CreateGetAddress( VLC_OBJECT(a),b)
00596
00597
00598
00599
00600
00601
00602
00603 LIBVLC_USED
00604 static inline int __var_CreateGetIntegerCommand( vlc_object_t *p_obj, const char *psz_name )
00605 {
00606 __var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT
00607 | VLC_VAR_ISCOMMAND );
00608 return __var_GetInteger( p_obj, psz_name );
00609 }
00610
00611
00612
00613
00614
00615
00616
00617 LIBVLC_USED
00618 static inline bool __var_CreateGetBoolCommand( vlc_object_t *p_obj, const char *psz_name )
00619 {
00620 __var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT
00621 | VLC_VAR_ISCOMMAND );
00622 return __var_GetBool( p_obj, psz_name );
00623 }
00624
00625
00626
00627
00628
00629
00630
00631 LIBVLC_USED
00632 static inline int64_t __var_CreateGetTimeCommand( vlc_object_t *p_obj, const char *psz_name )
00633 {
00634 __var_Create( p_obj, psz_name, VLC_VAR_TIME | VLC_VAR_DOINHERIT
00635 | VLC_VAR_ISCOMMAND );
00636 return __var_GetTime( p_obj, psz_name );
00637 }
00638
00639
00640
00641
00642
00643
00644
00645 LIBVLC_USED
00646 static inline float __var_CreateGetFloatCommand( vlc_object_t *p_obj, const char *psz_name )
00647 {
00648 __var_Create( p_obj, psz_name, VLC_VAR_FLOAT | VLC_VAR_DOINHERIT
00649 | VLC_VAR_ISCOMMAND );
00650 return __var_GetFloat( p_obj, psz_name );
00651 }
00652
00653
00654
00655
00656
00657
00658
00659 LIBVLC_USED
00660 static inline char *__var_CreateGetStringCommand( vlc_object_t *p_obj,
00661 const char *psz_name )
00662 {
00663 __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT
00664 | VLC_VAR_ISCOMMAND );
00665 return __var_GetString( p_obj, psz_name );
00666 }
00667
00668 LIBVLC_USED
00669 static inline char *__var_CreateGetNonEmptyStringCommand( vlc_object_t *p_obj,
00670 const char *psz_name )
00671 {
00672 __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT
00673 | VLC_VAR_ISCOMMAND );
00674 return __var_GetNonEmptyString( p_obj, psz_name );
00675 }
00676
00677
00678
00679
00680 #define var_CreateGetIntegerCommand(a,b) __var_CreateGetIntegerCommand( VLC_OBJECT(a),b)
00681
00682
00683
00684 #define var_CreateGetBoolCommand(a,b) __var_CreateGetBoolCommand( VLC_OBJECT(a),b)
00685
00686
00687
00688 #define var_CreateGetTimeCommand(a,b) __var_CreateGetTimeCommand( VLC_OBJECT(a),b)
00689
00690
00691
00692 #define var_CreateGetFloatCommand(a,b) __var_CreateGetFloatCommand( VLC_OBJECT(a),b)
00693
00694
00695
00696 #define var_CreateGetStringCommand(a,b) __var_CreateGetStringCommand( VLC_OBJECT(a),b)
00697 #define var_CreateGetNonEmptyStringCommand(a,b) __var_CreateGetNonEmptyStringCommand( VLC_OBJECT(a),b)
00698
00699 LIBVLC_USED
00700 static inline int __var_CountChoices( vlc_object_t *p_obj, const char *psz_name )
00701 {
00702 vlc_value_t count;
00703 if( __var_Change( p_obj, psz_name, VLC_VAR_CHOICESCOUNT, &count, NULL ) )
00704 return 0;
00705 return count.i_int;
00706 }
00707
00708
00709
00710 #define var_CountChoices(a,b) __var_CountChoices( VLC_OBJECT(a),b)
00711
00712
00713 static inline int __var_ToggleBool( vlc_object_t *p_obj, const char *psz_name )
00714 {
00715 vlc_value_t val;
00716 return __var_GetAndSet( p_obj, psz_name, VLC_VAR_TOGGLE_BOOL, val );
00717 }
00718
00719
00720
00721 #define var_ToggleBool(a,b) __var_ToggleBool( VLC_OBJECT(a),b )
00722
00723
00724
00725 #endif