thrift/test/DocTest.thrift

288 lines
6.1 KiB
Thrift
Raw Normal View History

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/**
* Program doctext.
*
* Seriously, this is the documentation for this whole program.
*/
namespace java thrift.test
namespace cpp thrift.test
// C++ comment
/* c style comment */
# the new unix comment
/** Some doc text goes here. Wow I am [nesting these] (no more nesting.) */
enum Numberz
{
/** This is how to document a parameter */
ONE = 1,
/** And this is a doc for a parameter that has no specific value assigned */
TWO,
THREE,
FIVE = 5,
SIX,
EIGHT = 8
}
/** This is how you would do a typedef doc */
typedef i64 UserId
/** And this is where you would document a struct */
struct Xtruct
{
/** And the members of a struct */
1: string string_thing
/** doct text goes before a comma */
4: i8 byte_thing,
9: i32 i32_thing,
11: i64 i64_thing
}
/**
* You can document constants now too. Yeehaw!
*/
const i32 INT32CONSTANT = 9853
const i16 INT16CONSTANT = 1616
/** Everyone get in on the docu-action! */
const map<string,string> MAPCONSTANT = {'hello':'world', 'goodnight':'moon'}
struct Xtruct2
{
1: i8 byte_thing,
2: Xtruct struct_thing,
3: i32 i32_thing
}
/** Struct insanity */
struct Insanity
{
/** This is doc for field 1 */
1: map<Numberz, UserId> userMap,
/** And this is doc for field 2 */
2: list<Xtruct> xtructs
}
exception Xception {
1: i32 errorCode,
2: string message
}
exception Xception2 {
1: i32 errorCode,
2: Xtruct struct_thing
}
/* C1 */
/** Doc */
/* C2 */
/* C3 */
struct EmptyStruct {}
struct OneField {
1: EmptyStruct field
}
/** This is where you would document a Service */
service ThriftTest
{
/** And this is how you would document functions in a service */
void testVoid(),
string testString(1: string thing),
i8 testByte(1: byte thing),
i32 testI32(1: i32 thing),
/** Like this one */
i64 testI64(1: i64 thing),
double testDouble(1: double thing),
Xtruct testStruct(1: Xtruct thing),
Xtruct2 testNest(1: Xtruct2 thing),
map<i32,i32> testMap(1: map<i32,i32> thing),
set<i32> testSet(1: set<i32> thing),
list<i32> testList(1: list<i32> thing),
/** This is an example of a function with params documented */
Numberz testEnum(
/** This param is a thing */
1: Numberz thing
),
UserId testTypedef(1: UserId thing),
map<i32,map<i32,i32>> testMapMap(1: i32 hello),
/* So you think you've got this all worked, out eh? */
map<UserId, map<Numberz,Insanity>> testInsanity(1: Insanity argument),
}
/// This style of Doxy-comment doesn't work.
typedef i32 SorryNoGo
/**
* This is a trivial example of a multiline docstring.
*/
typedef i32 TrivialMultiLine
/**
* This is the canonical example
* of a multiline docstring.
*/
typedef i32 StandardMultiLine
/**
* The last line is non-blank.
* I said non-blank! */
typedef i32 LastLine
/** Both the first line
* are non blank. ;-)
* and the last line */
typedef i32 FirstAndLastLine
/**
* INDENTED TITLE
* The text is less indented.
*/
typedef i32 IndentedTitle
/** First line indented.
* Unfortunately, this does not get indented.
*/
typedef i32 FirstLineIndent
/**
* void code_in_comment() {
* printf("hooray code!");
* }
*/
typedef i32 CodeInComment
/**
* Indented Docstring.
* This whole docstring is indented.
* This line is indented further.
*/
typedef i32 IndentedDocstring
/** Irregular docstring.
* We will have to punt
* on this thing */
typedef i32 Irregular1
/**
* note the space
* before these lines
* but not this
* one
*/
typedef i32 Irregular2
/**
* Flush against
* the left.
*/
typedef i32 Flush
/**
No stars in this one.
It should still work fine, though.
Including indenting.
*/
typedef i32 NoStars
/** Trailing whitespace
Sloppy trailing whitespace
is truncated. */
typedef i32 TrailingWhitespace
/**
* This is a big one.
*
* We'll have some blank lines in it.
*
* void as_well_as(some code) {
* puts("YEEHAW!");
* }
*/
typedef i32 BigDog
/**
*
*
*/
typedef i32 TotallyDegenerate
/**no room for newline here*/
/* * / */
typedef i32 TestFor3501a
/**
* /
*/
typedef i32 TestFor3501b
/* Comment-end tokens can of course have more than one asterisk */
struct TestFor3709_00 { /* ? */ 1: i32 foo }
/* Comment-end tokens can of course have more than one asterisk **/
struct TestFor3709_01 { /* ? */ 1: i32 foo }
/* Comment-end tokens can of course have more than one asterisk ***/
struct TestFor3709_02 { /* ? */ 1: i32 foo }
/** Comment-end tokens can of course have more than one asterisk */
struct TestFor3709_03 { /* ? */ 1: i32 foo }
/** Comment-end tokens can of course have more than one asterisk **/
struct TestFor3709_04 { /* ? */ 1: i32 foo }
/** Comment-end tokens can of course have more than one asterisk ***/
struct TestFor3709_05 { /* ? */ 1: i32 foo }
/*** Comment-end tokens can of course have more than one asterisk */
struct TestFor3709_06 { /* ? */ 1: i32 foo }
/*** Comment-end tokens can of course have more than one asterisk **/
struct TestFor3709_07 { /* ? */ 1: i32 foo }
/*** Comment-end tokens can of course have more than one asterisk ***/
struct TestFor3709_08 { /* ? */ 1: i32 foo }
struct TestFor3709 {
/** This is a comment */
1: required string id,
/** This is also a comment **/
2: required string typeId,
/** Yet another comment! */
3: required i32 endTimestamp
}
/* THE END */