001// Copyright (c) FIRST and other WPILib contributors. 002// Open Source Software; you can modify and/or share it under the terms of 003// the WPILib BSD license file in the root directory of this project. 004 005// THIS FILE WAS AUTO-GENERATED BY ./ntcore/generate_topics.py. DO NOT MODIFY 006 007package edu.wpi.first.networktables; 008 009import java.nio.ByteBuffer; 010import java.util.function.Consumer; 011 012/** NetworkTables generic publisher. */ 013public interface GenericPublisher extends Publisher, Consumer<NetworkTableValue> { 014 /** 015 * Get the corresponding topic. 016 * 017 * @return Topic 018 */ 019 @Override 020 Topic getTopic(); 021 022 /** 023 * Publish a new value. 024 * 025 * @param value value to publish 026 * @return False if the topic already exists with a different type 027 */ 028 boolean set(NetworkTableValue value); 029 030 /** 031 * Publish a new value. 032 * 033 * @param value value to publish 034 * @return False if the topic already exists with a different type 035 * @throws IllegalArgumentException if the value is not a known type 036 */ 037 default boolean setValue(Object value) { 038 return setValue(value, 0); 039 } 040 041 /** 042 * Publish a new value. 043 * 044 * @param value value to publish 045 * @param time timestamp; 0 indicates current NT time should be used 046 * @return False if the topic already exists with a different type 047 * @throws IllegalArgumentException if the value is not a known type 048 */ 049 boolean setValue(Object value, long time); 050 051 /** 052 * Publish a new value. 053 * 054 * @param value value to publish 055 * @return False if the topic already exists with a different type 056 */ 057 default boolean setBoolean(boolean value) { 058 return setBoolean(value, 0); 059 } 060 061 /** 062 * Publish a new value. 063 * 064 * @param value value to publish 065 * @param time timestamp; 0 indicates current NT time should be used 066 * @return False if the topic already exists with a different type 067 */ 068 boolean setBoolean(boolean value, long time); 069 070 /** 071 * Publish a new value. 072 * 073 * @param value value to publish 074 * @return False if the topic already exists with a different type 075 */ 076 default boolean setInteger(long value) { 077 return setInteger(value, 0); 078 } 079 080 /** 081 * Publish a new value. 082 * 083 * @param value value to publish 084 * @param time timestamp; 0 indicates current NT time should be used 085 * @return False if the topic already exists with a different type 086 */ 087 boolean setInteger(long value, long time); 088 089 /** 090 * Publish a new value. 091 * 092 * @param value value to publish 093 * @return False if the topic already exists with a different type 094 */ 095 default boolean setFloat(float value) { 096 return setFloat(value, 0); 097 } 098 099 /** 100 * Publish a new value. 101 * 102 * @param value value to publish 103 * @param time timestamp; 0 indicates current NT time should be used 104 * @return False if the topic already exists with a different type 105 */ 106 boolean setFloat(float value, long time); 107 108 /** 109 * Publish a new value. 110 * 111 * @param value value to publish 112 * @return False if the topic already exists with a different type 113 */ 114 default boolean setDouble(double value) { 115 return setDouble(value, 0); 116 } 117 118 /** 119 * Publish a new value. 120 * 121 * @param value value to publish 122 * @param time timestamp; 0 indicates current NT time should be used 123 * @return False if the topic already exists with a different type 124 */ 125 boolean setDouble(double value, long time); 126 127 /** 128 * Publish a new value. 129 * 130 * @param value value to publish 131 * @return False if the topic already exists with a different type 132 */ 133 default boolean setString(String value) { 134 return setString(value, 0); 135 } 136 137 /** 138 * Publish a new value. 139 * 140 * @param value value to publish 141 * @param time timestamp; 0 indicates current NT time should be used 142 * @return False if the topic already exists with a different type 143 */ 144 boolean setString(String value, long time); 145 146 /** 147 * Publish a new value. 148 * 149 * @param value value to publish 150 * @return False if the topic already exists with a different type 151 */ 152 default boolean setRaw(byte[] value) { 153 return setRaw(value, 0); 154 } 155 156 /** 157 * Publish a new value. 158 * 159 * @param value value to publish 160 * @return False if the topic already exists with a different type 161 */ 162 default boolean setRaw(ByteBuffer value) { 163 return setRaw(value, 0); 164 } 165 166 /** 167 * Publish a new value. 168 * 169 * @param value value to publish 170 * @param time timestamp; 0 indicates current NT time should be used 171 * @return False if the topic already exists with a different type 172 */ 173 default boolean setRaw(byte[] value, long time) { 174 return setRaw(value, 0, value.length, time); 175 } 176 177 /** 178 * Publish a new value. 179 * 180 * @param value value to publish; will send from value.position() to value.limit() 181 * @param time timestamp; 0 indicates current NT time should be used 182 * @return False if the topic already exists with a different type 183 */ 184 default boolean setRaw(ByteBuffer value, long time) { 185 int pos = value.position(); 186 return setRaw(value, pos, value.limit() - pos, time); 187 } 188 189 /** 190 * Publish a new value. 191 * 192 * @param value value to publish 193 * @param start Start position of data (in buffer) 194 * @param len Length of data (must be less than or equal to value.length - start) 195 * @return False if the topic already exists with a different type 196 */ 197 default boolean setRaw(byte[] value, int start, int len) { 198 return setRaw(value, start, len, 0); 199 } 200 201 /** 202 * Publish a new value. 203 * 204 * @param value value to publish 205 * @param start Start position of data (in buffer) 206 * @param len Length of data (must be less than or equal to value.length - start) 207 * @param time timestamp; 0 indicates current NT time should be used 208 * @return False if the topic already exists with a different type 209 */ 210 boolean setRaw(byte[] value, int start, int len, long time); 211 212 /** 213 * Publish a new value. 214 * 215 * @param value value to publish 216 * @param start Start position of data (in buffer) 217 * @param len Length of data (must be less than or equal to value.capacity() - start) 218 * @return False if the topic already exists with a different type 219 */ 220 default boolean setRaw(ByteBuffer value, int start, int len) { 221 return setRaw(value, start, len, 0); 222 } 223 224 /** 225 * Publish a new value. 226 * 227 * @param value value to publish 228 * @param start Start position of data (in buffer) 229 * @param len Length of data (must be less than or equal to value.capacity() - start) 230 * @param time timestamp; 0 indicates current NT time should be used 231 * @return False if the topic already exists with a different type 232 */ 233 boolean setRaw(ByteBuffer value, int start, int len, long time); 234 235 /** 236 * Publish a new value. 237 * 238 * @param value value to publish 239 * @return False if the topic already exists with a different type 240 */ 241 default boolean setBooleanArray(boolean[] value) { 242 return setBooleanArray(value, 0); 243 } 244 245 /** 246 * Publish a new value. 247 * 248 * @param value value to publish 249 * @param time timestamp; 0 indicates current NT time should be used 250 * @return False if the topic already exists with a different type 251 */ 252 boolean setBooleanArray(boolean[] value, long time); 253 254 /** 255 * Publish a new value. 256 * 257 * @param value value to publish 258 * @return False if the topic already exists with a different type 259 */ 260 default boolean setBooleanArray(Boolean[] value) { 261 return setBooleanArray(value, 0); 262 } 263 264 /** 265 * Publish a new value. 266 * 267 * @param value value to publish 268 * @param time timestamp; 0 indicates current NT time should be used 269 * @return False if the topic already exists with a different type 270 */ 271 boolean setBooleanArray(Boolean[] value, long time); 272 273 /** 274 * Publish a new value. 275 * 276 * @param value value to publish 277 * @return False if the topic already exists with a different type 278 */ 279 default boolean setIntegerArray(long[] value) { 280 return setIntegerArray(value, 0); 281 } 282 283 /** 284 * Publish a new value. 285 * 286 * @param value value to publish 287 * @param time timestamp; 0 indicates current NT time should be used 288 * @return False if the topic already exists with a different type 289 */ 290 boolean setIntegerArray(long[] value, long time); 291 292 /** 293 * Publish a new value. 294 * 295 * @param value value to publish 296 * @return False if the topic already exists with a different type 297 */ 298 default boolean setIntegerArray(Long[] value) { 299 return setIntegerArray(value, 0); 300 } 301 302 /** 303 * Publish a new value. 304 * 305 * @param value value to publish 306 * @param time timestamp; 0 indicates current NT time should be used 307 * @return False if the topic already exists with a different type 308 */ 309 boolean setIntegerArray(Long[] value, long time); 310 311 /** 312 * Publish a new value. 313 * 314 * @param value value to publish 315 * @return False if the topic already exists with a different type 316 */ 317 default boolean setFloatArray(float[] value) { 318 return setFloatArray(value, 0); 319 } 320 321 /** 322 * Publish a new value. 323 * 324 * @param value value to publish 325 * @param time timestamp; 0 indicates current NT time should be used 326 * @return False if the topic already exists with a different type 327 */ 328 boolean setFloatArray(float[] value, long time); 329 330 /** 331 * Publish a new value. 332 * 333 * @param value value to publish 334 * @return False if the topic already exists with a different type 335 */ 336 default boolean setFloatArray(Float[] value) { 337 return setFloatArray(value, 0); 338 } 339 340 /** 341 * Publish a new value. 342 * 343 * @param value value to publish 344 * @param time timestamp; 0 indicates current NT time should be used 345 * @return False if the topic already exists with a different type 346 */ 347 boolean setFloatArray(Float[] value, long time); 348 349 /** 350 * Publish a new value. 351 * 352 * @param value value to publish 353 * @return False if the topic already exists with a different type 354 */ 355 default boolean setDoubleArray(double[] value) { 356 return setDoubleArray(value, 0); 357 } 358 359 /** 360 * Publish a new value. 361 * 362 * @param value value to publish 363 * @param time timestamp; 0 indicates current NT time should be used 364 * @return False if the topic already exists with a different type 365 */ 366 boolean setDoubleArray(double[] value, long time); 367 368 /** 369 * Publish a new value. 370 * 371 * @param value value to publish 372 * @return False if the topic already exists with a different type 373 */ 374 default boolean setDoubleArray(Double[] value) { 375 return setDoubleArray(value, 0); 376 } 377 378 /** 379 * Publish a new value. 380 * 381 * @param value value to publish 382 * @param time timestamp; 0 indicates current NT time should be used 383 * @return False if the topic already exists with a different type 384 */ 385 boolean setDoubleArray(Double[] value, long time); 386 387 /** 388 * Publish a new value. 389 * 390 * @param value value to publish 391 * @return False if the topic already exists with a different type 392 */ 393 default boolean setStringArray(String[] value) { 394 return setStringArray(value, 0); 395 } 396 397 /** 398 * Publish a new value. 399 * 400 * @param value value to publish 401 * @param time timestamp; 0 indicates current NT time should be used 402 * @return False if the topic already exists with a different type 403 */ 404 boolean setStringArray(String[] value, long time); 405 406 /** 407 * Sets the entry's value if it does not exist. 408 * 409 * @param defaultValue the default value to set 410 * @return False if the entry exists with a different type 411 */ 412 boolean setDefault(NetworkTableValue defaultValue); 413 414 /** 415 * Sets the entry's value if it does not exist. 416 * 417 * @param defaultValue the default value to set 418 * @return False if the entry exists with a different type 419 * @throws IllegalArgumentException if the value is not a known type 420 */ 421 boolean setDefaultValue(Object defaultValue); 422 423 424 /** 425 * Sets the entry's value if it does not exist. 426 * 427 * @param defaultValue the default value to set 428 * @return False if the entry exists with a different type 429 */ 430 boolean setDefaultBoolean(boolean defaultValue); 431 432 433 /** 434 * Sets the entry's value if it does not exist. 435 * 436 * @param defaultValue the default value to set 437 * @return False if the entry exists with a different type 438 */ 439 boolean setDefaultInteger(long defaultValue); 440 441 442 /** 443 * Sets the entry's value if it does not exist. 444 * 445 * @param defaultValue the default value to set 446 * @return False if the entry exists with a different type 447 */ 448 boolean setDefaultFloat(float defaultValue); 449 450 451 /** 452 * Sets the entry's value if it does not exist. 453 * 454 * @param defaultValue the default value to set 455 * @return False if the entry exists with a different type 456 */ 457 boolean setDefaultDouble(double defaultValue); 458 459 460 /** 461 * Sets the entry's value if it does not exist. 462 * 463 * @param defaultValue the default value to set 464 * @return False if the entry exists with a different type 465 */ 466 boolean setDefaultString(String defaultValue); 467 468 469 /** 470 * Sets the entry's value if it does not exist. 471 * 472 * @param defaultValue the default value to set 473 * @return False if the entry exists with a different type 474 */ 475 default boolean setDefaultRaw(byte[] defaultValue) { 476 return setDefaultRaw(defaultValue, 0, defaultValue.length); 477 } 478 479 /** 480 * Sets the entry's value if it does not exist. 481 * 482 * @param defaultValue the default value to set; will send from defaultValue.position() to 483 * defaultValue.limit() 484 * @return False if the entry exists with a different type 485 */ 486 default boolean setDefaultRaw(ByteBuffer defaultValue) { 487 int pos = defaultValue.position(); 488 return setDefaultRaw(defaultValue, pos, defaultValue.limit() - pos); 489 } 490 491 /** 492 * Sets the entry's value if it does not exist. 493 * 494 * @param defaultValue the default value to set 495 * @param start Start position of data (in buffer) 496 * @param len Length of data (must be less than or equal to value.length - start) 497 * @return False if the entry exists with a different type 498 */ 499 boolean setDefaultRaw(byte[] defaultValue, int start, int len); 500 501 /** 502 * Sets the entry's value if it does not exist. 503 * 504 * @param defaultValue the default value to set 505 * @param start Start position of data (in buffer) 506 * @param len Length of data (must be less than or equal to value.capacity() - start) 507 * @return False if the entry exists with a different type 508 */ 509 boolean setDefaultRaw(ByteBuffer defaultValue, int start, int len); 510 511 512 /** 513 * Sets the entry's value if it does not exist. 514 * 515 * @param defaultValue the default value to set 516 * @return False if the entry exists with a different type 517 */ 518 boolean setDefaultBooleanArray(boolean[] defaultValue); 519 520 /** 521 * Sets the entry's value if it does not exist. 522 * 523 * @param defaultValue the default value to set 524 * @return False if the entry exists with a different type 525 */ 526 boolean setDefaultBooleanArray(Boolean[] defaultValue); 527 528 529 /** 530 * Sets the entry's value if it does not exist. 531 * 532 * @param defaultValue the default value to set 533 * @return False if the entry exists with a different type 534 */ 535 boolean setDefaultIntegerArray(long[] defaultValue); 536 537 /** 538 * Sets the entry's value if it does not exist. 539 * 540 * @param defaultValue the default value to set 541 * @return False if the entry exists with a different type 542 */ 543 boolean setDefaultIntegerArray(Long[] defaultValue); 544 545 546 /** 547 * Sets the entry's value if it does not exist. 548 * 549 * @param defaultValue the default value to set 550 * @return False if the entry exists with a different type 551 */ 552 boolean setDefaultFloatArray(float[] defaultValue); 553 554 /** 555 * Sets the entry's value if it does not exist. 556 * 557 * @param defaultValue the default value to set 558 * @return False if the entry exists with a different type 559 */ 560 boolean setDefaultFloatArray(Float[] defaultValue); 561 562 563 /** 564 * Sets the entry's value if it does not exist. 565 * 566 * @param defaultValue the default value to set 567 * @return False if the entry exists with a different type 568 */ 569 boolean setDefaultDoubleArray(double[] defaultValue); 570 571 /** 572 * Sets the entry's value if it does not exist. 573 * 574 * @param defaultValue the default value to set 575 * @return False if the entry exists with a different type 576 */ 577 boolean setDefaultDoubleArray(Double[] defaultValue); 578 579 580 /** 581 * Sets the entry's value if it does not exist. 582 * 583 * @param defaultValue the default value to set 584 * @return False if the entry exists with a different type 585 */ 586 boolean setDefaultStringArray(String[] defaultValue); 587 588 @Override 589 default void accept(NetworkTableValue value) { 590 set(value); 591 } 592}